一种基于协议状态的工控协议模糊测试方法技术

技术编号:13359003 阅读:685 留言:0更新日期:2016-07-17 17:09
本发明专利技术提供一种基于协议状态的工控协议模糊测试方法,包括以下步骤:协议状态机提取、报文序列库的构建、协议状态的引导、测试用例的发送与存储、基于心跳的异常监测、以及导致异常的测试报文定位。本发明专利技术针对工控协议模糊测试盲目性较大、测试效率低下的问题,依据工控组件所处的协议状态,向工控组件发送属于该协议状态的测试用例,有效扩展模糊测试的覆盖范围,提高测试用例的针对性。本发明专利技术基于心跳的异常监测具有广泛的适用性。此外,本发明专利技术对导致异常的测试报文的定位方法,能够高效准确的定位引发工控协议异常的单个报文或者报文序列,便于安全漏洞的挖掘和分析。

【技术实现步骤摘要】

本专利技术涉及工控协议
,具体而言涉及一种在获取工控协议协议状态机的基础上,依据协议状态,向运行工控协议实体程序的工控组件发送测试报文,挖掘工控协议实体程序存在的安全漏洞的方法。
技术介绍
工业控制系统(ICS,IndustrialControlSystem,简称“工控系统”)是由计算机设备与工业过程控制组件构成的智能控制系统,广泛应用于电力、水处理、石油与天然气、化工、交通运输、制造业等行业,它通过对机械装置、交通工具、实验装置、仪器仪表等工业设备进行自动化监测、指挥、控制和调节,保证工业设施的正常运转,是国家关键基础设施的大脑和中枢。工控系统主要包括数据采集与监控系统(SCADA,SupervisoryControlandDataAcquisition)、分布式过程控制系统(DCS,DistributedControlSystem)、可编程逻辑控制器(PLC,ProgrammableLogicController)、远程测控单元(RTU,RemoteTerminalUnit)等等。传统的工控系统由于运行环境封闭、专用性强,在系统设计上注重功能的完整性,较少关注系统的安全性,风险防护能力薄弱。随着工业革命步伐的加快,工控系统由相对封闭的运行环境加速向网络化和信息化转变,新一代的工控系统逐步兼容以太网,使之能够与ERP乃至互联网相连。工控系统的工业化和信息化的深度融合,在提高工业生产效率的同时,也使工控系统的脆弱点暴露出来,一旦遭受不法分子的恶意攻击,将会造成不可估量的经济损失,甚至影响到社会的安全稳定。2010年以来,世界范围出现了多起工控安全事件。2010年攻击伊朗布什尔核电站的“震网(Stuxnet)”病毒被认为是全球首个投入实战的网络超级武器。2011年发现的恶性蠕虫“Duqu”病毒,专门攻击工控系统并收集情报。2012年发现的“火焰(Flame)”病毒,其设计更为复杂,破坏力更强,可能已经潜伏5年之久。2014年,“蜻蜓组织”利用“Havex”病毒,对欧美地区的一千多家能源企业实施了攻击。同普通计算机网络或信息系统一样,攻击者之所以能够对工控系统实施攻击,其核心原因是工控网络或系统中的软硬件存在可利用的安全漏洞。对工控系统中的软硬件进行安全性测试,挖掘其中可能存在的安全漏洞,先于攻击者采取相应补救措施,对提高工控系统的安全具有重要意义。模糊测试,也称Fuzzing测试,它使用大量半有效的数据作为目标程序的输入,通过监控程序出现的异常来发现潜在的安全漏洞。基于知识的Fuzzing技术依据文件或者协议格式知识构造测试用例,具有简单高效的优点,是当前Fuzzing测试领域的主要研究方向。工控系统中,各组件之间命令与控制信息、以及监测数据的传递都是通过工控网络协议来实现。在工控系统中,有专门的系统组件负责解析、处理工控网络协议,这些组件包含了解析工控协议的实体程序,它们的安全直接影响到工控系统的安全。将模糊测试技术应用于工控软硬件的脆弱性分析是当前工控安全领域的一个重要研究方向。目前,国内外已有研究大都是将TCP/IP网络协议的Fuzzing测试工具经过改进后用于工控协议的Fuzzing测试。美国TippingPoint公司的研究员Devarajan专门为Sulley开发了工控协议ICCP、Modbus、DNP3的模糊测试模块。德国奥格斯堡应用技术大学的RolandKoch等人在Scapyfuzzer的基础上研制了ProFuzz,专门针对Profinet协议族进行模糊测试。Wurldtech公司的Byres等人设计并实现了BlackPeer测试框架,对两款PLC设备的Modbus/TCP协议栈进行测试,成功发现了60多个安全漏洞。Bratus等人在通用Fuzzing测试器GPF基础上实现了一个简单的工控协议模糊测试器LZFuzz。目前,Fuzzing技术在工控系统中的应用主要存在以下两方面不足。第一,模糊测试的覆盖率低。工控协议大多面向会话,具备交互状态,如果在测试过程中没有考虑协议的交互状态,测试往往局限于协议交互的初始阶段。此外,如果协议报文与协议状态不匹配,也会被协议实体视为无效报文,无法触发漏洞。第二,测试方式和监控手段受限。工控系统中的很多漏洞并不是由于单个报文所造成,而是由于报文序列逐步将协议实体从某一协议状态逐步引导到漏洞触发的协议状态,现有监控方法难以有效定位引发漏洞的报文序列。
技术实现思路
针对现有技术中存在的问题,本专利技术旨在提供一种基于协议状态的工控协议模糊测试方法。针对模糊测试过程没有充分考虑协议状态,造成测试效率低下的问题,采用XML脚本对协议状态机进行描述,在协议状态机的基础上,通过测试用例生成算法对被测对象进行状态引导,将协议实体程序设置为希望进行测试的候选状态,以达到更高的模糊测试覆盖率。通过基于心跳的监测方法对被测嵌入式工控设备实施便捷、有效的异常行为监测,采用报文回溯判定的方法实现对引起安全漏洞的报文序列的准确定位。为达成上述目的,本专利技术所采用的技术方案如下:一种基于协议状态的工控协议模糊测试方法,包括以下步骤:(1)协议状态机提取:采用协议状态机提取方法,即采用开源协议逆向分析项目Netzob的协议状态机提取方法,其基本流程是:在协议通信报文样本集的基础上,利用请求询问和应答反馈不断扩充原始通信报文样本集,判断所推断的候选协议状态机是否与真实协议状态机一致,当满足协议状态机等价条件时输出协议状态机;在获得待测工控协议的协议状态机后,将协议状态机表示为XML语言描述的脚本文件;(2)报文序列库的构建:基于协议状态机,收集并存储工控协议实体程序间的正常交互报文;确保对于一个工控协议实体程序,当其处于初始状态时,能够通过一系列的正常交互报文,将工控协议实体程序引导至协议状态机中的任意一个工控协议状态,或者说,报文序列库收集并存储了足够多的正常交互报文,能够将协议实体由初始状态引导到任意一个后续协议状态;(3)协议状态的引导:为了提高测试的深度,增加覆盖率,需要对协议状态机包含的各个协议状态进行测试,从而有效发现工控组件处于不同协议状态时存在的安全漏洞;在测试过程中,需要将工控组件通过正常的交互报文引导至需要测试的某一个工控协议状态,在该协议状态下对工控组件实施模糊测试;(4)测试用例的发送与存储:在将工控协议实体程序引导到待测状态后,基于模糊测试的报文变异知识对工控协议报文进行变异,向工控协议实体程序发送经过变异的本文档来自技高网
...

