2.9K
在反組譯惡意程式後,如何在茫茫組語海中,定位加解密函式的所在程式碼位置呢?
根據我過去分析惡意程式的經驗,加解密的函式常會單獨成一個函式。從惡意程式角度切入,分為送資料給 C2 伺服器與從 C2 伺服器收資料 ,2 部份作業來說明。
文章目錄
送資料給 Command and Control 伺服器
因為加密函式會在送資料前,將資料加密。故在惡意程式程式碼結構中,會先呼叫加密函式。(如下面程式碼範例:encrypt_algorithm 函式),再呼叫送資料函式(如下面程式碼範例:send函式)。
你將惡意程式反組譯後,可特別留意在送資料函式前面不遠的函式,極有可能是加密函式。
而如何定位送資料函式程式碼位置?有呼叫前面章節提到的關鍵 Windows 與 Linux 網路API 中,關於送資料的 API,即是送資料函式。
encrypt_data = encrypt_algorithm(send_data, encrypt_key); send(encrypt_data); ....
從 Command and Control 伺服器收資料
因為加密函式會在收到資料後,將資料解密。故在惡意程式程式碼結構中,會先呼叫收資料函式 (如下面程式碼範例:recv 函式),再呼叫解密函式(如下面程式碼範例:decrypt_algorithm 函式)。
你將惡意程式反組譯後,可特別留意在收資料函式後面不遠的函式,極有可能是解密函式。而如何定位收資料函式程式碼位置?有呼叫前面章節提到的關鍵 Windows 與 Linux 網路 API 中,關於收資料的 API,即是收資料函式。
recv_data = recv(); decrypt_data = decrypt_algorithm(recv_data, decrypt_key); ....
複刻 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 程式的開發原則建議