| name | performing-fuzzing-with-aflplusplus |
| description | 使用 AFL++(American Fuzzy Lop Plus Plus)对编译后的二进制文件执行覆盖率引导模糊测试(Coverage-Guided Fuzzing), 以发现内存损坏、崩溃和安全漏洞。测试人员使用 afl-cc/afl-clang-fast 对目标二进制文件进行插桩, 使用 afl-cmin 和 afl-tmin 管理输入语料库,运行并行模糊测试活动,并使用 CASR 或 GDB 脚本对崩溃进行分类。 适用于涉及二进制模糊测试、崩溃发现、覆盖率引导测试或 AFL++ 模糊测试活动的请求。
|
| domain | cybersecurity |
| subdomain | application-security |
| tags | ["fuzzing","aflplusplus","coverage-guided","crash-triage","binary-analysis","security-testing"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
使用 AFL++ 执行模糊测试
概述
AFL++ 是 American Fuzzy Lop(AFL)的社区维护分支,为编译后的二进制文件提供覆盖率引导模糊测试。它在编译时或通过 QEMU/Unicorn 模式(用于纯二进制模糊测试)对目标进行插桩,然后对输入语料库进行变异以发现新的代码路径。AFL++ 包含高级调度算法(MOpt、rare)、自定义变异器、用于输入到状态比较求解的 CMPLOG,以及用于高吞吐量模糊测试的持久模式。
前置条件
- 已安装 AFL++(
apt install afl++ 或从源码构建)
- 目标二进制文件的源代码(用于编译时插桩)或使用 QEMU 模式进行纯二进制测试
- 目标格式的有效输入初始种子语料库
- 已配置
/proc/sys/kernel/core_pattern 的 Linux 系统
操作步骤
- 使用
afl-cc 或 afl-clang-fast 对目标二进制文件进行插桩
- 准备包含最小有效输入的种子语料库目录
- 使用
afl-cmin 最小化语料库以删除冗余种子
- 使用适当参数运行
afl-fuzz(-i 输入目录 -o 输出目录)
- 通过 afl-whatsup 和 UI 统计信息监控模糊测试进度
- 使用
afl-tmin 最小化和 CASR/GDB 分析对崩溃进行分类
- 报告唯一崩溃及其复现步骤
预期输出
+++ 发现结果 +++
唯一崩溃: 12
唯一挂起: 3
最近崩溃: 00:02:15 前
+++ 覆盖率 +++
映射密度: 4.23% / 8.41%
发现路径: 1847
执行速度: 2145/秒