摘要

複雜惡意軟體的持續演進,例如 XLoader 家族,對傳統逆向工程方法帶來了重大挑戰。這些威脅採用多層加密、動態金鑰生成和積極的反分析技術,通常超越手動調查的速度。本報告探討生成式人工智慧(Generative AI)模型的應用,特別是大型語言模型(Large Language Models, LLMs),作為加速分析高度混淆二進位檔的效能倍增器。透過詳細說明一個雲端的「離線」 static analysis pipeline,我們展示 LLMs 如何有效地執行分類、反混淆和自動化腳本生成,將分析時間從數天壓縮到數小時。核心技術重點在於 AI 輔助解密 XLoader 的設定資料,包括其複雜的字串和多層命令與控制(C2)網域解密常式,突顯 AI 對深度靜態分析的效率和可重現性的變革性影響。

技術研究報告

當 AI 遇上逆向工程:解構 XLoader 惡意軟體的演進與反制 | 資訊安全新聞

1. 簡介

網路威脅的格局特點是惡意軟體開發者與安全研究人員之間的軍備競賽。像 XLoader(FormBook 的後繼者)這樣的惡意軟體家族,透過其不斷演進和採用先進的反分析機制,體現了這一挑戰 [1] 。XLoader 的設計結合了客製化加密、混淆的 API 呼叫和積極的沙箱規避,使得提取入侵指標(IoCs)成為一個耗時的手動過程 [1] 。例如,XLoader 第 6 版和第 7 版的複雜性涉及多層加密、動態金鑰生成以及遠離靜態字串儲存,進一步使分析複雜化 [2] 。第 8.0 版的推出需要一種新的方法來克服其增強的保護措施,從而促成了對生成式 AI 作為重新獲得分析優勢的關鍵工具的探索。

2. AI 輔助逆向工程工作流程

生成式 AI 模型,特別是那些具有進階程式碼生成和推理能力的模型,為逆向工程提供了兩個主要的整合途徑:透過模型環境協定(Model Context Protocol, MCP)的即時代理方法,以及一個可重現的、雲端的 「offline」data pipeline [1] 。雖然 MCP 整合允許與 IDA Pro 和除錯器等工具進行即時互動,但 offline pipeline 為深度靜態分析提供了一個強大的替代方案,無需依賴即時工具鏈或穩定連線。這種方法涉及將 IDA Pro 資料庫(反組譯、反編譯、字串)和惡意軟體二進位檔匯出到 LLM 的雲端環境,使模型能夠執行分析並針對二進位檔執行自己的 Python 腳本 [1]

這種離線方法的關鍵優勢在於其能夠將逆向工程的機械性、重複性任務委派給 AI。這包括:

  • 分析複雜函數以識別演算法。
  • 生成可運行的解密和反混淆腳本。
  • 對匯出的資料執行深度靜態分析,使結果易於共享和重現。

3. XLoader 反分析機制的技術分析

3.1. 程式碼和 API 混淆

XLoader 採用複雜的技術來保護其關鍵函數和 API 呼叫。一個值得注意的機制是「secure-call trampoline」,這是一個封裝函數,它在呼叫函數指標之前暫時加密幾乎整個映像,然後在返回時解密這些區域 [1] 。這確保了函數在 memory dump 中保持加密狀態,有效地將惡意程式碼與 security software hook 和分析工具隔離開來 [1] 。這種技術應用於大約 20 個關鍵函數,包括用於程序、執行緒、記憶體和檔案操作的 NTAPI 常式,以及 WinSock 函數。

此外,XLoader 使用動態 API 解析。它不儲存 API 函數名稱,而是計算它們的 CRC32 值,然後使用 RC4 和減法演算法的組合進行解密 [2] 。這種金鑰、字串和常數的動態建構避免了硬編碼值,使得使用靜態特徵的檢測無效 [2]

3.2. 多層字串解密

XLoader 樣本不包含可讀字串,而是依賴一系列短常式在執行階段解密它們。AI 輔助過程從分析一個字串解密小程式開始,該小程式揭示了一個重複出現的模式:一個區域陣列初始化,隨後是三次對先前解密常式(例如 ai_dec_func14 )的呼叫 [1] 。LLM 能夠建置呼叫圖並描述常式的行為,最終生成一個 IDAPython 腳本來自動化解密二進位檔中的所有 175 個字串。提供給 LLM 的腳本要求包括尋找並註釋對解密器函數 sub_4050F3 的每次呼叫,並輸出除錯資訊:

