1.實驗內容
1.1實驗目標
通過實操掌握惡意代碼分析、逆向工程及網絡取證的核心方法,理解惡意代碼的特性、反分析技術與攻擊邏輯,明晰僵尸網絡機制及 IRC 協議應用,提升識別惡意代碼、分析網絡攻擊與解決安全問題的能力。
1.2實驗內容
- 對 rada 惡意代碼進行文件類型識別、脫殼處理及字符串提取,嘗試定位編寫作者;
- 用 IDA Pro 靜態 / 動態分析 crackme1.exe 與 crackme2.exe,尋找能觸發成功輸出的特定輸入;
- 深度分析 rada 惡意代碼,撰寫報告解答其基本信息、目的、特性、反分析技術等問題;
- 基于收集的蜜罐網絡數據,開展取證分析,回答 IRC 協議、僵尸網絡、蜜罐通信與攻擊情況等類問題。
1.3基礎問題回答
下文中可以看到
2.實驗過程
2.1惡意代碼文件類型標識、脫殼與字符串提取
2.1.1使用文件格式和類型識別工具,給出rada惡意代碼樣本的文件格式、運行平臺和加殼工具
1.使用file 命令
- 使用winscp將rada.exe傳入kali中
- 在kali中輸入
file RaDa.exe識別文件

文件格式: RaDa.exe 是一個 PE32 格式的可執行文件。PE32(Portable Executable 32-bit)是 Windows 平臺上常見的可執行文件格式,用于 32 位應用程序。
運行平臺: Microsoft Windows 系統,基于 Intel i386(即 Intel 80386)處理器架構,是帶圖形界面(GUI)的應用程序。
加殼工具: 文件包含 3 個節區。PE 文件通常有多個節區,只有 3 個節區可能表示文件結構相對簡單,或者可能被壓縮、加密或混淆。
由此可知RaDa.exe是一個Windows PE可執行文件,并且具有圖形化界面。
2.使用peid工具

由圖可知,該文件被UPX 加殼工具處理,版本范圍為0.89.6 - 1.02 / 1.05 - 2.90。
2.1.2使用超級巡警脫殼機等脫殼軟件,對rada惡意代碼樣本進行脫殼處理

2.1.3使用字符串提取工具,對脫殼后的rada惡意代碼樣本進行分析
1.再次對文件進行識別
- 將脫殼后的RaDa_unpacked.exe傳入kali
- 輸入
file RaDa_unpacked.exe查看脫殼后惡意代碼的基本類型

這里可以看到文件多了一個字節區
2.對脫殼后的惡意代碼進行分析,找到作者
- 輸入
strings RaDa_unpacked.exe,對脫殼后的惡意代碼進行分析


"(c)Raul Siles && David Perez” ,這是開發者版權聲明的典型格式,表明了該程序的開發者身份。
2.2使用IDA Pro靜態或動態分析crackme1.exe與crakeme2.exe,尋找特定輸入,使其能夠輸出成功信息。
2.2.1檢查文件完整性、識別文件類型
1.檢查文件完整性
下載兩個 crackme,計算其 md5 值,驗證文件的完整性。
crackme1: 4357BF8C20FABB642FAFC0B73FB0ABFB
crackme2: 46AA577172D8F37AE2AE281515C99AFB


2.使用file命令查看crackme的文件類型
在kali中輸入
file crackme1.exe,file crackme2.exe

這兩個 crackme 都是 32 位 windows 下 PE 文件,沒有圖形界面,是命令行程序。
2.2.2crackme1.exe分析
1.試探輸入格式
在cmd進入到crackme1.exe目錄,輸入以下命令,試探其參數格式
crackme1.exe無參數
crackme1.exe 1一個參數
crackme1.exe 1 2兩個參數
crackme1.exe 1 2 3三個參數
crackme1.exe 1 2 3 4四個參數
crackme1.exe 1 2 3 4 5五個參數

- 從圖中我們可以看到,帶一個參數時,程序結果是“Pardon? What did you say?”
- 而其余所有輸入,其結果都是“I think you are missing something.”
- 所以可能正確格式就是只帶一個參數,但可能該參數并不正確,我們繼續分析
2.使用IDA pro工具
①我們先查 Strings 頁面(shift+F12)

