
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 den Rust-Bindings von idalib-rs.
- Unterstützung für C/C++-Binärdateien, die für jede von IDA implementierte Architektur kompiliert wurden.
- Die Positionen von Aufrufen unsicherer API-Funktionen werden auf stdout ausgegeben und in der IDB markiert.
- Bekannte unsichere API-Funktionen sind in Schweregrade gruppiert, um die Priorisierung der Audit-Arbeit zu erleichtern.
- [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 unsicheren API-Funktionen kann einfach durch Bearbeiten von
conf/rhabdomancer.tomlangepasst 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:
- Laden Sie IDA herunter, installieren und konfigurieren Sie es (siehe https://hex-rays.com/ida-pro).
- Installieren Sie LLVM/Clang (siehe https://rust-lang.github.io/rust-bindgen/requirements.html).
- Installieren Sie unter Linux/macOS wie folgt:
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$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
Kompilieren
Alternativ können Sie aus dem Quellcode bauen:
- Laden Sie IDA herunter, installieren und konfigurieren Sie es (siehe https://hex-rays.com/ida-pro).
- Installieren Sie LLVM/Clang (siehe https://rust-lang.github.io/rust-bindgen/requirements.html).
- Kompilieren Sie unter Linux/macOS wie folgt:
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 --releasegit 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
Verwendung
- Stellen Sie sicher, dass IDA mit einer gültigen Lizenz ordnungsgemäß konfiguriert ist.
- Passen Sie bei Bedarf die Liste der bekannten unsicheren 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 Speicherort befindet. - Führen Sie das Tool wie folgt aus:
Vorhandene
rhabdomancer <binary_file>.i64-IDB-Dateien werden 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 den markierten Aufrufpositionen außerdem 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 jeweils 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 Dokumentation von idalib-rs.
Danksagungen
Die Entwicklung dieses Projekts wurde von den folgenden Organisationen unterstützt:
- HN Security
- Hex-Rays über ihr Contributor Program
Changelog
TODO
- Weitere Anreicherung der Liste bekannter unsicherer API-Funktionen (siehe https://github.com/0xdea/semgrep-rules).
- Erwägen, den Umfang der Normalisierung in
normalize_namezu erweitern, um weitere Fälle abzudecken. - Implementieren eines grundlegenden Regelsets im Stil von VulFi und VulnFanatic.