# 8 FUZZING
Fuzzing 一直以來都是個熱點話題,因為使用它能非常高 效的尋找出軟件的漏洞。簡單的說,Fuzzing 就是向目標程序發 送畸形或者半畸形的數據以引發錯誤。這一章,讓我們先了解幾 個不同類型的 fuzzer 還有 bug,之后我們還要自己動手寫實現一 個 file fuzzer。下一章,會詳細的介紹 Sulley fuzzing 框架和如何設計一個針對 Windows 驅動的 fuzzer。
fuzzers 基本上分成 2 大類:generation(產生) 和 mutation(變異)。Generation fuzzers 創建數據,然后發送到到目標程序, mutation fuzzers 并不創建數據,而是截獲程序接收的 數據,然后修改數據。 舉個例子,當我們要 fuzz 一個 web 服務器的時候,generation fuzzer 會生成一套變形的 Http 請求然后發送給 web 服務器,而 mutation fuzzer 會捕獲 Http 請求, 在請求傳遞給 web 服務器前修改它們。
為了將來我們創建創建一個高效的 fuzzer,我們需要先對不同類型的 bug 做一個簡單的 了解,并且看看 fuzzer 如何觸發它們。如果要更詳細的了解軟件安全檢測,可以看下面的書。
- 序
- 1 搭建開發環境
- 1.1 操作系統準備
- 1.2 獲取和安裝 Python2.5
- 1.3 配置 Eclipse 和 PyDev
- 2 調試器設計
- 2.1 通用 CPU 寄存器
- 2.2 棧
- 2.3 調試事件
- 2.4 斷點
- 3 自己動手寫一個 windows 調試器
- 3.2 獲得 CPU 寄存器狀態
- 3.3 實現調試事件處理
- 3.4 全能的斷點
- 4 PyDBG---純 PYTHON 調試器
- 4.1 擴展斷點處理
- 4.2 處理訪問違例
- 4.3 進程快照
- 5 IMMUNITY----最好的調試器
- 5.1 安裝 Immunity 調試器
- 5.2 Immunity Debugger 101
- 5.3 Exploit 開發
- 5.4 搞定反調試機制
- 6 HOOKING
- 6.1 用 PyDbg 實現 Soft Hooking
- 6.2 Hard Hooking
- 7 Dll 和代碼注入
- 7.1 創建遠線程
- 7.2 邪惡的代碼
- 8 FUZZING
- 8.1 Bug 的分類
- 8.2 File Fuzzer
- 8.3 改進你的 Fuzzer
- 9 SULLEY
- 9.1 安裝 Sulley
- 9.2 Sulley primitives
- 9.3 獵殺 WarFTPD
- 10 Fuzzing Windows 驅動
- 10.1 驅動通信
- 10.2 用 Immunity fuzzing 驅動
- 10.4 構建 Driver Fuzzer
- 11 IDAPYTHON --- IDA 腳本
- 11.1 安裝 IDAPython
- 11.2 IDAPython 函數
- 11.3 腳本例子
- 12 PyEmu
- 12.1 安裝 PyEmu
- 12.2 PyEmu 一覽
- 12.3 IDAPyEmu