- 這里一共有四個語句,其中“Pardon? What did you say?”,“I think you are missing something.”我們剛剛都已經看見過(分別表示參數內容不對和參數格式不對)
- 還有兩條我們沒有試探出的結果“I know the secret”和“You know how to speak to programs, Mr. Reverse-Engineer”。通過細致觀察發現我們可以發現,只有“I know the secret”后面沒有加“\n”,所以我們推測可能“I know the secret”就是正確參數內容,“You know how to speak to programs, Mr. Reverse-Engineer”是在我們輸入正確參數內容后的反饋。我們繼續進行接下來的驗證。
②查看整個程序的call flow


我們可以看到_main函數調用了_strcmp和_printf(驗證參數是否正確,及其結果反饋的部分),所以接下來我們看去查看_main函數的匯編代碼,查看各個輸出語句和_strcmp的關系。
③查看_main函數的匯編代碼(點擊左邊的_main,再點開右邊的IDA VIEW-A)

- 在最上面_main函數中,倒數第二行“cmp [ebo+arg_0],2”為判斷程序是否有兩個參數在c語言中,main函數通常為int main(int argc,const char **argv),即第一個參數 argc 對應argv 的大小,第二個參數對應命令行的格式。如在命令行輸入 crackme1.exe 1,那么參數對應的值為 argc=2,argv={”crackme1.exe”,”1”}。
- 如果argc不等于2(參數格式不正確),我們可以發現輸出結果是,“I think you are missing something.”
- 如果ardc等于2(參數格式正確),出現了一個分叉。程序會將用戶傳入的第 2 個參數argv[1]與預設的秘密字符串"I know the secret"進行比較(通過strcmp函數)。
- 所以我們猜測輸入crackme1.exe "I know the secret",就會出現正確結果“You know how to speak to programs, Mr. Reverse-Engineer”
3.進行驗證
輸入
crackme1.exe "I know the secret"

2.2.3crackme2.exe分析
1.試探輸入格式

- 只有帶一個參數時,程序結果為"I have an identity problem",猜測其為參數格式正確,但參數內容不確定的輸出
*其他的程序結果都為"I think you are missing something.",猜測為參數格式不正確的輸出
2.使用IDA pro工具
①我們先查 Strings 頁面(shift+F12)

②查看整個程序的call flow

③查看_main函數的匯編代碼(點擊左邊的_main,再點開右邊的IDA VIEW-A)

- 命令行參數數量檢查
- cmp [ebp+argc], 2判斷程序啟動時的命令行參數個數argc是否為2
- 分支:若argc≠2,進入錯誤提示分支;若argc=2,進入字符串驗證分支。
- 錯誤提示分支
若參數數量不滿足要求,程序會輸出以下提示之一:- "I think you are missing something."
- 字符串驗證分支(argc=2時)
當參數數量正確時,程序會進行兩輪字符串比較:- 第一輪:將用戶傳入的參數與 "crackmeplease.exe" 比較(通過strcmp)。
- 第二輪:將參數與 "I know the secret" 比較(通過strcmp)。
只有兩輪比較都匹配時,程序才會進入 “成功路徑”,輸出對應的驗證通過信息;否則繼續執行錯誤提示邏輯- "I have an identity problem."第一輪參數匹配失敗
- "Pardon? What did you say?"第二輪參數匹配失敗
3.進行驗證
①將crackme2.exe文件復制一份,副本文件名為crackmeplease.exe,再測試。
輸入copy crackme2.exe crackmeplease.exe
②輸入正確參數crackmeplease.exe "I know the secret"

2.3分析一個自制惡意代碼樣本rada
2.3.1 提供對這個二進制文件的摘要,包括可以幫助識別同一樣本的基本信息
1.rada.exe摘要值
在kali中輸入
md5sum RaDa.exe
在kali中輸入sha256sum RaDa.exe

