漏洞挖掘|開源Fuzzer和Fuzzing學習資源整理

2021-03-02 青雲奮羽

最近一直在做fuzzing,所以整理一下模糊測試相關的工具和思路,很多我也在學習研究,有些還沒來得及學習,Fuzzing三要素是目標、策略、樣本,漏洞挖掘需要投入大量的時間思考和實踐。

目錄
模糊測試(fuzzing)介紹
 模糊測試流程
 基本要求
 存在的問題輸入
 數據的關聯分析
 測試用例集的構建方法
 測試異常分析
 模糊測試框架

比較好的開源Fuzzers
 文件格式Fuzzers
 網絡協議Fuzzers
 通用類型Fuzzers
 瀏覽器Fuzzers
 驅動&內核Fuzzers
 Cloud Fuzzers

FuzzersFuzzing輔助工具
 汙點分析
 符號執行
 Debuggers
 反編譯工具
 漏洞程序
 Fuzzing樣本文件
 測試用例去重

Fuzzing實戰分析
 fuzz原理/方法
 fuzz文件格式
 fuzz瀏覽器 
 fuzz網絡協議
 fuzz系統/內核 
 fuzz文本處理 
 fuzz編譯器/解釋器 
 fuzz硬體/IOT 
 fuzz安卓/移動端 
 fuzz虛擬化軟體
 fuzzWeb APP

Fuzzing Paper
 NDSS
 S&P
 USEC
 ACM CCS
 人工智慧與機器學習Fuzzing

Fuzzing 書籍

Fuzzing 教程
 從Fuzzing到漏洞利用
 Peach Fuzzer相關教程
 AFL Fuzzer相關教程
 libFuzzer Fuzzer相關教程
 Spike Fuzzer相關教程

參考信息

模糊測試(fuzzing)介紹

模糊測試(fuzzing)是一種通過向程序提供非預期的輸入並監控輸出中的異常來發現軟體中的故障的方法。

用於模糊測試的模糊測試器(fuzzer)分為兩類:

模糊測試流程

模糊測試通常包含下面幾個基本階段:

確定測試目標:確定目標程序的性質、功能、運行條件和環境、編寫程序的語言、軟體過去所發現的漏洞信息以及與外部進行交互的接口等

確定輸入向量:例如文件數據、網絡數據和環境變量等。

生成模糊測試數據:在確定輸入向量之後設計要模糊測試的方法和測試數據生成算法等

執行模糊測試數據:自動完成向測試目標發送大量測試數據的過程,包括啟動目標進程、發送測試數據和打開文件等

監視異常:監視目標程序是否產生異常,記錄使程序產生異常的測試數據和異常相關信息

判定發現的漏洞是否可被利用:通過將產生異常的數據重新發送給目標程序,跟蹤異常產生前後程序相關的處理流程,分析異常產生的原因,從而判斷是否可利用

基本要求

要實現高效的模糊測試,通常需要滿足下面幾個方面的要求:

可重現性:測試者必須能夠知道使目標程序狀態變化所對應的測試數據是什麼,如果不具備重現測試結果的能力,那麼整個過程就失去了意義。實現可重現性的一個方法是在發送測試數據的同時記錄下測試數據和目標程序的狀態

可重用性:進行模塊化開發,這樣就不需要為一個新的目標程序重新開發一個模糊測試器

代碼覆蓋:指模糊測試器能夠使目標程序達到或執行的所有代碼及過程狀態的數量

異常監視:能夠精確地判定目標程序是否發生異常非常的關鍵

存在的問題

模糊測試中存在的問題:

具有較強的盲目性:即使熟悉協議格式,依然沒有解決測試用例路徑重複的問題,導致效率較低

測試用例冗餘度大:由於很多測試用例通過隨機策略產生,導致會產生重複或相似的測試用例

對關聯欄位的針對性不強:大多數時候只是對多個元素進行數據的隨機生成或變異,缺乏對協議關聯欄位的針對性

輸入數據的關聯分析

通常情況下,應用程式都會對輸入的數據對象進行格式檢查。通過分析輸入到程序的數據對象的結構以及其組成元素之間的依賴關係,構造符合格式要求的測試用例從而繞過程序格式檢查,是提高模糊測試成功率的重要步驟。

應用程式的輸入數據通常都遵循一定的規範,並具有固定的結構。例如:網絡數據包通常遵守某種特定的網絡協議規範,文件數據通常遵守特定的文件格式規範。輸入數據結構化分析就是對這些網絡數據包或文件格式的結構進行分析,識別出特定的可能引起應用程式解析錯誤的欄位,有針對性地通過變異或生成的方式構建測試用例。通常關注下面幾種欄位:表示長度的欄位、表示偏移的欄位、可能引起應用程式執行不同邏輯的欄位、可變長度的數據等。

應用程式所能處理的數據對象是非常複雜的。例如 MS Office 文件是一種基於對象嵌入和連結方式存儲的複合文件,不僅可以在文件中嵌入其他格式的文件,還可以包含多種不同類型的元數據。這種複雜性導致在對其進行模糊測試的過程中產生的絕大多數測試數據都不能被應用程式所接受。數據塊關聯模型是解決這一問題的有效途徑。該模型以數據塊為基本元素,以數據塊之間的關聯性為紐帶生成畸形測試數據。其中,數據塊是數據塊關聯模型的基礎。通常一個數據對象可以分為幾個數據塊,數據塊之間的依賴關係稱為數據關聯。

數據塊的劃分通常遵循三個基本原則:

使數據塊之間的關聯性儘可能的小

將具有特定意義的數據劃分為一個數據塊

將一段連續且固定不變的數據劃分為同一個數據塊

數據塊關聯模型的劃分:

測試用例集的構建方法

常見的構建方法有以下幾種:

隨機方法:簡單地產生大量偽隨機數據給目標程序。

強制性測試:模糊測試器從一個有效的協議或數據格式樣本開始,持續不斷地打亂數據包或文件中的每一個字節、字、雙字或字符串。

