Skip to content
KitploitKITPLOIT
HerramientasBlog
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
uniFuzzer — Una herramienta de fuzzing para binarios de código cerrado basada en Unicorn y LibFuzzer | Kitploit
Herramientas/GitHubGitHub/pagalaxylab/unifuzzer
Seguridad de Sistemas EmbebidosSeguridad IoTFuzzingAnálisis de Binarios
GitHubpagalaxylab/unifuzzer

uniFuzzer

Una herramienta de fuzzing para binarios de código cerrado basada en Unicorn y LibFuzzer

Ver Repositorio
34657hace 6 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

uniFuzzer

uniFuzzer es una herramienta de fuzzing para binarios de código cerrado basada en Unicorn y LibFuzzer. Actualmente soporta fuzzing de archivos ELF LSB de 32 bits en ARM/MIPS, que suelen encontrarse en dispositivos IoT.

中文介绍

Características

  • muy poco hack y fácil de construir
  • puede apuntar a cualquier función o fragmento de código especificado
  • fuzzing guiado por cobertura con velocidad considerable
  • dependencias resueltas y cargadas automáticamente
  • anulación de funciones de biblioteca mediante PRELOAD

Compilación

  1. Realiza ingeniería inversa del binario objetivo y encuentra funciones interesantes para el fuzzing.
  2. Crea un archivo .c en el directorio callback, que debe contener las siguientes funciones de callback:
  • void onLibLoad(const char *libName, void *baseAddr, void *ucBaseAddr): Se invoca cada vez que se carga una biblioteca dependiente en Unicorn.
  • int uniFuzzerInit(uc_engine *uc): Se invoca justo después de que todos los binarios se hayan cargado en Unicorn. Aquí se pueden configurar la pila/el montón/los registros.
  • int uniFuzzerBeforeExec(uc_engine *uc, const uint8_t *data, size_t len): Se invoca antes de cada ronda de ejecución de fuzzing.
  • int uniFuzzerAfterExec(uc_engine *uc): Se invoca después de cada ronda de ejecución de fuzzing.
  1. Ejecuta make y obtén la herramienta de fuzzing llamada uf.

Ejecutar

uniFuzzer utiliza las siguientes variables de entorno como parámetros:

  • UF_TARGET: Ruta del archivo ELF objetivo
  • UF_PRELOAD: Ruta de la biblioteca precargada. Asegúrate de que la biblioteca tenga la misma arquitectura que el objetivo.
  • UF_LIBPATH: Rutas donde residen las bibliotecas dependientes. Usa : para separar múltiples rutas.

Y el fuzzing se puede iniciar usando el siguiente comando:

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

Demostración

Aquí hay una demostración de uso básico. La demostración contiene los siguientes archivos:

  • demo-vuln.c: Este es el objetivo para el fuzzing. Contiene una función simple llamada vuln() que es vulnerable a desbordamiento de pila/montón.
  • demo-libcpreload.c: Esto es para el hooking PRELOAD. Define un printf() vacío y malloc()/free() simplificados.
  • callback/demo-callback.c: Define los callbacks necesarios para fuzzear la función vuln() de la demostración.

Primero, instala gcc para mipsel (paquete gcc-mipsel-linux-gnu en Debian) para compilar la demostración:

root@kitploit:~
# the target binary
# '-Xlinker --hash-style=sysv' tells gcc to use 'DT_HASH' instead of 'DT_GNU_HASH' for symbol lookup
# since currently uniFuzzer does not support 'DT_GNU_HASH'
mipsel-linux-gnu-gcc demo-vuln.c -Xlinker --hash-style=sysv -no-pie -o demo-vuln

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

O simplemente puedes usar los archivos demo-vuln y demo-libcpreload.so, que están compilados usando los comandos anteriores.

A continuación, ejecuta make para compilar uniFuzzer. Ten en cuenta que si compilaste la demostración MIPS por tu cuenta, algunas direcciones pueden ser diferentes de las precompiladas y demo-callback.c debe actualizarse en consecuencia.

Finalmente, asegúrate de que la biblioteca libc de MIPS esté lista. En Debian está en /usr/mipsel-linux-gnu/lib/ después de instalar el paquete libc6-mipsel-cross, y eso es lo que debe ser UF_LIBPATH:

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

Hack en Unicorn

Unicorn borra la caché JIT de QEMU debido a este issue, lo que ralentiza la velocidad del fuzzing ya que el binario objetivo tendría que ser recompilado JIT durante cada ronda de ejecución.

Podemos comentar tb_flush(env); como se indica en ese issue para mejorar el rendimiento.

PARA HACER

  • soporte para syscall
  • soporte para otras arquitecturas y formatos binarios
  • support GNU_HASH
  • soporte para IFUNC
  • integrar la configuración del entorno y proporcionar APIs
Descargar herramienta