RaDa.exe的MD5摘要為:caaa6985a43225a0b3add54f44a0d4c7
RaDa.exe的SHA-256摘要為:13c2379e9d9f679396e21a3391804cc834892f25691381b6d078d07b56d38f90
2.rada.exe的大小和編譯時間戳
在kali中輸入exiftool RaDa.exe | grep "Time Stamp"

使用exiftool工具提取可執行文件RaDa.exe的元數據,并通過grep命令篩選出與 “Time Stamp”(時間戳)相關的信息為2004年10月29日。
說明RaDa.exe是一個相對 “古老” 的可執行文件(距今約20年),用于惡意軟件分析,可輔助判斷樣本年代、關聯歷史攻擊事件。
3.rada.exe文件格式與運行平臺
在kali中輸入
file RaDa.exe

RaDa.exe 是一個 PE32 格式的可執行文件。運行平臺是Microsoft Windows 系統,基于Intel i386處理器架構,是帶圖形界面的應用程序。
2.3.2 找出并解釋這個二進制文件的目的
這是一個針對內部網絡的多功能遠程控制后門,實現對目標主機的 “持久化控制、敏感信息竊取、遠程指令執行”,并將目標主機轉化為攻擊者的 “肉雞” 以輔助后續攻擊。下面來進行分析(先通過process exploer字符串進行動態分析,再通過IDA pro反匯編進行靜態分析)
1.首先在cmd切換到相關目錄,運行RaDa_unpacked.exe
還是配置相關虛擬機環境,在其上運行。
運行完之后,似乎并沒有彈出任何界面,我們來進一步分析。

2.打開Process Explorer并雙擊運行RaDa_unpacked.exe

3.在strings頁面查看文件中的字符串,進行詳細分析

①目的一:實現持久化駐留
C:/RaDa/tmp、C:\RaDa\bin
- 明確指向程序在C盤創建的專屬目錄,bin用于存儲復制后的rada.exe,實現本地化部署,避免被輕易刪除
- tmp用于存儲臨時數據如竊取的信息、指令緩存,是持久化的 “物理存儲基礎”。