預先生成測試用例:對一個專門規約的研究,以理解所有被支持的數據格式和每種數據格式可接受的取值範圍,然後生成用於測試邊界條件或迫使規約發生違例的硬編碼的數據包或文件。

遺傳算法:將測試用例的生成過程轉化為一個利用遺傳算法進行數值優化的問題,算法的搜索空間即為待測軟體的輸入域,其中最優解即為滿足測試目標的測試用例。首先,使用初始數據和種子生成數據,然後對數據進行測試和評估,並監控測試過程,如果滿足測試終止的條件,就輸出測試結果,否則通過選擇、雜交、變異生成新的數據。

錯誤注入與模糊啟發式

邊界整型值:整型值上溢、下溢、符號溢出等。

字符串重複:堆棧溢出等。

欄位分隔符:將非字母數字字符如空格、制表符等隨機地包含到模糊測試字符串中。

格式化字符串:最好選擇 "%s"、"%n" 等包含到字符串中。

字符轉換和翻譯:特別關注對擴展字符的處理。

目錄遍歷:在URL中附加 "../" 之類的符號將導致攻擊者訪問未授權的目錄。

命令注入:向 "exec()"、"system()" 之類的 API 調用傳遞未經過濾的用戶數據。

測試異常分析

在程序動態分析過程中,相關信息的獲取途徑有下面幾種:

通過程序的正常輸出獲取信息

通過靜態代碼插樁獲取信息

通過動態二進位插樁獲取信息

通過虛擬機獲取信息

通過調試接口或者調試器獲取信息

模糊測試框架

模糊測試框架是一個通用的模糊器,可以對不同類型的目標進行模糊測試,它將一些單調的工作抽象化,並且將這些工作減少到最低程度。通常模糊測試框架都包含以下幾個部分:

模糊測試數據生成模塊

動態調試模塊:利用作業系統提供的調試接口來實現動態調試功能,以捕獲被調試程序產生的異常信息

執行監控模塊:在動態調試模塊的基礎上,在被調試程序運行過程中,實現對被調試程序執行狀態的監控,從而決定什麼時候終止被調試程序的運行

自動腳本模塊:在執行監控模塊的基礎上,提供更複雜的監控功能

異常過濾模塊:在動態調試模塊的基礎上,對異常產生的結果實時過濾

測試結果管理模塊:測試結果資料庫中除了異常信息之外,產生異常的畸形數據也會被保存。利用測試結果資料庫,可以實現回歸測試。


比較好的開源Fuzzers文件格式Fuzzers

可幫助fuzzing文件格式的Fuzzers,如PDF,MP3,SWF等

MiniFuzz

Microsoft提供的基本文件格式模糊測試工具。(Microsoft網站上不再提供)。

https://web.archive.org/web/20140512203517/http://download.microsoft.com/download/D/6/E/D6EDC908-A1D7-4790-AB0B-66A8B35CD931/MiniFuzzSetup.msi

AFL Fuzzer

僅適用於Linux,American Fuzzy Lop Fuzzer 由Michal Zalewski aka lcamtuf發布

http://lcamtuf.coredump.cx/afl/

WinAFL

Linux下的智能模糊測試神器afl-fuzz的Windows版本

https://github.com/ivanfratric/winafl

AFLFast

加速版的AFL,Fuzzing速度確實會比原版快一些。

https://github.com/mboehme/aflfast

afl-unicorn

採用Unicorn模擬指令的AFL,支持Linux閉源程序

https://github.com/tigerpuma/Afl_unicorn

pe-afl

通過靜態插樁實現針對Windows閉源程序的覆蓋引導的AFL Fuzzer,支持用戶層應用和內核驅動

https://github.com/wmliang/pe-afl

kAFL

支持QEMU虛擬機下的系統內核Fuzzing的AFL,適用於Linux、macOS與Windows

https://github.com/RUB-SysSec/kAFL/

TriforceAFL

基於QEMU全系統模擬的AFL,藉助系統仿真器實現分支信息跟蹤,支持Linux內核Fuzzing

https://github.com/nccgroup/TriforceAFL

Vuzzer

支持閉源程序的覆蓋引導Fuzzer,使用LibDFT的pin工具實現數據流追蹤,結合動靜態分析,以獲取更多的代碼路徑,比如比較語句中的比較值,它會先作記錄,再未來變異時使用。

https://github.com/vusec/vuzzer

Shellphish Fuzzer

AFL的Python接口,允許注入測試用例和其他功能

https://github.com/shellphish/fuzzer

TriforceAFL

AFL的修改版本,它支持原始碼不可用的應用程式的模糊測試

https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2016/june/project-triforce-run-afl-on-everything/

Peach Fuzzer

一款智能模糊測試工具, 廣泛用於發現軟體中的漏洞和缺陷,它有兩種主要模式,基於生長的模糊測試和基於變異的模糊測試

https://sourceforge.net/projects/peachfuzz/

FOE

針對Windows應用程式的基於文件突變的fuzz測試工具

https://github.com/secfigo/Awesome-Fuzzing/blob/master/www.cert.org/vulnerability-analysis/tools/foe.cfm)

rmadair

基於文件突變的fuzz測試工具,使用PyDBG來監測感興趣的信號

http://rmadair.github.io/fuzzer/

honggfuzz

支持基於代碼覆蓋的feedback-driven fuzzing。同時支持GNU/Linux,FreeBSD,Mac OSX和Android系統。

https://github.com/google/honggfuzz

zzuf

一個透明應用程式輸入fuzzer。它通過攔截文件操作並更改程序輸入中的隨機位來工作。

https://github.com/samhocevar/zzuf

radamsa

通用型fuzzer和測試用例生成器。

https://github.com/aoh/radamsa

binspector

二進位格式分析和模糊測試工具

https://github.com/binspector/binspector

網絡協議Fuzzers

可幫助fuzzing使用基於網絡協議(如HTTP, SSH, SMTP等)的應用程式Fuzzers。

Peach Fuzzer

