Una lista curata di risorse sul fuzzing (libri, corsi - gratuiti e a pagamento, video, strumenti, tutorial e applicazioni vulnerabili su cui esercitarsi) per apprendere il fuzzing e le fasi iniziali dello sviluppo di exploit come la root cause analysis.
Una lista curata di risorse sul fuzzing ( libri, corsi - gratuiti e a pagamento, video, strumenti, tutorial e applicazioni vulnerabili su cui esercitarsi ) per imparare il fuzzing e le fasi iniziali dello sviluppo di exploit come l'analisi delle cause profonde.
Libri sul fuzzing
Fuzzing: Brute Force Vulnerability Discovery di Michael Sutton, Adam Greene, Pedram Amini.
Fuzzing for Software Security Testing and Quality Assurance di Ari Takanen, Charles Miller, Jared D Demott e Atte Kettunen.
Open Source Fuzzing Tools di Gadi Evron e Noam Rathaus.
Gray Hat Python di Justin Seitz.
The Fuzzing Book di Andreas Zeller, Rahul Gopinath, Marcel Böhme, Gordon Fraser e Christian Holler.
Nota: Alcuni capitoli dei seguenti libri sono dedicati al fuzzing.
- The Shellcoder's Handbook: Discovering and Exploiting Security Holes ( Capitolo 15 ) di Chris Anley, Dave Aitel, David Litchfield e altri.
- iOS Hacker's Handbook - Capitolo 1 di Charles Miller, Dino DaiZovi, Dion Blazakis, Ralf-Philip Weinmann e Stefan Esser.
Corsi/Video di formazione sul fuzzing
NYU Poly ( vedi i video per saperne di più ) - Reso disponibile gratuitamente da Dan Guido.
Modern Binary Exploitation ( RPISEC ) - Capitolo 15 - di RPISEC.
Offensive Computer Security - Settimana 6 - di W. Owen Redwood e Prof. Xiuwen Liu.
Video che trattano tecniche di fuzzing, strumenti e buone pratiche
Fuzzing 101 (Parte 1) - di Mike Zusman.
Fuzzing 101 (Parte 2) - di Mike Zusman.
Fuzzing 101 (2009) - di Mike Zusman.
Fuzzing - Corso di Software Security su Coursera - di University of Maryland.
Playlist YouTube di vari talk e presentazioni sul fuzzing - Molto buon contenuto in questi video.
Browser bug hunting - Memorie di un ultimo sopravvissuto - di Atte Kettunen
Fuzz Theory - di Brandon Falk
Tutorial e blog che spiegano metodologie, tecniche e buone pratiche del fuzzing
Fuzzing efficace dei formati di file - Mateusz “j00ru” Jurczyk @ Black Hat Europe 2016, Londra
Un anno di fuzzing dei font del kernel Windows, parte 1: i risultati - Articolo straordinario di Google Project Zero, che descrive cosa serve per fare fuzzing e creare fuzzer.
Un anno di fuzzing dei font del kernel Windows, parte 2: le tecniche - Articolo straordinario di Google Project Zero, che descrive cosa serve per fare fuzzing e creare fuzzer.
Bug e risorse interessanti sul progetto fuzzing - di fuzzing-project.org.
Workflow di fuzzing; un lavoro di fuzz dall'inizio alla fine - di @BrandonPrry.
Una dolce introduzione al fuzzing di codice C++ con AFL e libFuzzer - di Jeff Trull.
Un'introduzione di 15 minuti al fuzzing - dal team di MWR Security.
Nota: I ragazzi di fuzzing.info hanno fatto un ottimo lavoro nel raccogliere alcuni link fantastici, non duplicherò il loro lavoro. Aggiungerò i paper che si sono persi e quelli dal 2015 e 2016. Paper sul fuzzing - di fuzzing.info
Fuzzing blog e libri - di fuzzing.info
Analisi delle cause profonde del crash durante il fuzzing - di Corelan Team.
Analisi delle cause profonde degli integer overflow - di Corelan Team.
Creare publisher personalizzati per Peach fuzzer - di Open Security Research
7 cose da considerare prima di fare fuzzing su un grande progetto open source - di Emily Ratliff.
Dal fuzzing alla 0-day - di Harold Rodriguez (@superkojiman).
Dal crash all'exploit - di Corelan Team.
Fuzzing con Peach, parte 1 - di Jason Kratzer del team corelan
Fuzzing con Peach, parte 2 - di Jason Kratzer del team corelan.
Generazione automatica di file pit/fuzzer di Peach - di Frédéric Guihéry, Georges Bossert.
Workflow di fuzzing; un lavoro di fuzz dall'inizio alla fine - di @BrandonPrry.
Fuzzing di capstone usando la modalità persistente di AFL - di @toasted_flakes
Come fare fuzzing su un server con American Fuzzy Lop - di Jonathan Foote
Fuzzing con Spike - di samclass.info
Fuzzing con FOE - di Samclass.info
Z3 - Una guida - Per iniziare con Z3: Una guida
Costruire un feedback fuzzer - di @fady_othman
Strumenti che aiutano nel fuzzing delle applicazioni
Fuzzer che aiutano il fuzzing in ambienti cloud.
Cloudfuzzer - Framework di cloud fuzzing che permette di eseguire facilmente test di fuzzing automatizzati in ambienti cloud.
ClusterFuzzer - ClusterFuzzer, infrastruttura di fuzzing open source scalabile. È usato da Google per il fuzzing del browser Chrome.
Fuzzit - Fuzzit, piattaforma di fuzzing continuo come servizio. Gratuito per l'open source. Usata da vari progetti open source (systemd, radare2) e progetti closed source. Per aderire al programma oss scrivi a [email protected]
Fuzzer che aiutano nel fuzzing di formati di file come pdf, mp3, swf, ecc.,
MiniFuzz - link Wayback Machine - Strumento di base per il fuzzing di formati di file di Microsoft. (Non più disponibile sul sito Microsoft).
BFF di CERT - Basic Fuzzing Framework per formati di file.
AFL Fuzzer (solo Linux) - American Fuzzy Lop Fuzzer di Michal Zalewski aka lcamtuf
Win AFL - Un fork di AFL per il fuzzing di binari Windows
Shellphish Fuzzer - Un'interfaccia Python per AFL, che consente di iniettare facilmente test case e altre funzionalità.
TriforceAFL - Una versione modificata di AFL che supporta il fuzzing per applicazioni il cui codice sorgente non è disponibile.
AFLGo - Fuzzing greybox diretto con AFL, per fare fuzzing su posizioni mirate di un programma.
Peach Fuzzer - Framework che aiuta a creare fuzzer dumb e smart personalizzati.
MozPeach - Un fork di Peach 2.7 di Mozilla Security.
Failure Observation Engine (FOE) - strumento di fuzz testing mutazionale basato su file per applicazioni Windows.
rmadair - fuzzer di file basato su mutazioni che usa PyDBG per monitorare i segnali di interesse.
honggfuzz - Un fuzzer polivalente e facile da usare con interessanti opzioni di analisi. Supporta il fuzzing guidato dal feedback basato sulla copertura del codice. Supporta GNU/Linux, FreeBSD, Mac OSX e Android.
zzuf - Un fuzzer trasparente per l'input delle applicazioni. Funziona intercettando le operazioni sui file e modificando bit casuali nell'input del programma.
radamsa - Un fuzzer generico e generatore di test case.
binspector - Uno strumento di analisi e fuzzing di formati binari.
grammarinator - Strumento di fuzzing per formati di file basato su grammatiche ANTLR v4 (molte grammatiche già disponibili dal progetto ANTLR).
Sloth - Sloth 🦥 è un framework di fuzzing guidato dalla copertura per il fuzzing di librerie native Android che fa uso di libFuzzer e dell'emulazione QEMU in modalità utente.
ManuFuzzer - Fuzzer di copertura del codice binario per macOS, basato su libFuzzer e LLVM.
Fuzzer che aiutano nel fuzzing di applicazioni che usano protocolli di rete come HTTP, SSH, SMTP, ecc.,
Peach Fuzzer - Framework che aiuta a creare fuzzer dumb e smart personalizzati.
Sulley - Un framework per lo sviluppo di fuzzer e fuzz testing composto da molteplici componenti estensibili, di Pedram Amini.
boofuzz - Un fork e successore del framework Sulley.
Spike - Un framework di sviluppo di fuzzer come Sulley, un predecessore di Sulley.
Metasploit Framework - Un framework che contiene alcune capacità di fuzzing tramite i moduli Auxiliary.
Nightmare - Una suite di fuzz testing distribuita con amministrazione web, supporta il fuzzing tramite protocolli di rete.
rage_fuzzer - Un fuzzer/replayer di pacchetti dumb, ignaro dei protocolli.
Fuzzotron - Un semplice fuzzer di rete che supporta TCP, UDP e multithreading.
Mutiny - Il Mutiny Fuzzing Framework è un fuzzer di rete che opera riproducendo i PCAP tramite un fuzzer mutazionale.
Fuzzing For Worms - Un framework di fuzzing per server di rete.
AFL (w/ networking patch) - Un american fuzzy lop non ufficiale capace di fuzzing di rete.
AFLNet - Un Greybox Fuzzer per protocolli di rete (un'estensione di AFL).
Pulsar - Apprendimento di protocolli, simulazione e fuzzer stateful.
BFuzz - Un framework di fuzzing dei browser basato su input. Fuzzinator - Fuzzinator Random Testing Framework Grizzly - Un framework di fuzzing dei browser cross-platform.
Altri fuzzer degni di nota come i Kernel Fuzzer, fuzzer generici, ecc.,
Choronzon - Un fuzzer evolutivo basato sulla conoscenza.
QuickFuzz - Uno strumento scritto in Haskell progettato per testare input inattesi di formati di file comuni su software di terze parti, sfruttando fuzzer noti e già pronti.
gramfuzz - Un fuzzer basato su grammatiche che consente di definire grammatiche complesse per modellare formati di dati testuali e binariKernelFuzzer - Framework di fuzzing del kernel multipiattaforma.
honggfuzz - Un fuzzer generico, facile da usare, con interessanti opzioni di analisi.
Hodor Fuzzer - Ancora un altro fuzzer generico.
libFuzzer - Motore di fuzzing evolutivo, in-process e guidato dalla copertura per obiettivi scritti in C/C++.
syzkaller - Fuzzer distribuito, non supervisionato e guidato dalla copertura per le syscall Linux.
ansvif - Un avanzato framework di fuzzing multipiattaforma progettato per trovare vulnerabilità nel codice C/C++.
Tribble - Framework di fuzzing per JVM facile da usare e guidato dalla copertura.
go-fuzz - Test guidati dalla copertura per pacchetti Go.
FExM - Framework automatizzato di fuzzing su larga scala.
Jazzer - Un fuzzer in-process e guidato dalla copertura per la Java Virtual Machine, basato su libFuzzer.
cifuzz - Uno strumento a riga di comando per eseguire test di fuzzing guidati dalla copertura in più linguaggi e su più obiettivi.
WebGL Fuzzer - Fuzzer WebGL
fast-check - Uno strumento fuzzer scritto in TypeScript e progettato per eseguire input imprevisti contro codice JavaScript.
Come l'input utente influenza l'esecuzione
kfetch-toolkit - Strumento per eseguire logging avanzato dei riferimenti di memoria effettuati dai kernel dei sistemi operativi.
moflow - Framework di sicurezza software contenente strumenti per vulnerability discovery e triage.
Z3 - Un dimostratore di teoremi di Microsoft Research.
SMT-LIB - Un'iniziativa internazionale volta a facilitare la ricerca e lo sviluppo nella Satisfiability Modulo Theories (SMT).
Symbolic execution with KLEE: From installation and introduction to bug-finding in open source software - Una serie di quattro video didattici che introducono KLEE, partendo da come iniziare a usare KLEE e terminando con una demo che trova bug di corruzione della memoria in codice reale.
Non ho incluso alcune leggende come AxMan; fai riferimento al seguente link per maggiori informazioni. https://www.ee.oulu.fi/research/ouspg/Fuzzers
Strumenti del mestiere per sviluppatori di exploit e reverse engineer
Windbg - Il debugger preferito da chi scrive exploit.
Immunity Debugger - Immunity Debugger di Immunity Sec.
OllyDbg - Il debugger preferito sia dai reverse engineer che da chi scrive exploit.
Mona.py ( Plugin for windbg and Immunity dbg ) - Strumenti fantastici che rendono la vita facile agli sviluppatori di exploit.
x64dbg - Un debugger open-source x64/x32 per Windows.
Evan's Debugger (EDB) - Interfaccia front-end per gdb.
GDB - Gnu Debugger - Il debugger Linux preferito.
PEDA - Assistenza allo sviluppo di exploit in Python per GDB.
Radare2 - Framework per il reverse engineering e l'analisi di binari.
Disassembler, framework di disassemblaggio, ecc.
IDA Pro - Il miglior disassembler.
binnavi - IDE per l'analisi di binari; annota i grafi di flusso di controllo e i grafi di chiamata del codice disassemblato.
Capstone - Capstone è un framework di disassemblaggio leggero, multipiattaforma e multi-architettura.
ltrace - Intercetta le chiamate alle librerie.
strace - Intercetta le chiamate di sistema.
Exploit-DB - https://www.exploit-db.com (cerca e scegli gli exploit che hanno le rispettive applicazioni disponibili per il download, riproduci l'exploit usando il fuzzer che preferisci)
PacketStorm - https://packetstormsecurity.com/files/tags/exploit/
Fuzzgoat - Programma C vulnerabile per testare i fuzzer.
vulnserver - Un server vulnerabile per testare i fuzzer.
Fuzzer Test Suite - Set di test per i motori di fuzzing. Include diversi bug noti come Heartbleed, il bug da $100K di c-ares e altri.
Fuzzing Corpus - Un corpus che include vari formati di file per fare fuzzing su più obiettivi nella letteratura sul fuzzing.
Awesome Directed Fuzzing: Un elenco curato di eccellenti articoli di ricerca sul fuzzing diretto.
Grazie alle seguenti persone che hanno contribuito a questo progetto.