Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
efi_fuzz — Fuzzer guiado por cobertura para variáveis UEFI NVRAM usando emulação Qiling e AFL++ para descobrir vulnerabilidades de firmware através de mutação automatizada de entrada e detecção de falhas. | Kitploit
Ferramentas/GitHubGitHub/sentinel-one/efi_fuzz
Segurança de Sistemas EmbarcadosAnálise Dinâmica (Sandboxing)Análise de VulnerabilidadesFuzzingAnálise de BináriosAnálise de FirmwareArchived
GitHubsentinel-one/efi_fuzz

efi_fuzz

Fuzzer guiado por cobertura para variáveis UEFI NVRAM usando emulação Qiling e AFL++ para descobrir vulnerabilidades de firmware através de mutação automatizada de entrada e detecção de falhas.

Ver Repositório
154198há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Gitter chat


efi_fuzz

Um fuzzer simples, guiado por cobertura para variáveis NVRAM UEFI. Baseado em Qiling e AFL++.
Escrito por Itai Liba (@liba2k) e Assaf Carlsbad (@assaf_carlsbad).

Uso

Usando o ambiente Docker

  1. Construir imagem:
    docker build -t efi_fuzz .

  2. Testar o ambiente:
    docker run -v $PWD:/efi_fuzz -it efi_fuzz sh -c "cd efi_fuzz/tests/ && pytest -s -v -W ignore::DeprecationWarning"

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

  4. Preparar o ambiente NVRAM emulado (Você precisará fornecer a imagem da ROM):
    python3 scripts/prepare_nvram.py rom.bin nvram.pickle

  5. Preparar o corpus inicial para as variáveis NVRAM:
    python3 scripts/prepare_afl_corpus.py rom.bin afl_inputs

  6. Realizar uma execução de teste do fuzzer:
    python3 efi_fuzz.py <target> <nvram> <varname> <seed>

  7. Se for bem-sucedido, prossiga para o fuzzing completo:
    afl-fuzz -i afl_inputs/<varname> -o afl_outputs/ -U -- python3 efi_fuzz.py <target> <nvram> <varname> @@

Instalar o ambiente localmente

  1. Se estiver no Windows, instale o WSL. Recomendamos o WSL2 em vez do WSL original, que tende a ser lento às vezes. As instruções completas de instalação para Windows 10 podem ser encontradas aqui: https://docs.microsoft.com/en-us/windows/wsl/install-win10

  2. Dentro da distribuição WSL, instale alguns pacotes necessários que nos permitirão compilar código fonte C:
    sudo apt install build-essential automake

  3. Instalar o AFL++ com suporte ao modo Unicorn.
    3.1. Clonar o repositório:
    git clone https://github.com/AFLplusplus/AFLplusplus
    3.2. Compilar os binários principais do AFL++:
    make
    3.3. Compilar o recurso de suporte ao Unicorn:
    cd unicorn_mode
    ./build_unicorn_support.sh
    3.4. Instalar tudo:
    make install

  4. Adquirir e descompactar o firmware UEFI que você deseja fuzzear. Para os detalhes técnicos completos sobre como isso é feito na prática, veja aqui ou aqui.

  5. Clonar o fuzzer e instalar as dependências necessárias:
    git clone https://github.com/Sentinel-One/efi_fuzz

O Triton é necessário para propagação de taint.
Instruções para instalar o Triton podem ser encontradas aqui:
https://triton.quarkslab.com/documentation/doxygen/#install_sec

  1. Preparar o ambiente NVRAM emulado:
    python scripts/prepare_nvram.py rom.bin nvram.pickle

  2. Preparar o corpus inicial para as variáveis NVRAM:
    python scripts/prepare_afl_corpus.py rom.bin afl_inputs

  3. Realizar uma execução de teste do fuzzer:
    python efi_fuzz.py <target> <nvram> <varname> <seed>

  4. Se for bem-sucedido, prossiga para o fuzzing completo:
    afl-fuzz -i afl_inputs/<varname> -o afl_outputs/ -U -- python efi_fuzz.py <target> <nvram> <varname> @@

Opções da linha de comando

  • -e, --end: Especificar um endereço final para a emulação.
  • -t, --timeout: Especificar um novo valor de timeout para a emulação, em ms.
  • -o, --output: Especificar o formato de saída para fins de depuração. Os valores válidos são: trace, disasm, debug e off (padrão é off).
  • -n, --no-sanitize: Desabilitar o sanitizador de memória (padrão é False).
  • -u, --track-uninitialized: Manter o rastreamento de memória não inicializada via Triton e propagação de taint (EXPERIMENTAL!).
  • -x, --extra-modules: Uma lista de módulos extras para carregar para satisfazer as dependências do alvo.

Leitura adicional

Informações adicionais sobre firmware UEFI em geral e o efi_fuzz em particular podem ser encontradas aqui:

  • Do Conhecimento Comum sobre UEFI à Extração Real de Firmware UEFI
  • Da Engenharia Reversa Manual de Módulos UEFI à Emulação Dinâmica de Firmware UEFI
  • Da Emulação Dinâmica de Módulos UEFI ao Fuzzing Guiado por Cobertura de Firmware UEFI
Baixar ferramenta

pip install -r efi_fuzz/requirements.txt