
CERT Kaiju ist eine Erweiterung des Binary-Analyse-Frameworks für die Ghidra Software Reverse Engineering Suite. Dieses Repository ist ein "Mirror" – bitte reichen Sie Tickets, Fehlerberichte oder Pull-Requests im Upstream-Repository bei @CERTCC ein: https://github.com/certcc/kaiju
CERT Kaiju ist eine Sammlung von Binäranalyse-Werkzeugen für Ghidra.
Dies ist eine Ghidra/Java-Implementierung einiger Funktionen des CERT Pharos Binary Analysis Framework, insbesondere der Funktions-Hashing- und Malware-Analyse-Werkzeuge, es wird jedoch erwartet, dass im Laufe der Zeit neue Werkzeuge und Fähigkeiten hinzukommen.
Da es sich um eine neue Initiative handelt, hat diese Implementierung noch nicht die vollständige Funktionsparität mit der ursprünglichen C++-Implementierung auf Basis von ROSE; der Wechsel zu Java und Ghidra hat jedoch 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 Neuarchitektur des Frameworks und der Werkzeuge stattfindet und der Wechsel zu Java und Ghidra andere Fähigkeiten als die C++-Implementierung ermöglicht, wurde beschlossen, ein neues Branding zu verwenden, um Verwirrung zwischen den Implementierungen bei der Diskussion der verschiedenen Werkzeuge und Fähigkeiten zu vermeiden.
Unsere Absicht für die nahe Zukunft ist es, sowohl das ursprüngliche Pharos-Framework als auch Kaiju parallel zu pflegen, da beide einzigartige Funktionen und Fähigkeiten bieten können.
HINWEIS: Als Prototyp 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 einzelnen Anweisung wie RET, was zu vielen unbeabsichtigten Kollisionen führt). Daher können die Analyseergebnisse zwischen diesem Plugin und Pharos fn2hash variieren.
Vorgefertigte Kaiju-Pakete sind verfügbar. Laden Sie einfach die ZIP-Datei herunter, die Ihrer Version von Ghidra entspricht, und installieren Sie sie gemäß den nachstehenden Anweisungen. Es wird empfohlen, die Installation über die grafische Oberfläche von Ghidra durchzuführen, es ist aber auch möglich, das Archiv manuell in das entsprechende Verzeichnis zu entpacken.
CERT Kaiju erfordert die folgenden Laufzeitabhängigkeiten:
Z3 wird als Teil der vorgefertigten Pakete vorkompiliert bereitgestellt, oder Sie können Z3 selbst erstellen oder das Paket Ihrer Linux-Distribution verwenden.
Starten Sie Ghidra und wählen Sie im Startfenster aus dem Menü: Datei > Erweiterung installieren. Klicken Sie auf das Pluszeichen oben im Erweiterungsfenster, navigieren Sie zur .zip-Datei im Dateibrowser und wählen Sie sie aus, und klicken Sie auf OK. Die Erweiterung wird installiert und ein Kontrollkästchen neben dem Namen der Erweiterung im Fenster wird markiert, um Sie zu informieren, dass sie installiert und bereit ist.
Die Oberfläche wird Sie auffordern, Ghidra neu zu starten, um die Erweiterung zu verwenden. Starten Sie einfach neu, und dann stehen Kaijus zusätzliche Funktionen interaktiv oder in Skripten zur Verfügung.
Einige Funktionen erfordern möglicherweise das Aktivieren von Kaiju-Plugins. Öffnen Sie dazu den Code-Browser und navigieren Sie zum Menü Datei > Konfigurieren. Klicken Sie im sich öffnenden Fenster auf den Link Konfigurieren unter dem Symbol der Kategorie „CERT Kaiju“. Ein Popup zeigt alle verfügbaren öffentlich veröffentlichten Kaiju-Plugins an. Aktivieren Sie die gewünschten Plugins und klicken Sie auf OK. Sie haben nun Zugriff auf interaktive Plugin-Funktionen.
Wenn ein Plugin nach der Aktivierung nicht sofort sichtbar ist, finden Sie es im Menü Fenster im Code-Browser.
Experimentelle „Alpha“-Versionen zukünftiger Werkzeuge können in der Kategorie „Experimental“ verfügbar sein, falls Sie diese testen möchten. Diese Plugins sind jedoch definitiv experimentell und werden nicht unterstützt und sind 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 Inhalt der Erweiterung 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. Siehe die Datei INSTALL.md im obersten Kaiju-Quellverzeichnis.
Kaijus Werkzeuge können entweder interaktiv grafisch oder über einen „Headless“-Modus verwendet werden, der sich besser für Batch-Jobs eignet. Einige Werkzeuge sind aufgrund ihrer Art möglicherweise nur für die grafische oder die headless-Verwendung verfügbar.
Kaiju erstellt eine interaktive grafische Oberfläche (GUI) in Ghidra unter Verwendung von Java Swing und der Plugin-Architektur von Ghidra.
Die meisten Werkzeuge von Kaiju sind eigentlich Analyse-Plugins, die automatisch ausgeführt werden, wenn die Option „Auto Analysis“ gewählt wird, entweder beim Import einer neuen auszuführenden Datei oder durch direktes Auswählen von Analyse > Auto-Analyse... im Code-Browser-Fenster. Sie werden mehrere CERT-Analyse-Plugins sehen, die im Auto-Analyse-Tool standardmäßig ausgewählt sind, aber Sie können nach Belieben aktivieren/deaktivieren.
Die Analysewerkzeuge müssen jedoch ausgeführt werden, bevor die verschiedenen GUI-Werkzeuge funktionieren. In einigen Randfällen kann es sogar hilfreich sein, die Auto-Analyse zweimal auszuführen, um sicherzustellen, dass alle Metadaten erzeugt werden, um korrekte Partitionierungs- und Disassemblierungsinformationen zu erstellen, die wiederum die Hashing-Ergebnisse beeinflussen können.
Analysatoren werden automatisch während der Analysephase von Ghidra ausgeführt und umfassen:
Die GUI-Werkzeuge umfassen:
Kaiju > GhiHorn um dieses Tool aus Ghidras CodeBrowser aufzurufen. Sie können das Plugin auch durch Drücken von STRG-G starten.Fenster > CERT Kaiju Function Hash Viewer aus dem Menü, um mit diesem Tool zu beginnen, falls es nicht bereits sichtbar ist. Ein neues Fenster erscheint, das eine Tabelle mit Hashes und anderen Daten anzeigt. Schaltflächen oben im Fenster können die Tabelle aktualisieren oder Daten in eine Datei oder eine YARA-Signatur exportieren. Dieses Fenster kann auch in den Haupt-Ghidra-CodeBrowser eingedockt werden, um die Verwendung neben anderen Plugins zu erleichtern. Eine umfassendere Nutzungsdokumentation finden Sie im Menü Hilfe > Inhalt von Ghidra, wenn Sie das Tool verwenden.Kaiju > OOAnalyzer Importer aus dem Menü, um mit diesem Tool zu beginnen. Ein einfacher Dialog fragt Sie nach der JSON-Datei, die Sie importieren möchten. Eine umfassendere Nutzungsdokumentation finden Sie im Menü Hilfe > Inhalt von Ghidra, wenn Sie das Tool verwenden.Ghidra unterstützt auch einen „Headless“-Modus, der es ermöglicht, Werkzeuge unter bestimmten Umständen ohne die interaktive GUI auszuführen. Diese Befehle können daher für Skript- und „Batch-Modus“-Aufgaben mit einer großen Anzahl von Dateien verwendet werden.
Die Headless-Werkzeuge basieren größtenteils auf der GhidraScript-Funktionalität von Ghidra.
Headless-Werkzeuge umfassen:
Ein einfaches Shell-Startskript namens kaijuRun wurde hinzugefügt, um diese Headless-Befehle für einfache Szenarien auszuführen, wie z. B. die Ausgabe der Funktions-Hashes für jede Funktion in einer einzelnen ausführbaren Datei. Angenommen, die Variable GHIDRA_INSTALL_DIR ist gesetzt, könnte man zum Beispiel das Startskript auf einer einzelnen ausführbaren Datei wie folgt 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 Skript kaijuRun ist verfügbar durch Ausführen von:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun --help
Bitte lesen Sie die Datei docs/HeadlessKaiju.md im Repository für weitere Informationen zur Verwendung dieses Modus und des Startskripts kaijuRun.
Eine umfassendere Dokumentation und Hilfe ist in einem von zwei Formaten verfügbar.
Siehe das Verzeichnis docs/ für die im Markdown-Format formatierte Dokumentation und Hilfe für alle Kaiju-Werkzeuge und -Komponenten. Diese Dokumente sind einfach zu pflegen, zu bearbeiten und auch von der Befehlszeile aus zu lesen.
Alternativ finden Sie dieselbe Dokumentation im integrierten Hilfesystem von Ghidra. Um auf diese Hilfedokumente zuzugreifen, gehen Sie im Ghidra-Menü zu Hilfe > Inhalt und wählen Sie dann CERT Kaiju in der Baumnavigation auf der linken Seite des Hilfefensters.
Bitte beachten Sie, dass die Ghidra-Hilfedokumentation denselben Inhalt wie die Markdown-Dateien im Verzeichnis docs/ enthält; dank eines im Baum enthaltenen Gradle-Plugins parst Gradle automatisch das Markdown und exportiert es während des Build-Prozesses in Ghidra-HTML. Dies ermöglicht eine noch einfachere Wartung (Aktualisierung der Dokumente an nur einer Stelle, nicht zwei) und hält beide synchron.
Alle neue Dokumentation sollte dem Verzeichnis docs/ hinzugefügt werden.
Diese Software ist unter einer vereinfachten BSD-ähnlichen Lizenz des Software Engineering Institute der Carnegie Mellon University lizenziert. Die vollständigen Details 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 Kunst von Cameron Spahn, ursprünglich veröffentlicht unter den Bedingungen der Creative Commons Attribution-Share Alike 4.0 International Lizenz.