一种基于生成对抗网络的工控网络协议模糊测试方法技术

技术编号:39895402 阅读:20 留言:0更新日期:2023-12-30 13:08
本发明专利技术公开了一种基于生成对抗网络的工控网络协议模糊测试方法,包括:步骤1:使用训练数据集对

【技术实现步骤摘要】
一种基于生成对抗网络的工控网络协议模糊测试方法


[0001]本专利技术属于网络信息安全
,涉及深度学习技术及工控系统的漏洞挖掘技术,特别涉及一种基于生成对抗网络的测试用例生成方法及基于测试用例组合的工控网络协议模糊测试方法


技术介绍

[0002]伴随着信息社会的高速发展,计算机网络技术在人们的生活中快速普及,逐渐成为人们生活的必需品

在过去的十年里,工业控制系统因第四次工业革命的到来而迅速发展,在汽车制造

石油化工以及通信领域等众多行业得到了广泛应用

互联网的发展给新时代的工业控制系统带来了产能和效率的巨大提升,但同时也把互联网领域存在的安全问题带到在了工业控制系统面前

工业控制系统在设计之初缺乏安全性设计,多数都是采用明文传输,并且缺少相应的权限控制功能,因此在系统内部存在许多漏洞

这些漏洞一旦被黑客利用,将会对真实的物理设备与基础设施造成巨大的危害,从而带来难以估量的财产损失,甚至会对人员安全,社会稳定以及国家利益产生严重的威胁

[0003]面对日益加剧的网络安全问题,针对漏洞挖掘技术的研究语法变得重要

漏洞挖掘作为一种有效的发现系统中潜在漏洞的方法,在传统网络环境中得到了广泛的应用

然而工业控制网络相对封闭,大多数工控设备的源代码无法访问,且难以进行逆向分析,因此一些漏洞挖掘方法如静态分析和动态分析在工业控制系统中并不通用
。<br/>模糊测试是一种泛用性很强的漏洞挖掘方法,通过构造非预期输入提供给目标系统,并通过观察系统的异常反馈来发现漏洞

研究者通常使用模糊测试的方法对工业控制系统进行漏洞挖掘,通过改善发送测试用例的质量来对模糊测试方法进行改进

然而,现有的对工业控制系统进行模糊测试的方法依旧存在一些问题

[0004]首先,传统的人工提取协议规约的测试用例生成方法通过对已有真实协议消息的数学分析推断出协议的规约,然后以此生成新的测试用例

然而这种方法需要耗费大量的人力,且规约的准确度难以保障,一旦出现错误将导致测试用例的有效性大大降低

近年来随着深度学习逐渐成为了研究热点,越来越多的研究者也将目光转向了基于深度学习的生成方式

虽然经过模型的学习可以生成大量符合协议规约的测试用例,然而由于缺乏指导进行盲目的突变,会导致生成测试用例的接收率较低,从而难以触发漏洞

最后,在测试用例发送阶段,大多数方法都以随机的顺序发送测试用例,忽略了测试用例之间的关联性

通过我们的观察发现,大多数工控系统的漏洞都需要多个报文的共同作用才可以触发,如果仅使用随机的顺序进行发送,会导致挖掘漏洞的效率较低


技术实现思路

[0005]本专利技术所要解决的技术问题是提供一种基于生成对抗网络的测试用例生成方法及基于测试用例组合的工控网络协议模糊测试方法,用于解决目前工控网络协议模糊测试技术依赖人工提取以及盲目突变导致测试用例的接收率较低,以及现有方法仅使用随机发
送顺序导致漏洞挖掘效率较低的问题

[0006]本专利技术解决上述技术问题的技术方案如下:一种基于生成对抗网络的工控网络协议模糊测试方法,包括:
[0007]步骤1:使用训练数据集对
SeqGAN
模型进行训练

[0008]步骤2:使用经过训练的模型生成测试用例并根据模型输出概率的信息熵决定突变位置从而进行个性化突变

[0009]步骤3:使用组合的方式对测试用例进行分组发送,与此同时使用预期回复验证的方式实时监测被测目标的状态以及时定位触发的漏洞

[0010]进一步,所述步骤1中使用训练数据集对
SeqGAN
模型进行训练的过程具体包括:
[0011]步骤
11
,提取原始工控网络数据流中载荷的部分;
[0012]步骤
12
,将数据转换为统一的格式;
[0013]步骤
13
,为数据集生成词汇表,并添加开始

结束以及填充字符;
[0014]步骤
14
,训练
SeqGAN
模型;
[0015]步骤
15
,使用模型生成测试用例

[0016]进一步,所述步骤2中使用经过训练的模型生成测试用例并根据模型输出概率的信息熵决定突变位置从而进行个性化突变的过程具体包括:
[0017]步骤
21
,计算模型输出的信息熵;
[0018]步骤
22
,对信息熵进行归一化;
[0019]步骤
23
,选择非关键字符突变;
[0020]步骤
24
,有限突变;
[0021]步骤
25
,随机突变

[0022]进一步,所述步骤3中使用组合的方式对测试用例进行分组发送,与此同时使用预期回复验证的方式实时监测被测目标的状态以及时定位触发的漏洞的过程具体包括:
[0023]步骤
31
,根据汉明距离对测试用例进行分组;
[0024]步骤
32
,发送测试用例组合;
[0025]步骤
33
,使用心跳存活检测和期望报文验证定位触发的漏洞;
[0026]步骤
34
,判断目标是否出现异常;
[0027]步骤
35
,记录漏洞信息

