一种工控系统协议模糊测试的脚本管理方法技术方案

技术编号:20865857 阅读:27 留言:0更新日期:2019-04-17 09:13
本发明专利技术涉及一种工控系统协议模糊测试的脚本管理方法,采用如下步骤:步骤一:对模糊测试中的脚本采用分层管理的方式,形成六个层次的树式结构;上述六个层次为:行业层、协议层、脚本层、PDU层、结构层、字段层;它采用分层管理方式来架构测试脚本以及测试用例,且构建综合协议测试畸形数据体系,它能够减少测试脚本的数量,通过模糊引擎自动按照数据集合生成相应的测试用例,实现了测试的自动化,缩短测试时间,提高模糊测试效率。

【技术实现步骤摘要】
一种工控系统协议模糊测试的脚本管理方法
本专利技术涉及一种工控系统协议模糊测试的脚本管理方法。
技术介绍
模糊测试是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。模糊测试是一项用于验证程序中真实错误的重要工具,也是所有意识到安全性问题且着力于程序健壮性的程序员们的工具箱中所必备的工具。各行业都有各自的工控设备和通讯协议,工控系统多种多样,随着国家对工业领域安全的重视,针对工控协议的模糊测试工具也开始受到重视,目前市场上的模糊测试产品很多,但是对于如何管理测试脚本,目前为止尚未形成整套高效的管理方法和体系。
技术实现思路
本专利技术的目的在于针对现有技术的缺陷和不足,提供一种工控系统协议模糊测试的脚本管理方法,其提出一整套完整的模糊测试脚本通用管理方法,将适用于大部分工控协议模糊测试工具,极大提高了测试效率。为实现上述目的,本专利技术采用的技术方案是:本专利技术所述的一种工控系统协议模糊测试的脚本管理方法,采用如下步骤:步骤一:对模糊测试中的脚本采用分层管理的方式,形成六个层次的树式结构;上述六个层次为:行业层、协议层、脚本层、PDU层、结构层、字段层;(1)根据不同行业进行分类管理,形成按行业层管理树式结构;(2)针对步骤(1)行业来对该行业所涉及的协议进行管理,形成协议层;以电力行业为例,协议层包括协议MMS、协议Modbus、协议OPCUA等;(3)针对步骤(2)中的不同协议,按功能码类型进行区分,如MMS进行read脚本、Write脚本进行管理,协议OPCUA进行OpenChannel脚本、CreatSession脚本等的管理,形成脚本层;(4)针对步骤(3)中的read脚本实现对协议数据单元PDU-TPKT、PDU-COTP、PDU-Request管理,OpenChannel脚本实现对协议数据单元PDU-Request等管理,形成PDU层;(5)针对步骤(4)的协议数据单元PDU-Request来构建Struct结构,形成结构层;(6)针对步骤(5)中的Struct结构来构建Field字段、length字段,形成字段层;步骤二:针对步骤一中的脚本层,其脚本采用XML规范定义;步骤三:根据步骤二中的脚本层来进行脚本约束,在需要动态计算的字段或者结构中,增加约束函数,模糊测试引擎根据不同的约束函数,调用不同的约束计算方法,生成动态数据,并自动填充到相应的测试用例数据域中;(1)采用CRC计算校验;(2)字段长度计算,根据指定的数据域,将模糊后的数据重新统计计算出新的字段长度,并填充;(3)字段自增,定义变量,根据协议规范执行相应的计算,并将结果填充;(4)自动获取时间,并填充相应字段;(5)签名加密计算,根据协议规范指定的算法,将模糊后的数据重新计算签名值或加密值,并填充;(6)根据返回值计算,提取上一次被测设备返回的数据包中相应的字段,计算并填充;步骤四:根据步骤二中的脚本层来进行脚本变异,产生海量测试用例;其变异方法包括:(1)替换,使用特定的值替换当前字段,产生新的测试用例;(2)插入,在当前指定位置插入相应的测试值,产生新的测试用例;(3)随机,使用随机数据替换当前字段,产生新的测试用例;(4)交换,将指定两个位置字段的数据做交换,产生新的测试用例;(5)重复,重复指定位置字段的值,产生新的测试用例;(6)删除,删除指定位置字段的值,产生新的测试用例;步骤五:针对步骤一中的步骤(6)中的字段层,建立综合协议测试畸形数据构建体系;(1)经验数据:收集所有以往容易引起错误的数据;(2)边界数据:起始数据、结束数据以及中间数据等特殊点;(3)随机数据:数据根据种子随机生成,每次测试种子发生变化,但在发现漏洞后可保证重现生成随机数据;(4)步骤(1)-步骤(3)中数据包含了容易引起漏洞的数据,脚本中只需定义相应的变异函数和变异数据类型,模糊引擎自动按照数据集合生成相应的测试用例,实现了测试的自动化。进一步地,步骤三中的步骤(1)的CRC计算校验包括各种CRC计算方式,分别为ModbusCRC计算方式、CRC32计算方式、CRC8计算方式或CRCDNP等计算方式。进一步地,步骤五中的经验数据构成经验数据库,边界数据构成边界值数据库,随机数据构成随机值数据库;经验数据库、边界值数据库、随机值数据库构建畸形数据库。本专利技术有益效果为:本专利技术所述的一种工控系统协议模糊测试的脚本管理方法,采用分层管理方式来架构测试脚本以及测试用例,且构建综合协议测试畸形数据体系,它能够减少测试脚本的数量,通过模糊引擎自动按照数据集合生成相应的测试用例,实现了测试的自动化,缩短测试时间,提高模糊测试效率。附图说明图1是本专利技术的拓扑示意图;具体实施方式下面结合附图对本专利技术作进一步的说明。如图1所示,本专利技术所述的一种工控系统协议模糊测试的脚本管理方法,采用如下步骤:步骤一:对模糊测试中的脚本采用分层管理的方式,形成六个层次的树式结构;上述六个层次为:行业层、协议层、脚本层、PDU层、结构层、字段层;(1)根据不同行业进行分类管理,形成按行业层管理树式结构;(2)针对步骤(1)行业来对该行业所涉及的协议进行管理,形成协议层;以电力行业为例,协议层包括协议MMS、协议Modbus、协议OPCUA;(3)针对步骤(2)中的协议MMS进行read脚本、Write脚本进行管理,协议OPCUA进行OpenChannel脚本、CreatSession脚本管理,形成脚本层;(4)针对步骤(3)中的read脚本实现对协议数据单元PDU-TPKT、PDU-COTP、PDU-Request管理,OpenChannel脚本实现对协议数据单元PDU-Request管理,形成PDU层;(5)针对步骤(4)的协议数据单元PDU-Request来构建Struct结构,形成结构层;(6)针对步骤(5)中的Struct结构来构建Field字段、length字段,形成字段层;本专利技术中,采用分层管理的方式能够有效的管理所有测试脚本,并形成统一的规范,有利于是实现自动化测试。整个脚本管理体系分为六个层次:行业,协议,脚本,PDU,结构,字段。后三级根据协议规范的具体实现形成,是协议模糊测试的数据部分,前三层用于实现对所有测试用例和脚本的方便管理。步骤二:针对步骤一中的脚本层,其脚本采用XML规范定义;本专利技术中,可扩展标记语言XML是一种简单灵活的文本格式的可扩展标记语言,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML具有以下特点:(1)自描述,XML是一种标记语言,其内容由相应的标记来标识,具有自描述的特点;(2)可扩展性,XML是一种可扩展的标记语言,用户可以定义自己的标记来表达自己的数据;(3)内容和显示分离,XML只描述数据本身,与数据相关的显示则由另外的处理程序来完成;(4)本地计算,XML解析器读取数据,可以将它交给本地的应用程序进一步查看和处理;(5)个性化数据视图,数据可以特定的形式在视图中动态表现给用户;(6)数据集成,可以描述和集成多种应用程序的不同格式的数据;步骤三:根据步骤二中的脚本层来进行脚本约束,在需要动态计算的字段或者结构中,增加约束函数,模糊测本文档来自技高网...

