模糊测试与AvalancheFuzzing方案介绍

2015-10-10 01:10刘孝华思博伦通信
信息通信技术与政策 2015年12期
关键词:测系统黑盒测试方法

刘孝华 思博伦通信

思博伦技术专栏

模糊测试与AvalancheFuzzing方案介绍

刘孝华思博伦通信

编者按:模糊测试(Fuzzing)源于软件测试中黑盒测试方法,主要阐述通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法,此类测试已经有20多年历史。思博伦通信刘孝华所撰《模糊测试与Avalanche Fuzzing方案介绍》一文首先对模糊测试涵盖的几个方面进行了介绍,并对模糊测试方法及不同阶段进行了分析,最后重点对思博伦研发的整体解决方案进行了阐述和研究。Avalanche Next是思博伦研发生产的进行安全及应用领域通信网络测试的整体解决方案。通过Avalanche构建一个Fuzzing测试框架进行测试,思博伦整体解决方案Avalanche Next通过B/S架构可以帮助大家灵活、快速地部署测试任务。

1 模糊测试

模糊测试(Fuzzing)源于软件测试中黑盒测试方法,主要阐述通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法,此类测试已经有20多年历史。

模糊测试最早的引用可以追溯到1989年。Barton Miller教授(被很多人认为是模糊测试之“父”)和他的高级操作系统课开发和使用了一个原始的模糊器,用来测试UNIX应用程序的健壮性,测试之初关注点并不是评价系统的安全性,而是验证全部代码的质量和可靠性。尽管在该项研究过程中提及到了安全性的问题,但在实际的实施中并没有专门强调这一点。

1999年,Oulu大学开始了PROTOS测试集的开发工作。通过分析协议规约,产生违背规约或者很有可能让协议实现体无法正确处理的报文,然后各种各样的测试集先后被开发出来。首先,产生这样的测试集需要耗费相当大的努力,但是一旦产生之后,这些测试集就可以用来测试多个供应商的产品。这个例子属于白盒和黑盒混合的测试方法,标志着模糊测试发展历程中的一个重要里程碑,后来证明大量的故障是用这样的方法发现。

2002年,Microsoft为PROTOS3提供了资金支持;2003年,PROTOS组的成员发起了16 Codenomicon,这是一个专门致力于设计和产生商业用模糊测试集的公司。该公司今天的产品仍然基于最初的Oulu测试集,不过还包括了一些图形用户界面、用户支持以及通过健康特征检测而实现的故障检测能力,此外还增加了其它一些特征。Dave Aitel也在2003年发布了SPIKE5一个开放源代码的模糊器,SPIKE5采用了GNU的许可(GPL),SPIKE5实现了一种基于块的方法,目的是为了测试基于网络的应用程序。SPIKE采用了一种比Miller的模糊器更高级的方法,最显著的特征是包括了描述可变长数据块的能力。SPIKE包括一组预定义的函数,这些函数能够产生常见的协议和数据格式,其中包括SunRPC和MicrosoftRPC,这是两个常见的通信协议,过去发现的许多安全漏洞都起源于它们。作为第一个允许用户无痛创建自定制模糊器的公开框架,SPIKE的发布标志着一个重要的里程碑。

2 模糊测试涵盖了几个方面

(1)白盒测试

基于代码及软件架构级别的测试分析,在此阶段进行模糊测试对被测系统的代码安全分析。

(2)黑盒测试

黑盒测试基本思路是通过测试来检测每个功能是否都能正常使用。黑盒测试中,把被测试系统看作是一个与外界隔离的黑盒子(区域),在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,重点关注系统基础行为的正确性进行测试,通过黑盒手段进行模糊测试,代表着对被测试系统没有详细了解的情况下,通过识别输入的方法确认系统的安全性、健壮性等。

黑盒测试是以用户的角度,从输入与输出数据的对应关系出发进行测试。

(3)灰盒测试

灰盒测试的定义是在白盒测试和黑盒分析之间浮动,给它下的定义是首先包括了黑盒测试审核,此外还包括通过逆向工程(RE)获得的结果,逆向工程也被称为逆向代码工程(RCE)。

3 模糊测试方法分析及不同阶段

