Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
efi_fuzz — Fuzzer guidé par couverture pour les variables NVRAM UEFI utilisant l'émulation Qiling et AFL++ pour découvrir des vulnérabilités du firmware via la mutation automatique des entrées et la détection de crashes. | Kitploit
Outils/GitHubGitHub/sentinel-one/efi_fuzz
Sécurité des Systèmes EmbarquésAnalyse Dynamique (Sandboxing)Analyse des VulnérabilitésFuzzingAnalyse de BinairesAnalyse de MicrologicielArchived
GitHubsentinel-one/efi_fuzz

efi_fuzz

Fuzzer guidé par couverture pour les variables NVRAM UEFI utilisant l'émulation Qiling et AFL++ pour découvrir des vulnérabilités du firmware via la mutation automatique des entrées et la détection de crashes.

Voir le dépôt
154198il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Gitter chat


efi_fuzz

Un fuzzer simple, guidé par la couverture de code pour les variables NVRAM UEFI. Basé sur Qiling et AFL++.
Écrit par Itai Liba (@liba2k) et Assaf Carlsbad (@assaf_carlsbad).

Utilisation

En utilisant l'environnement Docker

  1. Créer l'image :
    docker build -t efi_fuzz .

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

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

  4. Préparer l'environnement NVRAM émulé (vous devrez fournir l'image ROM) :
    python3 scripts/prepare_nvram.py rom.bin nvram.pickle

  5. Préparer le corpus initial pour les variables NVRAM :
    python3 scripts/prepare_afl_corpus.py rom.bin afl_inputs

  6. Effectuer un essai à blanc du fuzzer :
    python3 efi_fuzz.py <target> <nvram> <varname> <seed>

  7. Si réussi, passer au fuzzing complet :
    afl-fuzz -i afl_inputs/<varname> -o afl_outputs/ -U -- python3 efi_fuzz.py <target> <nvram> <varname> @@

Installer l'environnement localement

  1. Sous Windows, installez WSL. Nous recommandons WSL2 plutôt que le WSL original, qui peut parfois être lent. Les instructions d'installation complètes pour Windows 10 se trouvent ici : https://docs.microsoft.com/en-us/windows/wsl/install-win10

  2. Dans la distribution WSL, installez quelques paquets nécessaires pour compiler du code source C :
    sudo apt install build-essential automake

  3. Installer AFL++ avec le support du mode Unicorn.
    3.1. Cloner le dépôt :
    git clone https://github.com/AFLplusplus/AFLplusplus
    3.2. Construire les binaires de base AFL++ :
    make
    3.3. Construire la fonctionnalité de support Unicorn :
    cd unicorn_mode
    ./build_unicorn_support.sh
    3.4. Tout installer :
    make install

  4. Acquérir et décompresser le firmware UEFI que vous souhaitez fuzzer. Pour les détails techniques complets sur la manière de procéder en pratique, voir ici ou ici.

  5. Cloner le fuzzer et installer les dépendances requises :
    git clone https://github.com/Sentinel-One/efi_fuzz

Triton est nécessaire pour la propagation de taints.
Les instructions pour installer Triton se trouvent ici :
https://triton.quarkslab.com/documentation/doxygen/#install_sec

  1. Préparer l'environnement NVRAM émulé :
    python scripts/prepare_nvram.py rom.bin nvram.pickle

  2. Préparer le corpus initial pour les variables NVRAM :
    python scripts/prepare_afl_corpus.py rom.bin afl_inputs

  3. Effectuer un essai à blanc du fuzzer :
    python efi_fuzz.py <target> <nvram> <varname> <seed>

  4. Si réussi, passer au fuzzing complet :
    afl-fuzz -i afl_inputs/<varname> -o afl_outputs/ -U -- python efi_fuzz.py <target> <nvram> <varname> @@

Options de la ligne de commande

  • -e, --end : Spécifier une adresse de fin pour l'émulation.
  • -t, --timeout : Spécifier un nouveau délai d'attente pour l'émulation, en ms.
  • -o, --output : Spécifier le format de sortie à des fins de débogage. Les valeurs valides sont : trace, disasm, debug et off (par défaut off).
  • -n, --no-sanitize : Désactiver le sanitizer mémoire (par défaut False).
  • -u, --track-uninitialized : Suivre la mémoire non initialisée via Triton et la propagation de taints (EXPÉRIMENTAL !).
  • -x, --extra-modules : Une liste de modules supplémentaires à charger pour satisfaire les dépendances de la cible.

Lectures complémentaires

Des informations supplémentaires sur le firmware UEFI en général et sur efi_fuzz en particulier peuvent être trouvées ici :

  • Moving From Common-Sense Knowledge About UEFI To Actually Dumping UEFI Firmware
  • Moving From Manual Reverse Engineering of UEFI Modules To Dynamic Emulation of UEFI Firmware
  • Moving From Dynamic Emulation of UEFI Modules To Coverage-Guided Fuzzing of UEFI Firmware
Télécharger l’outil

pip install -r efi_fuzz/requirements.txt