Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
BinAbsInspector — Scanner di vulnerabilità binario statico che utilizza l'interpretazione astratta su Ghidra Pcode. Rileva classi CWE come buffer overflow, use-after-free e iniezione di comandi tramite esecuzione simbolica con Z3. | Kitploit
Strumenti/GitHubGitHub/keensecuritylab/binabsinspector
Analisi StaticaScanner di VulnerabilitàReverse EngineeringFuzzingAnalisi di Binari
GitHubkeensecuritylab/binabsinspector

BinAbsInspector

Scanner di vulnerabilità binario statico che utilizza l'interpretazione astratta su Ghidra Pcode. Rileva classi CWE come buffer overflow, use-after-free e iniezione di comandi tramite esecuzione simbolica con Z3.

Vedi Repository

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 →
1.7k245152 anni faRevisionato da Kitploit
Condividi

Cos'è BinAbsInspector?

BinAbsInspector (Binary Abstract Inspector) è un analizzatore statico per il reverse engineering automatizzato e la scansione di vulnerabilità nei binari, un progetto di ricerca a lungo termine incubato presso Keenlab. Si basa sull'interpretazione astratta con il supporto di Ghidra. Lavora sul Pcode di Ghidra invece dell'assembly. Attualmente supporta binari su x86, x64, armv7 e aarch64.

Installazione

  • Installa Ghidra seguendo la documentazione di Ghidra
  • Installa Z3 (versione testata: 4.8.15)
  • Nota che generalmente ci sono due parti per la libreria Z3: una è il pacchetto Java, l'altra è la libreria nativa. Il pacchetto Java è già incluso nella directory "/lib", ma suggeriamo di sostituirlo con il proprio pacchetto Java per la compatibilità delle versioni.
    • Per Windows, scarica un pacchetto precompilato da qui, estrai il file zip e aggiungi una variabile d'ambiente PATH che punti a z3-${version}-win/bin
    • Per Linux, NON è consigliato installare con il gestore pacchetti, ci sono due opzioni:
      1. Puoi scaricare un pacchetto precompilato adatto da qui, estrarre il file zip e copiare z3-${version}-glibc-${version}/bin/*.so in /usr/local/lib/
  • oppure puoi compilare e installare z3 seguendo Building Z3 using make and GCC/Clang
  • Per MacOS, è simile a Linux.
  • Scarica il file zip dell'estensione dalla pagina delle release
  • Installa l'estensione secondo le Note sulle estensioni di Ghidra
  • Compilazione

    Compila l'estensione da solo, se vuoi sviluppare una nuova funzionalità, consulta la guida allo sviluppo.

    • Installa Ghidra e Z3
    • Installa Gradle 7.x (versione testata: 7.4)
    • Clona il repository
    • Esegui gradle buildExtension nella root del repository
    • L'estensione verrà generata in dist/${GhidraVersion}_${date}_BinAbsInspector.zip

    Utilizzo

    Puoi eseguire BinAbsInspector in modalità headless, modalità GUI o con docker.

    • Con modalità headless di Ghidra.
    root@kitploit:~
    $GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
    

    <projectPath> -- Percorso del progetto Ghidra.
    <projectName> -- Nome del progetto Ghidra.
    <scriptParams> -- L'argomento per il nostro analizzatore, fornisce le seguenti opzioni:

    ParametroDescrizione
    [-K <kElement>]Limite dimensione KSet K
    [-callStringK <callStringMaxLen>]Lunghezza massima della call string K
    [-Z3Timeout <timeout>]Timeout Z3
    [-timeout <timeout>]Timeout analisi
    [-entry <address>]Indirizzo di ingresso
    [-externalMap <file>]Configurazione modello funzioni esterne
    [-json]Output in formato json
    [-disableZ3]Disabilita Z3
    [-all]Abilita tutti i checker
    [-debug]Abilita output log di debug
    [-check "<cweNo1>[;<cweNo2>...]"]Abilita checker specifici
    • Con GUI di Ghidra

      1. Esegui Ghidra e importa il binario target in un progetto
      2. Analizza il binario con le impostazioni predefinite
      3. Al termine dell'analisi, apri Window -> Script Manager e trova BinAbsInspector.java
      4. Fai doppio clic su BinAbsInspector.java, imposta i parametri nella finestra di configurazione e clicca OK
      5. Al termine dell'analisi, puoi vedere i report CWE nella finestra della console; facendo doppio clic sugli indirizzi dal report si può saltare all'indirizzo corrispondente
    • Con Docker

    root@kitploit:~
    git clone [email protected]:KeenSecurityLab/BinAbsInspector.git
    cd BinAbsInspector
    docker build . -t bai
    docker run -v $(pwd):/data/workspace bai "@@<script parameters>" -import <file>
    

    Checker Implementati

    Finora BinAbsInspector supporta i seguenti checker:

    • CWE78 (Iniezione di comandi del sistema operativo)
    • CWE119 (Overflow del buffer (caso generico))
    • CWE125 (Overflow del buffer (Lettura fuori dai limiti))
    • CWE134 (Uso di stringa di formato controllata esternamente)
    • CWE190 (Overflow o wraparound di interi)
    • CWE367 (Time-of-check Time-of-use (TOCTOU))
    • CWE415 (Doppia deallocazione)
    • CWE416 (Uso dopo deallocazione)
    • CWE426 (Percorso di ricerca non attendibile)
    • CWE467 (Uso di sizeof() su un tipo puntatore)
    • CWE476 (Dereferenziazione di puntatore NULL)
    • CWE676 (Uso di funzione potenzialmente pericolosa)
    • CWE787 (Overflow del buffer (Scrittura fuori dai limiti))

    Struttura del Progetto

    La struttura di questo progetto è la seguente, per maggiori dettagli consulta i dettagli tecnici o l'articolo in cinese.

    root@kitploit:~
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── bai
    │   │           ├── checkers                       implementazione checker
    │   │           ├── env
    │   │           │   ├── funcs                      modellazione funzioni
    │   │           │   │   ├── externalfuncs          modellazione funzioni esterne
    │   │           │   │   └── stdfuncs               modellazione std cpp
    │   │           │   └── region                     modellazione memoria
    │   │           ├── solver                         modulo nucleo analisi e grafo
    │   │           └── util                           utilità
    │   └── resources
    └── test
    

    Puoi anche compilare la javadoc con gradle javadoc, la documentazione API verrà generata in ./build/docs/javadoc.

    Riconoscimenti

    Utilizziamo Ghidra come nostra base e sfruttiamo spesso JImmutable Collections per ottenere prestazioni migliori.
    Qui vorremmo ringraziarli per il grande aiuto!

    Scarica lo strumento