ファジングリソース(書籍、コース(無料・有料)、動画、ツール、チュートリアル、練習用の脆弱なアプリケーション)の厳選されたリストで、ファジングの学習と、根本原因分析などのエクスプロイト開発の初期段階に役立ちます。
ファジングに関する書籍
Fuzzing: Brute Force Vulnerability Discovery by Michael Sutton, Adam Greene, Pedram Amini.
Fuzzing for Software Security Testing and Quality Assurance by Ari Takanen, Charles Miller, Jared D Demott and Atte Kettunen.
Open Source Fuzzing Tools by Gadi Evron and Noam Rathaus.
Gray Hat Python by Justin Seitz.
The Fuzzing Book by Andreas Zeller, Rahul Gopinath, Marcel Böhme, Gordon Fraser, and Christian Holler.
注: 以下の書籍の章はファジングに特化しています。
- The Shellcoder's Handbook: Discovering and Exploiting Security Holes (第15章) by Chris Anley, Dave Aitel, David Litchfield and others.
- iOS Hacker's Handbook - 第1章 by Charles Miller, Dino DaiZovi, Dion Blazakis, Ralf-Philip Weinmann, and Stefan Esser.
ファジングに関するコース/トレーニング動画
NYU Poly(詳細は動画セクション参照) - Dan Guido 氏が無料公開。
Samclass.info(プロジェクトセクションと第17章を参照) - Sam 氏。
Modern Binary Exploitation ( RPISEC ) - 第15章 - RPISEC 提供。
Offensive Computer Security - 第6週 - W. Owen Redwood 氏および Prof. Xiuwen Liu 氏。
Offensive Security, Cracking The Perimeter ( CTP ) および Advanced Windows Exploitation ( AWE )
SANS 660/760 Advanced Exploit Development for Penetration Testers
Exodus Intelligence - Vulnerability development master class
Ada Logics - Applied Source Code Fuzzing
FuzzingLabs Academy (C/C++、Rust、Go ファジング)
Signal Labs - Vulnerability Research & Fuzzing
ファジングの技術、ツール、ベストプラクティスに関する動画
Fuzzing 101 (パート1) - Mike Zusman 氏。
Fuzzing 101 (パート2) - Mike Zusman 氏。
Fuzzing 101 (2009) - Mike Zusman 氏。
ファジング - Coursera ソフトウェアセキュリティコース - メリーランド大学提供。
Attacking Antivirus Software's Kernel Driver
Fuzzing the Windows Kernel - OffensiveCon 2020
様々なファジングトークやプレゼンテーションの YouTube プレイリスト - これらの動画には良いコンテンツが豊富。
Browser bug hunting - Memoirs of a last man standing - Atte Kettunen 氏
Coverage-based Greybox Fuzzing as Markov Chain
DerbyCon 2016: Fuzzing basics...or how to break software
Fuzz Theory - Brandon Falk 氏
ファジングの方法論、技術、ベストプラクティスを説明するチュートリアルとブログ
ARMored CoreSight: Towards Efficient Binary-only Fuzzing
Fuzzing Microsoft's RDP Client using Virtual Channels: Overview & Methodology
Fuzzing Closed Source PDF Viewers
Fuzzing Image Parsing in Windows, Part One: Color Profiles
Fuzzing Image Parsing in Windows, Part Two: Uninitialized Memory
Fuzzing Image Parsing in Windows, Part Three: RAW and HEIF
Effective File Format Fuzzing - Mateusz “j00ru” Jurczyk @ Black Hat Europe 2016, London
A year of Windows kernel font fuzzing Part-1 the results - Google Project Zero による素晴らしい記事、ファジングとファザー作成に必要な内容を説明。
A year of Windows kernel font fuzzing Part-2 the techniques - Google Project Zero による素晴らしい記事、ファジングとファザー作成に必要な内容を説明。
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 氏。
A 15 minute introduction to fuzzing - MWR Security のスタッフ。
注: fuzzing.info のスタッフは素晴らしいリンク集をまとめています。ここでは重複を避けます。彼らが見逃した論文と2015年以降のものを追加します。 Fuzzing Papers - fuzzing.info より
Fuzzing Blogs and Books - 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 より
7 Things to Consider Before Fuzzing a Large Open Source Project - Emily Ratliff 氏。
From fuzzing to 0-day - Harold Rodriguez 氏 (@superkojiman)。
From crash to exploit - Corelan Team より。
Fuzzing with Peach Part 1 - Jason Kratzer 氏(corelan team)
Fuzzing with Peach Part 2 - Jason Kratzer 氏(corelan team)。
Auto generation of Peach pit files/fuzzers - Frédéric Guihéry 氏、Georges Bossert 氏。
Creating a fuzzing harness for FoxitReader 9.7 ConvertToPDF Function
50 CVEs in 50 Days: Fuzzing Adobe Reader
Fuzzing sockets, part 1: FTP servers
Fuzzing software: common challenges and potential solutions (Part 1)
Fuzzing software: advanced tricks (Part 2)
Fuzzing workflows; a fuzz job from start to finish - @BrandonPrry 氏。
Fuzzing capstone using AFL persistent mode - @toasted_flakes 氏
RAM disks and saving your SSD from AFL Fuzzing
Bug Hunting with American Fuzzy Lop
Advanced usage of American Fuzzy Lop with real world examples
Segfaulting Python with afl-fuzz
Fuzzing With AFL-Fuzz, a Practical Example ( AFL vs Binutils )
The Importance of Fuzzing...Emulators?
How Heartbleed could've been found
Filesystem Fuzzing with American Fuzzy lop
Fuzzing Perl/XS modules with AFL
How to fuzz a server with American Fuzzy Lop - Jonathan Foote 氏
Fuzzing with AFL Workshop - a set of challenges on real vulnerabilities
Hunting for bugs in VirtualBox (First Take)
libFuzzer Workshop: "Modern fuzzing of C/C++ Projects"
Double-Free RCE in VLC. A honggfuzz how-to
Fuzzing with Spike to find overflows
Fuzzing with Spike - samclass.info より
Fuzzing with FOE - Samclass.info より
Z3 - A guide - Z3 入門ガイド
Building A Feedback Fuzzer - @fady_othman 氏
ファジングアプリケーションに役立つツール
クラウド環境でのファジングを支援するファザー。
Cloudfuzzer - クラウド環境で自動ファジングテストを簡単に実行できるクラウドファジングフレームワーク。
ClusterFuzzer - ClusterFuzzer、スケーラブルなオープンソースファジングインフラストラクチャ。Google が Chrome ブラウザのファジングに使用。
Fuzzit - Fuzzit、継続的ファジングをサービスとして提供するプラットフォーム。オープンソースには無料。様々なオープンソースプロジェクト(systemd、radare2)やクローズドソースプロジェクトで使用。OSS プログラムに参加するには [email protected] までご連絡ください。
PDF、MP3、SWF などのファイル形式のファジングに役立つファザー。
pe-afl combines static binary instrumentation on PE binary and WinAFL
MiniFuzz - Wayback Machine リンク - Microsoft による基本的なファイルフォーマットファジングツール。(Microsoft のウェブサイトでは入手不可)。
BFF from CERT - ファイルフォーマット用の基本ファジングフレームワーク。
AFL Fuzzer (Linux のみ) - Michal Zalewski (lcamtuf) による American Fuzzy Lop ファザー。
Win AFL - Windows バイナリのファジング用にフォークされた AFL。
Shellphish Fuzzer - AFL への Python インターフェース。テストケースの簡単な注入などの機能を提供。
TriforceAFL - ソースコードが利用できないアプリケーションのファジングをサポートする修正版 AFL。
AFLGo - AFL を用いた誘導グレイボックスファジング。プログラムの特定の場所をファジング。
Peach Fuzzer - カスタムのダム/スマートファザーを作成するためのフレームワーク。
MozPeach - Mozilla Security による peach 2.7 のフォーク。
Failure Observation Engine (FOE) - Windows アプリケーション向けの変異ベースのファイルファジングテストツール。
rmadair - PyDBG を使用して注目すべきシグナルを監視する変異ベースのファイルファザー。
honggfuzz - 興味深い分析オプションを備えた汎用で使いやすいファザー。コードカバレッジに基づくフィードバック駆動ファジングをサポート。GNU/Linux、FreeBSD、Mac OSX、Android をサポート。
zzuf - 透過的アプリケーション入力ファザー。ファイル操作をインターセプトし、プログラムの入力のランダムなビットを変更する。
radamsa - 汎用ファザー兼テストケースジェネレータ。
binspector - バイナリフォーマット分析およびファジングツール。
grammarinator - ANTLR v4 文法に基づくファイルフォーマットファジングツール(ANTLR プロジェクトから多くの文法が既に利用可能)。
Sloth - Sloth 🦥 は、libFuzzer と QEMU ユーザーモードエミュレーションを利用した、Android ネイティブライブラリのファジングのためのカバレッジ誘導ファジングフレームワーク。
ManuFuzzer - libFuzzer と LLVM に基づく macOS 向けバイナリコードカバレッジファザー。
HTTP、SSH、SMTP などのネットワークベースのプロトコルを使用するアプリケーションのファジングに役立つファザー。
Peach Fuzzer - カスタムのダム/スマートファザーを作成するためのフレームワーク。
Sulley - Pedram Amini による複数の拡張可能なコンポーネントからなるファザー開発およびファジングテストフレームワーク。
boofuzz - Sulley フレームワークのフォークおよび後継。
Spike - Sulley のようなファザー開発フレームワーク(Sulley の前身)。
Metasploit Framework - Auxiliary モジュールを介してファジング機能を含むフレームワーク。
Nightmare - Web 管理機能を備えた分散ファジングテストスイート。ネットワークプロトコルを使用したファジングをサポート。
rage_fuzzer - プロトコル非依存のダムパケットファザー/リプレイヤー。
Fuzzotron - TCP、UDP、マルチスレッドをサポートするシンプルなネットワークファザー。
Mutiny - Mutiny ファジングフレームワークは、PCAP を変異ファザーで再生することにより動作するネットワークファザー。
Fuzzing For Worms - ネットワークサーバー向けファジングフレームワーク。
AFL (w/ networking patch) - ネットワークファジングが可能な非公式の 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 ( アーキテクチャに依存しない動的分析のためのプラットフォーム )
QIRA ( QEMU インタラクティブランタイムアナライザー )
kfetch-toolkit - オペレーティングシステムのカーネルが行うメモリ参照の高度なログ記録を実行するツール
moflow - 脆弱性の発見とトリアージのためのツールを含むソフトウェアセキュリティフレームワーク。
Z3 - Microsoft Research の定理証明器。
SMT-LIB - 充足可能性モジュロ理論(SMT)における研究開発を促進することを目的とした国際的なイニシアチブ
Symbolic execution with KLEE: From installation and introduction to bug-finding in open source software - KLEEの紹介から、実際のコードでメモリ破損バグを発見するデモまでの4つの教育用ビデオセット。
AxManのような伝説的なものは含めていません。詳細は以下のリンクを参照してください。 https://www.ee.oulu.fi/research/ouspg/Fuzzers
エクスプロイト開発者、リバースエンジニアのためのツール
Windbg - エクスプロイト作成者に好まれるデバッガ。
Immunity Debugger - Immunity Sec による Immunity Debugger
OllyDbg - リバースエンジニアとエクスプロイト作成者の両方に選ばれるデバッガ。
Mona.py ( windbg と 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 のガイドラインを参照してください。
このプロジェクトに貢献してくださった以下の方々に感謝します。