HKLM\Software\Microsoft\Windows\CurrentVersion\Run\、RaDa、REG_SZ
- 對應 Windows 系統 “開機自啟動” 注冊表項,程序通過修改該路徑,將C:\RaDa\bin\RaDa.exe添加為自啟動程序,確保系統重啟后自動運行,是持久化的 “核心配置手段”。
Command_install
- 該字符串是程序的 “安裝” 命令,觸發 “復制自身到C:\RaDa\bin+ 修改注冊表自啟動” 的完整持久化流程,是啟動持久化操作的 “指令入口”。
②目的二遠程通信
http://10.10.10.10/RaDa
- 遠程服務器地址10.10.10.10 屬于內部網絡私有 IP,是程序建立 HTTP 連接的 “目標端點”,所有指令和數據傳輸都是通過這個ip地址。
InternetExplorer.Application、navigate、about:blank
- InternetExplorer.Application:是IE 瀏覽器的 “COM 組件”。
- 正常情況下,用戶雙擊IE圖標打開瀏覽器,本質是系統啟動了這個組件;
- 而RaDa.exe通過代碼 “偷偷創建” 這個組件的實例,相當于在后臺開了一個 “看不見的 IE 窗口”,不用用戶手動打開瀏覽器。
- navigate:是InternetExplorer.Application組件的一個 “方法”,作用是 “讓IE訪問指定的URL地址”。
- 比如用戶在 IE 地址欄輸入http://www.baidu.com并回車,本質就是觸發了navigate("http://www.baidu.com");
- RaDa.exe調用這個方法,就能讓后臺的 “隱形 IE” 訪問它指定的服務器,比如http://10.10.10.10/RaDa。
- about:blank:是 IE 的 “空白頁地址”,打開后顯示一個空白頁面。
- RaDa.exe在創建InternetExplorer.Application組件時,通常會先用navigate("about:blank")初始化 —— 相當于讓 “隱形 IE” 先打開空白頁,避免一上來就訪問目標服務器地址,減少初始行為的暴露。
- 完整過程
- 創建隱形 IE:代碼調用InternetExplorer.Application,在后臺創建一個不顯示窗口的IE實例。
- 初始化空白頁:調用navigate("about:blank"),讓隱形 IE 先打開空白頁,避免初始狀態異常。
- 發起目標請求:再調用navigate("http://10.10.10.10/RaDa"),讓隱形IE訪問控制服務器的地址 —— 這一步本質就是 “發起 HTTP 請求”。
- 處理請求結果:如果服務器返回數據(比如控制指令、配置文件),隱形IE會接收這些數據,RaDa.exe再從IE組件里讀取這些數據,完成 “接收指令” 的操作;如果需要上傳數據(比如竊取的鍵盤記錄),也會通過IE組件的表單提交功能(結合Document/Forms等字符串)完成,同樣偽裝成 IE 的網頁提交行為。
cgi-bin、download.cgi、upload.cgi
- cgi-bin 是 Web 服務器里默認存放CGI腳本的標準目錄,核心作用是 “讓服務器能執行腳本,處理動態請求”.
- 對 RaDa 來說,cgi-bin就是控制服務器上的 “功能區”—— 它要找的 “取指令”“傳數據” 的工具(download.cgi、upload.cgi)都放在這里,確保服務器能正確執行這些腳本,和它完成交互。
③目的三敏感信息竊取
keyb、keybd_event
- keyb是 “鍵盤記錄” 的簡稱,keybd_event是 Windows 系統 “模擬 / 捕獲鍵盤事件” 的 API
screenshot
- 屏幕截圖
Scripting.FileSystemObject、Open、Write
- Scripting.FileSystemObject是VB的文件操作對象,Open/Write是文件讀寫指令;
- 結合C:/RaDa/tmp目錄,可推斷程序將竊取的鍵盤記錄、截屏文件存儲到本地臨時目錄,是敏感信息 “本地暫存” 的技術支撐。
④目的四遠程指令執行
Starting DDoS Smurf remote attack...
- 描述 “發起 Smurf 類型 DDoS 遠程攻擊” 的行為,證明程序可接收服務器下發的 DDoS 指令,并執行破壞性操作。
RegWrite、RegRead、RegDelete
- 分別對應 “寫入注冊表”“讀取注冊表”“刪除注冊表項” 的操作
Sleep
- 臨時暫停自身活動以規避檢測,是遠程控制 “隱蔽性操作” 的證據
--commands
- 程序的 “指令接收” 參數,可通過該參數接收服務器下發的具體操作指令
4.打開IDA,進行驗證分析
①首先打開strings窗口,右鍵點擊setup,勾選unicode C-style(要不然無法顯示所有的字符串)

②找到http://10.10.10.10/RaDa,并點擊

③跳轉到惡意邏輯函數sub_404FB0反匯編圖(里面顯示了很多上面提到的字符串)

- Process Explorer 顯示的
http://10.10.10.10/RaDa、C:\RaDa\tmp、screenshot等字符串,在反匯編中直接可見,說明這些字符串是程序運行時的 “原始配置信息”,未被加密或僅用簡單方式處理,靜態分析即可直接識別。 - 靜態分析中 “函數調用的功能推測” 與動態運行時的 “實際行為” 完全一致。
④再打開函數調用圖結合反匯編進行分析

