Fuzz测试

程序所使用的数据并不是全部严格遵守软件规定的数据格式。例如,攻击者往往会尝试对软件所约定的数据格式进行稍许修改,观察软件在解析这种”畸形数据”时是否会发生错误,发生什么样的错误,以及堆栈是否能被溢出等。

Fuzz测试目的即是验证程序接收处理畸形数据是否发生异常,Fuzz测试过程中会随机或按照数据模板生成畸形数据,测试软件的容错性、稳定性和安全性。Fuzz测试一般借助工具进行,例如Peach Fuzz支持对文件格式、com、网络协议、API等进行Fuzz测试。

Blind Fuzz/Smart Fuzz

Blind Fuzz即通常所说的”盲测”,就是在随机位置插入随机的数据以生成畸形文件。Blind Fuzz产生测试用例的策略缺少针对性,生成大量无效测试用例,难以发现复杂解析器深层逻辑的漏洞。

针对Blind Fuzz的不足提出来Smart Fuzz。通常Smart Fuzz包括三方面的特征:面向逻辑(Logic Oriented Fuzzing)、面向数据类型(Data Type Oriented Fuzzing)和基于样本(Sample Based Fuzzing)。

Fuzz工具大体的工作流程:参照正常的数据模板,按照一定规则产生一批畸形数据,将畸形数据送入软件进行解析,并监视软件是否会抛出异常。有异常产生时记录错误信息,如对应用例、寄存器状态、栈状态等。测试人员根据异常信息进一步鉴定这些错误是否能被利用。

Peach Fuzz简介

Peach是一款Python编写的开源Smart Fuzz工具, 它支持两种文件Fuzz方法:基于生长(Generation Based)和基于变异(Mutation Based)。基于生长的Fuzz方法产生随机或启发性数据来填充给定的数据模型,从而生成畸形文件。而基于变异的Fuzz方法在一个给定的样本文件基础上进行修改从而产生畸形文件。

Peach的安装文件可以在官网下载 http://peachFuzzer.com/
Peach使用XML语言来定义数据结构,这种定义数据结构的文件被叫做Peach Pit文件。

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注