Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
ghidralligator — Multi-Architektur-Pcode-Emulator basierend auf Ghidra/Sleigh für AFL++-Fuzzing von Binärdateien, Firmware und eingebetteten Zielsystemen; erkennt Speicherkorruptionsfehler über ASAN. | Kitploit
Tools/GitHubGitHub/airbus-cyber/ghidralligator
Embedded-System-SicherheitDynamische Analyse (Sandboxing)SchwachstellenanalyseFuzzingBinäranalyseFirmware-Analyse
GitHubairbus-cyber/ghidralligator

ghidralligator

Multi-Architektur-Pcode-Emulator basierend auf Ghidra/Sleigh für AFL++-Fuzzing von Binärdateien, Firmware und eingebetteten Zielsystemen; erkennt Speicherkorruptionsfehler über ASAN.

Repository anzeigen
33125vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Ghidralligator_logo

Ghidralligator

License

Ghidralligator ist ein C++-Multi-Architektur-pcode-Emulator, der auf der Ghidra-libsla basiert und für das Fuzzing mit AFL++ entwickelt wurde.

Er ermöglicht emulationsbasiertes Fuzzing und behält dabei interessante Leistungswerte bei, wenn es um Binärdateien geht, die auf exotischen Architekturen laufen.

Dank seiner erweiterbaren Natur lässt sich im Grunde jede Architektur emulieren (sofern man die entsprechende Sleigh-Spezifikationsdatei schreiben kann), um beliebigen Code zu fuzzen.

Installation

Ghidralligator kann auf Linux-Systemen ausgeführt werden. Es erfordert lediglich eine GCC-Version, die C++17 unterstützt (getestet und funktionsfähig mit GCC-Version 12.2.0).

Die Ghidra-Abhängigkeiten sind direkt im Projekt unter dem Verzeichnis ./src/ eingebettet.

Um Ghidralligator ordnungsgemäß zu installieren, müssen Sie AFL++ wie folgt herunterladen und kompilieren:

  1. Klonen und installieren Sie AFL++
root@kitploit:~
git clone https://github.com/AFLplusplus/AFLplusplus
cd AFLplusplus
make distrib
sudo make install
  1. Klonen und kompilieren Sie Ghidralligator:
root@kitploit:~
git clone https://github.com/airbus-cyber/ghidralligator
cd ghidralligator
make ghidralligator
  1. Besorgen Sie die passende .sla-Datei für die Architektur, die Sie emulieren möchten. Sie können die .sla-Datei selbst schreiben oder bereits vorhandene Dateien aus dem offiziellen Ghidra-Repository (hier) herunterladen. Eine Reihe von Standard-.sla-Dateien finden Sie im Projektordner ./specfiles.

Was ist Ghidralligator?

Ghidralligator zielt darauf ab, die Lücke zwischen bereits bestehenden Emulatoren, die viel Einrichtungsaufwand und manuelle Änderungen erfordern, um die Binärdatei zu instrumentieren, auszuführen und zu fuzzen, und den „Black-Box“-Emulatoren zu schließen, die kaum erweiterbar und für spezifische und ungewöhnliche Anwendungen nicht geeignet sind.

Der Hauptverwendungszweck ist die Schwachstellenforschung in Closed-Source-Binärdateien, insbesondere bei Anwendungen/Firmware von eingebetteten Geräten, die auf exotischen Architekturen laufen.

Ghidralligator ist der Nachfolger von afl_ghidra_emu. Es verbessert die Ausführungsgeschwindigkeit erheblich und enthält nützliche Funktionen wie die Erkennung von Heap-Speicherkorruption (ASAN).

Eine Vielzahl von Speicherkorruptionen kann erkannt werden: Out-of-Bounds-Lese-/Schreiboperationen, Use-after-Free, Double-Free, Lesen von nicht initialisiertem Speicher, Lese-/Schreib-/Ausführungs-Zugriffsverletzungen ...

Um Ghidralligator auszuführen, müssen die folgenden Schritte durchgeführt werden:

  • Einrichten einer Konfigurationsdatei, um das Speicher-Mapping-Layout und den Anfangszustand des Programms festzulegen
  • Entwerfen von Hooks.

