
Statischer Binär-Schwachstellenscanner, der abstrakte Interpretation auf Ghidra Pcode verwendet. Erkennt CWE-Klassen wie Pufferüberläufe, Use-After-Free und Befehlsinjektion mittels symbolischer Ausführung mit Z3.
BinAbsInspector (Binary Abstract Inspector) ist ein statischer Analysewerkzeug für automatisiertes Reverse Engineering und die Suche nach Schwachstellen in Binärdateien. Es handelt sich um ein langfristiges Forschungsprojekt, das bei Keenlab beheimatet ist. Es basiert auf abstrakter Interpretation mit Unterstützung von Ghidra. Es arbeitet mit Ghidras Pcode anstelle von Assembler. Derzeit werden Binärdateien auf x86, x64, armv7 und aarch64 unterstützt.
z3-${version}-win/bin verweistz3-${version}-glibc-${version}/bin/*.so nach kopieren/usr/local/lib/Erstellen Sie die Erweiterung selbst, wenn Sie eine neue Funktion entwickeln möchten. Weitere Informationen finden Sie im Entwicklungsleitfaden.
gradle buildExtension im Repository-Stammverzeichnis ausdist/${GhidraVersion}_${date}_BinAbsInspector.zip erstelltSie können BinAbsInspector im Headless-Modus, GUI-Modus oder mit Docker ausführen.
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
<projectPath> -- Ghidra-Projektpfad.
<projectName> -- Ghidra-Projektname.
<scriptParams> -- Das Argument für unseren Analysator, bietet folgende Optionen:
| Parameter | Beschreibung |
|---|---|
[-K <kElement>] | KSet-Größenlimit K |
[-callStringK <callStringMaxLen>] | Maximale Länge der Call-Strings K |
[-Z3Timeout <timeout>] | Z3-Timeout |
[-timeout <timeout>] | Analyse-Timeout |
[-entry <address>] | Einsprungadresse |
[-externalMap <file>] | Konfiguration des externen Funktionsmodells |
[-json] | Ausgabe im JSON-Format |
[-disableZ3] | Z3 deaktivieren |
[-all] | Alle Prüfer aktivieren |
[-debug] | Debug-Logging-Ausgabe aktivieren |
[-check "<cweNo1>[;<cweNo2>...]"] | Bestimmte Prüfer aktivieren |
Mit Ghidra GUI
Window -> Script Manager und suchen Sie BinAbsInspector.javaBinAbsInspector.java, legen Sie die Parameter im Konfigurationsfenster fest und klicken Sie auf OKMit Docker
git clone [email protected]:KeenSecurityLab/BinAbsInspector.git
cd BinAbsInspector
docker build . -t bai
docker run -v $(pwd):/data/workspace bai "@@<script parameters>" -import <file>
Bislang unterstützt BinAbsInspector folgende Prüfer:
Die Struktur dieses Projekts ist wie folgt. Weitere Informationen finden Sie in den technischen Details oder im chinesischsprachigen Artikel.
├── main
│ ├── java
│ │ └── com
│ │ └── bai
│ │ ├── checkers Implementierung der Prüfer
│ │ ├── env
│ │ │ ├── funcs Funktionsmodellierung
│ │ │ │ ├── externalfuncs Modellierung externer Funktionen
│ │ │ │ └── stdfuncs C++-Std-Modellierung
│ │ │ └── region Speichermodellierung
│ │ ├── solver Analyse-Kern und Graph-Modul
│ │ └── util Hilfsprogramme
│ └── resources
└── test
Sie können auch das Javadoc mit gradle javadoc erstellen; die API-Dokumentation wird in ./build/docs/javadoc generiert.
Wir verwenden Ghidra als unsere Grundlage und nutzen häufig JImmutable Collections für eine bessere Leistung.
An dieser Stelle möchten wir ihnen für ihre großartige Hilfe danken!