# IDAPython script requirements provided to LLM
# Find and annotate every call to the decrypter function `sub_4050F3` with the decrypted string.
# For each string, output debug info: encrypted buffer, XOR tweak byte (BL), length, and decrypted bytes.
# Print all binary data in hex.
        

這種自動化過程將字串反混淆所需的時間顯著減少到不到 20 分鐘 [1]

3.3. 複雜的 C2 Domain Decryption Pipeline

分析中最具挑戰性的方面是提取 C2 網域,這些網域儲存為 64 筆 Base64 編碼資料。XLoader 的 Domain Decryption Pipeline 涉及至少五層轉換,包括兩層使用不同金鑰的修改版 RC4 加密 [1] 。困難之處在於金鑰生成邏輯分散在多個函數中,需要針對性的人工干預來引導 AI。

對網域生成函數 ai_dec_func_0 的初步分析顯示它是一個第一階段的網域建構器。對於給定的網域索引,它執行 Base64 解碼,接著是帶有差異轉換的金鑰化 RC4,然後將結果重新編碼為 Base64 [1] 。LLM 最初未能定位第一個 RC4 金鑰(位於 ctx+0x23D0 ),因為匯出的資料缺乏對結構體欄位的引用。這需要人類分析師手動定位金鑰的初始位置(例如在 ai_dec_func_4 中)並將環境提供給 AI [1] 。這突顯出,雖然 AI 加速了過程,但人類專業知識在引導複雜的、依賴環境的混淆方面仍然至關重要。

第二層解密同樣複雜,涉及在 ai_dec_func_11 內部生成的第二個 20 位元組金鑰,該金鑰與一個 SALT_DWORD 進行了 XOR 運算。同樣,LLM 無法定位 SALT_DWORD 的初始值,需要從像 ai_dec_func_20 這樣的函數中手動恢復 [1] 。在分析師指導下的最終成功解密過程,產生了完整的 C2 網域列表。

C2 網域解密的整體過程可以視覺化為一個多階段 Pipeline:

graph TD A[Base64 Encoded String] --> B{Base64 Decode}; B --> C{Layer 1 RC4 Decryption}; C --> D[Intermediate Base64 String]; D --> E{Base64 Decode}; E --> F{Layer 2 RC4 Decryption}; F --> G[Final ASCII Domain]; H["Key 1 (ctx+0x23D0)"] --> C; I["Key 2 (ai_dec_func_11) XOR SALT_DWORD"] --> F;

圖 1: 多層 XLoader C2 Domain Decryption Pipeline。

4. XLoader 演進的比較分析

生成式 AI 的使用對於那些不斷演進其混淆技術的惡意軟體特別有效。 XLoader 第 6 版和第 7 版的分析為第 8.0 版遇到的複雜性提供了基準 [2] 。關鍵的演進變化包括:

  • 加密演算法: 從客製化查找表演算法演進到 RC4 和減法演算法的組合 [2]
  • 加密層數: 第 6 版和第 7 版在 NOPUSHEBP 函數之上引入了額外的加密層,需要一個專用函數( Main Function 3 )進行解密 [2]
  • 字串儲存: 放棄使用 PUSHEBP 資料區塊來儲存加密字串,轉而使用專用函數來建構、解密和返回每個字串 [2]

AI 在分析第 8.0 版字串和網域解密常式方面的成功,展示了其快速適應這些演進變化的能力。透過生成和執行客製化腳本,LLM 繞過了研究人員需要為每個新版本手動逆向工程和重新實作解密邏輯的需求,從而將惡意軟體的不斷演進從時間消耗轉變為可管理的任務。

5. 結論

生成式 AI 代表了逆向工程領域的典範轉移,作為對抗先進、不斷演變的威脅(如 XLoader)的強大效能倍增器。基於雲端的靜態分析工作流程使研究人員能夠快速分類和反混淆複雜的二進位檔,在幾分鐘而非幾天內生成解密常式的可運作原型 [1] 。雖然 AI 擅長機械性的繁重工作——例如程式碼分析和腳本生成——但人類專業知識在克服最複雜的保護措施方面仍然不可或缺,特別是那些涉及分散式金鑰推導邏輯和多層函數加密的保護。將 LLMs 整合到分析 Pipeline 中,透過實現更快的 IoC 提取和檢測更新,顯著縮短了攻擊者的機會窗口,最終幫助安全防禦者跟上現代惡意軟體日益複雜的步伐。