基於Metasploit編寫終端檢測程序
2017年初的項目中,我發現某客戶單位的員工辦公終端未進行內/外網物理隔離,內網通過設置瀏覽器代理伺服器訪問公網,遂向客戶提出風險。但口說無憑,需證明此風險,故編寫此程序。此次風險說明與程序編寫,是在「永恆之藍/WannaCry」勒索軟體爆發前一周,雖然提出風險,但無法整改,客戶單位還是淪陷了。
其實當時想的蠻簡單的,利用Metasploit中的meterpreter/reverse_tcp讓終端反向連接客戶端即可,事實證明,代理伺服器不處理tcp連接,只轉發HTTP請求,此路不通。那就使用meterpreter/reverse_http吧,但Metasploit又不支持自動設置代理,最後的思路是,找到meterpreter/reverse_http源碼並更改,使其自動抓取瀏覽器代理地址並反向連接客戶端。
思路有了,然後就是選擇語言,理論上用彙編/C/C++會更好,但我不會。再加上我只是想證明此問題,並不是真要編寫木馬程序,所以選擇了Python,Payload最終選擇python/meterpreter/reverse_http。
獲取源碼
相對於常用的msfconsole,msfvenom顯得陌生了許多,幫助信息如下:
支持的生成格式:
其中raw為原始格式,使用命令,結果如下:
將結果使用base64解碼後,可見伺服器端地址:
到此可以了解Metasploit總這塊大致的原理:遠程載入python代碼並執行,這樣一是可以減少客戶端的體積,二是可以更改攻擊行為。
獲取並使用瀏覽器代理
Windows中的配置一般存儲在註冊表中,瀏覽器代理地址也不例外,註冊表鍵值為HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet Settings:
其中ProxyEnable代表是否使用代理,ProxyServer為代理地址,抓取並使用代理的代碼如下:
使用urllib2的proxyhandler將所有http請求綁定到代理伺服器:
這樣,檢測程序的基本框架就完成了。
參數
為了復用,添加兩個參數-i為服務端地址,-p為服務端埠:
編譯
由於客戶端要運行服務端源碼,需要將所有包全部引入:
使用pyinstaller打包py文件為exe文件:
驗證
配置服務端,當時我使用了日本的VPS,這裡使用了虛擬機:
客戶端執行驗證程序:
客戶端結果如下
至此,驗證程序編寫完畢。
後記
這個程序我第一次嘗試編寫,未增加任何免殺策略,但是,查殺結果如下:
這次還有11個,去年的時候我記得是只有3個殺軟可以檢測出來。客戶公司員工辦公終端裝有某付費S開頭殺毒軟體,部分員工自主裝有360。
1.程序上傳時均未檢測為惡意軟體;
2.執行ls,cat,download命令時,均未進行攔截;
3.嘗試使用敏感命令net user /add,只有360進行攔截。
結論:對於原創的惡意程序,殺毒軟體還是要延後許多,360的「主動防禦」進程可以起到一定作用。還是不要使用來歷不明的程序了。
※Socks Proxy如何讓你更安全的瀏覽互聯網
※揭秘Scarab勒索軟體新變種、新手段
TAG:瘋貓網路 |