Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
rhabdomancer — Assistente per la ricerca di vulnerabilità che individua le chiamate a funzioni API potenzialmente non sicure in un file binario. | Kitploit
Strumenti/GitHubGitHub/0xdea/rhabdomancer
Analisi StaticaAnalisi delle VulnerabilitàReverse EngineeringAnalisi di Binari
GitHub0xdea/rhabdomancer

rhabdomancer

Assistente per la ricerca di vulnerabilità che individua le chiamate a funzioni API potenzialmente non sicure in un file binario.

Vedi Repository
13115291 giorno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Sito web
Condividi

rhabdomancer

build doc

"La strada verso i bug sfruttabili è lastricata di bug non sfruttabili."

-- Mark Dowd

Rhabdomancer è un plugin headless per IDA estremamente veloce che individua le chiamate a funzioni API potenzialmente insicure in un file binario. I revisori possono risalire a ritroso da questi punti candidati per trovare percorsi che consentono l'accesso a input non attendibili.

Funzionalità

  • Esperienza utente headless estremamente veloce grazie a IDA 9.x e ai binding Rust idalib-rs.
  • Supporto per binari C/C++ compilati per qualsiasi architettura implementata da IDA.
  • Le posizioni delle chiamate a funzioni API pericolose vengono stampate su stdout e contrassegnate nell'IDB.
    • Le posizioni delle chiamate nel codice di libreria riconosciuto da IDA (ad esempio, un runtime linkato staticamente riconosciuto tramite firme FLIRT) sono etichettate (lib).
    • Le chiamate attraverso stub (ad esempio, le voci .plt dei binari ELF o gli stub di importazione dei binari PE e Mach-O, elencati come thunk) vengono ricondotte ai loro chiamanti.
    • Nei binari ELF, una funzione viene deliberatamente elencata due volte con le stesse posizioni di chiamata: una volta come suo stub .plt (contrassegnato come thunk) e una volta come sua importazione. Ogni posizione di chiamata viene contrassegnata una sola volta nell'IDB.
  • Le funzioni API pericolose note sono raggruppate in livelli di pericolosità per aiutare a dare priorità al lavoro di revisione.
    • [BAD 0] Priorità alta - Funzioni generalmente considerate insicure.
    • [BAD 1] Priorità media - Funzioni interessanti che dovrebbero essere verificate per casi d'uso insicuri.
    • [BAD 2] Priorità bassa - I percorsi di codice che coinvolgono queste funzioni dovrebbero essere controllati attentamente.
  • L'elenco delle funzioni API pericolose note è integrato e può essere facilmente personalizzato con un file di configurazione basato su conf/rhabdomancer.toml.
  • I nomi delle funzioni vengono confrontati senza queste decorazioni: punti e underscore iniziali (ad esempio, _strcpy), i prefissi degli alias di libreria (ad esempio, __o_malloc nella Universal CRT, __libc_system e __GI___snprintf in glibc) e, solo per stub e tali alias, il suffisso numerico che IDA aggiunge ai nomi già in uso (ad esempio, memset_0).

[!NOTE] Le funzioni fortificate (ad esempio, __strcpy_chk, usata al posto di strcpy quando si compila con _FORTIFY_SOURCE) non vengono deliberatamente confrontate, poiché sono le varianti controllate delle funzioni elencate. Per contrassegnare anche le loro chiamate, aggiungile esplicitamente a una configurazione personalizzata (ad esempio, "__strcpy_chk" con la stessa priorità di strcpy).

Articoli

  • https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
  • https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust

Vedi anche

  • 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

Installazione

Il modo più semplice per ottenere l'ultima versione è tramite crates.io:

  1. Scarica, installa e configura IDA (vedi https://hex-rays.com/ida-pro).
  2. Installa LLVM/Clang (vedi https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. Su Linux/macOS, installa come segue:
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo install rhabdomancer --locked
    
    Su Windows, invece, usa i seguenti comandi:
    $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
    

Compilazione

In alternativa, puoi compilare dal sorgente:

  1. Scarica, installa e configura IDA (vedi https://hex-rays.com/ida-pro).
  2. Installa LLVM/Clang (vedi https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. Su Linux/macOS, compila come segue:
    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
    
    Su Windows, invece, usa i seguenti comandi:
    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
    

Utilizzo

  1. Assicurarsi che IDA sia configurato correttamente con una licenza valida.
  2. Facoltativamente, personalizzare l'elenco delle funzioni API note come dannose: copiare conf/rhabdomancer.toml (scegliere il tag che corrisponde alla versione installata per il suo elenco predefinito esatto), modificare la copia e impostare la variabile d'ambiente RHABDOMANCER_CONFIG con il suo percorso. Il file deve definire gli array high, medium e low, e nessun'altra chiave. In caso contrario, viene utilizzato l'elenco predefinito, che è incorporato nel binario in fase di compilazione da conf/rhabdomancer.toml (modificare quel file richiede una ricompilazione).
  3. Assicurarsi che la variabile d'ambiente IDADIR sia impostata se l'installazione di IDA si trova in una posizione non standard.
  4. Eseguire come segue:
    rhabdomancer <binary_file>
    
    Qualsiasi file IDB .i64 esistente verrà aggiornato; in caso contrario, verrà creato un nuovo file IDB.
  5. Apri il file IDB .i64 risultante con IDA.
  6. Seleziona View > Open subviews > Bookmarks
  7. Goditi i tuoi risultati comodamente raccolti in una finestra di IDA.

[!NOTE] Rhabdomancer aggiunge anche commenti nelle posizioni delle chiamate contrassegnate. Sia i segnalibri che i commenti sono etichettati come [BAD n] <function_name>, dove n è il livello di priorità (0 = alto, 1 = medio, 2 = basso), in modo che gli script possano cercarli negli IDB. Questo formato è stabile tra le release.

Compatibilità

È ufficialmente supportata solo l'ultima release di IDA, ma anche le versioni precedenti potrebbero funzionare. La seguente tabella

riassume l'ultima release compatibile per ciascuna versione di IDA:

Scarica lo strumento