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

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/
      2. 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:

  • 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
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