基于生成对抗网络和模糊测试的工业控制系统漏洞发现方法

文档序号:33820887发布日期:2023-04-19 19:21阅读:94来源:国知局
基于生成对抗网络和模糊测试的工业控制系统漏洞发现方法

本发明属于工业控制系统安全领域,具体地说,是一种基于生成对抗网络和模糊测试的工业控制系统漏洞发现方法。


背景技术:

1、工业控制系统(industrial control system,ics)是一类工业生产自动化系统,主要由物理过程、传感器、执行器、控制器、人机界面、数据库等设备组成。工业控制系统作为国家关键基础设施的重要组成部分,其应用涉及电力、医药、化工、交通等各行业领域,其中,80%以上涉及国民经济和社会民生的关键基础设施依靠工业控制系统实现自动化。可以说,工业控制系统的安全性己与国家的战略安全息息相关。

2、传统发现漏洞的方法有静态分析技术、动态分析技术等。静态分析技术是在目标程序未编译的状态下对目标程序进行分析研究,从而发现目标程序中存在的安全漏洞的技术,如协议逆向技术、二进制对比技术等,其优点是代码覆盖率高,漏报少。但由于其缺少对运行过程中的安全分析,漏洞挖掘的精确度比较小,且误报率较高。动态分析技术是通过检测系统或程序在运行过程中状态的变化来发现其中潜在的安全漏洞的技术,如模糊测试、风波测试、双向测试等。相对于静态分析技术来说,具有更高的精确度且更全面,但代码覆盖率较低,且当程序无法运行时无法进行漏洞发现。

3、模糊测试是指向目标软件程序输入大量非预期的畸形数据,通过监测目标程序的异常来发现应用程序中可能存在的安全缺陷。模糊测试是一个自动或半自动的过程,这个过程需要反复操纵目标软件并为其提供处理数据。提供的数据需要根据定义和规范来设计和生成,对一些特定系统和环境进行人工分析并设计相关的规范也有一定的难度和要求,且需要花费大量时间。


技术实现思路

1、本发明提供了一种基于生成对抗网络和模糊测试的工业控制系统漏洞发现方法,解决了传统的漏洞发现技术难以获取私有协议结构和信息的问题,同时以真实流量作为样本生成接近真实流量的数据进行自动化测试节省了大量的人工时间,在降低测试用例废弃率的同时提高了用例的多样性和漏洞的发现率。

2、为了解决上述技术问题,本发明采用的技术方案如下:

3、一种基于生成对抗网络和模糊测试的工业控制系统漏洞发现方法,包括:

4、步骤1,数据流量捕获和预处理。系统接入被测工业控制系统后,自动收集被测系统中的真实流量并进行预处理,如数据编码转换、数据聚类、数据补长等;

5、步骤2,漏洞库特征提取。使用relieff算法对漏洞特征进行提取。

6、步骤3,网络模型架构设计。生成对抗网络(gan)包括生成器模型和判别器模型,通过二者之间的多次博弈,使判别模型无法判断生成模型生成数据的真假,达到平衡。方法模型使用了wasserstein gan(wgan)作为模糊测试用例生成的网络架构。

7、步骤4,模型训练和用例生成。将处理好的数据集划分成等大小的批次(batch),不断地进行训练,每个周期(epoch)训练生成器5次,判别器一次。通过保持生成数据和真实数据的差异可以提高模型发现漏洞的能力,所以每10个训练周期保存一次生成模型,用于生成不同差异度的数据。对那些可以引发漏洞和异常的生成数据对其进行增强和畸变操作后重新放入数据集进行重训练。

8、步骤5,模糊测试用例发送和异常监测。将生成的数据封装成ip数据报或mac帧发送到目标设备,同时对被测设备进行监测,记录出现的异常和错误,保存引发异常和漏洞的数据包,便于重训练,更新漏洞库。

9、进一步地,步骤1所述数据流量捕获和预处理,方法如下:

10、步骤1.1:数据编码转换,由于流量数据的十六进制字符无法被处理,将其进行一维编码转换,先将ip、时间戳等不适合学习的特征去掉后,转换为对应的十进制数字。

11、步骤1.2:数据聚类,使用了根据长度聚类和k-means聚类,使数据能够被更好的分类。

12、步骤1.3:数据补长,使用无关字符将数据补充到最大长度,统一数据结构。

13、进一步地,步骤2所述漏洞库特征提取,方法如下:

14、步骤2.1:漏洞库建立,从漏洞网站上预收集已有工业控制系统漏洞信息并收集或复现poc。

