一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于模糊测试的工业互联网漏洞挖掘方法及系统与流程

2021-10-24 11:55:00 来源:中国专利 TAG:互联网 漏洞 挖掘 模糊 特别


1.本发明涉及计算机技术领域,特别是涉及一种基于模糊测试的工业互联网漏洞挖掘方法及系统。


背景技术:

2.随着工业网络和互联网技术的发展,工业网络与传统ip网络的联系越来越紧密。在很多工业网络当中,存在着传统工业网络和ip网络的混合组网方式。传统工业网络和ip网络联系不断紧密的同时,其给工业网络所带来的安全威胁也越来越突出,近年来专门针对工业网络的病毒和木马层出不穷,并且有着愈演愈烈的趋势。因此,利用模糊测试对工业网络进行漏洞挖掘,提高工业网络安全的安全防护水平,有着极为重要的意义。
3.工控网络运行环境封闭、源代码获取困难,且受计算资源因素影响,无法安装调试器,难以满足代码审计、逆向工程等常见的漏洞挖掘技术的基本要求,而模糊测试技术作为目前最常见的黑盒测试技术,不依赖源代码和调试器,具有自动化程度高、误报率低等优点,可针对多种工控网络协议开展漏洞挖掘。目前,基于模糊测试的漏洞挖掘技术可有效地针对公有协议进行漏洞挖掘包括但不限于固件层面协议漏洞挖掘,但针对运行私有协议的工控网络尚未有较好的解决方案,存在着协议知识获取难、协议描述建模难等问题。


技术实现要素:

