掌桥专利:专业的专利平台
掌桥专利
首页

一种基于耦合自编码器的模糊测试用例生成系统和方法

文献发布时间:2023-06-19 11:22:42


一种基于耦合自编码器的模糊测试用例生成系统和方法

技术领域

本发明涉及工业网络安全领域,具体涉及一种基于耦合自编码器的模糊测试用例生成系统和方法。

背景技术

随着网络技术的快速发展,工业控制系统已从原来的集中控制系统发展到现场总线和网络控制系统。目前,网络控制系统已被广泛应用于国民经济的各个领域中,与人们的生产生活联系也越来越紧密。由于大多数工业控制网络协议的协议格式被设计为短帧且未加密,以及边界值、字段关系等协议细节处理尚未完善,导致正常通信容易被拦截和利用,如果一旦被黑客发现并加以利用,不但会对控制系统造成严重安全隐患,甚至会导致生命和财产的重大损失,因此工控协议的安全性已成为国家信息安全的热点。

模糊测试是一种常见的漏洞挖掘手段,通过向应用程序或被测系统发送构造的测试用例,并检测被测系统是否发生故障来进行漏洞挖掘,因此,模糊测试的关键点是生成能够造成测试目标工作异常的数据。现有的模糊测试输入的数据大多是盲目的随机数据,当工控设备在解析这些输入时,如果不符合协议规范,设备就会直接重置连接,这样的测试是低效率的。目前,许多模糊测试技术都是通过人工解析协议报文来生成测试用例,使用框架提供字段定义协议,使得生成的报文能够符合所要求的协议格式,然后将该报文发送到设备上进行测试,从而进入更深的测试路径,但是这类模糊测试技术缺点在于,每条测试路径的编写都需要花费大量人力,测试效率也不高。

针对上述问题,急需一种既能满足不同测试要求,又兼顾高效率的测试用例生成方式。

发明内容

本发明提出一种基于耦合自编码器的模糊测试用例生成系统,通过自编码器的学习和训练,使生成的测试用例能够满足不同的测试要求,提高测试用例的接受率和漏洞的触发率,通过持续训练和优化,降低人工消耗,提高测试效率。

为实现上述目的,本发明提供了如下方案:

一种基于耦合自编码器的模糊测试用例生成系统,包括:样本集构造模块、耦合自编码器模块、模糊测试模块;

所述样本集构造模块用于生成数据训练集;所述数据训练集包括正常数据训练集和畸形数据训练集;所述正常数据训练集为正常数据报文;所述畸形数据训练集包括异常报文集和漏洞信息集;

所述耦合自编码器模块用于基于数据训练集,通过耦合自编码器生成测试用例;

所述模糊测试模块用于测试用例的检测,检测是否出现异常,并将出现异常的测试用例加入畸形数据集中,用于数据训练集的优化。

优选的,所述耦合自编码器模块包括第一自编码器和第二自编码器;

所述第一自编码器和所述第二自编码器均包括编码单元和解码单元;

所述第一自编码器的编码单元用于压缩所述正常数据训练集的数据,生成正常数据内部表征,所述第一自编码器的解码单元用于对正常数据内部表征进行还原;所述第二自编码器的编码单元用于压缩所述畸形数据训练集的数据,生成畸形数据内部表征,所述第二自编码器的解码单元用于对畸形数据内部表征进行还原。

优选的,所述第一自编码器和所述第二自编码器通过权重绑定方式组成所述耦合自编码器模块。

优选的,所述编码单元和所述解码器单元均采用神经网络级联。

优选的,所述模糊测试模块,还包括适配模块、异常分析模块;

所述适配模块用于检测和判别所述测试用例是否符合预设条件;

所述异常分析模块用于判断所述测试用例出现的异常的种类,并将出现异常的测试用例加入畸形数据集中,用于数据训练集的优化。

本发明还公开了一种基于耦合自编码器的模糊测试用例生成方法,包括如下步骤:

S1.通过所述样本集构造模块生成所述数据训练集;

S2.基于所述数据训练集,通过所述耦合自编码器模块生成所述测试用例;

S3.通过所述模糊测试模块对所述测试用例进行检测和判断,并将出现异常的测试用例加入畸形数据集中,用于所述数据训练集的优化。

优选的,所述S2还包括:

S2.1.将所述第一自编码器和第二自编码器的权重进行绑定约束,构造出包含不同属性的数据联合分布;

S2.2.通过所述第一自编码器的编码单元将所述正常数据训练集中的数据压缩生成所述正常数据内部表征;

S2.3.通过所述第二自编码器的解码单元将S2.2中生成的所述正常数据内部表征进行解码还原,生成所述测试用例;

优选的,所述步骤S3还包括:

S3.1.通过所述适配模块检测所述测试用例是否符合预设条件;

S3.2.通过所述异常分析模块判断所述测试用例出现的异常的种类;

