Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
efi_fuzz — Fuzzer guidato dalla copertura per variabili UEFI NVRAM che utilizza l'emulazione Qiling e AFL++ per scoprire vulnerabilità del firmware attraverso mutazione automatica degli input e rilevamento dei crash. | Kitploit
Strumenti/GitHubGitHub/sentinel-one/efi_fuzz
Sicurezza Sistemi EmbeddedAnalisi Dinamica (Sandboxing)Analisi delle VulnerabilitàFuzzingAnalisi di BinariAnalisi del FirmwareArchived
GitHubsentinel-one/efi_fuzz

efi_fuzz

Fuzzer guidato dalla copertura per variabili UEFI NVRAM che utilizza l'emulazione Qiling e AFL++ per scoprire vulnerabilità del firmware attraverso mutazione automatica degli input e rilevamento dei crash.

Vedi Repository
154191 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Gitter chat


efi_fuzz

Un semplice fuzzer guidato dalla copertura per variabili UEFI NVRAM. Basato su Qiling e AFL++.
Scritto da Itai Liba (@liba2k) e Assaf Carlsbad (@assaf_carlsbad).

Utilizzo

Utilizzo dell'ambiente Docker

  1. Costruisci l'immagine:
    docker build -t efi_fuzz .

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

  3. Usa l'ambiente:
    docker run -v $PWD:/efi_fuzz -it efi_fuzz sh -c "cd /efi_fuzz ; bash"

  4. Prepara l'ambiente NVRAM emulato (dovrai fornire l'immagine rom):
    python3 scripts/prepare_nvram.py rom.bin nvram.pickle

  5. Prepara il corpus iniziale per le variabili NVRAM:
    python3 scripts/prepare_afl_corpus.py rom.bin afl_inputs

  6. Esegui un test a secco del fuzzer:
    python3 efi_fuzz.py <target> <nvram> <varname> <seed>

  7. In caso di successo, passa al fuzzing completo:
    afl-fuzz -i afl_inputs/<varname> -o afl_outputs/ -U -- python3 efi_fuzz.py <target> <nvram> <varname> @@

Installazione dell'ambiente in locale

  1. Se sei su Windows, installa WSL. Consigliamo WSL2 invece del WSL originale, che a volte tende ad essere lento. Le istruzioni complete per l'installazione su Windows 10 sono disponibili qui: https://docs.microsoft.com/en-us/windows/wsl/install-win10

  2. All'interno della distribuzione WSL, installa alcuni pacchetti necessari che ci permetteranno di compilare codice sorgente C:
    sudo apt install build-essential automake

  3. Installa AFL++ con il supporto della modalità Unicorn.
    3.1. Clona il repository:
    git clone https://github.com/AFLplusplus/AFLplusplus
    3.2. Compila i binari principali di AFL++:
    make
    3.3. Compila la funzionalità di supporto Unicorn:
    cd unicorn_mode
    ./build_unicorn_support.sh
    3.4. Installa tutto:
    make install

  4. Ottieni e decomprimi il firmware UEFI che desideri sottoporre a fuzzing. Per tutti i dettagli tecnici su come si fa nella pratica, vedi qui o qui.

  5. Clona il fuzzer e installa le dipendenze richieste:
    git clone https://github.com/Sentinel-One/efi_fuzz

Triton è richiesto per la propagazione delle macchie (taint).
Le istruzioni per installare Triton sono disponibili qui:
https://triton.quarkslab.com/documentation/doxygen/#install_sec

  1. Prepara l'ambiente NVRAM emulato:
    python scripts/prepare_nvram.py rom.bin nvram.pickle

  2. Prepara il corpus iniziale per le variabili NVRAM:
    python scripts/prepare_afl_corpus.py rom.bin afl_inputs

  3. Esegui un test a secco del fuzzer:
    python efi_fuzz.py <target> <nvram> <varname> <seed>

  4. In caso di successo, passa al fuzzing completo:
    afl-fuzz -i afl_inputs/<varname> -o afl_outputs/ -U -- python efi_fuzz.py <target> <nvram> <varname> @@

Opzioni da riga di comando

  • -e, --end: Specifica un indirizzo finale per l'emulazione.
  • -t, --timeout: Specifica un nuovo timeout per l'emulazione, in ms.
  • -o, --output: Specifica il formato di output per scopi di debug. I valori validi sono: trace, disasm, debug e off (default: off).
  • -n, --no-sanitize: Disabilita il memory sanitizer (default: False).
  • -u, --track-uninitialized: Tiene traccia della memoria non inizializzata tramite Triton e propagazione delle macchie (SPERIMENTALE!).
  • -x, --extra-modules: Un elenco di moduli extra da caricare per soddisfare le dipendenze del target.

Ulteriori letture

Ulteriori informazioni riguardanti il firmware UEFI in generale e efi_fuzz in particolare sono disponibili qui:

  • Passare dalla conoscenza di buon senso sull'UEFI al vero dump del firmware UEFI
  • Passare dal reverse engineering manuale dei moduli UEFI all'emulazione dinamica del firmware UEFI
  • Passare dall'emulazione dinamica dei moduli UEFI al fuzzing guidato dalla copertura del firmware UEFI
Scarica lo strumento

pip install -r efi_fuzz/requirements.txt