【技术保护点】
一种基于协议状态的工控协议模糊测试方法,其特征在于,包括以下步骤:(1)协议状态机提取:采用协议状态机提取方法,即采用开源协议逆向分析项目Netzob的协议状态机提取方法,其基本流程是:在协议通信报文样本集的基础上,利用请求询问和应答反馈不断扩充原始通信报文样本集,判断所推断的候选协议状态机是否与真实协议状态机一致,当满足协议状态机等价条件时输出协议状态机;在获得待测工控协议的协议状态机后,将协议状态机表示为XML语言描述的脚本文件;(2)报文序列库的构建:基于协议状态机,收集并存储工控协议实体程序间的正常交互报文;确保对于一个工控协议实体程序,当其处于初始状态时,能够通过一系列的正常交互报文,将工控协议实体程序引导至协议状态机中的任意一个工控协议状态,或者说,报文序列库收集并存储了足够多的正常交互报文,能够将协议实体由初始状态引导到任意一个后续协议状态;(3)协议状态的引导:为了提高测试的深度,增加覆盖率,需要对协议状态机包含的各个协议状态进行测试,从而有效发现工控组件处于不同协议状态时存在的安全漏洞;在测试过程中,需要将工控组件通过正常的交互报文引导至需要测试的某一个工控协议状态,在该协议状态下对工控组件实施模糊测试;(4)测试用例的发送与存储:在将工控协议实体程序引导到待测状态后,基于模糊测试的报文变异知识对工控协议报文进行变异,向工控协议实体程序发送经过变异的报文实施测试;此外,为了便于后续分析,将存储所发送的测试用例;(5)基于心跳的异常监测:在发送完一个测试用例后,需要发送用于探测工控组件活跃情况的心跳报文,对被测工控组件进行监测,判断被测对象是否处于正常活跃状态,从而及时发现由于测试用例发送而导致的协议异常;(6)导致异常的测试报文定位:工控协议的处理异常可能由单个报文引起,也可能由报文序列导致;为了准确定位导致异常的测试报文,需要在测试端存储近期所发送的测试报文;当出现异常时,将被测工控组件重置为正常工作状态,依据所存储的报文进行回溯,确定导致异常的报文或者报文序列。...