Dokumentationen

  • Ghidralligator-Konfigurationsdatei : Dokumentation zum Schreiben der Konfigurationsdatei.
  • Ghidralligator-Hooks : Dokumentation zum Schreiben der User-Hook-Dateien.

Tutorials

Um zu verstehen, wie man Ghidralligator verwendet, wurde ein Beispiel eines verwundbaren Programms erstellt, das für verschiedene Architekturen kompiliert wurde.

Sie können run_examples.sh ausführen, um die ASAN-Mechanismen in Aktion zu sehen.

Schnellstart

Ghidralligator bietet mehrere Befehlszeilenoptionen:

root@kitploit:~
usage: ./ghidralligator [OPTION]

  -h 			Print this help and exit.

  -m [replay|fuzz]	Specify an emulation strategy. [REQUIRED]
				In 'replay' mode, the emulator will only launch the program once, exiting after a single loop.
				In 'fuzz' mode, this program must be launched through AFL.

  -c [FILENAME]		Specify the emulator json configuration file to load. [REQUIRED]

  -i [FILENAME]		Specify a test-case file to insert during a replay session. [OPTIONAL]

  -I 			Display info log (/!\ Slow down the emulation). [OPTIONAL]
  -D 			Display debug and info log (/!\ Slow down the emulation). [OPTIONAL]

  -t 			Store log in ./ghidraligator.log file. [OPTIONAL]


Verwendung für eine Standard-Emulation:

root@kitploit:~
$ ./ghidralligator -m replay -c examples/x86/config.json -I -i examples/x86/input/normal_use_case.bin

gif Wiedergabe

Verwendung für eine standardmäßige AFL++-Fuzzing-Sitzung:

root@kitploit:~
mkdir afl_inputs afl_outputs
echo -n "AAAAAA" > ./afl_inputs/input.bin
$ AFL_SKIP_BIN_CHECK=1 afl-fuzz -D -i ./afl_inputs -o ./afl_outputs/ -- ./ghidralligator -m fuzz -c examples/x86/config.json

gif Fuzzing

Einschränkungen

  • Ghidralligator kann Code mithilfe von .sla-Dateien (Sleigh-Befehlsdefinitionsdatei) emulieren. SLA-Dateien, die von der Ghidra-Community bereitgestellt werden, können teilweise implementiert sein. Um eine konsistente Emulation zu erhalten, müssen Benutzer möglicherweise die zugehörige Sleigh-Architekturdefinition vervollständigen oder einige Hooks hinzufügen.

  • Ghidralligator basiert auf Ghidra, das nicht für hohe Leistung bei der Emulation ausgelegt ist. Daher kann es nicht mit klassischen Fuzzern wie afl_qemu auf Standardarchitekturen (x86-Linux-/Windows-Binärdateien) konkurrieren.

  • Da das Ghidra-Projekt sich ständig weiterentwickelt, wird empfohlen, die Ghidralligator-Abhängigkeiten für zukünftige Ghidra-Versionen nicht manuell zu aktualisieren. Das Tool wurde mit den Quellen des Ghidra-11.0.3-Dekompilierers erstellt und getestet. Es könnte mit zukünftigen Versionen brechen, und Abwärtskompatibilität unterhalb von Version 11.0.3 wird nicht unterstützt. Dies ist für den Benutzer transparent, da die Ghidra-Abhängigkeiten in diesem Repository bereitgestellt werden.

Lizenzen

Ghidralligator wird unter der Apache-Lizenz Version 2.0 veröffentlicht.

Der Ghidralligator-Code enthält Code aus dem Ghidra-Projekt von NationalSecurityAgency, veröffentlicht unter der Apache-Lizenz 2.0.

Der Parser für die Ghidralligator-Konfigurationsdatei enthält die C++-JSON-Bibliothek von Niels Lohmann, veröffentlicht unter der MIT-Lizenz.

Das Ghidralligator-Modul enthält die xxHash-Bibliothek von Yann Collet, veröffentlicht unter der BSD-2-Clause-Lizenz.

Autoren

  • Flavian Dola - Airbus (Twitter)
  • Guillaume Orlando - Airbus (Twitter)
Tool herunterladen