【技术保护点】
1.一种工控系统协议模糊测试的脚本管理方法,其特征在于:采用如下步骤:步骤一:对模糊测试中的脚本采用分层管理的方式,形成六个层次的树式结构;上述六个层次为:行业层、协议层、脚本层、PDU层、结构层、字段层;(1)根据不同行业进行分类管理,形成按行业层管理树式结构;(2)针对步骤(1)行业来对该行业所涉及的协议进行管理,形成协议层;以电力行业为例,协议层包括协议MMS、协议Modbus、协议OPCUA;(3)针对步骤(2)中的不同协议,按功能码类型进行区分,如协议MMS进行read脚本、Write脚本的类型脚本进行管理,协议OPCUA进行OpenChannel脚本、CreatSession脚本管理,形成脚本层;(4)针对步骤(3)中的read脚本实现对协议数据单元PDU‑TPKT、PDU‑COTP、PDU‑Request管理,OpenChannel脚本实现对协议数据单元PDU‑Request管理,形成PDU层;(5)针对步骤(4)的协议数据单元PDU‑Request来构建Struct结构,形成结构层;(6)针对步骤(5)中的Struct结构来构建Field字段、length字段,形成字段层;步骤二:针对步骤一中的脚本层,其脚本采用XML规范定义;步骤三:根据步骤二中的脚本层来进行脚本约束,在需要动态计算的字段或者结构中,增加约束函数,模糊测试引擎根据不同的约束函数,调用不同的约束计算方法,生成动态数据,并自动填充到相应的测试用例数据域中;(1)采用CRC计算校验;(2)字段长度计算,根据指定的数据域,将模糊后的数据重新统计计算出新的字段长度,并填充;(3)字段自增,定义变量,根据协议规范执行相应的计算,并将结果填充;(4)自动获取时间,并填充相应字段;(5)签名加密计算,根据协议规范指定的算法,将模糊后的数据重新计算签名值或加密值,并填充;(6)根据返回值计算,提取上一次被测设备返回的数据包中相应的字段,计算并填充;步骤四:根据步骤二中的脚本层来进行脚本变异,产生海量测试用例;其变异方法包括:(1)替换,使用特定的值替换当前字段,产生新的测试用例;(2)插入,在当前指定位置插入相应的测试值,产生新的测试用例;(3)随机,使用随机数据替换当前字段,产生新的测试用例;(4)交换,将指定两个位置字段的数据做交换,产生新的测试用例;(5)重复,重复指定位置字段的值,产生新的测试用例;(6)删除,删除指定位置字段的值,产生新的测试用例;步骤五:针对步骤一中的步骤(6)中的字段层,建立综合协议测试畸形数据构建体系;(1)经验数据:收集所有以往容易引起错误的数据;(2)边界数据:起始数据、结束数据以及中间数据等特殊点;(3)随机数据:数据根据种子随机生成,每次测试种子发生变化,但在发现漏洞后可保证重现生成随机数据;(4)步骤(1)‑步骤(3)中数据包含了容易引起漏洞的数据,脚本中只需定义相应的变异函数和变异数据类型,模糊引擎自动按照数据集合生成相应的测试用例,实现了测试的自动化。...