-
遠程通信與指令交互
- 反匯編證據(call指令)
- 調用 __vbaNew2→ 實例化 InternetExplorer.Application。
- 調用 navigate→ 結合字符串
http://10.10.10.10/RaDa,實現 “偽裝成 IE 向控制服務器發起 HTTP 請求”。 - 調用 Document/Forms 相關方法 → 解析服務器返回的指令頁面,并通過 download.cgi 接收控制指令。
- 函數調用圖證據
- InternetExplorer.Application 相關的外部COM函數rtcGetObject與 sub_404FB0 存在調用鏈路 → 證明程序通過IE組件實現 “遠程指令接收” 的核心邏輯。
- 反匯編證據(call指令)
-
獲取目標主機的 “敏感數據”
- 反匯編證據(call指令)
- 調用 keybd_event→ 結合字符串 keyb,實現 “記錄鍵盤輸入”。
- 調用 BitBlt→ 結合字符串 screenshot,實現 “截取屏幕內容”。
- 函數調用圖證據
- rtcGetFileAttr 用于獲取文件屬性與 sub_404FB0 存在調用關系 → 證明程序具備 “讀取系統信息、執行系統操作” 的能力,可竊取敏感數據并操控主機。
- 反匯編證據(call指令)
-
持久化駐留
- 反匯編證據(call指令)
- 調用 CreateDirectoryA(創建目錄 API)+ rtcChangeDir(切換目錄函數)→ 結合字符串 C:\RaDa\bin/tmp,實現 “在目標主機創建專屬惡意目錄”(bin存儲自身副本,tmp存儲竊取數據)。
- 調用 RegSetValueExA(修改注冊表 API)→ 結合字符串 HKLM...\Run/RaDa.exe,實現 “添加注冊表自啟動項”→ 系統開機時自動運行惡意程序。
- 函數調用圖證據
- 目錄操作函數 rtcChangeDir/rtcChangeDrive 與 sub_404FB0 存在直接調用鏈路 → 證明程序通過 “創建目錄 + 切換路徑” 實現本地持久化存儲。
- 注冊表操作相關的外部函數(如 rtcGetObject 用于操作注冊表 COM 組件)與 sub_404FB0 關聯 → 證明程序具備 “修改注冊表自啟動” 的能力,實現長期駐留。
- 反匯編證據(call指令)
-
數據上傳
- 反匯編證據(call指令)
- 調用 IE 組件的 Forms 提交方法 → 結合字符串 upload.cgi,將竊取的敏感數據上傳至控制服務器。
- 函數調用圖證據
- 與 “HTTP 數據提交” 相關的 COM 函數(如 rtcMidCharBstr 用于構造表單數據)與 sub_404FB0 存在調用關系 → 證明程序能將竊取的信息回傳至服務器。
- 反匯編證據(call指令)
2.3.3識別并說明這個二進制文件所具有的不同特性
從上面的分析可以得出
- 遠程通信和操控(與控制服務器交互收 / 發指令)
- 本地持久化(創建惡意目錄 + 注冊表自啟動)
- 信息竊取(鍵盤記錄、截屏)
2.3.4識別并解釋這個二進制文件中所采用的防止被分析或逆向工程的技術
- upx加殼技術
- 該二進制文件采用了字符串混淆如部分字符串運行時解密,靜態分析難識別
- 依賴 VB 運行時庫函數隱藏調用邏輯
- 使用 UTF-16LE 編碼增加字符串靜態識別難度等技術,來阻礙逆向工程和分析
2.3.5對這個惡意代碼樣本進行分類(病毒、蠕蟲等),并給出你的理由;
遠程控制木馬
理由:依賴遠程服務器接收指令,竊取敏感信息并持久化駐留目標主機,無自我復制能力,以隱蔽控制為核心目的。
2.3.6給出過去已有的具有相似功能的其他工具;
Back Orifice、灰鴿子、網絡神偷、njRAT
2.3.7可能調查處這個二進制文件的開發作者嗎?如果可以,在什么樣的環境和什么樣的限定條件下?
可以
- 比如在2.1.3中使用字符串提取工具,對脫殼后的rada惡意代碼樣本進行分析。找到了"(c)Raul Siles && David Perez” ,這是開發者版權聲明的典型格式,表明了該程序的開發者身份。
- 還可通過查找控制這個程序的服務器、網址能查到是誰注冊的
2.3.8給出至少5種檢測該惡意軟件的方法,例如基于特征碼的方法,需要詳細介紹每種方法。
- 基于特征碼的檢測:
提取該惡意軟件的獨特特征碼,如特定字符串http://10.10.10.10/RaDa、C:\RaDa\bin、文件哈希值(MD5/SHA256)或特殊指令序列(如調用__vbaNew2 創建 IE 組件的匯編代碼),將這些特征碼錄入殺毒軟件或入侵檢測系統(IDS),當系統掃描到匹配的特征時,即可判定為惡意軟件。 - 基于行為的檢測:
監控程序運行時的行為,若發現程序執行以下操作則判定為惡意:創建 C:\RaDa\bin、C:\RaDa\tmp 等特定目錄,修改 HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ 下的注冊表項實現自啟動,調用 InternetExplorer.Application 組件發起對 10.10.10.10 的 HTTP 連接,或執行鍵盤記錄、屏幕截圖等敏感操作。 - 基于字符串的靜態掃描:
通過工具(如 strings 命令、IDA 的 Strings 窗口)掃描二進制文件,若發現同時包含 “RaDa_commands.html”“download.cgi”“upload.cgi”“screenshot” 等關聯字符串,且這些字符串與遠程控制、信息竊取功能強相關,則可判定為該類惡意軟件。 - 基于網絡流量的檢測:
部署網絡監控工具(如 Wireshark、防火墻),監控是否有向 10.10.10.10 發送的 HTTP 請求,且請求路徑包含 “/RaDa”“/cgi-bin/download.cgi”“/cgi-bin/upload.cgi” 等特征;或檢測到程序偽裝成 IE 瀏覽器(User-Agent 為 IE 特征)與可疑 IP 通信,即可觸發告警。 - 基于注冊表和文件系統的檢查:
定期掃描系統注冊表中 HKLM...\Run\ 項下是否有指向 C:\RaDa\bin\RaDa.exe 的自啟動項,同時檢查 C 盤是否存在 RaDa 目錄及其中的 bin、tmp 子目錄,若發現這些異常文件或注冊表項,結合文件哈希或字符串特征,可判定為惡意軟件。 - 基于沙箱的動態分析:
將可疑文件放入隔離沙箱(如 Cuckoo Sandbox)中運行,觀察其是否會釋放文件到 RaDa 目錄、與遠程服務器建立連接、記錄鍵盤輸入或生成截圖文件,若沙箱日志中出現這些惡意行為組合,即可確認其為遠程控制木馬。
2.4取證分析實踐
2.4.1IRC是什么?當IRC客戶端申請加入一個IRC網絡時將發送那個消息?IRC一般使用那些TCP端口?
- IRC 是互聯網中繼聊天(Internet Relay Chat)的縮寫,是一種基于文本的實時聊天協議,允許用戶通過服務器連接到多個頻道(聊天室)進行群體或私密交流。
- 當 IRC 客戶端申請加入網絡時,必須發送的核心消息是NICK和USER命令:
- NICK:設置用戶的唯一昵稱
- USER:提供用戶信息
- IRC 常用 TCP 端口:
- 6667:默認未加密端口,用于明文通信。
- 6697:SSL/TLS 加密端口,用于安全連接。
2.4.2僵尸網絡是什么?僵尸網絡通常用于什么?
- 僵尸網絡是指通過一種或多種傳播手段,將大量主機感染僵尸程序(bot程序)病毒,從而形成的一個可被控制的網絡。控制這些被感染主機的攻擊者稱為“僵尸主控機”。
- 僵尸網絡通常被用于網絡犯罪活動,如發送垃圾郵件和進行分布式拒絕服務(DDoS)攻擊。此外,僵尸程序可以執行各種命令,包括盜取個人信息和遠程控制設備。
2.4.3蜜罐主機(IP地址:172.16.134.191)與哪些IRC服務器進行了通信?
將文件botnet_pcap_file.dat傳入kali,并拖入到kali自帶的wireshark
在wireshark中輸入ip.src == 172.16.134.191 && tcp.dstport == 6667 || tcp.dstport == 6667