S3.3通过所述异常分析模块将出现异常的所述测试用例加入所述畸形数据训练集中,用以所述数据训练集的优化。

本发明的有益效果为:

本发明针对传统自编码测试方法存在的测试用例畸形度不足和漏洞触发率较低、测试效率不高的问题,提出了一种基于耦合自编码器的模糊测试用例生成系统和方法,利用耦合自编码器学习和训练来产生模糊测试用例,不但满足了数据协议格式的语法要求,而且兼具异常或漏洞数据的特征,提高了测试用例的接受率和漏洞的触发率;通过不断优化数据训练集,可持续提高测试用例的适用度,提高测试效率,降低人工消耗。本发明方法可以应用到多种不同的工控网络协议,为不同应用领域提供了切实可行的技术思路。

附图说明

为了更清楚地说明本发明的技术方案,下面对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例基于耦合自编码器的模糊测试用例生成系统结构示意图;

图2为本发明实施例基于耦合自编码器的模糊测试用例生成系统耦合自编码器结构示意图;

图3为本发明实施例基于耦合自编码器的模糊测试用例生成方法流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

本实施例以Modbus协议为例展开说明。Modbus作为一种应用层消息传递协议,被广泛应用在数百万自动化设备上进行通信。Modbus协议格式简单并且公开,其通过提供功能代码的服务,实现了在不同类型总线或网络设备上的请求/应答通信。Modbus还提供基于TCP/IP的消息传递服务,连接Modbus/TCP客户端到TCP/IP网络的服务器设备。Modbus协议定义了一个独立于底层通信层的简单协议数据单元(PDU)。并且可以通过引入专用ModbusApplication Protocol header(MBAP报头),实现在TCP/IP网络上传输并识别Modbus数据。MBAP报头由客户端生成,其中包括传输标识、协议标识、后续字节长度以及单元标识符。Modbus/TCP报文PDU部分,包括功能码和数据段。功能码是Modbus报文的重要组成部分,代表消息将要执行的动作。功能码分为公共功能码、用户自定义功能码以及保留功能码。当接收到正常数据时,服务器回复的功能码与接收数据的功能码一致;当接收到异常数据时,服务器回复异常功能码。数据段可以分为请求的数据段和响应的数据段。请求的数据段中内容包含执行功能码定义的操作的额外信息,如散地址和寄存器地址、要处理的项的数量以及字段中实际数据字节的数量等,请求的数据段也可为空。当接收到的正常数据时,响应的数据段为请求数据需要的数据,当接收到异常数据时,响应的数据段中为异常数据对应的异常码,分别为非法功能码、非法数据功能码、非法数据值、从站设备故障等。

如图1所示,本发明提供一种基于耦合自编码器的模糊测试用例生成系统,包括:样本集构造模块、耦合自编码器模块、模糊测试模块。

所述样本集构造模块,用于生成数据训练集。针对不同的测试对象,使用符合该对象协议的正常工业控制网络协议报文作为正常数据训练集,在此基础上增加漏洞数据并对其经行扩充,使其足够作为畸形训练集,包含能够引发工控设备异常响应的异常报文集和漏洞信息集两部分。

在本实施例中,本发明首先在正常数据训练集的基础上增加异常/漏洞数据作为耦合自编码器的输入,因此需要大量的正常数据以及漏洞数据作为训练数据。在实际工况下,正常的Modbus/TCP报文抓取比较方便,可通过Wireshark、Tshark等网络封包分析软件获取,在本实施例中,将实际工况下抓取的正常报文作为正常数据训练集进行训练。但漏洞数据的获取十分困难,且基于已知漏洞或网络攻击代码构建的异常数据有限,不足以对耦合自编码器进行充分训练,因此,需要对畸形数据训练集中的异常或漏洞数据进行扩充以达到能够支撑耦合自编码器训练。在本实施例中,通过将已知工业控制系统漏洞数据和不符合协议格式的非法数据作为异常报文集,将漏洞库开源的漏洞、国内外公开资料中复现的漏洞等作为漏洞数据集,二者加入到畸形数据训练集进行数据融合,构成畸形数据库,并将这些数据作为模型训练的数据样本。

进一步的,将样本集分为两类,一类为正常Modbus/TCP协议报文数据训练集M

异常数据集M

漏洞数据集M

经过数据集构造后,得到两个数据集用于训练,包括网络封包分析工具获取的正常Modbus/TCP协议报文数据集M

所述耦合自编码器模块用于基于数据训练集,通过耦合自编码器生成测试用例。

通过自编码器的编码单元部分对训练数据进行特征提取,将特征向量进行整合得到训练数据样本的特征空间;在本实施例中,根据所用样本数据类型得到两类特征空间:第一类特征空间为正常数据训练集的特征空间,第二类特征空间为异常/漏洞数据训练集的特征空间。