【技术特征摘要】
1.一种基于协议状态的工控协议模糊测试方法,其特征在于,包括以下步骤:
(1)协议状态机提取:采用协议状态机提取方法,即采用开源协议逆向分析项目Netzob的协议状态机提取方法,其基本流程是:在协议通信报文样本集的基础上,利用请求询问和应答反馈不断扩充原始通信报文样本集,判断所推断的候选协议状态机是否与真实协议状态机一致,当满足协议状态机等价条件时输出协议状态机;在获得待测工控协议的协议状态机后,将协议状态机表示为XML语言描述的脚本文件;
(2)报文序列库的构建:基于协议状态机,收集并存储工控协议实体程序间的正常交互报文;确保对于一个工控协议实体程序,当其处于初始状态时,能够通过一系列的正常交互报文,将工控协议实体程序引导至协议状态机中的任意一个工控协议状态,或者说,报文序列库收集并存储了足够多的正常交互报文,能够将协议实体由初始状态引导到任意一个后续协议状态;
(3)协议状态的引导:为了提高测试的深度,增加覆盖率,需要对协议状态机包含的各个协议状态进行测试,从而有效发现工控组件处于不同协议状态时存在的安全漏洞;在测试过程中,需要将工控组件通过正常的交互报文引导至需要测试的某一个工控协议状态,在该协议状态下对工控组件实施模糊测试;
(4)测试用例的发送与存储:在将工控协议实体程序引导到待测状态后,基于模糊测试的报文变异知识对工控协议报文进行变异,向工控协议实体程序发送经过变异的报文实施测试;此外,为了便于后续分析,将存储所发送的测试用例;
(5)基于心跳的异常监测:在发送完一个测试用例后,需要发送用于探测工控组件活跃情况的心跳报文,对被测工控组件进行监测,判断被测对象是否处于正常活跃状态,从而及时发现由于测试用例发送而导致的协议异常;
(6)导致异常的测试报文定位:工控协议的处理异常可能由单个报文引起,也可能由报文序列导致;为了准确定位导致异常的测试报文,需要在测试端存储近期所发送的测试报文;当出现异常时,将被测工控组件重置为正常工作状态,依据所存储的报文进行回溯,确定导致异常的报文或者报文序列。
2.根据权利要求1所述的基于协议状态的工控协议模糊测试方法,其特征在于,前述步骤(2)报文序列库的构建阶段的工作流程如下:基于协议状态机,采用网络监听技术进行报文信息收集;每个工控协议状态,往往需要一系列的报文交互才会到达;采用网络监听技术,捕获从工控协议初始状态开始,到达每个特定协议状态的报文交互序列,并将报文交互序列以及它们所能够到达的报文状态一并存储在报文序列库中。
3.根据权利要求1所述的基于协议状态的工控协议模糊测试方法,其特征在于,前述步骤(3)协议状态的引导阶段的工作流程如下:为了便于将工控组件设置为不同的协议状态进行模糊测试,需要进行协议状态的引导;对于选定...

【专利技术属性】
技术研发人员:洪征吴礼发张亚丰田益凡赖海光李华波郑成辉黄康宇
申请(专利权)人:中国人民解放军理工大学
类型:发明
国别省市:江苏;32

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

1