C2 複刻 10 | 惡意程式加解密函式定位

by iok
2.8K 人次瀏覽
C2 複刻 10 | 惡意程式加解密函式定位

在反組譯惡意程式後,如何在茫茫組語海中,定位加解密函式的所在程式碼位置呢?

根據我過去分析惡意程式的經驗,加解密的函式常會單獨成一個函式。從惡意程式角度切入,分為送資料給 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 系列文章

相關文章

留言