精心整理的模糊测试资源列表(书籍、课程(免费与付费)、视频、工具、教程以及用于练习的易受攻击应用),用于学习模糊测试以及漏洞利用开发的初始阶段,如根因分析。
关于模糊测试的书籍
《模糊测试:暴力漏洞发现》 - Michael Sutton, Adam Greene, Pedram Amini 著。
《用于软件安全测试与质量保证的模糊测试》 - Ari Takanen, Charles Miller, Jared D Demott 和 Atte Kettunen 著。
《开源模糊测试工具》 - Gadi Evron 和 Noam Rathaus 著。
《灰帽 Python》 - Justin Seitz 著。
《模糊测试手册》 - Andreas Zeller, Rahul Gopinath, Marcel Böhme, Gordon Fraser 和 Christian Holler 著。
注意: 以下书籍中有章节专门讨论模糊测试。
- 《Shellcoder 手册:发现与利用安全漏洞(第15章)》 - Chris Anley, Dave Aitel, David Litchfield 等合著。
- 《iOS 黑客手册 - 第1章》 - Charles Miller, Dino DaiZovi, Dion Blazakis, Ralf-Philip Weinmann 和 Stefan Esser 著。
关于模糊测试的课程/培训视频
NYU Poly(更多内容见视频部分) - Dan Guido 免费提供。
Samclass.info(请查看项目部分及第17章) - Sam 提供。
现代二进制漏洞利用(RPISEC)- 第15章 - RPISEC 提供。
进攻性计算机安全 - 第6周 - W. Owen Redwood 和 Prof. Xiuwen Liu 提供。
Offensive Security, 穿越边界(CTP)及高级Windows漏洞利用(AWE)
FuzzingLabs 学院(C/C++、Rust、Go 模糊测试)
讨论模糊测试技术、工具及最佳实践的视频
模糊测试 101(第一部分) - Mike Zusman 讲解。
模糊测试 101(第二部分) - Mike Zusman 讲解。
模糊测试 101(2009) - Mike Zusman 讲解。
模糊测试 - Coursera 软件安全课程 - 马里兰大学提供。
模糊测试 Windows 内核 - OffensiveCon 2020
YouTube 播放列表:各类模糊测试讲座与演讲 - 这些视频中有很多优质内容。
浏览器漏洞狩猎 - 最后的幸存者回忆录 - Atte Kettunen 演讲。
DerbyCon 2016: 模糊测试基础... 或如何破坏软件
模糊测试理论 - Brandon Falk 讲解。
解释模糊测试方法论、技术及最佳实践的教程与博客
ARMored CoreSight: 迈向高效二进制-only 模糊测试
在 Windows 中模糊测试图像解析,第一部分:颜色配置文件
在 Windows 中模糊测试图像解析,第二部分:未初始化内存
在 Windows 中模糊测试图像解析,第三部分:RAW 和 HEIF
有效的文件格式模糊测试 - Mateusz “j00ru” Jurczyk @ Black Hat Europe 2016, 伦敦
Windows 内核字体模糊测试的一年 第一部分:结果 - 谷歌 Project Zero 的精彩文章,描述了进行模糊测试和创建模糊测试器所需的条件。
Windows 内核字体模糊测试的一年 第二部分:技术 - 谷歌 Project Zero 的精彩文章,描述了进行模糊测试和创建模糊测试器所需的条件。
模糊测试项目中有趣的漏洞与资源 - fuzzing-project.org 提供。
模糊测试工作流:从开始到结束的模糊测试任务 - @BrandonPrry 撰写。
AFL 和 libFuzzer 模糊测试 C++ 代码的温和入门 - Jeff Trull 撰写。
15 分钟模糊测试入门 - MWR Security 的同事们撰写。
注意: fuzzing.info 的同事们已经出色地收集了许多精彩的链接,我不会重复他们的工作。我会补充他们遗漏的论文,以及 2015 年和 2016 年的论文。 模糊测试论文 - fuzzing.info 提供
模糊测试博客与书籍 - fuzzing.info 提供
模糊测试崩溃的根因分析 - Corelan Team 撰写。
整数溢出的根因分析 - Corelan Team 撰写。
创建自定义 Peach 模糊测试器发布器 - Open Security Research 撰写。
模糊测试大型开源项目前需考虑的 7 件事 - Emily Ratliff 撰写。
从模糊测试到 0-day - Harold Rodriguez (@superkojiman) 撰写。
从崩溃到漏洞利用 - Corelan Team 撰写。
使用 Peach 进行模糊测试 第 1 部分 - Jason Kratzer (Corelan Team) 撰写。
使用 Peach 进行模糊测试 第 2 部分 - Jason Kratzer (Corelan Team) 撰写。
Peach pit 文件/模糊测试器的自动生成 - Frédéric Guihéry, Georges Bossert 撰写。
为 FoxitReader 9.7 ConvertToPDF 函数创建模糊测试 harness
50 天发现 50 个 CVE:模糊测试 Adobe Reader
模糊测试工作流:从开始到结束的模糊测试任务 - @BrandonPrry 撰写。
使用 AFL 持久模式模糊测试 capstone - @toasted_flakes 撰写。
使用 AFL-Fuzz 进行模糊测试:一个实际例子(AFL vs Binutils)
使用 American Fuzzy Lop 进行文件系统模糊测试
如何使用 American Fuzzy Lop 模糊测试服务器 - Jonathan Foote 撰写
使用 AFL 进行模糊测试工作坊——基于真实漏洞的一系列挑战
libFuzzer 工作坊:“C/C++ 项目的现代模糊测试”
VLC 中的双重释放远程代码执行漏洞——honggfuzz 使用指南
使用 Spike 进行模糊测试 - samclass.info 提供
使用 FOE 进行模糊测试 - Samclass.info 提供
Z3 - 指南 - Z3 入门指南
构建一个反馈式模糊测试器 - @fady_othman 撰写
有助于进行应用模糊测试的工具
帮助在云环境中进行模糊测试的模糊测试器。
Cloudfuzzer - 云模糊测试框架,可轻松在云环境中运行自动化模糊测试。
ClusterFuzzer - 可扩展的开源模糊测试基础设施。谷歌用于模糊测试 Chrome 浏览器。
Fuzzit - 持续模糊测试即服务平台。开源项目免费。被众多开源项目(systemd、radare2)和闭源项目使用。如需加入开源计划,请发邮件至 [email protected]。
有助于模糊测试如 pdf、mp3、swf 等文件格式的模糊测试器。
pe-afl 结合了 PE 二进制静态二进制插桩和 WinAFL
MiniFuzz - Wayback Machine 链接 - 微软提供的基本文件格式模糊测试工具。(微软网站上已不再提供)。
BFF from CERT - 用于文件格式的基本模糊测试框架。
AFL 模糊测试器(仅限 Linux) - American Fuzzy Lop 模糊测试器,由 Michal Zalewski(又名 lcamtuf)开发。
Win AFL - AFL 的一个分支,用于模糊测试 Windows 二进制文件。
Shellphish 模糊测试器 - AFL 的 Python 接口,便于注入测试用例及其他功能。
TriforceAFL - AFL 的修改版本,支持对源代码不可用的应用进行模糊测试。
AFLGo - 基于 AFL 的定向灰盒模糊测试,用于模糊测试程序的特定位置。
Peach 模糊测试器 - 框架,帮助创建自定义的盲模糊测试器和智能模糊测试器。
MozPeach - Mozilla Security 分支的 Peach 2.7。
故障观察引擎(FOE) - 用于 Windows 应用的基于变异的文件模糊测试工具。
rmadair - 基于变异的文件模糊测试器,使用 PyDBG 监控感兴趣的信号。
honggfuzz - 通用、易用的模糊测试器,具有有趣的分析选项。支持基于代码覆盖率的反馈驱动模糊测试。支持 GNU/Linux、FreeBSD、Mac OSX 和 Android。
zzuf - 透明的应用输入模糊测试器。通过拦截文件操作并随机改变程序输入中的位来工作。
radamsa - 通用模糊测试器和测试用例生成器。
binspector - 二进制格式分析与模糊测试工具。
grammarinator - 基于 ANTLR v4 语法(ANTLR 项目已有大量语法可用)的文件格式模糊测试工具。
Sloth - Sloth 🦥 是一个基于覆盖率的模糊测试框架,用于模糊测试 Android 原生库,利用 libFuzzer 和 QEMU 用户模式模拟。
ManuFuzzer - 基于 libFuzzer 和 LLVM 的 macOS 二进制代码覆盖率模糊测试器。
有助于模糊测试使用基于网络协议(如 HTTP、SSH、SMTP 等)的应用的模糊测试器。
Peach 模糊测试器 - 框架,帮助创建自定义的盲模糊测试器和智能模糊测试器。
Sulley - 一个由 Pedram Amini 开发的模糊测试器开发与模糊测试框架,由多个可扩展组件组成。
boofuzz - Sulley 框架的一个分支和继承者。
Spike - 类似于 Sulley 的模糊测试器开发框架,是 Sulley 的前身。
Metasploit 框架 - 一个框架,通过 Auxiliary 模块包含一些模糊测试能力。
Nightmare - 一个具有 Web 管理界面的分布式模糊测试套件,支持使用网络协议进行模糊测试。
rage_fuzzer - 一个盲协议无关的数据包模糊测试器/重放器。
Fuzzotron - 一个简单的网络模糊测试器,支持 TCP、UDP 和多线程。
Mutiny - Mutiny 模糊测试框架是一个网络模糊测试器,通过变异性模糊测试器重放 PCAP 来工作。
Fuzzing For Worms - 一个用于网络服务器的模糊测试框架。
AFL(含网络补丁) - 一个非官方的 American Fuzzy Lop,能够进行网络模糊测试。
AFLNet - 一个用于网络协议的灰盒模糊测试器(AFL 的扩展)。
Pulsar - 协议学习、模拟与有状态模糊测试器。
BFuzz - 一个基于输入的浏览器模糊测试框架。 Fuzzinator - Fuzzinator 随机测试框架。 Grizzly - 一个跨平台浏览器模糊测试框架。
其他值得注意的模糊测试器,如内核模糊测试器、通用模糊测试器等。
Choronzon - 一个进化式基于知识的模糊测试器。
QuickFuzz - 一个用 Haskell 编写的工具,旨在利用现成的、众所周知的模糊测试器,对第三方软件测试常见文件格式的意外输入。
gramfuzz - 一个基于语法的模糊测试器,允许定义复杂的语法来模拟文本和二进制数据格式。KernelFuzzer - 跨平台内核模糊测试框架。
honggfuzz - 一个通用、易于使用的模糊测试器,具有有趣的分析选项。
Hodor Fuzzer - 又一个通用模糊测试器。
libFuzzer - 进程内、覆盖引导、进化的模糊测试引擎,适用于 C/C++ 编写的目标。
syzkaller - 分布式、无监督、覆盖引导的 Linux 系统调用模糊测试器。
ansvif - 一个高级跨平台模糊测试框架,旨在发现 C/C++ 代码中的漏洞。
Tribble - 易于使用、覆盖引导的 JVM 模糊测试框架。
go-fuzz - Go 包的覆盖引导测试。
FExM - 自动化大规模模糊测试框架
Jazzer - 一个基于 libFuzzer 的、覆盖引导、进程内的 Java 虚拟机模糊测试器。
cifuzz - 一个命令行工具,用于在多种语言和目标上执行覆盖引导的模糊测试。
WebGL Fuzzer - WebGL 模糊测试器
fast-check - 一个用 TypeScript 编写的模糊测试工具,旨在对 JavaScript 代码运行意外输入。
用户输入如何影响执行
PANDA ( Platform for Architecture-Neutral Dynamic Analysis )
QIRA (QEMU Interactive Runtime Analyser)
kfetch-toolkit - 用于对操作系统内核执行的内存引用进行高级日志记录的工具
moflow - 一个软件安全框架,包含用于漏洞发现和分类的工具。
Z3 - 微软研究院的定理证明器。
SMT-LIB - 一个国际倡议,旨在促进可满足性模理论(SMT)的研究与开发
Symbolic execution with KLEE: From installation and introduction to bug-finding in open source software - 一组四个教学视频,介绍 KLEE,从如何开始使用 KLEE 开始,以在真实代码中发现内存损坏漏洞的演示结束。
我没有包含一些传奇工具,如 AxMan,请参阅以下链接获取更多信息。 https://www.ee.oulu.fi/research/ouspg/Fuzzers
漏洞利用开发者和逆向工程师的常用工具
Windbg - 漏洞利用编写者首选的调试器。
Immunity Debugger - Immunity Security 开发的 Immunity 调试器。
OllyDbg - 逆向工程师和漏洞利用编写者都青睐的调试器。
Mona.py ( Plugin for windbg and Immunity dbg ) - 出色的工具,让漏洞利用开发者的生活更轻松。
x64dbg - 一个适用于 Windows 的开源 x64/x32 调试器。
Evan's Debugger (EDB) - gdb 的前端。
GDB - Gnu Debugger - 最受欢迎的 Linux 调试器。
PEDA - GDB 的 Python 漏洞利用开发辅助。
Radare2 - 用于逆向工程和分析二进制文件的框架。
反汇编器、反汇编框架等,
IDA Pro - 最好的反汇编器
binnavi - 二进制分析 IDE,注释反汇编代码的控制流图和调用图。
Capstone - Capstone 是一个轻量级、多平台、多架构的反汇编框架。
ltrace - 拦截库调用
strace - 拦截系统调用
Exploit-DB - https://www.exploit-db.com (搜索并选择可利用的漏洞,这些漏洞有相应的应用程序可供下载,使用您选择的模糊测试器重现漏洞)
PacketStorm - https://packetstormsecurity.com/files/tags/exploit/
Fuzzgoat - 用于测试模糊测试器的易受攻击的 C 程序。
vulnserver - 用于测试模糊测试器的易受攻击的服务器。
https://files.fuzzing-project.org/
MS Office file format documentation
Fuzzer Test Suite - 一组用于模糊测试引擎的测试。包含不同的知名漏洞,如 Heartbleed、c-ares $100K 漏洞等。
Fuzzing Corpus - 一个语料库,包含多种文件格式,用于在模糊测试文献中对多个目标进行模糊测试。
Introduction to Anti-Fuzzing: A Defence In-Depth Aid
Fuzzification: Anti-Fuzzing Techniques
AntiFuzz: Impeding Fuzzing Audits of Binary Executables
Awesome Directed Fuzzing: 精选的定向模糊测试研究论文列表。
请参阅 contributing.md 中的指南以了解详情。
感谢以下为本项目做出贡献的人。