Una lista seleccionada de recursos de fuzzing (libros, cursos —gratuitos y de pago—, videos, herramientas, tutoriales y aplicaciones vulnerables para practicar) para aprender Fuzzing y las fases iniciales del Desarrollo de Exploits, como el análisis de causa raíz.
Una lista seleccionada de recursos de fuzzing (libros, cursos, gratuitos y de pago, vídeos, herramientas, tutoriales y aplicaciones vulnerables para practicar) para aprender Fuzzing y las fases iniciales del Desarrollo de Exploits, como el análisis de causa raíz.
Libros sobre fuzzing
Fuzzing: Brute Force Vulnerability Discovery por Michael Sutton, Adam Greene, Pedram Amini.
Fuzzing for Software Security Testing and Quality Assurance por Ari Takanen, Charles Miller, Jared D Demott y Atte Kettunen.
Open Source Fuzzing Tools por Gadi Evron y Noam Rathaus.
Gray Hat Python por Justin Seitz.
The Fuzzing Book por Andreas Zeller, Rahul Gopinath, Marcel Böhme, Gordon Fraser y Christian Holler.
Nota: Los capítulos de los siguientes libros están dedicados al fuzzing.
- The Shellcoder's Handbook: Discovering and Exploiting Security Holes ( Chapter 15 ) por Chris Anley, Dave Aitel, David Litchfield y otros.
- iOS Hacker's Handbook - Chapter 1 Charles Miller, Dino DaiZovi, Dion Blazakis, Ralf-Philip Weinmann y Stefan Esser.
Cursos/vídeos de formación sobre fuzzing
NYU Poly ( consulta los vídeos para más información ) - Disponible gratuitamente por Dan Guido.
Modern Binary Exploitation ( RPISEC ) - Capítulo 15 - por RPISEC.
Offensive Computer Security - Semana 6 - por W. Owen Redwood y Prof. Xiuwen Liu.
Vídeos que hablan sobre técnicas, herramientas y mejores prácticas de fuzzing
Fuzzing 101 (Parte 1) - por Mike Zusman.
Fuzzing 101 (Parte 2) - por Mike Zusman.
Fuzzing 101 (2009) - por Mike Zusman.
Fuzzing - Curso de Seguridad de Software en Coursera - por la Universidad de Maryland.
Lista de reproducción de YouTube con varias charlas y presentaciones de fuzzing - Mucho contenido bueno en estos vídeos.
Caza de bugs en navegadores - Memorias de un último superviviente - por Atte Kettunen
Fuzz Theory - por Brandon Falk
Tutoriales y blogs que explican metodología, técnicas y mejores prácticas de fuzzing
Fuzzing eficaz de formatos de archivo - Mateusz «j00ru» Jurczyk @ Black Hat Europe 2016, Londres
Un año de fuzzing de fuentes del kernel de Windows, Parte 1: los resultados - Increíble artículo del Google Project Zero, que describe lo que se necesita para hacer fuzzing y crear fuzzers.
Un año de fuzzing de fuentes del kernel de Windows, Parte 2: las técnicas - Increíble artículo del Google Project Zero, que describe lo que se necesita para hacer fuzzing y crear fuzzers.
Bugs interesantes y recursos en el proyecto fuzzing - por fuzzing-project.org.
Flujos de trabajo de fuzzing; un trabajo de fuzzing de principio a fin - por @BrandonPrry.
Una introducción suave al fuzzing de código C++ con AFL y libFuzzer - por Jeff Trull.
Una introducción de 15 minutos al fuzzing - por la gente de MWR Security.
Nota: La gente de fuzzing.info ha hecho un gran trabajo recopilando algunos enlaces increíbles; no voy a duplicar su trabajo. Añadiré los documentos que se les hayan pasado por alto y los de 2015 y 2016. Papers de fuzzing - por fuzzing.info
Blogs y libros sobre fuzzing - por fuzzing.info
Análisis de causa raíz del fallo durante el fuzzing - por Corelan Team.
Análisis de causa raíz de desbordamientos de enteros - por Corelan Team.
Creación de publishers personalizados para Peach Fuzzer - por Open Security Research
7 cosas a considerar antes de hacer fuzzing en un proyecto grande de código abierto - por Emily Ratliff.
Del fuzzing al 0-day - por Harold Rodriguez(@superkojiman).
Del fallo al exploit - por Corelan Team.
Fuzzing con Peach, Parte 1 - por Jason Kratzer de corelan team
Fuzzing con Peach, Parte 2 - por Jason Kratzer de corelan team.
Generación automática de archivos/fuzzers de Peach pit - por Frédéric Guihéry y Georges Bossert.
Flujos de trabajo de fuzzing; un trabajo de fuzzing de principio a fin - por @BrandonPrry.
Fuzzing de capstone usando el modo persistente de AFL - por @toasted_flakes
Cómo hacer fuzzing a un servidor con American Fuzzy Lop - por Jonathan Foote
Fuzzing con Spike - por samclass.info
Fuzzing con FOE - por Samclass.info
Z3: una guía - Primeros pasos con Z3: una guía
Construcción de un fuzzer con retroalimentación - por @fady_othman
Herramientas que ayudan a hacer fuzzing en aplicaciones
Fuzzers que ayudan a hacer fuzzing en entornos de nube.
Cloudfuzzer - Framework de fuzzing en la nube que permite ejecutar fácilmente pruebas de fuzzing automatizadas en entornos de nube.
ClusterFuzzer - ClusterFuzzer, infraestructura de fuzzing de código abierto y escalable. Es utilizada por Google para hacer fuzzing del navegador Chrome.
Fuzzit - Fuzzit, plataforma de fuzzing continuo como servicio. Gratis para código abierto. Utilizada por varios proyectos de código abierto (systemd, radare2) y proyectos de código cerrado. Para unirte al programa de código abierto, escribe a [email protected]
Fuzzers que ayudan a hacer fuzzing en formatos de archivo como pdf, mp3, swf, etc.
MiniFuzz - Enlace de Wayback Machine - Herramienta básica de fuzzing de formatos de archivo de Microsoft. (Ya no está disponible en el sitio web de Microsoft).
BFF de CERT - Framework básico de fuzzing para formatos de archivo.
AFL Fuzzer (solo Linux) - Fuzzer American Fuzzy Lop de Michal Zalewski, también conocido como lcamtuf
Win AFL - Un fork de AFL para hacer fuzzing de binarios de Windows
Shellphish Fuzzer - Una interfaz Python para AFL, que permite inyectar casos de prueba fácilmente y otras funcionalidades.
TriforceAFL - Una versión modificada de AFL que admite fuzzing para aplicaciones cuyo código fuente no está disponible.
AFLGo - Fuzzing dirigido de caja gris con AFL, para hacer fuzzing en ubicaciones específicas de un programa.
Peach Fuzzer - Framework que ayuda a crear fuzzers personalizados, tanto simples como inteligentes.
MozPeach - Un fork de Peach 2.7 de Mozilla Security.
Failure Observation Engine (FOE) - herramienta de pruebas de fuzzing mutacional basada en archivos para aplicaciones Windows.
rmadair - fuzzer de archivos basado en mutaciones que usa PyDBG para monitorear señales de interés.
honggfuzz - Fuzzer de propósito general, fácil de usar, con interesantes opciones de análisis. Admite fuzzing guiado por retroalimentación basado en cobertura de código. Compatible con GNU/Linux, FreeBSD, Mac OSX y Android.
zzuf - Un fuzzer transparente de entrada de aplicaciones. Funciona interceptando operaciones de archivos y cambiando bits aleatorios en la entrada del programa.
radamsa - Un fuzzer de propósito general y generador de casos de prueba.
binspector - Una herramienta de análisis y fuzzing de formatos binarios
grammarinator - Herramienta de fuzzing para formatos de archivo basada en gramáticas ANTLR v4 (muchas gramáticas ya disponibles en el proyecto ANTLR).
Sloth - Sloth 🦥 es un framework de fuzzing guiado por cobertura para hacer fuzzing de librerías nativas de Android que utiliza libFuzzer y la emulación en modo usuario de QEMU.
ManuFuzzer - Fuzzer de cobertura de código binario para macOS, basado en libFuzzer y LLVM.
Fuzzers que ayudan a hacer fuzzing en aplicaciones que usan protocolos de red como HTTP, SSH, SMTP, etc.
Peach Fuzzer - Framework que ayuda a crear fuzzers personalizados, tanto simples como inteligentes.
Sulley - Un framework de desarrollo de fuzzers y pruebas de fuzzing compuesto por múltiples componentes extensibles, de Pedram Amini.
boofuzz - Un fork y sucesor del framework Sulley.
Spike - Un framework de desarrollo de fuzzers similar a Sulley, predecesor de Sulley.
Metasploit Framework - Un framework que contiene algunas capacidades de fuzzing mediante módulos Auxiliary.
Nightmare - Un conjunto de pruebas de fuzzing distribuido con administración web; admite fuzzing mediante protocolos de red.
rage_fuzzer - Un fuzzer/reproductor de paquetes ciego, que no conoce el protocolo.
Fuzzotron - Un fuzzer de red simple compatible con TCP, UDP y multihilo.
Mutiny - El Mutiny Fuzzing Framework es un fuzzer de red que opera reproduciendo PCAPs a través de un fuzzer mutacional.
Fuzzing For Worms - Un framework de fuzzing para servidores de red.
AFL (con parche de red) - Un American Fuzzy Lop no oficial capaz de hacer fuzzing de red.
AFLNet - Un fuzzer de caja gris para protocolos de red (una extensión de AFL).
Pulsar - Fuzzer de aprendizaje de protocolos, simulación y con estado.
BFuzz - Un framework de fuzzing de navegadores basado en entradas. Fuzzinator - Framework de pruebas aleatorias Fuzzinator Grizzly - Un framework de fuzzing de navegadores multiplataforma
Otros fuzzers notables, como fuzzers de kernel, fuzzers de propósito general, etc.
Choronzon - Un fuzzer evolutivo basado en conocimiento
QuickFuzz - Una herramienta escrita en Haskell diseñada para probar entradas inesperadas de formatos de archivo comunes en software de terceros, aprovechando fuzzers conocidos y disponibles.
gramfuzz - Un fuzzer basado en gramáticas que permite definir gramáticas complejas para modelar formatos de datos de texto y binariosKernelFuzzer - Framework de fuzzing de kernel multiplataforma.
honggfuzz - Un fuzzer de propósito general y fácil de usar con interesantes opciones de análisis.
Hodor Fuzzer - Otro fuzzer de propósito general.
libFuzzer - Motor de fuzzing evolutivo, guiado por cobertura y en proceso, para objetivos escritos en C/C++.
syzkaller - Fuzzer de syscalls de Linux distribuido, no supervisado y guiado por cobertura.
ansvif - Un framework avanzado de fuzzing multiplataforma diseñado para encontrar vulnerabilidades en código C/C++.
Tribble - Framework de fuzzing para JVM fácil de usar y guiado por cobertura.
go-fuzz - Pruebas guiadas por cobertura de paquetes de Go.
FExM - Framework automatizado de fuzzing a gran escala
Jazzer - Un fuzzer guiado por cobertura y en proceso para la Máquina Virtual de Java, basado en libFuzzer.
cifuzz - Una herramienta de línea de comandos para ejecutar pruebas de fuzzing guiadas por cobertura en múltiples lenguajes y objetivos.
WebGL Fuzzer - WebGL Fuzzer
fast-check - Una herramienta de fuzzing escrita en TypeScript y diseñada para ejecutar entradas inesperadas contra código JavaScript.
Cómo afecta la entrada del usuario a la ejecución
kfetch-toolkit - Herramienta para realizar registro avanzado de referencias a memoria realizadas por los kernels de los sistemas operativos
moflow - Un framework de seguridad de software que contiene herramientas para vulnerabilidad, descubrimiento y triage.
Z3 - Un demostrador de teoremas de Microsoft Research.
SMT-LIB - Una iniciativa internacional destinada a facilitar la investigación y el desarrollo en Satisfactibilidad Módulo Teorías (SMT)
Ejecución simbólica con KLEE: desde la instalación y la introducción hasta la detección de errores en software de código abierto - Un conjunto de cuatro vídeos instructivos que presentan KLEE, comenzando con cómo iniciarse con KLEE y terminando con una demostración que encuentra errores de corrupción de memoria en código real.
No he incluido algunas de las leyendas como AxMan; consulta el siguiente enlace para obtener más información. https://www.ee.oulu.fi/research/ouspg/Fuzzers
Herramientas del oficio para desarrolladores de exploits e ingenieros inversos
Windbg - El depurador preferido por los escritores de exploits.
Immunity Debugger - Immunity Debugger de Immunity Sec.
OllyDbg - El depurador de elección tanto para ingenieros inversos como para escritores de exploits.
Mona.py ( Complemento para windbg e Immunity dbg ) - Herramientas increíbles que hacen la vida más fácil a los desarrolladores de exploits.
x64dbg - Un depurador de código abierto x64/x32 para Windows.
Evan's Debugger (EDB) - Interfaz frontal para gdb.
GDB - Gnu Debugger - El depurador favorito de Linux.
PEDA - Asistencia de Python para el desarrollo de exploits en GDB.
Radare2 - Framework para ingeniería inversa y análisis de binarios.
Desensambladores, frameworks de desensamblado, etc.,
IDA Pro - El mejor desensamblador
binnavi - IDE de análisis de binarios que anota los grafos de flujo de control y los grafos de llamadas del código desensamblado.
Capstone - Capstone es un framework de desensamblado ligero, multiplataforma y multiarquitectura.
ltrace - Intercepta llamadas a librerías
strace - Intercepta llamadas al sistema
Exploit-DB - https://www.exploit-db.com (busca y elige los exploits que tengan sus respectivas aplicaciones disponibles para descargar; reproduce el exploit utilizando el fuzzer de tu elección)
PacketStorm - https://packetstormsecurity.com/files/tags/exploit/
Fuzzgoat - Programa C vulnerable para probar fuzzers.
vulnserver - Un servidor vulnerable para probar fuzzers.
Fuzzer Test Suite - Conjunto de pruebas para motores de fuzzing. Incluye diferentes bugs conocidos como Heartbleed, el bug de c-ares de $100K y otros.
Fuzzing Corpus - Un corpus que incluye varios formatos de archivo para fuzzing de múltiples objetivos en la literatura de fuzzing.
Awesome Directed Fuzzing: una lista curada de impresionantes artículos de investigación sobre fuzzing dirigido.
Gracias a las siguientes personas que hicieron contribuciones a este proyecto.