Update broken FOE links
22 KiB
Fuzzing 大合集
这是一个在学习 fuzzing 的最初阶段最好的有关 fuzzing 的资源合集(书籍、课程、视频、教程等等)
Table of Contents
Awesome Fuzzing Resources
书籍
关于 fuzzing 的书籍
-
Fuzzing: Brute Force Vulnerability Discovery 作者: Michael Sutton, Adam Greene, Pedram Amini
-
Fuzzing for Software Security Testing and Quality Assurance 作者: Ari Takanen, Charles Miller, Jared D Demott
-
Open Source Fuzzing Tools 作者: Gadi Evron, Noam Rathaus
-
Gray Hat Python 作者: Justin Seitz
-
The Fuzzing Book 作者: Andreas Zeller, Rahul Gopinath, Marcel Böhme, Gordon Fraser, Christian Holler.
Note: 下列书籍中的部分章节也描述了 fuzzing
- The Shellcoder's Handbook: Discovering and Exploiting Security Holes ( Chapter 15 ) 作者 Chris Anley, Dave Aitel, David Litchfield 等
- iOS Hacker's Handbook - Chapter 1 作者: Charles Miller, Dino DaiZovi, Dion Blazakis, Ralf-Philip Weinmann, and Stefan Esser
课程
与 fuzzing 有关的课程/培训
免费
NYU Poly ( see videos for more ) - Dan Guido 出品的免费指导
Samclass.info ( check projects section and chapter 17 ) - Sam 出品
Modern Binary Exploitation ( RPISEC ) - Chapter 15 - RPISEC 出品
Offensive Computer Security - Week 6 - W. Owen Redwood 和 Prof. Xiuwen Liu 出品
付费
Offensive Security, Cracking The Perimeter ( CTP ) and Advanced Windows Exploitation ( AWE )
SANS 660/760 Advanced Exploit Development for Penetration Testers
Exodus Intelligence - 漏洞挖掘大师级课程
视频
NYU Poly Course videos (from Dan Guido)
Fuzzing 101 (Part 1) - Mike Zusman 出品
Fuzzing 101 (Part 2) - Mike Zusman 出品
Fuzzing 101 (2009) - Mike Zusman 出品
Fuzzing - Software Security Course on Coursera - 马里兰大学出品
关于 Fuzzing 的会议讨论/教程
Fuzzing Windows 内核 - OffensiveCon 2020
Youtube 上关于 Fuzzing 演讲的内容 - 列表内有许多优质内容
浏览器漏洞狩猎 - Atte Kettunen 出品
教程与博客
解释 fuzzing 方法、技术与最佳实践的教程与博客
Fuzzing Closed Source PDF Viewers
Effective File Format Fuzzing - Mateusz “j00ru” Jurczyk @ Black Hat Europe 2016, London
A year of Windows kernel font fuzzing Part-1 the results - Google Zero 项目的最佳论文,描述了如何进行 fuzzing 以及如何构建一个 fuzzer
A year of Windows kernel font fuzzing Part-2 the techniques - Google Zero 项目的最佳论文,描述了如何进行 fuzzing 以及如何构建一个 fuzzer
Interesting bugs and resources at fuzzing project - fuzzing-project.org 出品
Fuzzing workflows; a fuzz job from start to finish - @BrandonPrry 出品
A gentle introduction to fuzzing C++ code with AFL and libFuzzer - Jeff Trull 出品
15 分钟介绍 fuzzing - MWR Security 出品
Note: Folks at fuzzing.info 收集了很多非常有用的链接,我没有重复他们的工作,我只是整理了 2015 年到 2016 年间他们没有收录的文章 Fuzzing Papers - fuzzing.info 出品
Fuzzing 博客 - fuzzing.info 出品
Root Cause Analysis of the Crash during Fuzzing - Corelan Team 出品 Root cause analysis of integer flow - Corelan Team 出品
Creating custom peach fuzzer publishers - Open Security Research 出品
在 Fuzzing 大型开源项目前要考虑的 7 件事 - Emily Ratliff
从 Fuzzing 到 Exploit
从 fuzzing 到 0-day - Harold Rodriguez(@superkojiman) 出品
从 crash 到 exploit - Corelan Team 出品
Peach Fuzzer 相关教程
Peach 上手指南 使用 Peach 进行 Fuzzing Part 1 - Jason Kratzer of corelan team 出品 使用 Peach 进行 Fuzzing Part 2 - Jason Kratzer of corelan team 出品 Peach pit 文件的自动生成 - Frédéric Guihéry, Georges Bossert 出品
AFL Fuzzer 相关教程
Creating a fuzzing harness for FoxitReader 9.7 ConvertToPDF Function
通过 Fuzzing Adobe Reader 在 50 天获得 50 个 CVE
Fuzzing sockets 第一部分:FTP servers
Fuzzing software 第一部分:常见挑战与解决方案
Fuzzing 工作流程,包含 fuzz 的始末 - @BrandonPrry 出品
使用 AFL persistent 模式对 capstone 进行 Fuzzing - @toasted_flakes 出品
RAM disks and saving your SSD from AFL Fuzzing
Segfaulting Python with afl-fuzz
使用 AFL-Fuzz 进行 Fuzzing 的实例( AFL vs Binutils )
如何使用 AFL 对服务器进行模糊测试 - by Jonathan Foote
libFuzzer 相关教程
如何使用 libFuzzer 对现代 C/C++ 项目进行模糊测试
honggfuzz 相关教程
如何使用 honggfuzz 发现 VLC 中的 Double-Free RCE 漏洞
Spike Fuzzer 相关教程
使用 Spike 进行模糊测试 - Samclass.info 出品
FOE Fuzzer 相关教程
Fuzzing with FOE - Samclass.info 出品
SMT/SAT 求解器教程
Z3 - A guide - Z3 快速上手指南
构建一个反馈驱动的 Fuzzer
如何构建一个反馈驱动的 Fuzzer - by @fady_othman
工具
云 Fuzzer
可以在云环境中进行模糊测试的模糊测试工具
Cloudfuzzer - 在云环境中自动、便易地进行云 Fuzzing 的框架
Fuzzit - Fuzzit 是一个 Fuzzing 即服务的平台,被 systemd, radare2 等多个开源\闭源项目使用,想加入请联系 oss@fuzzit.dev
文件格式 Fuzzer
那些帮助对像 pdf, mp3, swf 等文件格式进行 fuzzing 的 Fuzzers
针对 PE 文件进行静态二进制插桩辅助、结合 WinAFL 的 Fuzzer
MiniFuzz - Microsoft 出品的基础文件格式 fuzzing 工具
BFF from CERT - 基础文件格式 fuzzing 框架
AFL Fuzzer (Linux only) - Michal Zalewski aka lcamtuf 开发的 Fuzzer
Win AFL - Ivan Fratic 开发的针对 Windows 二进制程序 fuzzing 的 AFL 分支版本
Shellphish Fuzzer - 一个操纵 AFL 的 Python 接口,可以简单的写入测试用例与其他功能
TriforceAFL - 一个 AFL 的修正版,支持应用源码无法获得情况下的 fuzzing
AFLGo - 基于 AFL 构建的导向性灰盒 Fuzzing,针对程序特定位置进行模糊测试
Peach Fuzzer - 帮助创建传统 dumb 以及小型 fuzzer 的框架
MozPeach - 由 Mozilla Security 开发基于 peach 2.7 版本的分支版本
Failure Observation Engine (FOE) - 基于畸形文件的 Windows 程序 Fuzzing 工具
rmadair - 基于畸形文件的 fuzzer,使用 PyDBG 来监视感兴趣的信号
honggfuzz - 支持反馈驱动、基于代码覆盖率的通用、易用型 Fuzzer
zzuf - 一个透明应用输入 fuzzer,可以拦截文件操作、改变程序输入的随机位
radamsa - 通用的 fuzzer,测试用例生成器
binspector - 二进制格式分析与模糊测试工具
grammarinator - 基于 ANTLR v4 语法的文件格式模糊测试工具(ANTLR 项目已有大量的语法)
网络协议 Fuzzer
那些帮助对像 HTTP, SSH, SMTP 等网络协议进行 fuzzing 的 Fuzzer
Peach Fuzzer - 帮助创建传统 dumb 以及小型 fuzzer 的框架
Sulley - Michael Sutton 开发,包含多个可扩展组件的 Fuzzer 开发与 Fuzzing 测试框架
boofuzz - Sulley 框架的继任者
Spike - 像 sulley 的 fuzzer 开发框架,是 sulley 的前身
Metasploit Framework - 通过 Auxiliary 模块使其具有了 fuzzing 能力的框架
Nightmare - 一个带有 Web 管理界面的分布式 fuzzing 测试套件,支持对网络协议进行 fuzzing
rage_fuzzer - 未知协议包 fuzzer
Fuzzotron - 支持 TCP、UDP 的简单多进程网络 Fuzzer
Mutiny - 通过重放畸变的 PCAP 数据包来对网络进行 Fuzzer
Fuzzing For Worms - 用于网络服务的 Fuzzing 框架
AFL (w/ networking patch) - 用于网络 Fuzzing 的非官方版 AFL
AFLNet - 用于网络协议的灰盒 Fuzzer(AFL 的扩展)
浏览器Fuzzer
BFuzz - An input based, browser fuzzing framework.
杂项,内核 Fuzzer,通用 Fuzzer
Choronzon - 基于遗传知识的 Fuzzer
QuickFuzz - Haskell 写的针对第三方软件使用常见文件格式进行测试的工具,利用现成的、知名的 Fuzzer
gramfuzz - 可定义复杂语法来建模文档与二进制数据格式的基于语法的 Fuzzer
KernelFuzzer - 跨平台内核 Fuzzer 框架
honggfuzz - 带有分析选项的通用、易用型 fuzzer
Hodor Fuzzer - 曾经是另一个通用的 fuzzer
libFuzzer - 面向 C/C++ 程序、基于覆盖度的进化模糊测试工具
syzkaller - 分布式、无监督、基于覆盖度的 Linux 系统调用模糊测试工具
ansvif - 用于在 C/C++ 程序中查找漏洞的高级跨平台模糊测试框架
Tribble - 易用、覆盖度指导的 JVM 模糊测试框架
go-fuzz - 覆盖度指导的 go 包模糊测试
流分析(用户输入如何影响执行)
PANDA ( Platform for Architecture-Neutral Dynamic Analysis )
QIRA (QEMU Interactive Runtime Analyser)
kfetch-toolkit - 用于记录操作系统内核执行的内存引用的高级日志工具
moflow - 软件安全框架,包括漏洞的挖掘和修补
符号执行 + SAT/SMT 求解器
参考
我没有把全部的东西都纳进来,比如 AxMan,请参考以下链接获取更多信息 https://www.ee.oulu.fi/research/ouspg/Fuzzers
基本工具(通用)
调试工具
Windbg - 漏洞利用者常用的调试器
Immunity Debugger - Immunity Sec 出品的调试器
OllyDbg - 逆向工程师的常见选择
Mona.py ( Plugin for windbg and Immunity dbg ) - 漏洞利用开发者的绝佳工具
x64dbg - 开源 Windows x64/x32 调试器
Evan's Debugger (EDB) - Front end for gdb.
GDB - Gnu Debugger - 最好的 Linux 调试器
PEDA - Python 开发的 GDB 辅助程序
Radare2 - 逆向工程与程序分析的框架
反汇编工具
反汇编工具、反汇编框架等
IDA Pro - 最好的反汇编工具
binnavi - 二进制程序分析 IDE,注释反汇编代码的控制流图与调用图
Capstone - Capstone 是一个轻量、跨平台、多架构支持的反汇编框架
其他
ltrace - 库调用拦截
strace - 系统调用拦截
存在漏洞的应用程序
Exploit-DB 搜索、选取漏洞,有些提供了程序下载,可以通过你选择试用的 fuzzer 对利用进行复现
Fuzzgoat - 对有漏洞的 C 程序模糊测试的工具
vulnserver - 用来测试 Fuzzer 的存在漏洞的服务器
fuzzing 期间种子样本文件
https://files.fuzzing-project.org/
MS Office file format documentation
Fuzzer Test Suite - 模糊测试引擎的测试集,包括许多知名的 Bug,如 Heartbleed、c-ares $100K bug 等
Fuzzing Corpus - 包含多种文件格式、用于 Fuzzing 的语料库
反Fuzzing
AntiFuzz: 阻止对二进制可执行文件的 Fuzzing
导向性Fuzzing
Awesome Directed Fuzzing: 导向性 Fuzzing 研究论文的列表
贡献
感谢下列人员对这个项目的贡献: