
rhabdomancer v0.10.0
Assistent für Schwachstellenforschung, der Aufrufe potenziell unsicherer API-Funktionen in einer Binärdatei lokalisiert.
rhabdomancer
„Der Weg zu ausnutzbaren Bugs ist mit nicht ausnutzbaren Bugs gepflastert."
-- Mark Dowd
Rhabdomancer ist ein blitzschnelles IDA-Headless-Plugin, das Aufrufe potenziell unsicherer API-Funktionen in einer Binärdatei lokalisiert. Auditoren können von diesen Kandidatenpunkten aus zurückverfolgen, um Pfade zu finden, die Zugriff auf nicht vertrauenswürdige Eingaben ermöglichen.

Funktionen
- Blitzschnelle, headless Benutzererfahrung dank IDA 9.x und idalib-rs Rust-Bindings.
- Unterstützung für C/C++-Binärziele, die für jede von IDA implementierte Architektur kompiliert wurden.
- Positionen von Aufrufen schlechter API-Funktionen werden auf stdout ausgegeben und in der IDB markiert.
- Bekannte schlechte API-Funktionen sind in Schweregradstufen gruppiert, um die Audit-Arbeit zu priorisieren.
- [BAD 0] Hohe Priorität – Funktionen, die allgemein als unsicher gelten.
- [BAD 1] Mittlere Priorität – Interessante Funktionen, die auf unsichere Verwendungsfälle geprüft werden sollten.
- [BAD 2] Niedrige Priorität – Codepfade, die diese Funktionen betreffen, sollten sorgfältig geprüft werden.
- Die Liste der bekannten schlechten API-Funktionen kann durch Bearbeiten von
conf/rhabdomancer.tomleinfach angepasst werden.
Artikel
- https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
- https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust
Siehe auch
- https://github.com/0xdea/ghidra-scripts/blob/main/Rhabdomancer.java
- https://docs.hex-rays.com/release-notes/9_0#headless-processing-with-idalib
- https://github.com/idalib-rs/idalib
- https://books.google.it/books/about/The_Art_of_Software_Security_Assessment.html
Installation
Der einfachste Weg, die neueste Version zu erhalten, führt über crates.io:
- IDA herunterladen, installieren und konfigurieren (siehe https://hex-rays.com/ida-pro).
- LLVM/Clang installieren (siehe https://rust-lang.github.io/rust-bindgen/requirements.html).
- Unter Linux/macOS wie folgt installieren:
Unter Windows verwenden Sie stattdessen die folgenden Befehle:
export IDADIR=/path/to/ida # if not set, the build script will check common locations cargo install rhabdomancer --locked$env:LIBCLANG_PATH="\path\to\clang+llvm\bin" $env:PATH="\path\to\ida;$env:PATH" $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations cargo install rhabdomancer --locked
Kompilieren
Alternativ können Sie aus dem Quellcode bauen:
- IDA herunterladen, installieren und konfigurieren (siehe https://hex-rays.com/ida-pro).
- LLVM/Clang installieren (siehe https://rust-lang.github.io/rust-bindgen/requirements.html).
- Unter Linux/macOS wie folgt kompilieren:
Unter Windows verwenden Sie stattdessen die folgenden Befehle:
git clone --depth 1 https://github.com/0xdea/rhabdomancer cd rhabdomancer export IDADIR=/path/to/ida # if not set, the build script will check common locations cargo build --release --lockedgit clone --depth 1 https://github.com/0xdea/rhabdomancer cd rhabdomancer $env:LIBCLANG_PATH="\path\to\clang+llvm\bin" $env:PATH="\path\to\ida;$env:PATH" $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations cargo build --release --locked
Verwendung
- Stellen Sie sicher, dass IDA mit einer gültigen Lizenz ordnungsgemäß konfiguriert ist.
- Passen Sie bei Bedarf die Liste der bekannten schlechten API-Funktionen in
conf/rhabdomancer.tomlan. Sie können den Standardspeicherort der Konfigurationsdatei überschreiben, indem Sie die UmgebungsvariableRHABDOMANCER_CONFIGsetzen. - Stellen Sie sicher, dass die Umgebungsvariable
IDADIRgesetzt ist, wenn sich Ihre IDA-Installation an einem nicht standardmäßigen Ort befindet. - Führen Sie wie folgt aus:
Eine vorhandene
rhabdomancer <binary_file>.i64-IDB-Datei wird aktualisiert; andernfalls wird eine neue IDB-Datei erstellt. - Öffnen Sie die resultierende
.i64-IDB-Datei mit IDA. - Wählen Sie
View>Open subviews>Bookmarks - Genießen Sie Ihre Ergebnisse, die bequem in einem IDA-Fenster gesammelt werden.
[!NOTE] Rhabdomancer fügt an markierten Aufrufpositionen auch Kommentare hinzu.
Kompatibilität
Offiziell wird nur die neueste IDA-Version unterstützt, aber ältere Versionen funktionieren möglicherweise ebenfalls. Die folgende Tabelle fasst die neueste kompatible Version für jede IDA-Version zusammen:
| IDA-Version | Neueste kompatible Version |
|---|---|
| v9.0.240925 | v0.2.4 |
| v9.0.241217 | v0.3.5 |
| v9.1.250226 | v0.6.2 |
| v9.2.250908 | v0.7.6 |
| v9.3.260213 | v0.8.1 |
| v9.3.260327 | v0.9.0 |
| v9.3.260421 | v0.9.3 |
| v9.4.260714 | aktuelle Version |
[!NOTE] Weitere Informationen finden Sie in der idalib-rs-Dokumentation.
Danksagungen
Die Entwicklung dieses Projekts wurde von den folgenden Organisationen unterstützt:
- HN Security
- Hex-Rays über ihr Contributor Program
Änderungsprotokoll
TODO
- Die Liste der bekannten schlechten API-Funktionen weiter anreichern (siehe https://github.com/0xdea/semgrep-rules).
- Eine Erweiterung des Umfangs der Normalisierung in
normalize_namein Betracht ziehen, um weitere Fälle abzudecken. - Ein grundlegendes Regelset im Stil von VulFi und VulnFanatic implementieren.