Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/sentinel-one/efi_fuzz
嵌入式系统安全动态分析 (沙盒)漏洞分析模糊测试二进制分析固件分析Archived
GitHubsentinel-one/efi_fuzz

efi_fuzz

基于覆盖引导的UEFI NVRAM变量模糊测试器,使用Qiling仿真和AFL++,通过自动化输入变异和崩溃检测来发现固件漏洞。

查看仓库
154191年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Gitter 聊天


efi_fuzz

一个简单的、基于覆盖引导的用于 UEFI NVRAM 变量的模糊测试工具。 基于 Qiling 和 AFL++。
由 Itai Liba (@liba2k) 和 Assaf Carlsbad (@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. 安装支持 Unicorn 模式的 AFL++。
    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
    pip install -r efi_fuzz/requirements.txt

Triton 是进行污点传播所必需的。
安装 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 和污点传播跟踪未初始化的内存(实验性功能!)。
  • -x, --extra-modules:用于满足目标依赖关系而加载的额外模块列表。

延伸阅读

关于 UEFI 固件的一般信息以及 efi_fuzz 的更多详细信息,请参见:

  • 从对 UEFI 的常识性认知到实际提取 UEFI 固件
  • 从手动逆向工程 UEFI 模块到动态仿真 UEFI 固件
  • 从动态仿真 UEFI 模块到基于覆盖引导的 UEFI 固件模糊测试
下载工具