CERT Kaiju 是 Ghidra 的二進位分析工具集合。
這是 CERT Pharos 二元分析框架的一些功能的 Ghidra/Java 實現,特別是函數雜湊和惡意軟體分析工具,但預計隨著時間的推移會增加新的工具和功能。
由於這是一項新的工作,因此該實作尚不具備與基於 ROSE 的原始 C++ 實作完全等同的功能;然而,轉向 Java 和 Ghidra 實際上啟用了原始框架中不可用的一些新功能,特別是改進了對非 x86 架構的處理。由於正在對框架和工具進行一些重大的重新架構,並且轉向 Java 和 Ghidra 實現了與 C++ 實現不同的功能,因此決定使用新的品牌,以便在討論不同的工具和功能。
我們在不久的將來的目的是並行維護原始 Pharos 框架和 Kaiju,因為兩者都可以提供獨特的功能和功能。
注意:作為原型,在評估此插件創建的函數雜湊時可能會出現許多問題。例如,與 Pharos 實作不同,Kaiju 的函數雜湊模組將為非常小的函數建立雜湊(例如,具有 RET 等單一指令的函數會導致更多意外衝突)。因此,該插件和 Pharos fn2hash 之間的分析結果可能有所不同。
可以使用預先建置的 Kaiju 套件。只需下載與您的 Ghidra 版本相對應的 ZIP 檔案並按照以下說明進行安裝即可。建議透過 Ghidra 的圖形介面安裝,但也可以手動解壓縮到對應目錄進行安裝。
CERT Kaiju 需要以下運行時依賴項:
Z3 作為預先建置軟體包的一部分進行預編譯,或者您可以自行建立 Z3 或使用 Linux 發行版的軟體包。
啟動 Ghidra,然後從開啟的視窗中選擇選單: File > Install Extension
。點擊擴充功能視窗頂部的加號,在文件瀏覽器中導航並選擇 .zip 文件,然後按一下「確定」。將安裝擴展,並在視窗中擴展名稱旁邊標記一個複選框,讓您知道它已安裝並準備就緒。
該介面將要求您重新啟動 Ghidra 以開始使用該擴充功能。只需重新啟動,即可以互動方式或在腳本中使用 Kaiju 的額外功能。
某些功能可能需要啟用 Kaiju 外掛。為此,請開啟程式碼瀏覽器,然後導航至選單File > Configure
。在彈出的視窗中,點擊“CERT Kaiju”類別圖示下方的Configure
連結。彈出視窗將顯示所有可用的公開發布的 Kaiju 插件。檢查您想要啟動的任何插件,然後按一下「確定」。現在您可以使用互動式插件功能。
如果插件在啟用後未立即可見,您可以在程式碼瀏覽器的Window
選單下找到該插件。
如果您想測試未來工具的實驗性「alpha」版本,可以從「實驗」類別中獲得它們。然而,這些插件絕對是實驗性的,不受支援,不建議用於生產使用。不過,我們確實歡迎早期回饋!
像 Kaiju 這樣的 Ghidra 擴充功能也可以透過將擴充內容解壓縮到 Ghidra 安裝的相應目錄中來手動安裝。有關更多信息,請參閱 Ghidra 安裝指南。
您也可以直接從原始程式碼建立 Kaiju 擴充功能。請參閱頂級 Kaiju 來源目錄中包含的INSTALL.md
檔案。
Kaiju 的工具可以以互動式圖形方式使用,也可以透過更適合批次作業的「無頭」模式使用。根據工具的性質,某些工具可能僅可用於圖形或無頭使用。
Kaiju 利用 Java Swing 和 Ghidra 的插件架構在 Ghidra 中創建了一個互動式圖形介面 (GUI)。
Kaiju 的大多數工具實際上是分析插件,當選擇「自動分析」選項時,無論是匯入新的可執行檔進行反彙編,還是直接從程式碼瀏覽器視窗中選擇Analysis > Auto Analyze...
,它們都會自動運作。您將看到自動分析工具中預設選擇的多個 CERT 分析插件,但您可以根據需要啟用/停用任何插件。
然而,必須先運行分析工具,然後各種 GUI 工具才能運作。在某些極端情況下,執行自動分析兩次甚至可能會有所幫助,以確保生成所有元資料以創建正確的分區和反彙編訊息,這反過來又會影響雜湊結果。
分析器在 Ghidra 的分析階段自動運行,包括:
GUI 工具包括:
Kaiju > GhiHorn
從 Ghidra 的 CodeBrowser 存取此工具。您也可以按CTRL-G
啟動該插件。Window > CERT Function Hash Viewer
以開始使用此工具(如果工具尚不可見)。將出現一個新窗口,顯示哈希表和其他資料。視窗頂部的按鈕可以刷新表格或將資料匯出到檔案或 YARA 簽名。該視窗也可以停靠在主 Ghidra CodeBrowser 中,以便於與其他插件一起使用。使用該工具時,可以在 Ghidra 的Help > Contents
選單中找到更廣泛的使用文件。Kaiju > OOAnalyzer Importer
以開始使用此工具。一個簡單的彈出對話框將要求您找到要匯入的 JSON 檔案。使用該工具時,可以在 Ghidra 的Help > Contents
選單中找到更廣泛的使用文件。Ghidra 還支援「無頭」模式,讓工具在某些情況下運作而無需使用互動式 GUI。因此,這些命令可用於大量文件的腳本編寫和「批次模式」作業。
無頭工具很大程度上依賴 Ghidra 的 GhidraScript 功能。
無頭工具包括:
其中包含一個名為kaijuRun
的簡單 shell 啟動腳本,用於在簡單場景下執行這些無頭命令,例如在單一執行檔中輸出每個函數的函數雜湊值。假設設定了GHIDRA_INSTALL_DIR
變量,則可以在單一執行檔上執行啟動腳本,如下所示:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun fn2hash example.exe
此指令會將結果輸出到自動命名的檔案中,例如example.exe.Hashes.csv
。
透過執行以下命令可以獲得kaijuRun
腳本的基本幫助:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun --help
請參閱儲存庫中的docs/HeadlessKaiju.md
文件,以了解有關使用此模式和kaijuRun
啟動程式腳本的更多資訊。
以兩種格式之一提供更全面的文件和協助。
請參閱docs/
目錄以取得 Markdown 格式的文件以及所有 Kaiju 工具和元件的協助。這些文件甚至可以透過命令列輕鬆維護、編輯和閱讀。
或者,您可以在 Ghidra 的內建幫助系統中找到相同的文件。要存取這些幫助文檔,請從 Ghidra 選單前往Help > Contents
,然後從幫助視窗左側的樹狀導覽中選擇CERT Kaiju
。
請注意,Ghidra 幫助文件與docs/
目錄中的 Markdown 文件內容完全相同;由於樹內 gradle 插件,gradle 將在建置過程中自動解析 Markdown 並匯出到 Ghidra HTML。這允許更簡單的維護(僅在一個地方更新文檔,而不是兩個地方)並使兩者保持同步。
所有新文件都應新增至docs/
目錄。
該軟體由卡內基美隆大學軟體工程學院根據簡化的 BSD 風格許可證進行許可。請在此儲存庫根目錄的LICENSE.md
檔案中找到此授權的完整詳細資訊以及此專案中使用的依賴項的授權條款。
CERT Kaiju 標誌是基於 Cameron Spahn 創作的藝術作品,最初根據 Creative Commons Attribution-Share Alike 4.0 International 授權條款發布。