【技术特征摘要】
1.一种工控系统协议模糊测试的脚本管理方法,其特征在于:采用如下步骤:步骤一:对模糊测试中的脚本采用分层管理的方式,形成六个层次的树式结构;上述六个层次为:行业层、协议层、脚本层、PDU层、结构层、字段层;(1)根据不同行业进行分类管理,形成按行业层管理树式结构;(2)针对步骤(1)行业来对该行业所涉及的协议进行管理,形成协议层;以电力行业为例,协议层包括协议MMS、协议Modbus、协议OPCUA;(3)针对步骤(2)中的不同协议,按功能码类型进行区分,如协议MMS进行read脚本、Write脚本的类型脚本进行管理,协议OPCUA进行OpenChannel脚本、CreatSession脚本管理,形成脚本层;(4)针对步骤(3)中的read脚本实现对协议数据单元PDU-TPKT、PDU-COTP、PDU-Request管理,OpenChannel脚本实现对协议数据单元PDU-Request管理,形成PDU层;(5)针对步骤(4)的协议数据单元PDU-Request来构建Struct结构,形成结构层;(6)针对步骤(5)中的Struct结构来构建Field字段、length字段,形成字段层;步骤二:针对步骤一中的脚本层,其脚本采用XML规范定义;步骤三:根据步骤二中的脚本层来进行脚本约束,在需要动态计算的字段或者结构中,增加约束函数,模糊测试引擎根据不同的约束函数,调用不同的约束计算方法,生成动态数据,并自动填充到相应的测试用例数据域中;(1)采用CRC计算校验;(2)字段长度计算,根据指定的数据域,将模糊后的数据重新统计计算出新的字段长度,并填充;(3)字段自增,定义变量,根据协议规范执行相应的计算,并将结果填充;(4)自动获取时间,并填充相应字段;(...

【专利技术属性】
技术研发人员:王进吴涛何跃鹰摆亮邹潇湘郭涛李明柱
申请(专利权)人:国家计算机网络与信息安全管理中心
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1