Performing Fuzzing With Aflplusplus

使用 AFL++(American Fuzzy Lop Plus Plus)对编译后的二进制文件执行覆盖率引导模糊测试(Coverage-Guided Fuzzing), 以发现内存损坏、崩溃和安全漏洞。测试人员使用 afl-cc/afl-clang-fast 对目标二进制文件进行插桩, 使用 afl-cmin 和 afl-tmin 管理输入语料库,运行并行模糊测试活动,并使用 CASR 或 GDB 脚本对崩溃进行分类。 适用于涉及二进制模糊测试、崩溃发现、覆盖率引导测试或 AFL++ 模糊测试活动的请求。

killvxk bcda6cf 4 files · 22.3 KB Updated

File contents

使用 AFL++ 执行模糊测试

概述

AFL++ 是 American Fuzzy Lop(AFL)的社区维护分支,为编译后的二进制文件提供覆盖率引导模糊测试。它在编译时或通过 QEMU/Unicorn 模式(用于纯二进制模糊测试)对目标进行插桩,然后对输入语料库进行变异以发现新的代码路径。AFL++ 包含高级调度算法(MOpt、rare)、自定义变异器、用于输入到状态比较求解的 CMPLOG,以及用于高吞吐量模糊测试的持久模式。

前置条件

  • 已安装 AFL++(apt install afl++ 或从源码构建)
  • 目标二进制文件的源代码(用于编译时插桩)或使用 QEMU 模式进行纯二进制测试
  • 目标格式的有效输入初始种子语料库
  • 已配置 /proc/sys/kernel/core_pattern 的 Linux 系统

操作步骤

  1. 使用 afl-ccafl-clang-fast 对目标二进制文件进行插桩
  2. 准备包含最小有效输入的种子语料库目录
  3. 使用 afl-cmin 最小化语料库以删除冗余种子
  4. 使用适当参数运行 afl-fuzz(-i 输入目录 -o 输出目录)
  5. 通过 afl-whatsup 和 UI 统计信息监控模糊测试进度
  6. 使用 afl-tmin 最小化和 CASR/GDB 分析对崩溃进行分类
  7. 报告唯一崩溃及其复现步骤

预期输出

+++ 发现结果 +++
  唯一崩溃: 12
  唯一挂起: 3
  最近崩溃: 00:02:15 前
+++ 覆盖率 +++
  映射密度: 4.23% / 8.41%
  发现路径: 1847
  执行速度: 2145/秒

killvxk/cybersecurity-skills-zh/tree/main/skills/performing-fuzzing-with-aflplusplus commit bcda6cf22c

Frequently asked questions

npx skillmds@latest add killvxk/performing-fuzzing-with-aflplusplus