一款智能模糊測試工具, 廣泛用於發現軟體中的漏洞和缺陷,它有兩種主要模式,基於生長的模糊測試和基於變異的模糊測試。

https://sourceforge.net/projects/peachfuzz/

Sulley

由多個可擴展組件組成的fuzzer開發和模糊測試框架。

https://github.com/OpenRCE/sulley

boofuzz

Sulley框架的分支和繼承。

https://github.com/jtpereyda/boofuzz

Spike

一個fuzzer開發框架。

http://www.immunitysec.com/downloads/SPIKE2.9.tgz

Nightmare

帶有Web管理的分布式模糊測試套件,支持使用網絡協議進行模糊測試。

https://github.com/joxeankoret/nightmare

通用類型Fuzzers

一些通用的可以對文件,庫,網絡協議,等進行Fuzzing的工具。

libFuzzer

C/C++編寫的目標進程內覆蓋引導漸進式fuzzing引擎,進程內覆蓋率引導的開源的fuzz引擎庫,屬於llvm的一部分,在各大主流開源庫中,以及Google內部最經常用的安全測試工具

http://llvm.org/docs/LibFuzzer.html

ClusterFuzzer

Google開源的可擴展的Fuzzing基礎設施

https://github.com/google/clusterfuzz

OSS-Fuzz

基於LibFuzzer的開源軟體Fuzzer集合,實現docker下自動下載、編譯安裝及運行

https://github.com/google/oss-fuzz

honggfuzz

Google開發的基於軟硬體的覆蓋驅動型Fuzzer,單純暴力Fuzz的效果也挺好的,支持多平臺,包括Linux\macOS\Windows\Android

https://github.com/google/honggfuzz

Choronzon

一個革命性的基於知識庫的模糊測試框架。

https://github.com/CENSUS/choronzon

QuickFuzz

一個語法模糊器,由QuickCheck,模板Haskell和Hackage的特定庫生成許多複雜的文件格式,如Jpeg,Png,Svg,Xml,Zip,Tar等。

https://github.com/CIFASIS/QuickFuzz

gramfuzz

一種基於語法的模糊器,可以讓您定義複雜的語法來為文本和二進位數據格式建模。

https://github.com/d0c-s4vage/gramfuzz

ansvif

用於查找C/C++代碼中的漏洞的高級跨平臺模糊測試框架。

https://oxagast.github.io/ansvif/

瀏覽器Fuzzers

dharma

基於語法模板生成的Fuzzer,由Mozilla開源的用於Fuzz Firefox JS引擎

https://github.com/MozillaSecurity/dharma

Fuzzilli

基於語法變異的JavaScript引擎Fuzzer,先通過語法模板生成測試用例,再生成中間語法進行變異,結合覆蓋率引導以觸發更多代碼路徑

https://github.com/googleprojectzero/fuzzilli

ChromeFuzzer

基於grinder語法生成器改裝的Chrome瀏覽器Fuzzer

https://github.com/demi6od/ChromeFuzzer

funfuzz

Mozilla開源的JS fuzzer工具集合,主要用於Fuzz SpiderMonkey

https://github.com/MozillaSecurity/funfuzz

domator

Project Zero團隊開源的DOM Fuzzer,用python實現基於模板生成的Fuzzer

https://github.com/googleprojectzero/domato

驅動&內核Fuzzers

KernelFuzzer

跨平臺內核Fuzzer框架,不開源策略,只在其paper中提及變異策略,需要自己實現,支持Windows、OSX和QNX系統,但只提供Windows編譯腳本

https://github.com/mwrlabs/KernelFuzzer

OSXFuzzer

基於LibFuzzer的開源軟體Fuzzer集合,實現docker下自動下載、編譯安裝及運行

https://github.com/google/oss-fuzz

syzkaller

基於覆蓋率引導的Linux內核Fuzzer,需要基於其模板語法實現API調用模板,提供給syzkaller進行數據變異,也曾被移植到其它平臺

https://github.com/google/syzkaller

PassiveFuzzFrameworkOSX

通過Hook實現被動式的OSX內核Fuzzer

https://github.com/SilverMoonSecurity/PassiveFuzzFrameworkOSX

Razzer

內核競爭條件漏洞Fuzzer

https://github.com/compsec-snu/razzer

ViridianFuzzer

用於Fuzzing Hyper-V hypercalls的內核驅動,由MWRLabs公司出品

https://github.com/mwrlabs/ViridianFuzzer

Bochspwn

基於Boch插樁API實現Double Fetches內核漏洞的檢測

https://github.com/googleprojectzero/bochspwn

Bochspwn-reloaded

基於Boch插樁API實現內核信息洩露的檢測

https://github.com/googleprojectzero/bochspwn-reloaded

Cloud Fuzzers

在雲環境中幫助fuzzing測試的Fuzzers。

Cloudfuzzer

雲fuzzing框架,可以輕鬆在雲環境中運行自動化模糊測試。

https://github.com/ouspg/cloudfuzzer


Fuzzing輔助工具汙點分析

PANDA:構建於QEMU系統上的新一代動態分析平臺

https://github.com/moyix/panda

QIRA:QEMU交互式運行時分析器

http://qira.me/

kfetch-toolkit:執行高級記錄引用的工具

https://github.com/j00ru/kfetch-toolkit

符號執行

Z3:屬於SMT Solver,用於判定First Order Logic公式的可滿足性。

https://github.com/Z3Prover/z3

Debuggers

[Windbg](https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools) – windows平臺下強大的用戶態和內核態調試工具。