4.本发明的目的是提供一种基于模糊测试的工业互联网漏洞挖掘方法及系统,提高异常服务捕获及检测能力,进一步实现降低输入规模、增大漏洞挖掘命中率的目的,使得模糊测试效率大幅度提升。
5.为实现上述目的,本发明提供了如下方案:
6.一种基于模糊测试的工业互联网漏洞挖掘方法,包括:
7.捕获网络数据包,并是对所述网络数据包进行解析,确定已知协议的数据包和未知协议的数据包;
8.对所述未知协议的数据包进行通信层和链路层的层面解析,获取通信五元组以及pyload数据,进而提取应用层协议数据包;所述应用层协议数据包包括:未知协议的包头和载荷;
9.根据所述应用层协议数据包生成规则文件;
10.根据所述规则文件生成模糊测试的测试用例,并将所述模糊测试的测试用例进行封装;
11.将封装后的模糊测试的测试用例传送至目标设备进行异常检测。
12.可选地,所述捕获网络数据包,并是对所述网络数据包进行解析,确定已知协议的数据包和未知协议的数据包,之前还包括:
13.判断所述网络数据包是否达到数量阈值;
14.若达到,则进行解析;
15.若未达到,则继续捕获网络数据包。
16.可选地,所述捕获网络数据包,并是对所述网络数据包进行解析,确定已知协议的数据包和未知协议的数据包,之后还包括:
17.对所述已知协议的数据包采用有限状态机的方式进行识别,进而根据识别后的已知协议的数据包生成规则文件。
18.可选地,所述根据所述规则文件生成模糊测试的测试用例,并将所述模糊测试的测试用例进行封装,具体包括:
19.采用测试用例变异规则将所述规则文件生成所述模糊测试的测试用例。
20.可选地,所述将封装后的模糊测试的测试用例传送至目标设备进行异常检测,具体包括:
21.通过中间人或者重放攻击的方式与目标设备中的目标程序建立会话,将所述模糊测试的测试用例传输至所述目标程序中;
22.采用心跳和一致性检测检测算法检测所述目标设备中目标程序是否出现异常;
23.将引发异常的模糊测试的测试用例保存到日志文件中。
24.一种基于模糊测试的工业互联网漏洞挖掘系统,包括:
25.网络数据包解析模块,用于捕获网络数据包,并是对所述网络数据包进行解析,确定已知协议的数据包和未知协议的数据包;
26.应用层协议数据包提取模块,用于对所述未知协议的数据包进行通信层和链路层的层面解析,获取通信五元组以及pyload数据,进而提取应用层协议数据包;所述应用层协议数据包包括:未知协议的包头和载荷;
27.规则文件生成模块,用于根据所述应用层协议数据包生成规则文件;
28.模糊测试的测试用例生成模块,用于根据所述规则文件生成模糊测试的测试用例,并将所述模糊测试的测试用例进行封装;
29.异常检测模块,用于将封装后的模糊测试的测试用例传送至目标设备进行异常检测。
30.可选地,还包括:
31.判断模块,用于判断所述网络数据包是否达到数量阈值;
32.若达到,则进行解析;
33.若未达到,则继续捕获网络数据包。
34.可选地,还包括:
35.已知协议的数据包的规则文件生成模块,用于对所述已知协议的数据包采用有限状态机的方式进行识别,进而根据识别后的已知协议的数据包生成规则文件。
36.可选地,所述异常检测模块具体包括:
37.通信单元,用于通过中间人或者重放攻击的方式与目标设备中的目标程序建立会话,将所述模糊测试的测试用例传输至所述目标程序中;
38.异常检测单元,用于采用心跳和一致性检测检测算法检测所述目标设备中目标程序是否出现异常;
39.保存单元,用于将引发异常的模糊测试的测试用例保存到日志文件中。
40.一种用于实现所述的一种基于模糊测试的工业互联网漏洞挖掘方法的工控网络
协议模糊测试系统,包括:
41.数据通信模块,用于与目标设备进行网络通信;
42.工控协议解析模块,用于抽象出不同功能码的应用数据单元中相同的协议特征;
43.测试用例生成模块,用于依据变异因子和协议特征生成协议特征值,将协议特征值拼接为测试用例;
44.服务异常监测模块,获取请求队列和响应队列中的数据对象,使用请求响应比对特征或协议的请求与响应协议特征对应关系,对比协议特征值;若协议特征值不一致,则认为目标设备的数据异常。
45.根据本发明提供的具体实施例,本发明公开了以下技术效果:
46.本发明所提供的一种基于模糊测试的工业互联网漏洞挖掘方法及系统,对所述未知协议的数据包进行通信层和链路层的层面解析,获取通信五元组以及pyload数据,进而提取应用层协议数据包根据所述应用层协议数据包生成规则文件;根据所述规则文件生成模糊测试的测试用例,并将所述模糊测试的测试用例进行封装;将封装后的模糊测试的测试用例传送至目标设备进行异常检测。提高了模糊测试的测试用例的生成效率,进而提高了监控手段。能够对工业网络中的业务子网络和控制子网络进行有效的漏洞挖掘。能够兼容多种不同类型设备。提高异常服务捕获及检测能力,进一步实现降低输入规模、增大漏洞挖掘命中率的目的,使得模糊测试效率大幅度提升。
附图说明
47.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
48.图1为本发明所提供的一种基于模糊测试的工业互联网漏洞挖掘方法流程示意图;
49.图2为本发明所提供的一种基于模糊测试的工业互联网漏洞挖掘方法整体流程示意图;
50.图3为本发明所提供的一种基于模糊测试的工业互联网漏洞挖掘系统结构示意图;
51.图4为本发明所提供的工控网络协议模糊测试系统结构示意图;
52.图5为本发明所提供的数据通信模块工作原理图;
53.图6为本发明所提供的工控协议解析模块工作原理图;
54.图7为本发明所提供的测试用例生成模块工作原理图;
55.图8为本发明所提供的服务异常监测模块工作原理图。
具体实施方式
56.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
57.本发明的目的是提供一种基于模糊测试的工业互联网漏洞挖掘方法及系统,提高异常服务捕获及检测能力,进一步实现降低输入规模、增大漏洞挖掘命中率的目的,使得模糊测试效率大幅度提升。
58.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
59.图1为本发明所提供的一种基于模糊测试的工业互联网漏洞挖掘方法流程示意图,如图1所示,本发明所提供的一种基于模糊测试的工业互联网漏洞挖掘方法,包括:
60.s101,捕获网络数据包,并是对所述网络数据包进行解析,确定已知协议的数据包和未知协议的数据包;已知协议包括但不限于协议类型包括ethernet、arp、ip、icmp、igmp、udp、tcp、lldp、modbustcp、modbusrtu、iec104、iec61850、mms、goose、sv、profinet、s7或ethernet/ip。
61.s101之前还包括:
62.判断所述网络数据包是否达到数量阈值;
63.若达到,则进行解析;
64.若未达到,则继续捕获网络数据包。
65.s101之后还包括:
66.对所述已知协议的数据包采用有限状态机的方式进行识别,进而根据识别后的已知协议的数据包生成规则文件。
67.s102,对所述未知协议的数据包进行通信层和链路层的层面解析,获取通信五元组以及pyload数据,进而提取应用层协议数据包;所述应用层协议数据包包括:未知协议的包头和载荷;
68.s103,根据所述应用层协议数据包生成规则文件;
69.s104,根据所述规则文件生成模糊测试的测试用例,并将所述模糊测试的测试用例进行封装;
70.s104具体包括:
71.采用测试用例变异规则将所述规则文件生成所述模糊测试的测试用例。
72.s105,将封装后的模糊测试的测试用例传送至目标设备进行异常检测。
73.s105具体包括:
74.通过中间人或者重放攻击的方式与目标设备中的目标程序建立会话,将所述模糊测试的测试用例传输至所述目标程序中;
75.采用心跳和一致性检测检测算法检测所述目标设备中目标程序是否出现异常;
76.将引发异常的模糊测试的测试用例保存到日志文件中。
77.图2为本发明所提供的一种基于模糊测试的工业互联网漏洞挖掘方法整体流程示意图,如图2所示,本发明所提供的方法的具体过程为:
78.捕获网络数据包并解析;
79.判断是否为已知协议;
80.若是,则通过有限状态机的方式识别已知协议,对已知的协议直接生成规则文件。
81.若否,则判断已捕获的网络数据包数量是否满足对未知的协议进行解析的要求;
82.若否,则再次捕获网络数据包;
83.若是,则进行协议分析,对未知的协议进行已知层面的解析,提取其下一层协议的载荷,将下一层协议的载荷根据上一层协议的报文格式进行解析,得到只含有应用层部分的协议数据包。所述只含有应用层部分的协议数据包,包括:需要解析的未知协议的包头和载荷。
84.生成相应的规则文件;
85.使用系统知识库中现有的测试用例变异规则根据得到的规则文件生成模糊测试的测试用例,并封装;
86.异常检测:
87.通过中间人或者重放攻击的方式与目标程序建立会话,在将目标程序引至数据传输阶段后,所述测试用例作为网络数据包发送给目标程序;
88.使用心跳和一致性检测检测算法检测目标设备是否出现异常,若出现异常,则将异常信息以及引发异常的测试用例保存到日志文件中,进行异常记录。若否则向再次执行通过中间人或者重放攻击的方式与目标程序建立会话,在将目标程序引至数据传输阶段后,使用其他测试用例作为网络数据包发送给目标程序,依次执行后续步骤。
89.在协议分析部分中,针对现有的基于模糊测试的漏洞挖掘技术无法自动获取协议知识等问题,结合隐马尔可夫模型和统计计算的方法,提出了一种基于模式发现方法的协议结构分析方法,该方法使用优化的因果分割重构算法重构私有协议的ε机模型,可提取数据包中的常量部分,生成协议的基本结构描述模型,克服了漏洞挖掘测试的盲目性;本方法解决了传统工控模糊测试框架的协议解析部分无法解析工控网络协议的协议特征的问题,较传统模糊测试方法多了协议特征的解析,使得模糊测试效率大幅度提升。
90.在用例生成部分中,结合协议分析部分生成的协议描述模型,提出了多字段组合关联的模糊策略和基于动态抽样的样本生成方法,本方案通过减小测试用例的数量,增加异常字段的抽样率,可进一步实现降低输入规模、增大漏洞挖掘命中率的目的;
91.在监控代理部分中,为解决工控网络漏洞挖掘过程中难以对工控设备进行异常检测和定位问题,提出基于心跳检测的存活检测方案和基于simhash的一致性检测方案,可正确识别被测系统是否进入异常状态。传统模糊测试方法对于异常捕获部分能力较为薄弱,利用本方法提供的异常捕获检测方案可以提高异常服务捕获及检测能力。
92.图3为本发明所提供的一种基于模糊测试的工业互联网漏洞挖掘系统结构示意图,如图3所示,本发明所提供的一种基于模糊测试的工业互联网漏洞挖掘系统,包括:
93.网络数据包解析模块,用于捕获网络数据包,并是对所述网络数据包进行解析,确定已知协议的数据包和未知协议的数据包;
94.应用层协议数据包提取模块,用于对所述未知协议的数据包进行通信层和链路层的层面解析,获取通信五元组以及pyload数据,进而提取应用层协议数据包;所述应用层协议数据包包括:未知协议的包头和载荷;
95.规则文件生成模块,用于根据所述应用层协议数据包生成规则文件;
96.模糊测试的测试用例生成模块,用于根据所述规则文件生成模糊测试的测试用例,并将所述模糊测试的测试用例进行封装;
97.异常检测模块,用于将封装后的模糊测试的测试用例传送至目标设备进行异常检
测。
98.本发明所提供的一种基于模糊测试的工业互联网漏洞挖掘系统,还包括:
99.判断模块,用于判断所述网络数据包是否达到数量阈值;
100.若达到,则进行解析;
101.若未达到,则继续捕获网络数据包。
102.本发明所提供的一种基于模糊测试的工业互联网漏洞挖掘系统,还包括:
103.已知协议的数据包的规则文件生成模块,用于对所述已知协议的数据包采用有限状态机的方式进行识别,进而根据识别后的已知协议的数据包生成规则文件。
104.本发明所提供的一种基于模糊测试的工业互联网漏洞挖掘系统,所述异常检测模块具体包括:
105.通信单元,用于通过中间人或者重放攻击的方式与目标设备中的目标程序建立会话,将所述模糊测试的测试用例传输至所述目标程序中;
106.异常检测单元,用于采用心跳和一致性检测检测算法检测所述目标设备中目标程序是否出现异常;
107.保存单元,用于将引发异常的模糊测试的测试用例保存到日志文件中。
108.图4为本发明所提供的工控网络协议模糊测试系统结构示意图,如图4所示,本发明所提供的一种用于所述的一种基于模糊测试的工业互联网漏洞挖掘方法的工控网络协议模糊测试系统,包括:
109.数据通信模块,用于与目标设备(被测设备)进行网络通信;
110.工控协议解析模块,用于抽象出不同功能码的应用数据单元中相同的协议特征;
111.测试用例生成模块,用于依据变异因子和协议特征生成协议特征值,将协议特征值拼接为测试用例;
112.服务异常监测模块,获取请求队列和响应队列中的数据对象,使用请求响应比对特征或协议的请求与响应协议特征对应关系,对比协议特征值;若协议特征值不一致,则认为目标设备的数据异常。
113.每个系统模块负责各自的业务逻辑,可独立运行,并且系统模块之间具有功能的交互,以下概述各个系统模块之间的关系。
114.数据通信模块是唯一与被测对象进行直接交互的系统模块。数据通信模块主要负责获取测试数据,将数据封装成网络报文,与被测对象建立网络连接,向被测对象发送测试用例和用于旁路监听的网络报文。
115.工控协议解析模块中包括常见协议特征数据结构和协议特征解析模块,协议模型从数据通信模块中获取协议的网络报文,通过协议特征解析模块提取报文中的协议特征,以报文为单位,将协议特征存储为协议特征数据结构的内存对象。
116.测试用例生成模块负责从工控协议解析模块中获取工控网络协议的协议特征,结合测试用例生成策略的执行流程构造测试用例,将已构造的测试用例传递给数据通信模块。
117.服务异常监控模块负责从数据通信模块中获取被测对象的响应数据,以及从测试用例生成模块中获取已发送的测试用例,通过这两种数据,以工控tcp服务异常监控方法对请求报文和响应报文中的协议特征进行比对检测。在被测对象无响应时,调用测试用例生
成模块中的功能,构造正常的工控tcp测试用例,用于判断被测对象是否发生异常。在模糊测试的过程中,服务异常监控模块通过向被测对象发送icmp报文、arp请求和正常的工控网络报文进行旁路监听操作。还可以包括用于对私有协议的自动识别的,基于信息熵理论及无监督机器学习技术,对未知协议实现自动化的逆向分析健壮性测试的工控私有协议数据分类模块和工控私有协议特征学习模块。
118.具体表现为:
119.数据通信模块用于和被测对象进行网络通信,以网络报文的形式向被测对象发送测试用例以及接收被测对象的响应报文。由于工控网络协议是严格的请求与响应模式的通信协议,并且在服务异常监控模块中需要实时对发送和接收的每一对数据进行比对监控,因此,使用两个线性存储结构分别存储请求与响应报文中的数据。
120.如图5所示,数据通信模块工作原理:
121.(1)启动数据通信模块。
122.(2)建立socket对象。数据通信模块获取被测对象的ip地址和tcp端口,实例化tcp的socket对象。
123.(3)建立tcp连接。调用socket对象的异步connect函数,与被测对象建立tcp连接。
124.(4)数据交互。
125.(5)停止数据通信模块。
126.工控协议解析模块可根据软件工程中类与类之间的继承关系,可以抽象出不同功能码的应用数据单元中相同的协议特征。依赖继承关系,使用面向对象技术的多态性可以优化负责调用应用数据单元对象的程序代码。
127.如图6所示,工控协议解析模块工作原理
128.(1)启动协议解析模块。
129.(2)获取一个对应协议的应用数据单元。
130.(3)获取协议对应的功能码。
131.(4)实例化请求数据的对象。
132.(5)实例化响应数据的对象。
133.(6)填充属性值。
134.(7)结束协议解析模块。
135.测试用例生成模块负责依据变异因子和协议特征生成协议特征值,将协议特征值拼接为测试用例。无论生成工控公有协议的测试用例还是私有协议的测试用例,均需要首先生成协议头部中的协议特征值,然后生成data域,最后拼接协议头部和data域,生成一个工控网络协议测试用例。
136.如图7所示,测试用例生成模块工作原理
137.(1)启动测试用例生成模块。
138.(2)获取协议头部的协议特征序列。
139.(3)生成协议头部的数据。
140.(4)确定数据域的长度。
141.(5)生成测试用例。
142.(6)停止测试用例生成模块。
143.服务异常监控模块主要通过获取请求队列和响应队列中的数据对象,使用请求响应比对特征或协议的请求与响应协议特征对应关系,对比协议特征值,如果数据不符合比对特征或协议特征对应关系,则认为服务端响应的数据异常。
144.如图8示,服务异常监测模块工作原理:
145.(1)启动服务异常监控模块。
146.(2)获取一对请求响应数据。获取数据通信模块中的响应队列和请求队列,通过两个队列中字典元素的key值,即一对请求与响应数据的唯一标识,匹配一对请求响应数据。
147.(3)监控工控tcp服务。判断工控协议是否正常,如果fc不相等,则检测响应数据是否为该fc对应的异常功能码,如果是对应的异常功能码,则认为响应数据正常,反之,响应数据异常。
148.(4)停止服务异常监控模块。
149.本系统方法支持协议漏洞挖掘,同时也支持通过协议进行固件的漏洞挖掘。由于固件通过服务端接收指令固件与服务端通信所使用的的协议为工控协议。因此,本方法可以通过协议对固件进行漏洞挖掘。本方法协议覆盖面较广,支持已知通用工控协议的漏洞挖掘。
150.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
151.本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