[0028]基于上述方法,本专利技术的技术方案还包括了一种基于生成对抗网络的工控网络协议模糊测试系统,包括:
[0029]基于生成对抗网络的测试用例生成模块,其用于以原始的工控数据流量作为输入,训练深度学习模型使其学会工控网络协议的语法语义表达,以生成新的符合协议规则的测试用例

[0030]基于信息熵以及协议规约的突变模块,其用于计算对应每一个字符输出概率的信息熵的值,并且依据信息熵的大小以及协议范围的限制对字符进行个性化突变

[0031]基于汉明距离的测试用例分组模块,其用于将生成测试用例根据其关联性进行分组

[0032]基于心跳存活检测以及期望报文验证的漏洞定位模块,其用于实时监测被测目标出现的异常情况,并依据异常的类型判断是否触发了漏洞

[0033]进一步,所述基于生成对抗网络的测试用例生成模块包括:
[0034]数据处理模块,其用于对原始工控流量进行处理,使其转化为统一的格式以满足模型的输入需求

[0035]模型训练模块,其用于训练生成对抗网络模型,使其学会协议的规约,然后本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于生成对抗网络的工控网络协议模糊测试方法,其特征在于,包括:步骤1:使用训练数据集对
SeqGAN
模型进行训练;步骤2:使用经过训练的
SeqGAN
模型生成测试用例并根据
SeqGAN
模型输出概率的信息熵决定突变位置从而进行个性化突变;步骤3:使用组合的方式对测试用例进行分组发送,与此同时使用预期回复验证的方式实时监测被测目标的状态以及时定位触发的漏洞
。2.
根据权利要求1所述的基于生成对抗网络的工控网络协议模糊测试方法,其特征在于,所述步骤1中使用训练数据集对
SeqGAN
模型进行训练的过程具体包括:步骤
11
,提取原始工控网络数据流中载荷的部分:所有工控流量中请求报文的载荷部分将被提取出来作为初始的训练集;步骤
12
,将数据转换为统一的格式:将初始的训练集的格式进行统一以满足神经网络的输入需求;转换的规则是将协议报文按字符划分,并将十六进制的数据转化成十进制,其中每个协议字符的取值范围为
0x00

0x0f
,对应十进制的取值为0‑
15
;为了便于训练,每条协议数据将被填充到协议允许的最大长度
n
;步骤
13
,为数据集生成词汇表,并添加开始

结束以及填充字符:训练数据生成词汇表,并添加

s



/s

以及

pad

字符,其中

s

以十进制
16
表示,代表起始字符,

/s

以十进制
17
表示,代表结束字符,

pad

以十进制
18
表示,表示填充字符;步骤
14
,训练
SeqGAN
模型:数据集用来训练
SeqGAN
模型,学会
Modbus TCP
的语法表达;步骤
15
,使用模型生成测试用例:使用经过步骤
14
训练的
SeqGAN
生成器模型生成测试用例,以获得接近真实协议消息的虚假数据
。3.
根据权利要求2所述的基于生成对抗网络的工控网络协议模糊测试方法,其特征在于,步骤
14
所述的训练
SeqGAN
模型的具体操作方法是:
SeqGAN
模型以起始字符

s

作为初始输入,以生成目标字符串序列
C

(

s

,c1,c2,...,c
t
,...,c
T
,'/s')

c
t
∈V
,其中
V
是包含所有可能字符的集合;模型在生成字符
c
t
时,生成器模型以之前生成的字符串
C'

(

s

,c1,c2,...,c
t
‑1)
为输入,输出
c
t
的多个备选项;如果
t

T
,即已经完成一条字符串的输出,则将完整的字符串输入到判别器中以获得奖励值;否则,
SeqGAN
模型使用蒙特卡洛树搜索算法对后续字符进行采样,以获取完整的字符串序列,最后判别器输出对完整字符串的奖励值以更新生成器模型
。4.
根据权利要求2所述的基于生成对抗网络的工控网络协议模糊测试方法,其特征在于,步骤
15
所述的使用模型生成测试用例的具体操作方法是:
SeqGAN
模型依旧以起始字符

s

作为初始输入,不同的是在生成
c_t
时,
SeqGAN
模型贪婪地选择概率最大的备选项最为最终的输出字符,直到当前输出的字符为结束字符

/s

;最后将所有生成的字符以字节为单位进行组合并转为十六进制,生成一条完整测试用例
。5.
根据权利要求1所述的基于生成对抗网络的工控网络协议模糊测试方法,其特征在于,所述步骤2中使用经过训练的模型生成测试用例并根据
SeqGAN
模型输出概率的信息熵决定突变位置从而进行个性化突变的过程具体包括:步骤
21
,计算
SeqGAN
模型输出的信息熵:将各字符的选取概率看作独立的事件,概率分布
P

(p(x1),p(x2),...,p(x
i
),...,p(x
n
))

x
i
∈V
,其中
p(x
i
)
表示下一个生成字符为
x
i
这一事件发生的概率,
n
为字符集合
V
的长度,用所有事件信息熵的和代表
SeqGAN
模型选取下
一个字符的不确定性;认为被
SeqGAN
模型以较高不确定性选择的字符为协议中的非关键字符,其他则为关键字符;步骤
22
,对信息熵进行归一化:为了方便信息熵的度量,对步骤
21
中模型输出的信息熵进行归一化处理,以使得信息熵取值空间处于固定范围,便于判断当前字符是否需要进行突变;步骤
23
,选择非关键字符突变:为了在选择最佳位置进行突变的同时增加测试的多样性,为每一个字符生成处...

【专利技术属性】
技术研发人员:赖英旭完颜韩笑刘静陈昊
申请(专利权)人:北京工业大学
类型:发明
国别省市:

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

1