(1)模糊测试方法分析

构建模糊测试序列和测试流,对于验证被测系统的协议层面及逻辑层面的缺陷。一般流程如图1所示。

模糊测试阶段:

●发现识别目标(被测试单元)

如果要进行一次有效的测试验证,那么首先需要明确需要验证哪些单元,如何选取最有价值的目标单元成为有效测试所必须具备的前提。

●识别输入

进行测试数据构建,数据输入通常按照协议正常行为进行序列交互,根据验证系统特性定义出合规的测试数据流。

●执行测试(输入模糊测试数据)

通过模糊测试框架进行测试数据输入,通过测试框架对被测试单元进行状态跟踪,以判断测试的有效性及测试的反馈。

图1 模糊测试一般流程

●监控异常现象

通过测试框架监控被测试的单元健康信息,如通信单元心跳信息。

●确定可用性

模糊测试发起前必须通过合规手段确认测试数据源为可用有效数据。

4 通信协议模糊测试框架定义

完成对特定通信协议的模糊测试,首先遵循模糊测试基础理论,构建合适的模糊测试框架是必须的,而且框架需要根据不同的协议类型或通信模式而不同。思博伦为您提供了一套完整的测试框架及实施的解决方案。

测试框架包含:测试描述、测试方法、测试用例、现象跟踪;有相应的测试管理软件可以帮你构建合适的测试框架,以满足生产的需求。

5 基于SIP协议Fuzzing测试框架构建

(1)SIP协议

●DIAMETER:LocationInfoCommands流程

Avalanche Next通 过 仿 真 SIP终 端 进 行DIAMETER位置信息流程,SIP协议报文交互对被测系统(设备)的协议交互流程是否正确,并可定义异常交互序列并对被测是系统是否会出现异常状态。

●DIAMETER:UserAuthorizationCommands交互流程(见图2)

●DIAMETER交互报文图(见图3)

(2)TCPFuzzing测试序列分析测试的实施需要实现几个方面进行评估(见图4):

2:系统通过14个连续的报文交互序列对被测系统进行基于HTTP协议的Fuzzing测试

图2 DIAMETER:LocationInfoCommands交互流程

6 SPIRENT安全与系统漏洞验证方案

如图5所示,通过Avalanche构建一个Fuzzing测试框架进行测试,AvalancheNext通过B/S架构帮助大家灵活快速地部署测试任务。

图3 DIAMETER交互报文图

图4  测试的实施需要实现几个方面进行评估

(1)创建测试组件(见图6)

●Fuzzing测试协议(见图7)

●测试主机

创建测试主机,仿真协议交互。

●测试相关子网

(2)创建并占用仪表资源构建测试队列(见图8)

AvalancheNext是思博伦研发生产的进行安全及应用领域通信网络测试的整体解决方案。Avalanche Next支持:

●Avalanche应用仿真提供

——两周更新一次的应用场景库。

——内置的场景模型和可定制的场景模型。

——可视化场景交互流程显示和开放的场景编辑工具MSL。

——基于场景的统计:PASS/Fail、L2和L7层统计。

图5 通过Avalanche构建一个Fuzzing测试框架进行测试

图6 创建测试组件

●Avalanche网络安全测试提供

——安全隧道测试IPSEC/SSL。

——持续更新的Attack/Malware库。

——可视化的攻击过程显示和灵活简便的配置。

——开放的Attack/Malware编辑变种工具MSL。

——攻击背景流量灵活选择。

——DDoS/Attack/Malware/Fuzzing/Scenario统一方案。

图7 Fuzzing测试协议

图8 创建并占用仪表资源构建测试队列

猜你喜欢
测系统黑盒测试方法
基于泊松对相关的伪随机数发生器的统计测试方法
一种基于局部平均有限差分的黑盒对抗攻击方法
基于定标模型云共享的奶牛粪水微型NIR现场速测系统
RSSP-I铁路信号安全通信协议的测试研究
基于云计算的软件自动化测试方法
DLD-100C型雷达测试方法和应用
无线电监测测向系统测向精度试验数据的分析方法
对改良的三种最小抑菌浓度测试方法的探讨
三维标测系统指导下射频消融治疗房颤的护理观察