在本实施例中,耦合自编码器由一对自编码器组成,包括第一自编码器和第二自编码器,每个自编码器都由一个编码单元和解码单元组成,通过将两个自编码器的权重绑定约束,从而构造出一个包含协议正确语法及异常报文或漏洞信息的不同属性的数据联合分布,使得生成的测试用例既具有协议正确语法特征又具有异常报文或漏洞的特征。

在本实施例中,每一个自编码器都负责在一个域中生成数据;其中编码单元负责对输入数据的表征进行学习,并将输入数据压缩至低维生成内部表征,将它们的参数进行共享,可以学习到不同域的联合分布;解码单元负责将编码单元生成的内部表征转换为输出数据。编码单元和解码单元一般采用半监督学习或无监督学习的人工神经网络级联。

耦合自编码器模块负责耦合自编码器的设计与训练。耦合自编码器的损失函数包含生成的数据与正常数据训练集中数据的差异,以及生成的数据与异常/漏洞数据集训练集中数据的差异两部分。在本实施例中,耦合自编码器通过对两个自编码器权重的绑定,多次训练后可以学习到正常数据训练集与异常/漏洞数据集训练集的联合分布,因此可以生成既符合工业控制网络协议格式又兼具异常/漏洞特征的测试用例用于测试。如图2所示,在本实施例中,耦合自编码器由一对自编码器AE

在本实施例中,耦合自编码器网络的损失函数由两部分组成,一部分为正常Modbus/TCP协议报文数据训练集采样生成的数据与正常Modbus/TCP协议报文数据的差异,另一部分为异常/漏洞数据集训练集采样生成的数据与异常/漏洞数据的差异,即:

Loss=∑||X

其中,X

耦合自编码器训练的目的得到使损失函数达到最小的参数,即:

根据设计好的损失函数设计耦合自编码器,将编码单元E

由于耦合自编码器属于半监督学习或无监督学习,通过权重绑定可以从构造后的数据集中学习出一个具有不同属性(协议正确语法以及异常报文或漏洞信息)的数据联合分布,包括协议正确语法以及异常报文或漏洞信息的数据联合分布,从而使得生成的测试用例既具有协议的合法格式又具有异常特征。耦合自编码器训练的整体目标就是希望通过对抗学习(学习具有不同属性的数据的特征)来逐步优化损失函数,实现数据联合分布,再使用训练好的耦合自编码器生成Modbus/TCP模糊测试用例,将其发送给被模糊测试模块。

所述模糊测试模块用于测试用例的检测,检测是否出现异常,并将出现异常的测试用例加入畸形数据集中,用于数据训练集的优化。

在本实施例中,模糊测试模块的适配模块包括网络协议适配器模块与工业控制网络协议模块,用于将测试用例发送到被测设备,进行检测和判别。模糊测试模块中的异常分析模块,用于检测是否出现异常以及判别出现的异常是否为漏洞,同时将每轮测试中异常的报文加入畸形数据训练集中,应用于下次的模型训练。

如图3所示,本发明还提供了基于耦合自编码器的模糊测试用例生成方法,包括如下步骤:

S1.通过所述样本集构造模块生成所述数据训练集;

在本实施例中,首先在正常数据训练集的基础上增加异常/漏洞数据作为耦合自编码器的输入,正常的Modbus/TCP报文可通过Wireshark、Tshark等网络封包分析软件获取作为正常数据训练集。在本实施例中,通过将已知工业控制系统漏洞数据和不符合协议格式的非法数据作为异常报文集,将漏洞库开源的漏洞、国内外公开资料中复现的漏洞等作为漏洞数据集,二者加入到畸形数据训练集进行数据融合,构成畸形数据库,并将这些数据作为模型训练的数据样本。

S2.基于所述数据训练集,通过所述耦合自编码器模块生成所述测试用例;

S2.1.将所述第一自编码器和第二自编码器的权重进行绑定约束,构造出包含不同属性的数据联合分布;

S2.2.通过所述第一自编码器的编码单元将所述正常数据训练集中的数据压缩生成所述正常数据内部表征;

S2.3.通过所述第二自编码器的解码单元将步骤S2.2中生成的所述正常数据内部表征进行解码还原,生成所述测试用例;

S3.通过所述模糊测试模块对所述测试用例进行检测和判断,并将出现异常的测试用例加入畸形数据集中,用于所述数据训练集的优化。

S3.1.通过所述适配模块检测所述测试用例是否符合预设条件;

S3.2.通过所述异常分析模块判断所述测试用例出现的异常的种类;

S3.3通过所述异常分析模块将出现异常的所述测试用例加入所述畸形数据训练集中,用以所述数据训练集的优化。

以上所述的实施例仅是对本发明优选方式进行的描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。

相关技术
  • 一种基于耦合自编码器的模糊测试用例生成系统和方法
  • 一种基于机器学习的模糊测试用例生成方法及运行该方法的计算机设备与可读存储介质
技术分类

06120112901337