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
autoharness — Uno strumento che crea automaticamente harness di fuzzing basati su una libreria | Kitploit
Strumenti/GitHubGitHub/parikhakshat/autoharness
Analisi delle VulnerabilitàAnalisi del CodiceFuzzingAnalisi di Binari
GitHubparikhakshat/autoharness

autoharness

Uno strumento che crea automaticamente harness di fuzzing basati su una libreria

Vedi Repository
29325164 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

AutoHarness

Creato da Akshat Parikh

Cos'è questo strumento?

AutoHarness è uno strumento che genera automaticamente harness di fuzzing per te. Questa idea nasce da un problema concomitante nel fare fuzzing di codebase oggi: grandi codebase hanno migliaia di funzioni e porzioni di codice che possono essere annidate abbastanza in profondità nella libreria. È molto difficile, o talvolta persino impossibile, per i fuzzer intelligenti raggiungere quel percorso di codice. Anche per grandi progetti di fuzzing come oss-fuzz, ci sono ancora parti della codebase che non sono coperte dal fuzzing. Pertanto, questo programma cerca di alleviare questo problema in una certa misura, oltre a fornire uno strumento che i ricercatori di sicurezza possono usare per testare inizialmente una codebase. Questo programma supporta solo codebase scritte in C e C++.

Configurazione/Dimostrazione

Questo programma utilizza llvm e clang per libfuzzer, Codeql per trovare funzioni e python per il programma generale. Il programma è stato testato su Ubuntu 20.04 con llvm 12 e python 3. Ecco la configurazione iniziale.

root@kitploit:~
sudo apt-get update;
sudo apt-get install python3 python3-pip llvm-12* clang-12 git;
pip3 install pandas lief subprocess os argparse ast;

Segui la procedura di installazione per Codeql su https://github.com/github/codeql. Assicurati di installare gli strumenti CLI e le librerie. Per i miei test, ho memorizzato sia gli strumenti che le librerie sotto una singola cartella. Infine, clona questo repository o scarica una release. Ecco l'output del programma dopo l'esecuzione su nginx con la modalità a argomenti multipli impostata. Questo è il comando che ho usato.

root@kitploit:~
python3 harness.py -L /home/akshat/nginx-1.21.0/objs/ -C /home/akshat/codeql-h/ -M 1 -O /home/akshat/autoharness/ -D nginx -G 1 -Y 1 -F "-I /home/akshat/nginx-1.21.0/objs -I /home/akshat/nginx-1.21.0/src/core -I /home/akshat/nginx-1.21.0/src/event -I /home/akshat/nginx-1.21.0/src/http -I /home/akshat/nginx-1.21.0/src/mail -I /home/akshat/nginx-1.21.0/src/misc -I /home/akshat/nginx-1.21.0/src/os -I /home/akshat/nginx-1.21.0/src/stream -I /home/akshat/nginx-1.21.0/src/os/unix" -X ngx_config.h,ngx_core.h

Risultati: image È sicuramente possibile aumentare il successo eseguendo ulteriori debug della compilazione e aggiungendo più file header e altro. Nota che il progetto nginx non ha oggetti condivisi dopo la compilazione. Tuttavia, questo programma ha una funzionalità che può convertire eseguibili PIE in librerie condivise.

Funzionalità pianificate (in ordine di avanzamento)

  1. Fuzzing di strutture

Il metodo attualmente implementato nel programma per fare fuzzing di funzioni con argomenti multipli utilizza il fornitore di dati di fuzzing. Ci sono alcuni miglioramenti da apportare in questa integrazione; tuttavia, credo di poter incorporare questa funzionalità con le strutture dati. Un problema che ho incontrato durante la programmazione è con Codeql e le struct annidate. Diventa particolarmente difficile senza scrivere più query che variano per ogni funzione. In breve, questa funzionalità necessita di più lavoro. Stavo anche pensando a una soluzione semplice usando protobuf.

  1. Creazione di harness basata sull'implementazione

Usando Codeql, è possibile generare un grafo di flusso di controllo che mappa come i parametri in una funzione vengono inizializzati. Usando queste informazioni, possiamo creare un harness migliore. Un altro modo è cercare implementazioni per la funzione che esistono nella libreria e usare quelle informazioni per fare una stima informata su un'implementazione della funzione come harness. I problemi che ho attualmente con questo sono generare i grafi di flusso di controllo con Codeql.

  1. Fuzzing parallelizzato/Rilevamento di falsi positivi

Posso creare un semplice programma che esegue tutti gli harness e rileva eventuali falsi positivi comuni usando ASAN. Inoltre, posso creare una nuova interfaccia che esegue tutti gli harness contemporaneamente e visualizza le loro statistiche.

Contributi/Bug

Se trovi bug in questo programma, per favore crea un issue. Cercherò di trovare una soluzione. Inoltre, se hai idee per nuove funzionalità o su come implementare miglioramenti delle prestazioni o le attuali funzionalità pianificate, per favore crea una pull request o un issue con il tag (contribution).

Avviso

Questo strumento genera alcuni falsi positivi. Per favore, analizza prima i crash e verifica se è un bug valido o solo un bug di implementazione. Inoltre, puoi attivare la modalità debug se alcune funzioni non compilano. Questo ti aiuterà a capire se mancano alcuni file header o ci sono problemi di linkage. Se il progetto su cui stai lavorando non ha librerie condivise ma un eseguibile, assicurati di compilare l'eseguibile in formato PIE in modo che questo programma possa convertirlo in una libreria condivisa.

Riferimenti

  1. https://lief.quarkslab.com/doc/latest/tutorials/08_elf_bin2lib.html
Scarica lo strumento