[Immunity Debugger](http://debugger.immunityinc.com/)- 專門用於漏洞利用程序的開發,輔助漏洞挖掘以及惡意軟體分析的調試器。

[OllyDbg](http://www.ollydbg.de/) – 動態調試工具。

[Mona.py](https://github.com/corelan/mona/)(windbg和Immunity dbg的插件)

[x64dbg](https://github.com/x64dbg/) – 用於Windows的開源x64/x32調試器。

[GDB – Gnu調試器](http://www.sourceware.org/gdb/) – Linux調試器。

[PEDA](https://github.com/longld/peda) – 針對GDB的Python Exploit開發助手。

[Radare2](http://www.radare.org/r/) – 用於逆向工程和二進位文件分析的框架。

反編譯工具

[IDA Pro](https://www.hex-rays.com/products/ida/index.shtml)- 最好的反編譯軟體

[binnavi](https://github.com/google/binnavi) – 二進位分析IDE,注釋控制流程圖和調用反編譯代碼的圖形。

[Capstone](https://github.com/aquynh/capstone) – Capstone是一個輕量級的多平臺,多架構反編譯框架。

漏洞程序

Exploit-DB -[ https://www.exploit-db.com](https://www.exploit-db.com/)(通過搜索相關的應用漏洞,並自行下載漏洞應用及EXP重現漏洞)

PacketStorm - <https://packetstormsecurity.com/files/tags/exploit/>

[Fuzzgoat](https://github.com/fuzzstati0n/fuzzgoat) - 用於測試fuzzers的漏洞C程序。

Fuzzing樣本文件

https://files.fuzzing-project.org/

[來自Mozilla的PDF測試語料庫](https://github.com/mozilla/pdf.js/tree/master/test/pdfs)

[MS Office文件格式文檔](https://www.microsoft.com/en-us/download/details.aspx?id=14565)

https://github.com/google/fuzzer-test-suite – fuzzing引擎測試集。

https://dev-www.libreoffice.org/corpus/ 包含常見的office 格式,docx,pptx,xlsx等等。

http://cd.textfiles.com/fantaziasampler/

https://download.osgeo.org/geotiff/samples/

測試用例去重

afl 自帶的 afl-cmin 和 afl-tmin

https://blog.regehr.org/archives/1284 樣本精簡工具

https://github.com/MozillaSecurity/lithium 基於行的測試樣例精簡工具

https://github.com/googleprojectzero/halfempty  快速、並行的測試樣例精簡工具

Fuzzing實戰分析fuzz 原理&方法

https:
結構感知fuzz
https:
afl-fuzz不同文件系統
https:
https:
提升fuzz速度
https:
VrankenFuzz
https:
泉哥honggfuzz原理系列文章
https:
afl源碼詳解
https:
afl原理詳解
https:
driller,angr和AFL讀碼筆記以及測試例
https:
持續化的fuzz
https:
afl+jenkins 搭建fuzz 流程
https:
in-process fuzz
https:
修改編譯器增加fuzz 覆蓋率
https:
提升afl fuzz 速度(256 threads)
https:
高速fuzz
https:
使用靜態分析改進覆蓋率導向的fuzz
https:
雲fuzz發現安全漏洞
https:
機器學習+基於生成的 cloudfuzz
https:
api fuzz和文件fuzz的對比
https:
有目標的fuzz觸發 MS16-030
https:
dragonltx的peach系列教程
https:
peachfuzz教程
https:
afl-fuzz test
https:
aflfuzz教程
https:
afl-fuzz
http:
aflfuzz教程其中有關於afl原理的介紹
https:
一篇詳細講解關於afl-fuzz工作流程的文章
http:
fuzz在 非主流漏洞挖掘中的應用
https:
關於fuzz的一點思考
https:
fuzz測試服務
https:
clusterfuzzgooglechrome
https:
infiltrate上的關於fuzz的議題
http:
自動定位fuzz過程中crash的根本原因
https:
afl-analyze工具介紹
https:
afl-unicorn fuzz任意二進位代碼
https:
好的fuzz研究是什麼樣的

文件格式類 相關 fuzz

https://bbs.pediy.com/thread-249912.htm    
afl fuzz upx
https://bbs.pediy.com/thread-248622.htm    
honggfuzz fuzz Apache httpd
https://research.checkpoint.com/extracting-code-execution-from-winrar/    
winafl fuzz WinRAR
https://research.checkpoint.com/50-adobe-cves-in-50-days/    
winafl fuzz adobe reader
https://blog.path.network/fuzzing-cs-go-bsp-files/    
BFF fuzz csgo bsp 文件
https://github.com/knownsec/KCon/blob/master/2018/26%E6%97%A5/26%E6%97%A5No.10-PDF%20%20JS%E5%BC%95%E6%93%8E%E4%BA%A4%E4%BA%92%E5%BC%8FFuzzing-%E9%BB%91%E5%93%A5%26swan.pdf    
pdf 交互式引擎 fuzz
https://blahcat.github.io/2018/03/11/fuzzing-arbitrary-functions-in-elf-binaries/    
fuzz elf 文件二進位中的 任意函數
https://www.zerodayinitiative.com/blog/2017/10/17/wrapping-the-converter-within-foxit-reader    
zdi fuzz Adobe Reader
https://symeonp.github.io/2017/09/17/fuzzing-winafl.html    
winafl fuzz msxml6
https://github.com/lcatro/Fuzzing-ImageMagick    
fuzz ImageMagick
https://blog.adacore.com/running-american-fuzzy-lop-on-your-ada-code    
fuzz Zip-Ada 壓縮類庫
https://www.zerodayinitiative.com/blog/2017/5/4/auditing-adobe-reader-the-open-source-attack-surface-in-closed-source-software    
Adobe Reader 閉源軟體中開源軟體攻擊面
https://da-data.blogspot.com/2017/01/finding-bugs-in-tensorflow-with.html    
fuzz TensorFlow
https://www.peter.hartmann.tk/single-post/2016/11/29/Fuzzing-Qt-with-libFuzzer    
libfuzzer fuzz qt
https://int21.de/slides/qtcon-fuzzing    
afl + asan fuzz 教程
https://mgba.io/2016/09/13/fuzzing-emulators/    
fuzz 模擬器 、以及很多其他的東西
https://security.tencent.com/index.php/blog/msg/35    
漫談漏洞挖掘之文件解析型漏洞 -- by TSRC
http://www.agarri.fr/kom/archives/2013/02/25/mutation-based_fuzzing_of_xslt_engines/index.html    
基於變異的 XSLT 引擎 fuzz
http://caolanm.blogspot.com/2015/10/finding-ui-crashes-by-fuzzing-input.html    
afl fuzz 基於輸入事件的 UI 崩潰
https://foxglovesecurity.com/2016/06/13/finding-pearls-fuzzing-clamav/    
fuzz 開源反病毒引擎

瀏覽器 相關 fuzz

https://www.kitploit.com/2018/11/bfuzz-fuzzing-browsers-chrome-firefox.html    
bfuzz fuzz 瀏覽器
https://bugid.skylined.nl/20181017001.html    
fuzz 瀏覽器(domato)
http://blog.ret2.io/2018/07/25/pwn2own-2018-safari-sandbox/    
fuzz Safari
https://sigpwn.io/blog/2018/5/13/adding-afl-bloom-filter-to-domato-for-fun    
afl + domato fuzz IE 11
https://drive.google.com/file/d/0B4ZwSwfSILSIcWhzY1NnY0lrNEk/view
fuzz 瀏覽器尋找可利用的漏洞
https://sensepost.com/blog/2015/wadi-fuzzer/    
wadi 瀏覽器 fuzzer

網絡協議/加密相關 fuzz

http:
fuzz tcp 伺服器
http:
fuzz ssh 客戶端
https:
fuzz janus
https:
fuzz Apache Httpd
https:
fuzz openvpn
https:
fuzz Apache Httpd
https:
使用 scrapy、radamsa 和 pcaps fuzz 專有協議
https:
fuzz Apache httpd
https:
http:
fuzz openssl
https:
fuzz mbed tls 庫
https:
fuzz dns
https:
fuzz Apache Http2 伺服器
https:
fuzz dnsmasq
https:
cloudflare fuzz 基於go 語言開發的 dns 伺服器的 parser
https:
以太坊 智能 fuzzer
https:

系統/內核 相關fuzz

https:
IOCTL fuzz
http:
syzkaller fuzz usb
https:
fuzz linux 內核 驅動
https:
科恩 windows 內核fuzz
https:
內核 fuzz
https:
win32k fuzz
https:
覆蓋率引導的內核 fuzz --syzkaller

文本處理相關 fuzz

https://sigpwn.io/blog/2018/1/29/using-winafl-to-fuzz-hangul-appshield    
winafl fuzz hwp(韓國字處理程序)
https://kciredor.com/fuzzing-adobe-reader-for-exploitable-vulns-fun-not-profit.html    
winafl fuzz adobe reader
https://github.com/0xSobky/HackVault/wiki/Regaxor:-Fuzzing-Regexes-for-Fun-and-Not%E2%80%90So%E2%80%90Much-Profit    
fuzz 正則表達式
https://j00ru.vexillium.org/2015/09/44c······on-slides-and-details-about-further-windows-kernel-font-vulnerabilities/    
windows 內核 字體fuzz
https://yahoo-security.tumblr.com/post/123981052855/font-parsing-vulnerabilities    
字體 fuzz
https://www.evonide.com/fuzzing-unserialize/    
fuzz 反序列化
https://grepharder.github.io/blog/0x03_learning_about_universal_links_and_fuzzing_url_schemes_on_ios_with_frida.html    
fuzz URL
https://portswigger.net/blog/unearthing-zalgoscript-with-visual-
fuzzing    視覺fuzz

編譯器/解釋器 fuzz

http:
fuzz 編譯器
https:
fuzz D 編譯器
https:
fuzz go ~
https:
fuzz JAVA
https:
go-fuzz 自動化測試(視頻)
https:
fuzz capstone
https:
fuzz php
https:
fuzz 回歸測試,fuzz 語言解釋器

硬體/IOT 相關 fuzz

https:
plc 漏洞挖掘
https:
硬體 fuzz
https:
使用OpenBTS基站 fuzz 物聯網模塊
http:
IOTkit fuzz
http:
fuzz 工控實時作業系統
https:
fuzz UPnP

安卓/移動端相關 fuzz

https://gamozolabs.github.io/fuzzing/2018/10/18/terrible_android_fuzzer.html    
安卓 fuzzer
https://www.twistlock.com/2017/06/25/alpine-linux-pt-1-2/    
fuzz apk
https://census-labs.com/news/2015/09/24/efficient-android-fuzzing/    
高效 fuzz 安卓

虛擬化 相關 fuzz

https://insinuator.net/2018/11/h2hc2018/    
http://www.alex-ionescu.com/?m=201901    
hyper-V 中fuzz 

Web APP 相關 fuzz

http://blog.securelayer7.net/automating-web-apps-input-fuzzing-via-burp-macros/    
burp 宏 自動化fuzz 測試webapp
https://www.kitploit.com/2017/06/xsstrike-fuzz-and-bruteforce-parameters.html    
fuzz xss
https://www.kitploit.com/2016/12/filebuster-extremely-fast-and-flexible.html    
filebuster web fuzzer
https://www.darknet.org.uk/2015/11/0d1n-web-http-fuzzing-tool/    
web http fuzz


Fuzzing Paper

下面是2008年1月至2019年7月的4個主要安全會議和其他會議中包括關於模糊測試的paper。包括:網絡和分布式系統安全會議(NDSS), IEEE安全和隱私保護會議(S&P),USENIX安全會議(USEC),以及ACM計算機和通信安全會議(CCS)。

NDSS

[CodeAlchemist:用於在JavaScript引擎中查找漏洞的語義感知代碼生成,2019]
(https:
[PeriScope:硬體作業系統邊界的有效探測和模糊測試框架,2019年]
(https:
[REDQUEEN:使用輸入到狀態通信進行模糊測試,2019年]
(https:
[以我的方式發送最難的問題:混合模糊測試的概率路徑優先級,2019年](https:
[語音識別後的生活:語音助理應用程式的模糊語義錯誤解釋,2019年]
(https:
[INSTRIM:用於覆蓋引導模糊的輕量級儀器,2018年]
(https:
[IoTFuzzer:通過基於應用程式的Fuzzing發現物聯網中的內存損壞,2018年](http:
[模糊嵌入式設備的挑戰,2018年]
(http:
[增強大規模應用程式和模糊測試的內存錯誤檢測,2018年]
(https:
[Vuzzer:應用程式感知的進化模糊測試,2017年]
(https:
[DELTA:2017年軟體定義網絡安全評估框架]
(http:
[Driller:2016年通過選擇性符號執行來增強模糊測試]
(https:
[自動化白盒模糊測試,2008年]
(http:

S&P

[模糊測試:通過覆蓋引導跟蹤減少模糊開銷,2019年]
(https:
[通過二維輸入空間探索的模糊文件系統,2019年]
(https:
[NEUZZ:使用神經程序平滑的高效模糊測試,2019]
(https:
[Razzer:通過Fuzzing尋找內核競爭錯誤,2019年]
(https:
[安哥拉:2018年原則搜索的高效模糊測試]
(http:
[CollAFL:Path Sensitive Fuzzing,2018]
(http:
[T-Fuzz:2018年的程序轉換模糊測試]
(https:
[Skyfire:2017年用於模糊測試的數據驅動種子生成]
(https:
[程序自適應突變模糊測驗,2015]
(https:
[TaintScope:2010年自動軟體漏洞檢測的校驗和感知定向模糊測試工具](https:

USEC

[模糊化:反模糊技術,2019年]
(https:
[AntiFuzz:阻止二進位可執行文件的模糊審計,2019年]
(https:
[魅力:促進移動系統設備驅動程序的動態分析,2018年]
(https:
[MoonShine:使用痕量蒸餾優化OS Fuzzer種子選擇,2018年]
(https:
[QSYM:為混合模糊測試量身定製的實用複雜執行引擎,2018年]
(https:
[OSS-Fuzz - Google為開源軟體提供的持續模糊測試服務,2017年]
(https:
[kAFL:針對OS內核的硬體輔助反饋模糊測試,2017年]
(https:
[2015年TLS實施的協議狀態模糊測試]
(https:
[優化Fuzzing的種子選擇,2014]
(https:
[尋找溢出:引導模糊器以查找緩衝區邊界違規,2013]
(http:
[使用Code Fragments進行模糊測試,2012]
(https:

ACM CCS

[評估模糊測試,2018年]
(http:
[鷹眼:走向一個渴望的定向灰盒式模糊器,2018年]
(https:
[國際貨幣基金組織:推斷基於模型的Fuzzer,2017年]
(http:
[SemFuzz:基於語義的自動生成概念驗證漏洞,2017年]
(https:
[2017年基於AFL的Java與Fueling for Kelinci]
(https:
[2017年設計新的操作基元以提高模糊性能]
(http:
[Greybox Fuzzing,2017年]
(https:
[SlowFuzz:2017年算法複雜性漏洞的自動域獨立檢測]
(https:
[DIFUZE:2017年內核驅動程序的界面感知模糊測試]
(https:
[2016年TLS圖書館的系統模糊測試和測試]
(https:
[基於覆蓋的Greybox Fuzzing作為馬爾可夫鏈,2016年]
(https:
[eFuzz:2016年DLMS / COSEM電錶的模糊器]
(http:
[調度黑盒突變模糊測試,2013]
(https:
[馴服編譯器模糊器,2013年]
(https:
[SAGE:用於安全測試的白盒模糊測試,2012]
(https:
[基於語法的白盒模糊測試,2008]
(https:
[基於汙點的定向白盒模糊測試,2009年]
(https:

人工智慧與機器學習Fuzzing

[2019年Fuzzing中機器學習應用綜述]
(https:
[Android作業系統供應商系統服務的進化模糊,2019年]
(https:
[MoonLight:2019年近期最佳語料庫蒸餾的有效模糊測試]
(https:
[2018年深度神經網絡的覆蓋引導模糊測試]
(https:
[DLFuzz:深度學習系統的差分模糊測試,2018年]
(https:
[TensorFuzz:使用Coverage-Guided Fuzzing調試神經網絡,2018年]
(https:
[NEUZZ:2018年神經網絡學習的高效模糊測試]
(https:
[EnFuzz:從Ensemble Learning到Ensemble Fuzzing,2018]
(https:
[REST-ler:自動智能REST API模糊測試,2018]
(https:
[深層加固模糊,2018年]
(https:
[並非所有字節都相同:用於模糊測試的神經字節篩,2017]
(https:
[更快的模糊測試:使用深度神經模型重新初始化,2017年]
(https:
[學習和模糊:2017年輸入模糊測試的機器學習]
(https:
[使用基於變異的模糊測試補充模型學習,2016]
(https:

### 其他

[Ifuzzer:使用遺傳編程的進化翻譯模糊器,2016]
(https:
[混合模糊測試:通過模糊測試和符號執行發現軟體錯誤,2012]
(https:
[針對Windows系統安全性的呼叫流感知API模糊測試,2008]
(https:
[反饋導向隨機測試生成,2007年]
(https:


Fuzzing 書籍

《模糊測試-強制性安全漏洞發掘》作者:Michael Sutton, Adam Greene, Pedram Amini。

https:

《軟體安全測試Fuzzing和zhi』laing質量保證]》作者:Ari Takanen, Charles Miller, and Jared D Demott。

https:

《開源Fuzzing工具》作者:Gadi Evron and Noam Rathaus。

https:

《Shellcoder手冊:發現和利用安全漏洞》(第15章節)作者:Chris Anley, Dave Aitel, David Litchfield等。

https:


Fuzzing 教程

下面的文章解釋了fuzzing的方法,技術和最佳實踐。

[有效的文件格式Fuzzing](http://j00ru.vexillium.org/slides/2016/blackhat.pdf) – Mateusz「j00ru」Jurczyk @Black Hat 2016歐洲,倫敦

[過去一年的Windows內核字體fuzzing第一部分成果 ](https://googleprojectzero.blogspot.in/2016/06/a-year-of-windows-kernel-font-fuzzing-1_27.html)- 谷歌的Project Zero的一篇文章,描述了如何進行fuzzing和創建fuzzers。

[過去一年的Windows內核字體fuzzing第二部分技術 ](https://googleprojectzero.blogspot.in/2016/07/a-year-of-windows-kernel-font-fuzzing-2.html)- 谷歌的Project Zero的一篇文章,描述了fuzzing和創建fuzzers需要什麼。

[fuzzing項目中有趣的bug和資源](https://blog.fuzzing-project.org/) – 來自fuzzing-project.org。

[Fuzzing工作流程;fuzz工作從開始到結束](https://foxglovesecurity.com/2016/03/15/fuzzing-workflows-a-fuzz-job-from-start-to-finish/) – @BrandonPrry。

[用AFL和libFuzzer輕鬆介紹C++代碼fuzzing ](http://jefftrull.github.io/c++/clang/llvm/fuzzing/sanitizer/2015/11/27/fuzzing-with-sanitizers.html)- Jeff Trull。

[15分鐘fuzzing介紹 ](https://www.mwrinfosecurity.com/our-thinking/15-minute-guide-to-fuzzing/)- MWR安全。

[Fuzzing Blog](https://fuzzing.info/resources/) - fuzzing.info

[Fuzzing中出現崩潰的根本原因分析](https://www.corelan.be/index.php/2013/02/26/root-cause-analysis-memory-corruption-vulnerabilities/) - Corelan團隊。

[Root cause analysis of integer flow](https://www.corelan.be/index.php/2013/07/02/root-cause-analysis-integer-overflows/) -Corelan團隊。

[Creating custom peach fuzzer publishers](http://blog.opensecurityresearch.com/2014/01/creating-custom-peach-fuzzer-publishers.html) - Open Security Research。

[Fuzzing](https://www.linuxfoundation.org/blog/7-things-to-consider-before-fuzzing-a-large-open-source-project/)


從Fuzzing到漏洞利用

[從Fuzzing到0-day](https://blog.techorganic.com/2014/05/14/from-fuzzing-to-0-day/) - Harold Rodriguez(@superkojiman)。

[從崩潰到漏洞利用](https://www.corelan.be/index.php/2013/02/26/root-cause-analysis-memory-corruption-vulnerabilities/) - Corelan團隊。

Peach Fuzzer相關教程

[開始使用Peach](http://community.peachfuzzer.com/v2/PeachQuickstart.html)

[Peach Fuzzing第一部分](http://www.flinkd.org/fuzzing-with-peach-part-1/) – corelan團隊Jason Kratzer

[Peach Fuzzing第二部分 ](http://www.flinkd.org/fuzzing-with-peach-part-2-fixups-2/)- corelan團隊Jason Kratzer

[自動生成Peach pit文件/fuzzers ](http://doc.netzob.org/en/latest/tutorials/peach.html)- FrédéricGuihéry,Georges Bossert

AFL Fuzzer相關教程

[Fuzzing工作流程;fuzz工作從開始到結束](https://foxglovesecurity.com/2016/03/15/fuzzing-workflows-a-fuzz-job-from-start-to-finish/) – @BrandonPrry。

[使用afl的persistent模式給capstone做模糊測試](https://toastedcornflakes.github.io/articles/fuzzing_capstone_with_afl.html) – @toasted_flakes。

[RAM磁碟以及從AFL Fuzzing中保存你的SSD](http://cipherdyne.org/blog/2014/12/ram-disks-and-saving-your-ssd-from-afl-fuzzing.html)

[使用American Fuzzy Lop狩獵Bug](https://josephg.com/blog/bug-hunting-with-american-fuzzy-lop/)

[American Fuzzy Lop在真實案例中的高級使用](https://volatileminds.net/2015/07/01/advanced-afl-usage.html)

[使用afl-fuzz隔離Python](https://tomforb.es/segfaulting-python-with-afl-fuzz)

[Fuzzing Perl:American Fuzzy Lops的故事](http://www.geeknik.net/71nvhf1fp)

[使用AFL-Fuzz Fuzzing,一個練習示例(AFL vs Binutils)](https://www.evilsocket.net/2015/04/30/fuzzing-with-afl-fuzz-a-practical-example-afl-vs-binutils/)

[Fuzzing的重要性?](https://mgba.io/2016/09/13/fuzzing-emulators/)

[Heartbleed是如何被找到的](https://blog.hboeck.de/archives/868-How-Heartbleed-couldve-been-found.html)

[使用American Fuzzy lop Fuzzing文件系統](https://events.static.linuxfound.org/sites/events/files/slides/AFL%20filesystem%20fuzzing%2C%20Vault%202016_0.pdf)

[使用AFL Fuzzing Perl/XS模塊](https://medium.com/@dgryski/fuzzing-perl-xs-modules-with-afl-4bfc2335dd90)

[如何使用American Fuzzy Lop fuzz一個伺服器 ](https://www.fastly.com/blog/how-fuzz-server-american-fuzzy-lop)- Jonathan Foote

[AFL研討會Fuzzing – 真正的漏洞帶來的一系列挑戰](https://github.com/ThalesIgnite/afl-training)

libFuzzer Fuzzer相關教程

[libFuzzer教程]
(https:

[libFuzzer研討會:「C/C++項目的現代fuzzing」]
(https:

Spike Fuzzer相關教程

[使用Spike Fuzzing查找溢出](https://null-byte.wonderhowto.com/how-to/hack-like-pro-build-your-own-exploits-part-3-fuzzing-with-spike-find-overflows-0162789/)

[使用Spike Fuzzing](https://samsclass.info/127/proj/p18-spike.htm) – samclass.info

參考信息

https://github.com/secfigo/Awesome-Fuzzing

https://github.com/cpuu/awesome-fuzzing#books

https://mp.weixin.qq.com/s/oh8C9lfLeJ9cgAEzNVv3TA

https://bbs.pediy.com/thread-249986.htm

https://www.freebuf.com/news/169413.html

更多資料在github:

https://github.com/streetleague/0xbird.github.io/

相關焦點

  • Fuzzing: A survey
    引言 (Introduction)Fuzzing一直是一種高效的漏洞挖掘方法,自從AFL橫空出世以來
  • fuzz實戰之libfuzzer
    /run_fuzzing.pydoneHelloworld-For-libFuzzer安裝本節相關資源文件位於:https://github.com/Dor1s/libfuzzer-workshop/tree/master/lessons/04首先先把 libFuzzer 安裝一下首先git clone https
  • 純乾貨:微軟漏洞中國第一人黃正——如何用正確姿勢挖掘瀏覽器漏洞...
    從上千萬行代碼中,精準地找到那個微小的漏洞,恰如站在萬裡之遙,拉弓搭箭。正中靶心。以下,是雷鋒網宅客頻道(公眾號:宅客頻道)誠意奉上的公開課全文及完整 PPT。關於我自己我是百度安全實驗室的黃正,在百度參與過網頁掛馬檢測、釣魚欺詐檢測、病毒木馬分析、偽基站檢測、泛站群打擊、漏洞挖掘和漏洞利用等。
  • 【表哥有話說 第72期】honggfuzz 學習筆記
    相關概念Feedback-driven fuzzing中文直譯就是反饋驅動型模糊測試。通過提高 Code coverage (代碼覆蓋率),來進行變異樣本,增加發現漏洞的概率。Persistent fuzzing中文直譯就是持續型模糊測試。
  • 十大開源Web應用安全測試工具
    目前市場上有很多免費、付費和開源工具可用來檢查Web應用程式中的漏洞和缺陷。關於開源工具,除了免費之外,最大的優點是可以自定義它們,以符合您的特定要求。以下,是我們推薦的十大開源安全測試列表:Arachni面向滲透測試人員和管理員的旨在識別Web應用程式中的安全問題。
  • 2019 年開源軟體漏洞增長近 50%,C 語言漏洞佔比最高
    ,整理髮布了一份研究報告。不過報告也指出,遺憾的是,最終只有 84% 的已知開源漏洞出現在 NVD 中。且有關漏洞的信息並沒有集中在一個位置發布,而是分散在數百種資源中。因此,一旦出現索引編制不正確的狀況時,就會使得搜索特定數據變得愈發艱難。而報告的開源漏洞也中有 45% 並未是最初就報告給 NVD 的,許多漏洞是在其他渠道中被報告數月後才在 NVD 中發布。
  • 漏洞挖掘 | 通用型漏洞挖掘思路技巧
    收錄於話題 #漏洞挖掘:1、找最新版的版本較低的,例如1.1、1.22、找github star不多的3、找源碼總容量小的4、儘量不要找使用tp、yii、laravel等框架型CMS這裡說一下理由:1、如果cms版本高,說明開發有經常維護,同時也說明裡面的簡單漏洞已經被發現並且被提交並整改了
  • Go 1.18新特性前瞻:原生支持Fuzzing測試
    其本質上是一種自動化測試技術,更具體一點,它是一種基於隨機輸入的自動化測試技術,常被用於發現處理用戶輸入的代碼中存在的bug和問題。有了上述Fuzzing相關開源工具和開源庫的支持,Fuzzing test不再是需要專業知識才能成功使用的技術,並且現代Fuzzing引擎可以更有策略的、更快的、更有效地找到有用的輸入語料。
  • 谷歌發布 OSS-Fuzz 開源模糊測試服務
    OSS-Fuzz結合了多種模糊測試技術/漏洞捕捉技術(即原來的libfuzzer)與清洗技術(即原來的AddressSanitizer),並且通過ClusterFuzz為大規模可分布式執行提供了測試環境。」這項服務填補了Springfield留下的空白:微軟的模糊測試服務針對的是願意付費的企業客戶。
  • AFL學習筆記(上)
    1. tuple首先應該知道的是,AFL是根據二元tuple(跳轉的源地址和目標地址)來記錄分支信息,從而獲取target的執行流程和代碼覆蓋情況。起始階段 fuzzer 會進行一系列的準備工作,為記錄插樁得到的目標程序執行路徑,即 tuple 信息。
  • 智能模糊測試工具Peach Fuzzer官方文檔翻譯 | 內附資源
    Peach Fuzzer是一款智能模糊測試工具,  廣泛用於發現軟體中的漏洞和缺陷,它有兩種主要模式,基於生長的模糊測試和基於變異的模糊測試
  • 基於深度學習的動靜結合的漏洞挖掘方法
    安 全漏洞是在硬體、軟體以及協議的具體實現或系統 安全策略上存在的缺陷,使攻擊者能夠在未經授權 的情況下訪問和修改系統。安全漏洞不僅是病毒、 蠕蟲等的重要傳播途徑,也是網絡攻防的焦點,是 網絡安全領域的核心問題。因此,漏洞挖掘一直是 熱門的研究領域。符號執行和模糊測試是目前比較常用的漏洞檢 測方法。
  • 60% 的企業代碼庫包含開源漏洞 - OSCHINA - 中文開源技術交流社區
    報告對 2018 年以來 1200 多個商業代碼庫的匿名數據進行了分析和研究。對當今的企業來說,開源軟體、庫和組件往往起著重要的作用。開原始碼採用率高有許多原因,其中包括開源社區的許多程式設計師願意為項目貢獻時間、項目代碼的透明性、以及比開發內部系統更少的實現時間等。在黑鴨審查的所有代碼庫中,有 96% 包含了開源組件,而大多數沒有開原始碼的代碼庫其實包含不到 1000 個文件。在超過 1000 個文件的代碼庫中,開原始碼的採用率高達 99%。
  • Google 開源漏洞掃描系統 Tsunami
    谷歌已宣布將其內部使用的 Tsunami 漏洞掃描程序進行開源,以幫助其他組織保護用戶數據。Tsunami 將不會成為谷歌的正式品牌產品,而是由開源社區以類似於管理 Kubernetes(另一種穀歌內部工具)的方式來維護。