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
efi_fuzz — Fuzzer guiado por cobertura para variables UEFI NVRAM que utiliza emulación Qiling y AFL++ para descubrir vulnerabilidades de firmware mediante mutación automatizada de entradas y detección de fallos. | Kitploit
Herramientas/GitHubGitHub/sentinel-one/efi_fuzz
Seguridad de Sistemas EmbebidosAnálisis Dinámico (Sandboxing)Análisis de VulnerabilidadesFuzzingAnálisis de BinariosAnálisis de FirmwareArchived
GitHubsentinel-one/efi_fuzz

efi_fuzz

Fuzzer guiado por cobertura para variables UEFI NVRAM que utiliza emulación Qiling y AFL++ para descubrir vulnerabilidades de firmware mediante mutación automatizada de entradas y detección de fallos.

Ver Repositorio
15419hace 1 añoRevisado 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

Gitter chat


efi_fuzz

Un fuzzer simple, guiado por cobertura para variables NVRAM de UEFI. Basado en Qiling y AFL++.
Escrito por Itai Liba (@liba2k) y Assaf Carlsbad (@assaf_carlsbad).

Uso

Usando el entorno Docker

  1. Construir la imagen:
    docker build -t efi_fuzz .

  2. Probar el entorno:
    docker run -v $PWD:/efi_fuzz -it efi_fuzz sh -c "cd efi_fuzz/tests/ && pytest -s -v -W ignore::DeprecationWarning"

  3. Usar el entorno:
    docker run -v $PWD:/efi_fuzz -it efi_fuzz sh -c "cd /efi_fuzz ; bash"

  4. Preparar el entorno NVRAM emulado (Deberá proporcionar la imagen de la ROM):
    python3 scripts/prepare_nvram.py rom.bin nvram.pickle

  5. Preparar el corpus inicial para las variables NVRAM:
    python3 scripts/prepare_afl_corpus.py rom.bin afl_inputs

  6. Realizar una ejecución de prueba del fuzzer:
    python3 efi_fuzz.py <target> <nvram> <varname> <seed>

  7. Si tiene éxito, continúe con el fuzzing completo:
    afl-fuzz -i afl_inputs/<varname> -o afl_outputs/ -U -- python3 efi_fuzz.py <target> <nvram> <varname> @@

Instalar el Entorno localmente

  1. Si está ejecutando en Windows, instale WSL. Recomendamos WSL2 en lugar del WSL original, que tiende a ser lento a veces. Las instrucciones completas de instalación para Windows 10 se pueden encontrar aquí: https://docs.microsoft.com/en-us/windows/wsl/install-win10

  2. Dentro de la distribución WSL, instale algunos paquetes necesarios que nos permitirán compilar código fuente en C:
    sudo apt install build-essential automake

  3. Instalar AFL++ con soporte de modo Unicorn.
    3.1. Clonar el repositorio:
    git clone https://github.com/AFLplusplus/AFLplusplus
    3.2. Compilar los binarios principales de AFL++:
    make
    3.3. Compilar la funcionalidad de soporte de Unicorn:
    cd unicorn_mode
    ./build_unicorn_support.sh
    3.4. Instalar todo:
    make install

  4. Adquiera y extraiga el firmware UEFI que desea fuzzear. Para los detalles técnicos completos sobre cómo se hace esto en la práctica, consulte aquí o aquí.

  5. Clonar el fuzzer e instalar las dependencias requeridas:
    git clone https://github.com/Sentinel-One/efi_fuzz

Triton es necesario para la propagación de manchas.
Las instrucciones para instalar Triton se pueden encontrar aquí:
https://triton.quarkslab.com/documentation/doxygen/#install_sec

  1. Preparar el entorno NVRAM emulado:
    python scripts/prepare_nvram.py rom.bin nvram.pickle

  2. Preparar el corpus inicial para las variables NVRAM:
    python scripts/prepare_afl_corpus.py rom.bin afl_inputs

  3. Realizar una ejecución de prueba del fuzzer:
    python efi_fuzz.py <target> <nvram> <varname> <seed>

  4. Si tiene éxito, continúe con el fuzzing completo:
    afl-fuzz -i afl_inputs/<varname> -o afl_outputs/ -U -- python efi_fuzz.py <target> <nvram> <varname> @@

Opciones de línea de comandos

  • -e, --end: Especificar una dirección final para la emulación.
  • -t, --timeout: Especificar un nuevo valor de tiempo de espera para la emulación, en ms.
  • -o, --output: Especificar el formato de salida para fines de depuración. Los valores válidos son: trace, disasm, debug y off (por defecto es off).
  • -n, --no-sanitize: Deshabilitar el sanitizador de memoria (por defecto es False).
  • -u, --track-uninitialized: Mantiene seguimiento de la memoria no inicializada mediante Triton y propagación de manchas (¡EXPERIMENTAL!).
  • -x, --extra-modules: Una lista de módulos adicionales a cargar para satisfacer las dependencias del objetivo.

Lecturas adicionales

Información adicional sobre el firmware UEFI en general y efi_fuzz en particular se puede encontrar aquí:

  • Pasando del Conocimiento de Sentido Común sobre UEFI a Volcar Firmware UEFI realmente
  • Pasando de la Ingeniería Inversa Manual de Módulos UEFI a la Emulación Dinámica de Firmware UEFI
  • Pasando de la Emulación Dinámica de Módulos UEFI al Fuzzing Guiado por Cobertura de Firmware UEFI
Descargar herramienta

pip install -r efi_fuzz/requirements.txt