摘要

惡意軟體開發者日益採用 Rust 程式語言,對傳統惡意軟體分析技術帶來重大挑戰。Rust 的記憶體安全性、效能和平行處理功能,雖然對合法軟體開發有益,但也增加了分析惡意 Rust 二進位檔案的複雜性。本報告深入探討 RIFT(Rust Interactive Function Tool),這是一款開源工具,旨在協助逆向工程師識別並區分 Rust 惡意軟體中的合法函式庫程式碼與攻擊者撰寫的邏輯。我們將探討 RIFT 的核心組件、其模式匹配方法(特別是 FLIRT 簽章和二進位差異比對)以及其在簡化 Rust 基礎威脅分析中的實際應用。

加速 Rust 惡意軟體逆向工程:RIFT 如何簡化分析 | 資訊安全新聞

1. 簡介

網路威脅的格局不斷演變,threat actors 越來越多地利用現代程式語言開發複雜的惡意軟體。Rust 因其效能、記憶體安全性和平行處理能力而受到讚譽,已成為惡意軟體開發的首選語言 [1] 。這種轉變為惡意軟體分析師帶來了獨特的挑戰,主要是因為 Rust 二進位檔案的固有特性,例如檔案較大且大量靜態連結的函式庫程式碼。這種複雜性來自於區分無害的合法函式庫功能與攻擊者撰寫的惡意程式碼的困難。

傳統的惡意軟體分析工具常常難以應對 Rust 二進位檔案的複雜性,使得逆向工程的程序耗時且資源密集。為了解決這一關鍵需求,開發了一款專門工具 RIFT。RIFT 旨在通過提供自動化機制來識別和標註函式庫程式碼,從而提高 Rust 惡意軟體分析的效率和準確性。本報告提供了 RIFT 的詳細技術概述、其基本原理以及在 Rust 惡意軟體分析環境中的實際應用。

2. Rust 惡意軟體分析的挑戰

Rust 的設計原則雖然為軟體開發提供了顯著優勢,但無意中為惡意軟體分析帶來了複雜性。主要挑戰之一來自於 Rust 的記憶體安全性和平行處理功能,這些功能為編譯後的二進位檔案增加了抽象層。與傳統語言如 C++ 編譯的二進位檔案相比,這種抽象使得逆向工程師更難以辨別惡意軟體的真實行為和意圖 [1]

此外,由於 Rust 二進位檔案的靜態連結特性,它們通常較大且更複雜。與依賴系統函式庫的動態連結可執行檔不同,Rust 二進位檔案將所有必要的依賴項直接嵌入可執行檔中。這導致功能數量龐大,即使是相對簡單的程式也可能包含數千個功能。例如,用 C++ 編譯的簡單下載程式可能有不到 100 個反組譯功能,檔案大小低於 20 KB,而其 Rust 對應版本可能包含近 10,000 個功能,檔案大小超過 3 MB [1] 。這種顯著差異要求分析師花費大量時間和精力來區分第三方函式庫程式碼與 threat actor 撰寫的實際惡意邏輯。缺乏有關編譯器版本或第三方依賴項的明確指標進一步加劇了這一問題,使得逆向工程師的任務變得勞動密集且專業化。

3. RIFT:架構與組件

RIFT(Rust Interactive Function Tool)是一款開源工具套件,旨在通過協助逆向工程師識別和標註函式庫程式碼來簡化 Rust 惡意軟體的分析。它專為應對 Rust 二進位檔案的獨特挑戰而開發,特別是區分合法函式庫功能與攻擊者撰寫的程式碼的困難 [1] 。RIFT 包含三個核心組件,每個組件在整體分析工作流程中都扮演著關鍵角色:

3.1 RIFT 靜態分析器

