WinAFL 使用教程
winaflA fork of AFL for fuzzing Windows binaries项目地址:https://gitcode.com/gh_mirrors/wi/winafl
项目介绍
WinAFL 是 AFL(American Fuzzy Lop)在 Windows 平台上的移植版本。AFL 是一个广泛使用的模糊测试工具,旨在通过自动化测试发现软件中的漏洞。WinAFL 利用 DynamoRIO 进行代码覆盖率统计,并通过共享内存的方式让模糊测试器了解每个测试样本的覆盖率信息。WinAFL 特别适用于对闭源软件进行漏洞挖掘。
项目快速启动
环境配置
-
安装 Git
git clone https://github.com/googleprojectzero/winafl.git
-
安装 CMake
- 下载并安装 CMake:CMake 下载链接
-
编译 DynamoRIO
git clone https://github.com/DynamoRIO/dynamorio.git cd dynamorio mkdir build && cd build cmake .. make
-
编译 WinAFL
cd winafl mkdir build && cd build cmake -DDynamoRIO_DIR=<path_to_dynamorio>/cmake .. make
运行模糊测试
假设你已经有一个待测试的目标程序 test.exe
,并且有一个输入文件夹 in
,你可以使用以下命令启动模糊测试:
afl-fuzz.exe -i in -o out -D <path_to_dynamorio>/bin32 -t 1000+ -- -coverage_module test.exe -fuzz_iterations 5000 -target_module test.exe -target_offset 0x1000 -persistence_mode in_app -- test.exe @@
应用案例和最佳实践
案例一:闭源软件漏洞挖掘
使用 WinAFL 对闭源软件进行模糊测试,可以发现未公开的漏洞。例如,通过对一个闭源的网络服务软件进行模糊测试,成功发现了一个缓冲区溢出漏洞。
最佳实践
- 选择合适的测试目标:优先选择关键且复杂的模块进行测试。
- 准备高质量的初始测试用例:使用已知的输入样本或生成一些基本的测试用例。
- 监控和分析测试过程:定期检查模糊测试的输出,分析崩溃和异常情况。
典型生态项目
DynamoRIO
DynamoRIO 是一个运行时代码插桩平台,支持在程序运行时动态插入代码。WinAFL 利用 DynamoRIO 进行代码覆盖率统计。
AFL
AFL 是 WinAFL 的基础项目,提供了基本的模糊测试框架和变异策略。了解 AFL 的工作原理和使用方法对使用 WinAFL 非常有帮助。
Syzygy
Syzygy 是一个用于静态插桩的工具,可以与 WinAFL 结合使用,提供更全面的代码覆盖率信息。
通过以上模块的介绍,您应该对 WinAFL 有了全面的了解,并能够快速启动和应用该工具进行模糊测试。
winaflA fork of AFL for fuzzing Windows binaries项目地址:https://gitcode.com/gh_mirrors/wi/winafl