C2 複刻 08 | 找出所有 Command and Control Server 指令列表與功能函式

by iok
1.8K 人次瀏覽
C2 複刻 08 | 找出所有 Command and Control Server 指令列表與功能函式

若想重新複刻 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 系列文章

相關文章

留言