蜜罐主機與以下5臺IRC服務器進行了連接:
209.126.161.29
66.33.65.58
63.241.174.144
217.199.175.10
209.196.44.172
2.4.4在這段觀察期間,多少不同的主機訪問了以209.196.44.172為服務器的僵尸網絡?
1.下載tcpflow
在kali中輸入
apt-get install tcpflow
tcpflow:待安裝的工具,功能是捕獲、拆分并分析 TCP 流量,能將 TCP 連接按 “源 IP: 源端口 - 目標 IP: 目標端口” 拆分為獨立文件,方便后續提取特定流量內容(此處用于處理僵尸網絡的 PCAP 數據包)。

2.拆分TCP流量,生成獨立文件
在kali中輸入
tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"
從指定數據包文件中,提取 “目標服務器為 209.196.44.172、端口 6667” 的 TCP 流量,并拆分為獨立文件。


這里生成了兩個文件。
- 第一個文件(172.016.134.191.01152-209.196.044.172.06667)是蜜罐發往 IRC 服務器的流量,僅包含蜜罐自身的請求(如 “加入頻道” 的指令),不包含其他僵尸主機的信息。
- 第二個文件(209.196.044.172.06667-172.016.134.191.01152)是IRC 服務器發往蜜罐的流量,其中包含 IRC 服務器的353 響應(頻道用戶列表)—— 這一響應會列出所有加入該僵尸網絡頻道的主機昵稱,因此只有分析這個文件,才能提取到 “不同主機訪問僵尸網絡” 的核心數據。
3.統計主機數
在kali中輸入
cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l

