2.3K
若想重新複刻 C2 伺服器的功能,分析惡意程式中間過程有一重要步驟:「找出所有 Command and Control Server 指令列表與功能函式」。
分析時,需使用逆向分析工具,例如 IDA Pro、x64dbg 等。如何操作 IDA Pro 或 x64dbg 逆向分析工具,已超出本文範圍。讀者若有興趣,可參考坊
間相關專業書籍。
惡意程式類型若是後門程式,則惡意程式的 列表,時常會以條件判斷式的結構呈現。C 程式語法關鍵字如 switch case 與多個 if、else if、else。
而在 switch 條件判斷後,會緊接著呼叫 Command 的功能函式。而功能函式這邊只是舉例,真實世界的惡意程式 C2 Command 會比這複雜許多。
C 語言虛擬碼範例如下:
cmd_code = recv_cmd(); switch(cmd_code) { case 0xAA: print_machine_info(); break; case 0xBB: print_process_list(); break; case 0xCC: download_file(); break; case 0xDD: upload_file(); break; case 0xEE: execute_file(); break; default: break; }
在範例中,經由 recv_cmd() 函式,會連線 C2 伺服器,並接收到指令代碼 (cmd_code)。透過 switch 語法,分派指令代碼執行對應的函式,如
- 指令代碼 (cmd_code) = 0xAA:執行 print_machine_info() 函式,功能:印出本機資訊
- 指令代碼 (cmd_code) = 0xBB:執行 print_process_list() 函式,功能:印出 Process 列表
- 指令代碼 (cmd_code) = 0xCC:執行 download_file() 函式,功能:下載檔案
- 指令代碼 (cmd_code) = 0xDD:執行 upload_file() 函式,功能:上傳檔案
- 指令代碼 (cmd_code) = 0xEE:執行 execute_file() 函式,功能:執行檔案
同樣的程式邏輯,若是以組合語言呈現,語法關鍵字如 cmp、call、je等,範例如下:
call recv_cmd cmp eax, 0xAA je 0x10000 cmp eax, 0xBB je 0x10001 cmp eax, 0xCC je 0x10002 cmp eax, 0xDD je 0x10003 cmp eax, 0xEE je 0x10004 0x10000: call print_machine_info 0x10001: call print_process_list 0x10002: call download_file 0x10003: call upload_file 0x10004: call execute_file
經由歸納整理後,得知範例中呈現 5 個功能與執行函式,隨即記錄下來。
你在分析惡意程式過程中,就是要盡力查找類似範例的結構程式碼,即能歸納出惡意程式所有指令列表與功能函式。
複刻 C2 系列文章
- C2 複刻 01 – 為何投入複刻 C2 工作?
- C2 複刻 02 – Command and Control Server 定義
- C2 複刻 03 | Command and Control Server (C&C、C2) 通訊協定類型
- C2 複刻 04 | Command and Control Server (C&C、C2) 觀察
- C2 複刻 05 | 判斷Command and Control Server (C&C、C2)發起連線端
- C2 複刻 06 | Command and Control Server 握手 (Handshake) 與認證 (Authentication)
- C2 複刻 07 | 分析惡意程式呼叫的作業系統網路 API
- C2 複刻 08 | 找出所有 Command and Control Server 指令列表與功能函式
- C2 複刻 09 | Command and Control 資料傳輸格式
- C2 複刻 10 | 惡意程式加解密函式定位
- C2 複刻 11 | 判定惡意程式加解密演算法種類
- C2 複刻 12 | 推薦 20 個複刻 Command and Control Server 的 Python 3 擴充模組
- C2 複刻 13 | 分享 3 個複刻 Command and Control Server 程式測試環境的設定建議
- C2 複刻 14 | 3 個複刻 Command and Control Server 程式的開發原則建議