RIFT 靜態分析器是 IDA Pro 的外掛程式,負責從 Rust 二進位檔案中提取靜態資訊。這一初始步驟至關重要,因為它收集了有關二進位檔案編譯環境的關鍵 metadata。提取的資訊包括使用的 Rust 編譯器的 Git commit hash、Target triple(包括架構和編譯器)、二進位檔案編譯的特定架構,以及二進位檔案中找到的 crates(依賴項)及其對應版本 [1] 。這些提取的資訊儲存在 JSON 檔案中,作為 RIFT Generator 後續處理的輸入。

3.2 RIFT 產生器

RIFT 產生器是一個 Python 程式,自動化了 Rust 編譯器識別、FLIRT 簽章生成和二進位差異比對的程序。它作為 Rust 生態系統和逆向工程領域中幾個關鍵工具的封裝器 [1] 。RIFT 產生器整合的主要工具包括:

  • Cargo :Rust 套件管理器,用於下載和編譯依賴項。
  • Hexray's FLAIR 工具 :具體為 sigmake.exe pcf.exe ,用於生成 FLIRT 簽章。
  • Hexray's IDA 文字介面 ( idat.exe ) :用於自動化二進位分析和反組譯。
  • Diaphora :一款開源工具,促進二進位差異比對 [1]

RIFT 產生器通過多個階段進行處理,讀取 RIFT 靜態分析器的 JSON 輸出,下載對應的 Rust 編譯器和依賴項,然後進行編譯、資料收集、FLIRT 簽章生成和二進位比較。這一多階段程序確保收集和處理所有必要的 artifacts,以實現有效的函式庫識別。

3.3 RIFT Diff Applier

RIFT Diff Applier 是另一個 IDA Pro 外掛程式,設計用於消費和應用 RIFT 產生器生成的二進位差異資訊。與 FLIRT 簽章的自動化特性不同,RIFT Diff Applier為分析師提供了一個互動式、半手動的函式庫程式碼識別方法 [1] 。它支援兩種主要模式:互動模式和自動重命名模式。這種互動式方法允許對識別的函式庫程式碼進行精細控制和驗證,特別是在自動化方法可能不足的情況下。

4. RIFT 中的模式匹配技術

RIFT 使用兩種主要模式匹配技術來精確標註 Rust 二進位檔案中的函式庫程式碼:FLIRT 簽章和二進位差異比對。這些方法雖然不同,但互補,為函式庫識別提供了穩健的解決方案。

4.1 FLIRT 簽章

FLIRT(Fast Library Identification and Recognition Technology)是一種成熟的技術,使 IDA Pro 能夠識別其支援的編譯器生成的標準函式庫功能。FLIRT 的優勢在於其精確性;它提供了高度準確的函式庫識別。然而,這種精確性也可能是一個限制,因為高度相似的功能可能因 FLIRT 簽章的嚴格標準而未被標記 [1] 。RIFT 產生器自動化了這些 FLIRT 簽章的創建,大大減少了識別常用函式庫功能所需的手動工作。

4.2 二進位差異比對

除了 FLIRT 簽章外,RIFT 還自動化了二進位差異比對的程序。這涉及將收集的 COFF 檔案(Common Object File Format)與目標二進位檔案進行比較。RIFT 利用 IDA 的命令列工具 ( idat.exe ) 和 Diaphora 外掛程式來促進此程序 [1] 。實驗性批次二進位差異比對程序包括反組譯和生成 SQLite 檔案、批次二進位差異比對,以及最終將差異結果合併到 JSON 檔案中,供 RIFT Diff Applier使用。雖然 FLIRT 簽章提供高可靠性且誤報率低,但二進位差異比對的誤報率較高,但可以在 FLIRT 簽章因其嚴格性而失敗的情況下填補空白。即使 Rust 編譯器版本和依賴項不易取得,二進位差異比對方法也能產生有用的結果 [1]