15、步骤2.2:漏洞特征提取,使用relieff算法对漏洞poc进行特征提取。relieff算法是relief算法的改进,前者可以解决多分类问题特征处理,后者仅限于二分类问题,二者在特征选择时都是通过距离度量。relieff算法对特征和类别的相关性的判断方式是根据特征对近距离样本的区分能力,使用间距来决定相关特征属性的特征权重,权重小于某一个值时,这个特征属性就会被移除。

16、relieff算法每次从数据样本中随机的选取出一个样本r,然后在和r同类别的数据样本中找到r的k个近邻样本h,接下来在和r不同类别的数据样本中均找到k个近邻样本m,根据同一类的样本应该比不同类的样本更相似这一假定,在同一个特征a下,如果r和同类别近邻样本h之间的距离要小于和不同类别近邻样本m之间的距离,这时,特征a被赋予较大的权重,来保证这个特征a对分类有较高影响;如果r和同类别样本h之间的距离要大于或者等于和不同类别样本m之间的距离,表明这个特征a同类别和不同类别的近邻样本分类能力较差,被赋予较小权重,权重数学公式如下:

17、

18、

19、其中,m代表样本的抽样次数,表示要进行m次抽样,diff(a,r,hj)代表在特征a下,两个样本之间的差值;p(c)代表在类别c中,选出的k个近邻样本个数占比样本总数;class(r)代表样本r的所属类别;mj(c)代表类别c中的第j个近邻样本。

20、进一步地,步骤3所述网络模型架构设计,方法如下:

21、步骤3.1:网络模型使用gan的一种变体——的wasserstein gan(wgan),与经典gan相比,wgan引入了wasserstein距离代替js散度,改进了生成器的损失函数。方法通过计算wasserstein距离,来计算数据分布和真实数据分布之间的距离,计算公式如下:

22、

23、其中pr表示真实分布,pg表示生成分布,inf表示最大下界,π(pr,pg)表示pr和pg组合起来的所有可能的联合分布的集合,对于每一个可能的联合分布γ而言,可以从中采样(x,y)~γ得到一个真实样本x和一个生成样本y,并算出这对样本的距离||x-y||,所以可以计算该联合分布γ下样本对距离的期望值在所有可能的联合分布中能够对这个期望值取到的下界就定义为wasserstein距离。

24、步骤3.2:wgan在经典gan的基础上,利用lipschitz连续性限制条件,将wasserstein距离引入,解决了js散度存在的梯度消失和模型崩溃问题。

25、原始目标函数如下:

26、

27、改进后的wgan目标函数计算如下:

28、

29、其中fω表示最后一层不是非线性激活层的判别器网络,在上式尽可能取到最大时,l就会近似真实分布与生成分布之间的wasserstein距离。由此也可得出模型的两个损失函数,如下:

30、wgan生成器损失函数:

31、

32、wgan判别器损失函数:

33、

34、进一步地,步骤4所模型训练和用例生成,方法如下:

35、步骤4.1:生成器g,一层输入层,五层隐藏层,一层输出层,隐藏层使用relu作为激活函数。使用rmsprop(root mean square prop)作为优化算法。

36、步骤4.2:判别器d,一层输入层,一层隐藏层,一层输出层。每个训练周期结束将权重矩阵中的值裁剪到一定的范围,来满足lipschitz连续性。

37、步骤4.3:训练生成模型,设置g和d的学习率为0.001,每个训练周期g训练5次,d训练1次。训练50个周期,每10个训练周期保存一次生成器模型。

38、步骤4.4:生成模糊测试用例,利用训练好的模型生成大量测试用例用于后续漏洞发现。

39、进一步地,步骤5所述模糊测试用例发送和异常监测,方法如下:

40、步骤5.1:测试用例发送,将生成的流量数据封装成ip数据报或mac帧发送的被测设备。

41、步骤5.2:异常监测,监听被测设备对数据包的响应和被测设备的异常状态。

42、步骤5.3:异常记录,记录异常信息,并保存引起异常的数据包,并与漏洞库对比。

43、步骤5.4:漏洞库更新,将异常信息和设备信息整合成漏洞信息,加入漏洞库。

44、本发明与现有技术相比,其显著优点为:(1)模糊测试用例的生成不需要了解协议的具体结构和通信方式;(2)使用生成对抗网络进行模糊测试用例生成可以解决模糊测试用例丢弃率高的问题。(3)使用wgan模型解决了传统模型的梯度消失和模型崩溃问题。(4)使用真实流量进行学习训练,生成的流量有一定真实性,且多样性大幅提高,提高测试覆盖率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1