
Assistent für Schwachstellenforschung, der Aufrufe potenziell unsicherer API-Funktionen in einer Binärdatei lokalisiert.
"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.

(lib) gekennzeichnet..plt-Einträge von ELF-Binärdateien oder die Import-Stubs von PE- und Mach-O-Binärdateien, die als Thunks aufgeführt sind) werden bis zu ihren Aufrufern zurückverfolgt..plt-Stub (als Thunk markiert) und einmal als ihr Import. Jede Aufrufstelle wird in der IDB nur einmal markiert.conf/rhabdomancer.toml angepasst werden._strcpy), die Präfixe von Bibliotheks-Aliassen (z. B. __o_malloc in der Universal CRT, __libc_system und __GI___snprintf in glibc) und, nur für Stubs und solche Aliase, das numerische Suffix, das IDA an bereits verwendete Namen anhängt (z. B. memset_0).[!NOTE] Fortifizierte Funktionen (z. B.
__strcpy_chk, das anstelle vonstrcpyverwendet wird, wenn mit_FORTIFY_SOURCEgebaut wird) werden bewusst nicht abgeglichen, da sie die geprüften Varianten der aufgeführten Funktionen sind. Um auch ihre Aufrufe zu markieren, füge sie explizit zu einer benutzerdefinierten Konfiguration hinzu (z. B."__strcpy_chk"mit derselben Priorität wiestrcpy).
Der einfachste Weg, die neueste Version zu erhalten, ist über crates.io:
export IDADIR=/path/to/ida # if not set, the build script will check common locations
cargo install rhabdomancer --locked
Unter Windows verwenden Sie stattdessen die folgenden Befehle:
$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
Alternativ können Sie aus dem Quellcode bauen:
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 --locked
Unter Windows verwenden Sie stattdessen die folgenden Befehle:
git 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
conf/rhabdomancer.toml (wählen Sie das Tag,
das Ihrer installierten Version entspricht, für deren exakte integrierte Liste), bearbeiten Sie die Kopie und setzen Sie die
Umgebungsvariable RHABDOMANCER_CONFIG auf deren Pfad. Die Datei muss die Arrays high, medium und low definieren und keine anderen Schlüssel.
Andernfalls wird die integrierte Liste verwendet, die zur Build-Zeit aus conf/rhabdomancer.toml in die Binärdatei eingebettet wird
(das Bearbeiten dieser Datei erfordert einen Neubuild).IDADIR gesetzt ist, falls sich Ihre IDA-Installation an einem nicht standardmäßigen Ort befindet.rhabdomancer <binary_file>
Eine vorhandene .i64-IDB-Datei wird aktualisiert; andernfalls wird eine neue IDB-Datei erstellt..i64-IDB-Datei mit IDA.View > Open subviews > Bookmarks[!NOTE] Rhabdomancer fügt außerdem Kommentare an markierten Aufrufstellen hinzu. Sowohl Lesezeichen als auch Kommentare werden mit
[BAD n] <function_name>gekennzeichnet, wobeindie Prioritätsstufe ist (0 = hoch, 1 = mittel, 2 = niedrig), damit Skripte IDBs danach durchsuchen können. Dieses Format ist über Releases hinweg stabil.
Offiziell unterstützt wird nur die neueste IDA-Version, aber ältere Versionen können ebenfalls funktionieren. Die folgende Tabelle fasst die neueste kompatible Version für jede IDA-Version zusammen: