知识分享
模糊测试
模糊测试是一种通过提供非预期的输入并监视异常结果来发现软件故障的方法。是一个自动的或半自动的过程,这个过程包括反复操纵目标软件并为其提供处理数据。
三种常见的Fuzz测试:文件Fuzz、协议Fuzz和组件Fuzz测试。
一、文件Fuzz测试
在微软公布的漏洞中,有些是程序在解析输入文件时导致的错误。例如:IE解析错误、Word文档解析错误、Excel文档解析错误、PowerPoint文档解析错误。由于错误的解析文件,导致执行恶意代码。
通常一个Fuzz测试的流程如下:
(1)以一个正常的模版为基础,按照一定的规则产生畸形文件。
(2)将畸形文件逐个输入到软件中进行测试,观测软件在解析输入的畸形文件后,是否会抛出异常。
(3)记录软件发生的错误信息,如栈状态
(4)向测试人员报告这些异常信息,供进一步分析这些异常错误信息是否可以被利用。
二、协议Fuzz测试
通常邮件服务器、FTP服务器等网络应用中,服务器端和客户端都需要解析按照一定顺序到达的数据包,这些数据包在解析时,通常被认为是遵守约定的协议格式。
攻击者可以构造畸形的数据包来测试协议解析的健壮性,即观察是否会出现解析异常,并分析是否可以利用这些异常。从本质上说,文件Fuzz测试和协议Fuzz测试都是测试流程解析程序是否存在考虑不周的缺陷。
三、组件Fuzz测试
第三方组件如COM、ActiveX中可能存在漏洞,可以使用组件Fuzz工具进行测试。例如:COMRaider可免费使用。AxMan,是一个基于IE的ActiveX Fuzz工具,需要和IE一起使用。