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
uniFuzzer — Uno strumento di fuzzing per binari closed-source basato su Unicorn e LibFuzzer | Kitploit
Strumenti/GitHubGitHub/pagalaxylab/unifuzzer
Sicurezza Sistemi EmbeddedSicurezza IoTFuzzingAnalisi di Binari
GitHubpagalaxylab/unifuzzer

uniFuzzer

Uno strumento di fuzzing per binari closed-source basato su Unicorn e LibFuzzer

Vedi Repository
346577 anni 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 →
Condividi

uniFuzzer

uniFuzzer è uno strumento di fuzzing per binari closed-source basato su Unicorn e LibFuzzer. Attualmente supporta il fuzzing di file ELF LSB a 32 bit su ARM/MIPS, che si trovano comunemente nei dispositivi IoT.

中文介绍

Caratteristiche

  • pochissimo hack e facile da compilare
  • può colpire qualsiasi funzione o frammento di codice specificato
  • fuzzing guidato dalla copertura con velocità considerevole
  • dipendenze risolte e caricate automaticamente
  • override delle funzioni di libreria tramite PRELOAD

Compilazione

  1. Fai il reverse del binario target e trova funzioni interessanti per il fuzzing.
  2. Crea un file .c nella directory callback, che deve contenere le seguenti callback:
  • void onLibLoad(const char *libName, void *baseAddr, void *ucBaseAddr): viene invocata ogni volta che una libreria dipendente viene caricata in Unicorn.
  • int uniFuzzerInit(uc_engine *uc): viene invocata subito dopo che tutti i binari sono stati caricati in Unicorn. Qui si possono impostare stack/heap/registri.
  • int uniFuzzerBeforeExec(uc_engine *uc, const uint8_t *data, size_t len): viene invocata prima di ogni ciclo di esecuzione del fuzzing.
  • int uniFuzzerAfterExec(uc_engine *uc): viene invocata dopo ogni ciclo di esecuzione del fuzzing.
  1. Esegui make e ottieni lo strumento di fuzzing chiamato uf.

Esecuzione

uniFuzzer utilizza le seguenti variabili d'ambiente come parametri:

  • UF_TARGET: Percorso del file ELF target
  • UF_PRELOAD: Percorso della libreria preload. Assicurati che la libreria abbia la stessa architettura del target.
  • UF_LIBPATH: Percorsi in cui risiedono le librerie dipendenti. Usa : per separare più percorsi.

Il fuzzing può essere avviato con il seguente comando:

root@kitploit:~
UF_TARGET=<target> [UF_PRELOAD=<preload>] UF_LIBPATH=<libPath> ./uf

Demo

Ecco una demo per l'uso di base. La demo contiene i seguenti file:

  • demo-vuln.c: è il target per il fuzzing. Contiene una semplice funzione chiamata vuln() vulnerabile a stack/heap overflow.
  • demo-libcpreload.c: è per l'hook PRELOAD. Definisce una printf() vuota e un malloc()/free() semplificato.
  • callback/demo-callback.c: definisce le callback necessarie per il fuzzing della funzione demo vuln().

Prima, installa gcc per mipsel (pacchetto gcc-mipsel-linux-gnu su Debian) per compilare la demo:

root@kitploit:~
# il binario target
# '-Xlinker --hash-style=sysv' dice a gcc di usare 'DT_HASH' invece di 'DT_GNU_HASH' per la ricerca dei simboli
# poiché al momento uniFuzzer non supporta 'DT_GNU_HASH'
mipsel-linux-gnu-gcc demo-vuln.c -Xlinker --hash-style=sysv -no-pie -o demo-vuln

# la libreria preload
mipsel-linux-gnu-gcc -shared -fPIC -nostdlib -Xlinker --hash-style=sysv demo-libcpreload.c -o demo-libcpreload.so

Oppure puoi usare direttamente i file demo-vuln e demo-libcpreload.so, già compilati con i comandi sopra.

Successivamente, esegui make per compilare uniFuzzer. Nota che se hai compilato la demo MIPS manualmente, alcuni indirizzi potrebbero differire da quelli precompilati e demo-callback.c deve essere aggiornato di conseguenza.

Infine, assicurati che la libreria libc per MIPS sia disponibile. Su Debian si trova in /usr/mipsel-linux-gnu/lib/ dopo l'installazione del pacchetto libc6-mipsel-cross, ed è questo il valore che UF_LIBPATH deve avere:

root@kitploit:~
UF_TARGET=<path to demo-vuln> UF_PRELOAD=<path to demo-libcpreload.so> UF_LIBPATH=<lib path for MIPS> ./uf

Hack su Unicorn

Unicorn cancella la cache JIT di QEMU a causa di questo problema, rallentando la velocità del fuzzing poiché il binario target dovrebbe essere ricompilato JIT durante ogni ciclo di esecuzione.

Possiamo commentare tb_flush(env); come indicato in quel problema per migliorare le prestazioni.

TODO

  • supporto per syscall
  • supporto per altre architetture e formati binari
  • supporto GNU_HASH
  • supporto per IFUNC
  • integrare la configurazione dell'ambiente e fornire API
Scarica lo strumento