由圖中可知,有3461個主機訪問了以209.196.44.172為服務器的僵尸網絡
2.4.5哪些IP地址被用于攻擊蜜罐主機?
1.使用以下命令將攻擊蜜罐主機的ip篩選并保存到txt中。
tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 20232324lzm.txt;wc -l 20232324lzm.txt
2.打開文件20232324lzm.txt,查看ip數量


從圖中可以看出一共有165臺主機攻擊。
2.4.6攻擊者嘗試攻擊了那些安全漏洞?
1.TCP目標端口
在kali中輸入
tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq

TCP 135:RPC,可能利用RPC 遠程代碼執行漏洞。
TCP 139:NetBIOS 文件共享,可能利用文件共享權限提升漏洞。
TCP 25:SMTP,可能嘗試未授權郵件中繼或暴力破解漏洞。
TCP 445:SMB,常見永恒之藍(EternalBlue)遠程代碼執行漏洞。
TCP 4899:Radmin,可能利用Radmin 遠程控制弱口令漏洞。
TCP 80:HTTP,可能利用SQL注入、XSS 等Web應用漏洞。
2.UDP目標端口
在kali中輸入
tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq

UDP 137:NetBIOS,可能嘗試NetBIOS 信息泄露漏洞。
2.4.7那些攻擊成功了?是如何成功的?
只有以下端口攻擊成功了
- TCP 445 (SMB) 利用 SMB 協議漏洞 完成文件共享和目錄訪問。
- TCP 4489(Radmin)通過4899端口的Web界面漏洞,遠程控制軟件
- TCP 80 (HTTP)通過 HTTP 請求 成功訪問 Web 服務器的頁面內容。
下面來進行具體的分析:
1.在wireshark中輸入ip.addr==172.16.134.191 &&tcp.port==135

三次握手成功,但很快斷開,沒有看到后續有任何攻擊數據包,攻擊失敗。
2.在wireshark中輸入ip.addr==172.16.134.191 &&tcp.port==139

每當外部主機發起 SMB 連接請求“Tree Connect AndX Request”,目標主機都會立即發送 TCP RST 包主動斷開連接如數據包 230、259、270等。這種 “請求 - 復位” 的反復出現,說明目標的防護機制攔截了連接,攻擊者無法建立 SMB 會話執行惡意操作,因此攻擊未成功。
3.在wireshark中輸入ip.addr==172.16.134.191 &&tcp.port==25

完成 TCP 三次握手,但隨即發送 FIN 包斷開連接,且無SMTP命令的交互;目標主機反復重傳 FIN包,說明連接建立后未執行任何惡意郵件操作就被終止,因此攻擊未成功。
4.在wireshark中輸入ip.addr==172.16.134.191 &&tcp.port==445
攻擊者成功建立了SMB會話,并執行了文件讀取、目錄枚舉等操作,表明對共享資源的訪問成功。方法如下:
①建立連接+認證

外部主機195.36.247.77先和目標主機的 445 端口完成 TCP 三次握手,然后通過NTLMSSP認證成功 “登錄” 目標主機。接著發起Tree Connect請求,這是 SMB 協議里 “訪問共享資源” 的操作,相當于 “打開目標主機的共享文件夾大門”。
②權限擴張與掃描