FLIRT 簽章和二進位差異比對各有其優缺點。FLIRT 簽章生成速度通常較快,對已知的函式庫功能高度可靠。然而,對於深入分析或處理高度客製化或混淆的二進位檔案時,它們可能不足。二進位差異比對雖然可能耗時(根據二進位檔案大小和提取的依賴項可能需要數小時),但通過識別 FLIRT 可能錯過的相似性提供了更全面的分析。RIFT Diff Applier通過其互動和自動重命名模式,使分析師能夠利用二進位差異比對的優勢來精細化函式庫程式碼識別,特別是在自動 FLIRT 應用不足時 [1]

5. RIFT 的實際應用

RIFT 的有效性已通過分析真實世界的 Rust 惡意軟體樣本(如 RALord 勒索軟體和 SPICA 後門)得到驗證。這些案例研究突顯了 RIFT 如何通過顯著減少識別函式庫功能所需的時間和精力來簡化逆向工程程序。

5.1 RALord 勒索軟體分析

在 RALord 勒索軟體的分析中,RIFT 的 FLIRT 簽章生成能力證明了其極大的價值。程序從 RIFT 靜態分析器提取可提取的依賴項、Rust 編譯器的 Git commit hash、目標架構和目標作業系統開始。這些資訊隨後輸入 RIFT 產生器,生成必要的 FLIRT 簽章 [1] 。這些簽章可以手動或使用 RIFT GitHub 儲存庫提供的腳本 ( ida_apply_flirt_from_folder.py ) 載入 IDA Pro。

應用 RIFT 生成的 FLIRT 簽章的影響深遠。比較應用 RIFT 前後的反編譯程式碼清楚顯示,主功能中的大部分函式庫和編譯器程式碼已被識別。這種識別使逆向工程師能夠專注於 threat actor 的自訂程式碼,而不必花費寶貴的時間和資源來篩選無害的函式庫功能。這種專注的方法顯著加速了分析工作流程並提高了惡意軟體調查的整體效率 [1]

5.2 SPICA 後門分析

雖然 FLIRT 簽章應用在許多使用案例中非常有效,但某些場景,特別是深入分析,可能需要額外的資訊。這是 RIFT 的二進位差異比對方法提供關鍵補充分析的地方。在 SPICA(一個用 Rust 編寫的後門)的應用示例中,與 RALord 分析類似,首先使用 RIFT 靜態分析器提取資訊,然後由 RIFT 產生器處理。然而,對於 SPICA,同時啟用了 FLIRT 簽章生成和二進位差異比對 [1]

為了利用二進位差異比對方法,Diaphora 被用來生成對應的 SQLite 檔案。需要注意的是,二進位差異比對程序可能耗時,根據二進位檔案大小及其提取的依賴項可能需要數小時。一旦差異比對程序完成,RIFT Diff Applier可用於載入和解釋二進位差異輸出檔案 [1] 。這種方法的一個顯著優勢是其能夠為 FLIRT 簽章因其嚴格性而失敗的功能提供有用且可靠的資訊,特別是在相似性高的情況下。這種能力對於檢測工程尤其有價值,因為它有助於在為特定程式碼段製作簽章時識別或過濾潛在的函式庫功能 [1]

6. 結論

RIFT 代表了 Rust 惡意軟體分析領域的重大進展。通過結合 FLIRT 簽章和二進位差異比對自動化識別和標註函式庫程式碼,RIFT 使逆向工程師能夠克服 Rust 二進位檔案的固有複雜性。該工具套件的模組化設計,包括靜態分析器、產生器和Diff Applier,提供了提取關鍵 metadata、生成模式匹配資訊和互動應用分析結果的全面工作流程。對 RALord 勒索軟體和 SPICA 後門的實際應用證明了 RIFT 在簡化分析程序方面的有效性,使分析師能夠專注於惡意邏輯。隨著 Rust 在 threat actors 中的普及,RIFT 等工具將在對抗複雜網路威脅的持續鬥爭中不可或缺,實現更快的應變和更準確的威脅情報。

Copyright © 2025 版權所有 翊天科技有限公司