Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
efi_fuzz — Фаззер с направленным покрытием для переменных UEFI NVRAM, использующий эмуляцию Qiling и AFL++ для обнаружения уязвимостей в прошивке с помощью автоматической мутации входных данных и обнаружения сбоев. | Kitploit
Инструменты/GitHubGitHub/sentinel-one/efi_fuzz
Безопасность встроенных системДинамический анализ (песочница)Анализ уязвимостейФаззингАнализ Бинарных ФайловАнализ ПрошивокArchived
GitHubsentinel-one/efi_fuzz

efi_fuzz

Фаззер с направленным покрытием для переменных UEFI NVRAM, использующий эмуляцию Qiling и AFL++ для обнаружения уязвимостей в прошивке с помощью автоматической мутации входных данных и обнаружения сбоев.

Репозиторий
1541981 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Gitter chat


efi_fuzz

Простой, управляемый покрытием фаззер для переменных UEFI NVRAM. Основан на Qiling и AFL++.
Написан Итаем Либой (@liba2k) и Ассафом Карлсбадом (@assaf_carlsbad).

Использование

Использование среды Docker

  1. Сборка образа:
    docker build -t efi_fuzz .

  2. Тестирование среды:
    docker run -v $PWD:/efi_fuzz -it efi_fuzz sh -c "cd efi_fuzz/tests/ && pytest -s -v -W ignore::DeprecationWarning"

  3. Использование среды:
    docker run -v $PWD:/efi_fuzz -it efi_fuzz sh -c "cd /efi_fuzz ; bash"

  4. Подготовка эмулированной среды NVRAM (Вам потребуется предоставить образ rom):
    python3 scripts/prepare_nvram.py rom.bin nvram.pickle

  5. Подготовка начального корпуса для переменных NVRAM:
    python3 scripts/prepare_afl_corpus.py rom.bin afl_inputs

  6. Выполнение пробного запуска фаззера:
    python3 efi_fuzz.py <target> <nvram> <varname> <seed>

  7. В случае успеха переходите к полноценному фаззингу:
    afl-fuzz -i afl_inputs/<varname> -o afl_outputs/ -U -- python3 efi_fuzz.py <target> <nvram> <varname> @@

Локальная установка среды

  1. Если вы работаете в Windows, установите WSL. Мы рекомендуем WSL2, в отличие от исходной WSL, которая иногда бывает медленной. Полные инструкции по установке для Windows 10 можно найти здесь: https://docs.microsoft.com/en-us/windows/wsl/install-win10

  2. Внутри дистрибутива WSL установите необходимые пакеты, которые позволят скомпилировать исходный код на C:
    sudo apt install build-essential automake

  3. Установите AFL++ с поддержкой режима Unicorn.
    3.1. Клонируйте репозиторий:
    git clone https://github.com/AFLplusplus/AFLplusplus
    3.2. Сборка основных бинарных файлов AFL++:
    make
    3.3. Сборка функции поддержки Unicorn:
    cd unicorn_mode
    ./build_unicorn_support.sh
    3.4. Установка всего:
    make install

  4. Получите и распакуйте прошивку UEFI, которую вы хотите фаззить. Полные технические подробности о том, как это делается на практике, см. здесь или здесь.

  5. Клонируйте фаззер и установите необходимые зависимости:
    git clone https://github.com/Sentinel-One/efi_fuzz

Triton необходим для распространения меток (taint propagation).
Инструкции по установке Triton можно найти здесь:
https://triton.quarkslab.com/documentation/doxygen/#install_sec

  1. Подготовка эмулированной среды NVRAM:
    python scripts/prepare_nvram.py rom.bin nvram.pickle

  2. Подготовка начального корпуса для переменных NVRAM:
    python scripts/prepare_afl_corpus.py rom.bin afl_inputs

  3. Выполнение пробного запуска фаззера:
    python efi_fuzz.py <target> <nvram> <varname> <seed>

  4. В случае успеха переходите к полноценному фаззингу:
    afl-fuzz -i afl_inputs/<varname> -o afl_outputs/ -U -- python efi_fuzz.py <target> <nvram> <varname> @@

Параметры командной строки

  • -e, --end: Укажите конечный адрес для эмуляции.
  • -t, --timeout: Укажите новое значение таймаута для эмуляции, в мс.
  • -o, --output: Укажите формат вывода для отладки. Допустимые значения: trace, disasm, debug и off (по умолчанию off).
  • -n, --no-sanitize: Отключите санитайзер памяти (по умолчанию False).
  • -u, --track-uninitialized: Отслеживает неинициализированную память с помощью Triton и распространения меток (taint propagation) (ЭКСПЕРИМЕНТАЛЬНО!).
  • -x, --extra-modules: Список дополнительных модулей для загрузки, чтобы удовлетворить зависимости цели.

Дополнительная информация

Дополнительную информацию о прошивке UEFI в целом и об efi_fuzz в частности можно найти здесь:

  • 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
Скачать инструмент

pip install -r efi_fuzz/requirements.txt