发表时间: 2024-03-22 08:55:11
作者: 北京青草莓科技有限公司
浏览:
黑盒模糊测试一般基于模型生成变异数据,将变异数据通过外部接口输入给被测目标,并监控被测目标是否产生bug
黑盒模糊测试目前被广泛应用到协议,文件,网络API的安全测试活动当中
目前很多的黑盒模糊测试工具都仅仅支持很少的测试目标,我们将支持更多测试目标的黑盒模糊测试工具称为通用工具
通用黑盒模糊测试工具有很多,大家各不相同,但是大体上都应该拥有几个重要的组成部分
本文通过协议测试简单聊一下黑盒模糊测试工具的这几个重要组成部分,
模型解析
黑盒模糊测试套件一般由数据模型和状态模型两部分组成
数据模型定义协议报文各个字段的大小,类型,初始值,以及各个字段之间的关系,结构
状态模型定义协议交互过程,发包,收包,以及交互状态机,认证,响应等过程
模型解析是一个黑盒模糊测试工具的核心组件,开发难度极高,因为它要使将来编写测试套件的人员开发起来尽量简单,模型阅读清晰 ,并且通用
样本字段解析
工具里需要有一个通过数据模型解析样本的模块,主要为一下两种情况使用
1.接收报文解析 很多情况下,在协议交互过程中,需要将接收的报文通过模型解析出各个字段,用于判断交互的状态机过程 ,信息交换,认证等
2.很多测试套件的样本初始值并不存放在数据模型里,而是有一个样本库,然后通过模型解析样本库来获得初始样本各个字段的值
文件测试套大多采用这种情况,比如mp3测试套,测试套编写人员往往会编写一个比较通用的mp3数据模型,然后找到各种典型的mp3文件作为初始样本库供解析
数据变异
黑盒模糊测试的变异主要有以下几种
字段变异
字段变异基于各个字段的类型,大小和初始值进行变异
结构变异
可以基于模型开发结构变异,比如某个结构整体复制,移除,插入等
组合变异
多字段同时变异,或者字段变异和结构变异同时进行
组合变异样本
通过模型解析和变异,我们得到了各个字段变异后的值(单次测试并不是每个字段都变异),然后需要根据模型将这些字段组合在一起
在这个阶段要完成字段之间的联动关系,比如tlv,checksum计算等
这个过程和样本解析正好相反
发包器
黑盒模糊测试工具与被测目标的交互通过发包器
往往发包器决定了这个黑盒模糊测试工具支持那些被测目标
如果跟某个被测目标交互的发包器不支持,可以说这个黑盒模糊测试工具不支持这个测试目标
发包器的种类很多,常见的有tcp发包器,udp发包器,蓝牙发包器,文件发包器等
监控器
模糊测试的效果和监控器有很大关系,并不是所有的bug都能够很容易被观测到,根据被测目标针对性的选择监控器或者开发监控器往往事半功倍
另外及时监控也能快速找出bug是哪个用例触发的,为将来问题复现提供基础
常见的监控器有ping监控,tcp端口监控等
好的黑盒模糊测试工具应该是高度模块化的,并且对扩展极度友好
通用的黑盒模糊测试工具编写的成本极高,因此往往好的黑盒模糊测试工具都是商用工具
北京青草莓科技有限公司(模糊测试-解决方案提供商)
wanghao@cyan-strawberry.com
客服1