CERT Kaiju ist eine Sammlung binärer Analysetools für Ghidra.
Hierbei handelt es sich um eine Ghidra/Java-Implementierung einiger Funktionen des CERT Pharos Binary Analysis Framework, insbesondere der Funktions-Hashing- und Malware-Analysetools, es wird jedoch erwartet, dass im Laufe der Zeit neue Tools und Funktionen hinzukommen.
Da es sich um eine neue Anstrengung handelt, verfügt diese Implementierung noch nicht über die vollständige Funktionsgleichheit mit der ursprünglichen C++-Implementierung auf Basis von ROSE; Allerdings hat der Wechsel zu Java und Ghidra tatsächlich einige neue Funktionen ermöglicht, die im ursprünglichen Framework nicht verfügbar waren – insbesondere eine verbesserte Handhabung von Nicht-x86-Architekturen. Da eine erhebliche Umstrukturierung des Frameworks und der Tools stattfindet und der Wechsel zu Java und Ghidra andere Funktionen als die C++-Implementierung ermöglicht, wurde die Entscheidung getroffen, ein neues Branding zu verwenden, damit bei der Diskussion weniger Verwirrung zwischen den Implementierungen entsteht verschiedene Tools und Funktionen.
Unsere Absicht für die nahe Zukunft ist es, sowohl das ursprüngliche Pharos-Framework als auch Kaiju nebeneinander beizubehalten, da beide einzigartige Funktionen und Fähigkeiten bieten können.
VORSICHT: Da es sich um einen Prototyp handelt, können bei der Auswertung der von diesem Plugin erstellten Funktions-Hashes viele Probleme auftreten. Im Gegensatz zur Pharos-Implementierung erstellt das Funktions-Hashing-Modul von Kaiju beispielsweise Hashes für sehr kleine Funktionen (z. B. solche mit einer einzigen Anweisung wie RET, die viele weitere unbeabsichtigte Kollisionen verursachen). Daher können die Analyseergebnisse zwischen diesem Plugin und Pharos fn2hash variieren.
Es sind vorgefertigte Kaiju-Pakete verfügbar. Laden Sie einfach die ZIP-Datei herunter, die Ihrer Ghidra-Version entspricht, und installieren Sie sie gemäß den folgenden Anweisungen. Es wird empfohlen, die Installation über die grafische Benutzeroberfläche von Ghidra durchzuführen, es ist jedoch auch möglich, die Datei manuell in das entsprechende Verzeichnis zu entpacken, um sie zu installieren.
CERT Kaiju erfordert die folgenden Laufzeitabhängigkeiten:
Z3 wird als Teil der vorgefertigten Pakete vorkompiliert bereitgestellt. Sie können Z3 aber auch selbst erstellen oder das Paket Ihrer Linux-Distribution verwenden.
Starten Sie Ghidra und wählen Sie im sich öffnenden Fenster aus dem Menü: File > Install Extension
. Klicken Sie oben im Erweiterungsfenster auf das Pluszeichen, navigieren Sie, wählen Sie die ZIP-Datei im Dateibrowser aus und klicken Sie auf OK. Die Erweiterung wird installiert und neben dem Namen der Erweiterung im Fenster wird ein Kontrollkästchen markiert, um Sie darüber zu informieren, dass sie installiert und bereit ist.
Die Benutzeroberfläche fordert Sie auf, Ghidra neu zu starten, um die Erweiterung verwenden zu können. Starten Sie einfach neu, und dann stehen die zusätzlichen Funktionen von Kaiju zur interaktiven Verwendung oder in Skripten zur Verfügung.
Für einige Funktionen ist möglicherweise die Aktivierung von Kaiju-Plugins erforderlich. Öffnen Sie dazu den Code-Browser und navigieren Sie dann zum Menü File > Configure
. Klicken Sie im daraufhin angezeigten Fenster auf den Link Configure
“ unter dem Kategoriesymbol „CERT Kaiju“. In einem Popup werden alle verfügbaren öffentlich veröffentlichten Kaiju-Plugins angezeigt. Markieren Sie alle Plugins, die Sie aktivieren möchten, und klicken Sie dann auf OK. Sie haben nun Zugriff auf interaktive Plugin-Funktionen.
Wenn ein Plugin nach der Aktivierung nicht sofort sichtbar ist, finden Sie es im Code-Browser im Menü Window
.
Experimentelle „Alpha“-Versionen zukünftiger Tools sind möglicherweise in der Kategorie „Experimentell“ verfügbar, wenn Sie sie testen möchten. Diese Plugins sind jedoch definitiv experimentell und werden nicht unterstützt und werden nicht für den Produktionseinsatz empfohlen. Wir freuen uns jedoch über frühzeitiges Feedback!
Ghidra-Erweiterungen wie Kaiju können auch manuell installiert werden, indem Sie den Erweiterungsinhalt in das entsprechende Verzeichnis Ihrer Ghidra-Installation entpacken. Weitere Informationen finden Sie im Ghidra-Installationshandbuch.
Sie können die Kaiju-Erweiterung auch direkt aus dem Quellcode erstellen. Sehen Sie sich die Datei INSTALL.md
an, die im obersten Kaiju-Quellverzeichnis enthalten ist.
Die Tools von Kaiju können entweder auf interaktive grafische Weise oder über einen „Headless“-Modus verwendet werden, der besser für Batch-Jobs geeignet ist. Einige Tools sind möglicherweise aufgrund ihrer Art nur für die grafische oder Headless-Nutzung verfügbar.
Kaiju erstellt eine interaktive grafische Benutzeroberfläche (GUI) in Ghidra unter Verwendung von Java Swing und der Plugin-Architektur von Ghidra.
Bei den meisten Kaiju-Tools handelt es sich tatsächlich um Analyse-Plugins, die automatisch ausgeführt werden, wenn die Option „Automatische Analyse“ ausgewählt wird, entweder beim Import einer neuen ausführbaren Datei zum Disassemblieren oder durch direkte Auswahl Analysis > Auto Analyze...
im Code-Browserfenster. Im Auto-Analyze-Tool werden standardmäßig mehrere CERT-Analyse-Plugins ausgewählt, Sie können diese jedoch nach Bedarf aktivieren/deaktivieren.
Die Analysetools müssen jedoch ausgeführt werden, bevor die verschiedenen GUI-Tools funktionieren. In einigen Einzelfällen kann es sogar hilfreich sein, die automatische Analyse zweimal auszuführen, um sicherzustellen, dass alle Metadaten erstellt werden, um korrekte Partitionierungs- und Disassemblierungsinformationen zu erstellen, die wiederum die Hashing-Ergebnisse beeinflussen können.
Analysegeräte werden während der Analysephase von Ghidra automatisch ausgeführt und umfassen:
Zu den GUI-Tools gehören:
Kaiju > GhiHorn
um über Ghidras CodeBrowser auf dieses Tool zuzugreifen. Sie können das Plugin auch starten, indem Sie CTRL-G
drücken.Window > CERT Function Hash Viewer
aus dem Menü, um mit diesem Tool zu beginnen, falls es noch nicht sichtbar ist. Es erscheint ein neues Fenster mit einer Tabelle mit Hashes und anderen Daten. Mit den Schaltflächen oben im Fenster können Sie die Tabelle aktualisieren oder Daten in eine Datei oder eine YARA-Signatur exportieren. Dieses Fenster kann zur einfacheren Verwendung zusammen mit anderen Plugins auch an den Haupt-Ghidra-CodeBrowser angedockt werden. Eine ausführlichere Nutzungsdokumentation finden Sie bei der Verwendung des Tools im Menü Help > Contents
von Ghidra.Kaiju > OOAnalyzer Importer
aus dem Menü, um mit diesem Tool zu beginnen. In einem einfachen Dialog-Popup werden Sie aufgefordert, die JSON-Datei zu suchen, die Sie importieren möchten. Eine ausführlichere Nutzungsdokumentation finden Sie bei der Verwendung des Tools im Menü Help > Contents
von Ghidra.Ghidra unterstützt auch einen „Headless“-Modus, der es ermöglicht, Tools unter bestimmten Umständen ohne Verwendung der interaktiven GUI auszuführen. Diese Befehle können daher für Skripterstellung und „Batch-Modus“-Jobs für eine große Anzahl von Dateien verwendet werden.
Die Headless-Tools basieren größtenteils auf der GhidraScript-Funktionalität von Ghidra.
Zu den kopflosen Werkzeugen gehören:
Ein einfaches Shell-Startskript namens kaijuRun
wurde hinzugefügt, um diese Headless-Befehle für einfache Szenarios auszuführen, wie zum Beispiel die Ausgabe der Funktions-Hashes für jede Funktion in einer einzelnen ausführbaren Datei. Unter der Annahme, dass die Variable GHIDRA_INSTALL_DIR
gesetzt ist, könnte man das Startskript beispielsweise wie folgt für eine einzelne ausführbare Datei ausführen:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun fn2hash example.exe
Dieser Befehl würde die Ergebnisse in eine automatisch benannte Datei als example.exe.Hashes.csv
ausgeben.
Grundlegende Hilfe für das kaijuRun
-Skript erhalten Sie durch Ausführen von:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun --help
Weitere Informationen zur Verwendung dieses Modus und des kaijuRun
Startskripts finden Sie in der Datei docs/HeadlessKaiju.md
im Repository.
Eine umfassendere Dokumentation und Hilfe ist in einem von zwei Formaten verfügbar.
Im Verzeichnis docs/
finden Sie Dokumentation und Hilfe im Markdown-Format für alle Kaiju-Tools und -Komponenten. Diese Dokumente sind einfach zu pflegen, zu bearbeiten und zu lesen, sogar über eine Befehlszeile.
Alternativ finden Sie dieselbe Dokumentation möglicherweise im integrierten Hilfesystem von Ghidra. Um auf diese Hilfedokumente zuzugreifen, gehen Sie im Ghidra-Menü zu Help > Contents
und wählen Sie dann CERT Kaiju
aus der Baumnavigation auf der linken Seite des Hilfefensters aus.
Bitte beachten Sie, dass die Ghidra-Hilfedokumentation genau den gleichen Inhalt hat wie die Markdown-Dateien im Verzeichnis docs/
; Dank eines In-Tree-Gradle-Plugins analysiert Gradle den Markdown automatisch und exportiert ihn während des Erstellungsprozesses in Ghidra-HTML. Dies ermöglicht eine noch einfachere Wartung (Aktualisierung von Dokumenten an nur einer Stelle, nicht an zwei) und sorgt dafür, dass beide synchron bleiben.
Alle neuen Dokumentationen sollten dem Verzeichnis docs/
hinzugefügt werden.
Diese Software ist unter einer vereinfachten BSD-ähnlichen Lizenz vom Software Engineering Institute der Carnegie Mellon University lizenziert. Ausführliche Informationen zu dieser Lizenz sowie die Lizenzbedingungen der in diesem Projekt verwendeten Abhängigkeiten finden Sie in der Datei LICENSE.md
im Stammverzeichnis dieses Repositorys.
Das CERT Kaiju-Logo basiert auf Kunstwerken von Cameron Spahn, die ursprünglich unter den Bedingungen der Creative Commons Attribution-Share Alike 4.0 International-Lizenz veröffentlicht wurden.