## 8.3 改进你的 Fuzzer
虽然我们已经创建了一个 fuzzer,而且只要能够给它提供足够多的时间,它就能找出一 些 bug。但是在通往强大的路还很长很长。
### 8.3.1 Code Coverage
Code coverage 是一个度量,通过统计测试目标程序的过程中,执行了函数。Fuzzing 专家 Charlie Miller 通过经验证明,寻找到的 bug 数量和 Code coverage 的增长成正比。那 我们怎么证明呢!最简单的方法就是,在你 fuzz 目标程序的时候,使用调试器在目标进程 上的说有函数上设置断点,然后使用不同的测试案例去 fuzz 目标进程,根据找到 bug 和击 中的函数数量,你就会知道自己的 fuzz 的效率。还有更多的使用 Code coverage 的复杂的例 子,你可以将它们的技术加入你的 file fuzzer。
### 8.3.2 Automated Static Analysis
通 过 对 二 进 制 文 件 进 行 Automated Static Analysis( 自 动 化 的 静 态 分 析 ) , 能 够 帮 助 bughunter 更高效的找出目标代码的弱点。跟踪容易出错的函数(例如 strcpy),并且监视函 数的执行过程,会有很好的效果。还有很多别的优点,比如跟踪内部的内存拷贝操作,忽略 不必要的错误处理代码,等等。对目标将程序了解的越多,找出 bug 的机会就越大。
将这些功能加入我们创建的 fuzzer,会很大的提高我们今后的工作效率。在我们设计 fuzzer 的时候扩展性是非常重要的,在以后不断的功能扩张中,你会感谢今天花在前端设计 上的时间,是多么的值得。接下来让我们看看一个基于 Python 的 fuzzing 框架(Pedram Amini, Aaron Portnoy of TippingPoint)。之后我们会深入介绍我的一个 fuzzer 作品 ioctlizer,用于 查找使用了 I/O 控制代码的 Windows 驱动中的漏洞。
- 序
- 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