攻擊者發起大量 SMB 請求,包括重復認證、訪問不同共享路徑,還執行了SAMR/DCE/RPC操作(這些是用來遠程管理賬戶、調用系統功能的協議)。這一步是在橫向移動或掃描目標主機的權限邊界,比如看看能訪問哪些賬戶、哪些資源,為進一步攻擊做準備。
③惡意文件操作

攻擊者成功刪除了目標主機C:\System32\PSEXESVC.EXE文件。這個文件是PsExec工具的服務端組件(PsExec 是用來遠程執行命令的工具),刪除它要么是清理自己的攻擊痕跡,要么是阻止別人用 PsExec 檢測 / 反擊。
5.在wireshark中輸入ip.addr==172.16.134.191 &&tcp.port==4899
攻擊者通過 “建立 TCP 連接→維持穩定數據傳輸→利用 Web 漏洞執行系統命令” 的完整流程,成功利用 4899 端口的 Web 服務漏洞實現對目標主機的命令執行,屬于遠程控制軟件 / Web 服務漏洞利用,最終攻擊成功。詳細方法如下:
①建立初始連接

外部攻擊主機向172.16.134.191:4899發起TCP三次握手(SYN→SYN-ACK→ACK),成功建立 TCP 連接,為后續攻擊行為鋪路。
②數據傳輸階段

流量中出現大量帶[PSH, ACK]標志的數據包,PSH標志表示數據需 “立即處理”,說明攻擊者與目標之間建立了穩定的通信通道,持續傳輸控制或數據流量,未被目標攔截。
③惡意命令執行階段

攻擊者發送目錄遍歷攻擊的 HTTP 請求(HEAD /cgi/../../../../../winnt/system32/cmd.exe?/c+dir),利用 Web 界面的路徑遍歷漏洞執行系統dir命令(用于列目錄)。這一未經授權的系統命令執行操作被目標接收處理,證明惡意命令執行成功。
6.在wireshark中輸入ip.addr==172.16.134.191 &&tcp.port==80

攻擊方發送的 HTTP 請求中包含大量重復字符 “C”,這是緩沖區溢出攻擊的典型載荷, 通過超長字符串觸發 Web 服務的內存溢出漏洞,試圖執行惡意代碼或控制主機。攻擊方多次重復發送相同結構的惡意請求,即使目標返回 TCP RST 包也持續嘗試。這種持續的漏洞利用行為證明攻擊者在主動利用 80 端口的 Web 服務緩沖區溢出漏洞。
7.在wireshark中輸入ip.addr==172.16.134.191 &&upd.port==137

目標主機對所有源IP發送的NetBIOS名稱查詢請求均未返回響應,攻擊失敗。
3.問題及解決方案
- 問題1:無法下載IDA PRO、crackme.exe、tcpflow
- 問題1解決方案:IDA PRO重新找了一個版本,就可以安裝了。crackme.exe拷貝的同學的.tcpflow回寢室換個網就能安裝了。
- 問題2:在IDA pro的strings窗口,無法顯示關鍵字符串
- 問題2解決方案:字符串的編碼格式與IDA 字符串窗口的識別規則不匹配。右鍵點擊setup,勾選unicode C-style就可以了。
4.學習感悟、思考等
通過這次實驗,我收獲特別多。在惡意代碼分析那塊,從文件類型識別、脫殼到字符串提取,一步步摸清了惡意代碼的 “偽裝術” 和反分析套路,原來看似普通的文件背后可能藏著這么多門道。逆向工程用 IDA Pro 分析crackme的時候,剛開始摸不著頭腦,后來慢慢理清思路,學會找關鍵函數和輸入驗證邏輯,這個過程特別鍛煉邏輯思維,也讓我對程序的運行機制有了更深的理解。
但網絡取證部分還是不太熟悉,希望老師可以對如何從這些wireshark流量數據包中找到關鍵有用的信息進行講解。
浙公網安備 33010602011771號