内核 && 通用模糊测试器
OSS-Fuzz-7.1k stars, 对开源软件进行持续模糊测试,支持多种语言开发的软件,能够构建自己的模糊测试平台,例如结合Jazzer,学习成本较高。
clusterfuzz-4.7k stars,可扩展的模糊测试框架,OSS-Fuzz的后端。
syzkaller - 3.9k stars, 分布式、无监督、基于覆盖度的 Linux 系统调用模糊测试工具
AFL-2.5k stars,可使用QEMU,是一款比较经典的模糊测试器。
AFL++-2.5k stars,是AFL的高级分支,速度更快,变异策略更多更好。
honggfuzz-2.4k stars,支持安卓、windows、mac、linux等多种操作系统,可通过命令行或文件等输入模式,可使用QEMU,多进程、多线程,已发现多个CVE,OSS-Fuzz、go-fuzz等受到它的启发。
Choronzon - 265 stars,基于遗传知识的 Fuzzer
gramfuzz - 221 stars,可定义复杂语法来建模文档与二进制数据格式的基于语法的 Fuzzer
KernelFuzzer - 424 stars, 跨平台内核 Fuzzer 框架
QuickFuzz - 192 stars,Haskell 写的针对第三方软件使用常见文件格式进行测试的工具,利用现成的、知名的 Fuzzer
Hodor Fuzzer - 124 stars, 曾经是另一个通用的 fuzzer
radamsa - 通用的测试用例生成器
文件格式模糊测试器
对pdf、 mp3、 swf 等文件格式进行模糊测试
Win AFL - 83 stars, Ivan Fratic 开发的针对 Windows 二进制程序 fuzzing 的 AFL 分支版本
AFLGo - 344 stars, 基于 AFL 构建的导向性灰盒 Fuzzing,针对程序特定位置进行模糊测试
Shellphish Fuzzer - 598 stars, 一个操纵 AFL 的 Python 接口,可以简单的写入测试用例与其他功能
zzuf - 366 stars, 一个透明应用输入 fuzzer,可以拦截文件操作、改变程序输入的随机位
binspector - 179 stars, 二进制格式分析与模糊测试工具
grammarinator - 215 stars, 基于 ANTLR v4 语法的文件格式模糊测试工具(ANTLR 项目已有大量的语法)
pe-afl-195 stars, 针对 PE 文件进行静态二进制插桩辅助、结合 WinAFL 的 Fuzzer
MiniFuzz - Microsoft 出品的基础文件格式 fuzzing 工具
BFF from CERT - 基础文件格式 fuzzing 框架
AFL Fuzzer (Linux only) - Michal Zalewski aka lcamtuf 开发的 Fuzzer
TriforceAFL - 一个 AFL 的修正版,支持应用源码无法获得情况下的 fuzzing
Peach Fuzzer - 帮助创建传统 dumb 以及小型 fuzzer 的框架
Failure Observation Engine (FOE) - 基于畸形文件的 Windows 程序 Fuzzing 工具
rmadair - 基于畸形文件的 fuzzer,使用 PyDBG 来监视感兴趣的信号
网络协议模糊测试器
对 HTTP, SSH, SMTP 等网络协议进行模糊测试
Sulley - 1.3k stars, Michael Sutton 开发,包含多个可扩展组件的 Fuzzer 开发与 Fuzzing 测试框架,不再维护,推荐下面的
boofuzz - 1.5k stars, Sulley 框架的继任者
Spike - 像 sulley 的 fuzzer 开发框架,是 sulley 的前身
Metasploit Framework - 26.3k stars,通过 Auxiliary 模块使其具有了 fuzzing 能力的框架
Nightmare - 362 stars, 一个带有 Web 管理界面的分布式 fuzzing 测试套件,支持对网络协议进行 fuzzing
rage_fuzzer - 20 stars, 未知协议包 fuzzer
Fuzzotron - 355 stars, 支持 TCP、UDP 的简单多进程网络 Fuzzer
Mutiny - 474 stars, 通过重放畸变的 PCAP 数据包来对网络进行 Fuzzer
Fuzzing For Worms - 103 stars, 用于网络服务的 Fuzzing 框架
AFL (w/ networking patch) - 188 stars, 用于网络 Fuzzing 的非官方版 AFL
AFLNet - 503 stars, 用于网络协议的灰盒 Fuzzer(AFL 的扩展)
Jackalope-684 stars, 分布式的,可用于windows和macos的二进制模糊测试器。
Peach Fuzzer - 帮助创建传统 dumb 以及小型 fuzzer 的框架,之前是Python编写的,Peach3使用C#重写了。
浏览器模糊测试器
BFuzz - 283 stars, 一款基于输入的模糊测试框架
WEB模糊测试器
ffuf-6k stars,go语言编写的快速web模糊测试器,可对get、post数据包进行模糊测试,可使用外部变异器,例如,radamsa,来对种子进行变异生成测试用例。
wfuzz-4.2k stars,WFuzz 是一个用于 Python 的 Web 应用程序安全模糊器工具和库,可对路径、文件、URL参数、POST请求等进行模糊测试。
restler-fuzzer-1.5k stars,RestApi模糊测试器
SSRFmap-1.7k stars,自动的SSRF模糊测试器。
WebScarab-该工具是一个具有模糊测试能力的Web应用审计套件
云模糊测试器
在云环境中进行模糊测试的模糊测试工具
Cloudfuzzer - 18 stars,在云环境中自动、便易地进行云 Fuzzing 的框架
Fuzzit - Fuzzit 是一个 Fuzzing 即服务的平台,被 systemd, radare2 等多个开源\闭源项目使用
某语言的模糊测试器
Java
jazzer-489 stars,基于libFuzzer的覆盖率指导的JVM软件模糊测试器
Tribble - 16 stars,易用、覆盖度指导的 JVM 模糊测试框架
C/C++
libFuzzer - 面向 C/C++ 程序、基于覆盖度的进化模糊测试工具
ansvif - 用于在 C/C++ 程序中查找漏洞的高级跨平台模糊测试框架
Go
go-fuzz - 4.3k star,覆盖度指导的 go 包模糊测试
DOM
domato-1.4k stars,dom模糊测试器
JS
fuzzilli-1.4k stars, js引擎模糊测试器
关于模糊测试器的思考
模糊测试器的组成部分
用例生成器
基于变异:有种子文件,变异后生成测试用例
基于生成:知道输入的格式,根据格式在范围内生成测试用例
可使用radamsa
监控器
监控被测试程序,获取被测试程序占用的cpu、内存、是否崩溃等情况
可利用插桩技术
过滤器
有些崩溃可能上网络波动等造成的,可以过滤
可利用正则
核心部分
调用用例生成器生成测试用例,将测试用例通过发送或调用被测试程序的方式传输,接收监控器的结果,指导用例的生成,接收过滤器的结果,生成统计信息
结果统计
统计发送的用例数量、崩溃数量、运行耗时等
提高
代码覆盖率引导
使用分支覆盖率等进行引导,使测试用例尽可能的覆盖更多代码
可利用插桩技术,放在监控器的部分,返回给核心部分
多进程、多线程
模糊测试的一个大问题就是效率太低,通过多进程和多线程可以得到缓解
分布式
同样,分布式也可以提高效率,同时,分布在不同机器,省的占用某一台机器过多内存和cpu,而且可以满足高可用。
可视化
可通过web界面等进行可视化,实时显示统计信息,有多少生成器在运行等。
更多内容查看:网络安全-自学笔记
喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。