Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
fuzzable — Marco de análisis estático que identifica objetivos de funciones fuzzeables en código fuente y binarios, genera plantillas de harness y se integra con AFL++ y libFuzzer para el descubrimiento automatizado de vulnerabilidades. | Kitploit
Herramientas/GitHubGitHub/ex0dus-0x/fuzzable
Análisis EstáticoAnálisis de VulnerabilidadesIngeniería InversaFuzzingAnálisis de Binarios
GitHubex0dus-0x/fuzzable

fuzzable

Marco de análisis estático que identifica objetivos de funciones fuzzeables en código fuente y binarios, genera plantillas de harness y se integra con AFL++ y libFuzzer para el descubrimiento automatizado de vulnerabilidades.

Ver Repositorio
5495922hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Fuzzable

Build Status PyPI version Blackhat

Marco para automatizar el descubrimiento de objetivos Fuzzable mediante análisis estático

example

Introducción

Los investigadores de vulnerabilidades que realizan evaluaciones de seguridad a menudo aprovechan las capacidades del fuzzing guiado por cobertura mediante herramientas potentes como AFL++ y libFuzzer. Esto es importante ya que automatiza el proceso de búsqueda de errores y revela rápidamente condiciones explotables en los objetivos. Sin embargo, al encontrarse con bases de código grandes y complejas o binarios de código cerrado, los investigadores tienen que dedicar tiempo minuciosamente para auditar manualmente y aplicar ingeniería inversa para identificar funciones donde la exploración basada en fuzzing puede ser útil.

Fuzzable es un marco que se integra tanto con código fuente C/C++ como con binarios para ayudar a los investigadores de vulnerabilidades a identificar funciones objetivo que son viables para el fuzzing. Esto se logra aplicando varias heurísticas basadas en análisis estático para señalar comportamientos riesgosos en el software y las funciones que los ejecutan. Los investigadores pueden entonces utilizar el marco para generar plantillas básicas de harness, que luego pueden ser usadas para buscar vulnerabilidades, o integrarse como parte de un pipeline de fuzzing continuo, como el proyecto oss-fuzz de Google.

Además de ejecutarse como herramienta independiente, Fuzzable también está integrado como plugin para el desensamblador Binary Ninja, con soporte para otros backends de desensamblaje en desarrollo.

Consulte la publicación original del blog que detalla la herramienta aquí, que destaca las especificaciones técnicas de las heurísticas de análisis estático y cómo surgió esta herramienta. Esta herramienta también se presenta en Black Hat Arsenal USA 2022.

Características

  • Admite el análisis de binarios (con Angr y Binary Ninja) y artefactos de código fuente (con tree-sitter).
  • Ejecute análisis estático tanto como herramienta CLI independiente o como plugin de Binary Ninja.
  • Generación de harness para acelerar la creación de campañas de fuzzing rápidamente.

Instalación

Algunos objetivos binarios pueden requerir cierta sanitización (por ejemplo, coincidencia de firmas o identificación de funciones a partir de inlining), por lo tanto, fuzzable utiliza principalmente Binary Ninja como backend de desensamblaje debido a su capacidad para resolver estos problemas de manera efectiva. Por lo tanto, puede utilizarse tanto como herramienta independiente como plugin.

Dado que Binary Ninja no es accesible para todos y puede haber demanda para su uso en evaluaciones de seguridad y posiblemente escalar en la nube, también se admite un backend alternativo angr. Anticipo incorporar otros desensambladores más adelante (prioridad: Ghidra).

Línea de Comandos (Independiente)

Si tiene Binary Ninja Commercial, asegúrese de instalar la API para uso independiente sin interfaz gráfica:

$ python3 /Applications/Binary\ Ninja.app/Contents/Resources/scripts/install_api.py

Instale con pip:

$ pip install fuzzable

Compilación Manual/Desarrollo

Usamos poetry para la gestión de dependencias y compilación. Para hacer una compilación manual, clone el repositorio con los módulos de terceros:

$ git clone --recursive https://github.com/ex0dus-0x/fuzzable

Para instalar manualmente:

$ cd fuzzable/

# sin poetry
$ pip install .

# con poetry
$ poetry install

# con poetry para un virtualenv de desarrollo
$ poetry shell

Ahora puede analizar binarios y/o código fuente con la herramienta:

# analizando un solo binario de biblioteca compartida
$ fuzzable analyze examples/binaries/libbasic.so

# analizando un solo archivo fuente C
$ fuzzable analyze examples/source/libbasic.c

# analizando un espacio de trabajo con múltiples archivos C/C++ y encabezados
$ fuzzable analyze examples/source/source_bundle/

Plugin de Binary Ninja

fuzzable se puede instalar fácilmente a través del mercado de plugins de Binary Ninja yendo a Binary Ninja > Manage Plugins y buscándolo. Aquí hay un ejemplo del plugin fuzzable en ejecución, identificando con precisión objetivos para fuzzing y evaluación adicional de vulnerabilidades:

binja_example

Uso

fuzzable viene con varias opciones para ayudar a ajustar mejor su análisis. Se admitirán más en planes futuros y en cualquier solicitud de funciones que se realicen.

Heurísticas de Análisis Estático

Para determinar la fuzzabilidad, fuzzable utiliza varias heurísticas para determinar qué objetivos son los más viables para apuntar en el análisis dinámico. Estas heurísticas están ponderadas de manera diferente usando la biblioteca scikit-criteria, que utiliza el análisis de decisión multicriterio para determinar los mejores candidatos. Estas métricas y sus pesos se pueden ver aquí:

HeurísticaDescripciónPeso
Fuzz Friendly NameEl nombre del símbolo implica un comportamiento que ingiere entrada de archivo/búfer0.3
Risky SinksArgumentos que fluyen hacia llamadas riesgosas (ej. memcpy)0.3
Natural LoopsNúmero de bucles detectados con la frontera de dominancia0.05
Cyclomatic ComplexityComplejidad del objetivo de función basada en aristas + nodos0.05
Coverage DepthNúmero de funciones llamadas que el objetivo atraviesa0.3

Como se mencionó, consulte la publicación técnica del blog para una visión más profunda de por qué y cómo se utilizan estas métricas.

Muchas métricas se inspiraron en gran medida en el trabajo original de Vincenzo Iozzo sobre fuzzing de 0 conocimiento.

Cada objetivo que desea analizar es diverso, y fuzzable no podrá tener en cuenta todos los comportamientos de casos extremos en el programa objetivo. Por lo tanto, puede ser importante durante el análisis ajustar estos pesos apropiadamente para ver si diferentes resultados tienen más sentido para su caso de uso. Para ajustar estos pesos en la CLI, simplemente especifique el argumento --score-weights:

$ fuzzable analyze <TARGET> --score-weights=0.2,0.2,0.2,0.2,0.2

Filtrado de Análisis

Por defecto, fuzzable filtrará las funciones objetivo según los siguientes criterios:

Descargar herramienta