CN116662184A - 一种基于Bert的工控协议模糊测试用例筛选方法及系统 - Google Patents
一种基于Bert的工控协议模糊测试用例筛选方法及系统 Download PDFInfo
- Publication number
- CN116662184A CN116662184A CN202310652941.2A CN202310652941A CN116662184A CN 116662184 A CN116662184 A CN 116662184A CN 202310652941 A CN202310652941 A CN 202310652941A CN 116662184 A CN116662184 A CN 116662184A
- Authority
- CN
- China
- Prior art keywords
- test
- bert
- test case
- fuzzy
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 273
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000012216 screening Methods 0.000 title claims abstract description 58
- 238000012549 training Methods 0.000 claims abstract description 51
- 230000006854 communication Effects 0.000 claims abstract description 33
- 238000004891 communication Methods 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims abstract description 28
- 238000013145 classification model Methods 0.000 claims abstract description 25
- 230000004044 response Effects 0.000 claims abstract description 23
- 238000007781 pre-processing Methods 0.000 claims abstract description 12
- 230000005540 biological transmission Effects 0.000 claims abstract description 4
- 238000012545 processing Methods 0.000 claims abstract description 4
- 239000013598 vector Substances 0.000 claims description 24
- 230000006870 function Effects 0.000 claims description 12
- 230000002159 abnormal effect Effects 0.000 claims description 10
- 230000001960 triggered effect Effects 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 5
- 230000005856 abnormality Effects 0.000 claims description 4
- 230000015556 catabolic process Effects 0.000 claims description 3
- 210000002569 neuron Anatomy 0.000 claims description 3
- 230000001502 supplementing effect Effects 0.000 claims description 2
- 230000000694 effects Effects 0.000 description 12
- 238000002474 experimental method Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 4
- 235000006040 Prunus persica var persica Nutrition 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 244000144730 Amygdalus persica Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 240000005809 Prunus persica Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种基于Bert的工控协议模糊测试用例筛选方法及系统。该方法包括:1)获取测试用例训练集。捕获工控协议模糊测试过程中的通信流量,通过协议实体的响应将测试用例分为有效测试用例和无效测试用例两类,标注后作为训练集;2)训练集预处理。将训练集进行数据格式的处理,以符合Bert模型的输入;3)Bert分类模型训练。训练得到模糊测试用例筛选模型;4)测试用例筛选。在工控协议模糊测试过程中基于筛选模型对测试用例进行预测和筛选,以提高模糊测试的效率。该系统包括:测试用例采集模块、数据预处理模块、测试用例筛选模块、测试用例传输模块、模糊测试模块。本发明基于Bert模型对模糊测试用例进行有效性的筛选,提高了模糊测试的效率。
Description
技术领域
本发明涉及网络信息安全技术领域,特别是一种基于Bert的工控协议模糊测试用例筛选方法及系统。
背景技术
随着计算机技术与通信技术应用于工业控制领域,给工控领域带来了新的网络安全问题。工业控制协议是工控系统软硬件之间实现通信的基础,在工业控制协议诞生初期,由于工控环境相对封闭,不与外部互联网连通,协议设计者大多只考虑了协议的功能性和实时性,而对于协议本身的安全性没有太多关注。随着工控系统逐步接入互联网,工控协议本身的安全漏洞逐渐地暴露出来。攻击者利用安全漏洞对使用工控协议进行通信的实体进行攻击,造成了越来越严重的财产安全损失。面对愈加严重的工控安全风险,对工控协议进行漏洞挖掘,在攻击未发生之前检测出协议的安全隐患,是预防攻击事件发生的有效途径。
模糊测试因其自动化程度高、需要先验知识较少的特点,成为工控协议漏洞挖掘的主流方法之一。模糊测试的原理是通过构造大量、非预期的输入发送至待测目标,观察待测目标执行这些输入后的响应情况来判断是否产生了异常。现有的模糊测试技术通常使用基于变异或基于生成两种方式来构造测试用例,产生的测试用例具有较高的多样性。然而工控协议都有其固定的格式和规约,随机生成的测试用例可能无法通过协议实体的检查而被拒绝。在一次模糊测试过程中,一般会执行数万条甚至数十万条测试用例,如果执行无法通过协议实体检查的测试用例过多,则会极大地影响模糊测试的效率。因此,研究筛选无效测试用例的方法,使其执行更多的有效测试用例,是非常有必要的。
工业控制协议本质上是一串文本序列数据,其拥有和自然语言一样的特性。所以可以把对测试用例有效性和无效性筛选的问题转化为一个文本序列数据的二分类问题。现阶段,深度学习在文本分类问题中取得了很好的效果,我们可以把深度学习领域中的有效技术迁移到模糊测试用例筛选研究中来。2019年,谷歌的AI团队提出了Bert模型,它采用了独特的嵌入方式和多层transformer结构,使用海量无标签的语料中预训练深度双向特征表示,可以更好的描述序列前后之间的隐藏特征,当时在11个NLP任务中取得了最好的效果。
发明内容
本发明的目的在于提供一种基于Bert的工控协议模糊测试用例筛选方法及系统,一方面,该方法所用到Bert模型可以更好的提取协议序列前后的隐藏关联,更加细致地描述协议序列双向特征,该方法给出的基于Bert的工控协议模糊测试用例筛选方法相比现有方法具有更高的分类准确性。另一方面,该发明包含的系统用于支持上述方法的实现。
为实现上述目的,本发明的技术方案是:一种基于Bert的工控协议模糊测试用例筛选方法,包括以下步骤:
S1、获取测试用例训练集:对待测工控协议实体进行模糊测试,在测试过程中,捕获协议实体间的通信流量;分析服务器的响应报文,将捕获的报文分为有效样本和无效样本两类,作为测试用例训练集;
S2、训练集预处理:将采集到的每个样本数据包按字节划分,在字节间加入空格,并将所有样本统一长度,以符合Bert分类模型的输入格式;
S3、Bert分类模型训练:以步骤S2中处理后的训练集作为输入,训练得到基于Bert模型的测试用例筛选模型即Bert分类模型;
S4、测试用例筛选:执行模糊测试过程,接收预设模糊测试工具生成的测试用例,使用步骤S3训练得到的Bert分类模型对收集到的测试用例进行预测和筛选,以筛选掉无效的测试用例,然后将有效的测试用例返回执行,从而提高模糊测试的效率。
在本发明一实施例中,步骤S1的具体步骤为:
S101、在一次模糊测试过程中,捕获测试对象间的通信流量并从中提取出客户端发送的Query报文,将其保存至待执行测试用例队列;
S102、模糊测试工具对测试用例队列中的报文进行变异,产生新的测试用例并发送执行;
S103、根据协议实体返回的响应报文,分析测试用例执行后的结果:若触发了协议预设的异常响应过程或测试用例被协议实体拒绝,则将该条测试用例视为无效;若测试用例被正常执行或者产生新的超时或崩溃现象,则将该条测试用例视为有效;
S104、重复执行S102和S103一段时间,直至收集到预定数量的样本;
S105、以标签1代表有效测试用例,以标签0代表无效测试用例,对收集到的样本集进行标注,将该有标签的样本集作为测试用例训练集。
在本发明一实施例中,步骤S2的具体步骤为:
S201、将步骤S1采集到的样本数据包以十六进制的形式输出;
S202、按字节对测试用例进行切分,并在相邻字节之间加入空格,以符合Bert分类模型的输入要求;其中每个字节的表示是0~255的十六进制表示;
S203、对每条测试用例进行数据标准化处理,即统一所有测试用例的长度,设设置的测试用例长度为m,对于测试用例字节数超过m的测试用例进行截断,对测试用例字节数不足m的测试用例在尾部用0补齐。
在本发明一实施例中,Bert分类模型由Bert层、全连接层和分类层三部分组成;Bert层用于序列数据的嵌入和特征提取,训练集输入到Bert层后计算得到一个固定维度[768,1]的向量来表示整个序列的特征;全连接层是拥有768个神经元的线性层,用于接收Bert层的输出,整合所提取的序列特征;分类层采用的是softmax分类器,用于对每条样本进行有效性和无效性的分类。
在本发明一实施例中,Bert层由嵌入层和多层transformer组成;嵌入层的作用是将文本序列数据转化为可进行数学计算的向量,Bert层将训练集中每条输入的测试用例的每个token转化为向量,Bert层中的嵌入层采用三种不同嵌入的方式,分别是Token嵌入、Segment嵌入和Position嵌入;多层transformer作用是提取序列特征和描述序列中前后词元的隐藏相关性,多层transformer使用transformer中的encoder部分,有12层encoder,每层有12个Attention块,词向量维度是768。
本发明还提供了一种基于Bert的工控协议模糊测试用例筛选系统,包括:
测试用例采集模块,用于获取模糊测试过程中的通信数据包,作为后续模型训练的数据集;
数据预处理模块,用于对数据集进行预处理,以符合后续Bert模型的输入格式;
测试用例筛选模块,基于Bert模型实现,使用处理后的数据集作为训练集对其进行训练,训练完成后的模型用于对输入的测试用例进行预测和分类,以完成筛选无效测试用例的功能;
测试用例传输模块,用于接收预设模糊测试工具产生的测试用例并将筛选后的有效测试用例传递给模糊测试对象继续执行;
模糊测试模块,用于对待测试目标进行模糊测试,实现模糊测试用例的生成及异常监控等功能。
相较于现有技术,本发明具有以下有益效果:
1、利用Bert模型中独特的嵌入和多头注意力机制,更好的提取了工控协议序列的双向特征;
2、基于工控协议异常响应的机制定义了测试用例的有效性;
3、对无法通过协议实体检查的无效测试用例进行过滤,提高了模糊测试的效率;
通过分析表明,本发明所提供的一种基于Bert的工控协议模糊测试用例筛选方法有更高的准确性,具有较好的应用和推广作用。
附图说明
图1为本发明一种基于Bert的工控协议模糊测试用例筛选方法的流程示意图;
图2为本发明所提供的基于Bert的测试用例筛选模型结构图;
图3为本发明所用的Bert模型中嵌入层最终输出的计算方式;
图4为本发明所提供的基于Bert的测试用例筛选模型对Modbus TCP协议测试用例分类的实验结果;
图5为本发明与现有方法基于QRNN模型的对比实验结果;
图6为本发明所提供的基于Bert的工控协议模糊测试用例筛选系统结构图。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
在工控协议漏洞挖掘的技术中,模糊测试因其自动化程度高、需要的先验知识少的特点成为主流技术之一。通过将大量的畸形测试用例发送至待测试的对象,通过监控待测对象执行测试用例之后的响应,来确定是否触发了安全漏洞。但是工控协议都具有固定的格式和规约,协议实体在执行发送来的数据之前会对其进行格式的检查,对于不符合要求的数据包协议实体会返回预设的异常响应过程或者将其丢弃,异常响应不代表出现漏洞,而是服务器对客户端非法数据的正常响应过程。这些数据包无法通过协议实体的检查,执行这些测试用例会造成时间上的浪费,影响模糊测试的效率。在工业控制协议(以ModbusTCP协议为例)通信过程中,主站(客户端)向从站(服务器)发送查询报文,从站接收到查询报文后返回响应报文。如果主站发送的查询报文中包含非法信息,则会触发Modbus TCP协议的异常响应过程。异常响应过程会返回带有特殊功能码的报文,被称为差错码;常见的差错码有以下几种:0x01,请求功能码未响应;0x02非法数据地址;0x03,非法数据值;0x04,Modbus TCP异常服务;以上四种为Modbus TCP协议通信过程中最常见的异常响应,此外还有若干种相对少见的异常码,在此不再一一列出。
在本发明中,我们定义了测试用例的两种类型:有效测试用例和无效测试用例。其中,无效测试用例包括:会触发服务器端进行异常响应的测试用例、报文存在错误而被丢弃的测试用例。有效测试用例包括:可以被服务器端正常执行的测试用例;服务器端执行后产生超时的测试用例;服务器端执行后使协议实体崩溃的测试用例。本发明提出的测试用例筛选方法,就是对这两种类型的测试用例进行尽可能准确的分类,筛选掉无效测试用例,是模糊器尽可能多的执行有效测试用例,从而达到提高模糊测试效率的效果。
本发明提出了一种基于Bert的工控协议模糊测试用例筛选方法。为了实现这个目标,首先通过捕获使用工控协议进行通信的实体间的通信流量来获取测试用例样本集,对每条样本进行有效性和无效性的分析。然后以此为训练集对Bert分类模型进行训练,得到用于分类的测试用例筛选模型。最后运行模糊测试过程,调用训练好的测试用例筛选模型对模糊器生成的测试用例进行有效性的筛选。
如图1所示的流程图:本发明公开了一种基于Bert的工控协议模糊测试用例筛选方法,其包括以下步骤:
S1、获取测试用例训练集。对待测工控协议实体进行模糊测试,在测试过程中,捕获协议实体间的通信流量。分析服务器的响应报文,将捕获的报文分为有效样本和无效样本两类,作为训练集;
S2、训练集预处理。将采集到的每个样本数据包按字节划分,在字节间加入空格,并将所有样本统一长度,以符合Bert分类模型的输入格式;
S3、Bert分类模型训练。以步骤S2中处理的样本集作为训练集,训练得到基于Bert模型的测试用例筛选模型。
S4、测试用例筛选。执行模糊测试过程,接收预设模糊测试工具生成的测试用例,使用S3训练得到的Bert分类模型对收集到的测试用例进行预测和筛选,以筛选掉无效的测试用例,然后将有效的测试用例返回执行,从而提高模糊测试的效率。
步骤S1的具体步骤为:
S101、在一次模糊测试过程中,捕获测试对象间的通信流量并从中提取出客户端发送的Query报文,将其保存至待执行测试用例队列;
S102、模糊测试工具对测试用例队列中的报文进行变异,产生新的测试用例并发送执行;
S103、根据协议实体返回的响应报文,分析测试用例执行后的结果:若触发了协议预设的异常响应过程或测试用例被协议实体拒绝,则将该条测试用例视为无效;若测试用例被正常执行或者产生新的超时或崩溃现象,则将该条测试用例视为有效;
S104、重复执行S102和S103一段时间,直至收集到足够数量的样本;
S105、以标签1代表有效测试用例,以标签0代表无效测试用例,对收集到的样本集进行标注,将该有标签的样本集作为测试用例训练集。
步骤S2的具体步骤为:
S201、将S1采集到的样本数据包以十六进制的形式输出;
S202、为了提高该方法的适用范围,按字节对测试用例进行切分,并在相邻字节之间加入空格,以符合Bert模型的输入要求。其中每个字节的表示是0~255的十六进制表示;
S203、对每条测试用例进行数据标准化处理,即统一所有测试用例的长度,需要选取合适的测试用例长度以便于模型的训练。设我们设置的测试用例长度为m,对于测试用例字节数超过m的测试用例进行截断,对测试用例字节数不足m的测试用例在尾部用0补齐。
歩骤S3中,所使用的测试用例筛选模型为Bert分类模型:
如图2所示,Bert分类模型由Bert层、全连接层和分类层三部分组成。Bert层用于序列数据的嵌入和特征提取,训练集输入到Bert层后计算得到一个固定维度[768,1]的向量来表示整个序列的特征;全连接层是拥有768个神经元的线性层,用于接收Bert层的输出,整合所提取的序列特征;分类层采用的是softmax分类器,用于对每条样本进行有效性和无效性的分类。
Bert层由嵌入层和多层transformer组成。嵌入层的作用是将文本序列数据转化为可以进行数学计算的向量,是深度学习模型进行自然语言处理任务的逻辑成立的第一步。Bert将训练集中每条输入的测试用例的每个token(在本发明中指的是在S202中处理的按字节切分后每个字节的十六进制表示)转化为向量。但与传统序列模型RNN、LSTM所采用的词嵌入方式不同,Bert采用了三种不同嵌入的方式,分别是Token嵌入、Segment嵌入和Position嵌入。
在将输入的测试用例传递到嵌入层之前,首先要对其进行token化,即在每条而是用例的开头加入[CLS]标识,在结尾加入[SEP]标识。加入[CLS]的目的是作为一条序列的输入表示,加入[SEP]表示一对输入序列的分隔或一条序列的结束。Token嵌入层会将测试用例的每一个字节转化为固定维度的向量表示,在Bert中,返回的token向量尺寸是[1,768]。Segment嵌入层只有两个向量表示,由于Bert可以接收一对序列作为输入,Segment嵌入向量用于区分该条输入序列来自于哪一条序列,如果输入序列只有一条,则该序列的Segment嵌入就是Segment嵌入表中索引为0的向量,其尺寸为[1,768]。Position嵌入层的作用是记录某个token的时间特征,即该token位于序列的具体位置,位于不同位置的相同token因为Position嵌入的作用也有了不同的表示。Position嵌入层弥补了Bert所使用的transformer encoder不编码输入的顺序特征的不足,其返回的向量尺寸是[1,768]。
如图3所示,三个嵌入向量求和后得到一条测试用例最后的输入表示。经过三个嵌入层的作用,每条测试用例会被表示成形状为[1,n,768]的张量(n表示序列长度)。
Bert中的多层transformer主要使用了transformer中的encoder部分,在本发明使用的Bert模型中,有12层encoder,每层有12个Attention块,词向量维度是768。Transformer层的作用是提取序列特征和描述序列中前后词元的隐藏相关性。相比于传统的序列模型RNN、LSTM,transformer解决了长距离依赖的问题。
Transformer之所以拥有上述优势,因为其采用了多头自注意力机制。对于单头自注意力机制,模型的计算过程主要有以下四步:
1、三个权重矩阵WQ、WK、WV与输入的嵌入向量相乘,得到新的矩阵Q、K、V;
2、Q与KT相乘,得到嵌入中各个词元之间的相关度。为了防止结果过大,再除以他们维度的均方根;
3、将第二步中的结果通过Softmax进行归一化;
4、将第三步得到的矩阵与V相乘,得到最后的Self-attention输出。
整个self-attention机制的计算公式如公式(1):
其中dk为Q、K矩阵的维度。
多头注意力机制就是将12个Attention块中的输出拼接到一起,然后将结果输入到一个全连接层中降维表示。最后,每条输入的测试用例经过嵌入层和transformer的作用,输出为尺寸[1,768]的向量,它包含了整个测试用例序列的特征。
将Bert层输出的含有测试用例序列特征的向量输入到全连接层中整合特征并降维,最后输入到softmax分类器中得出测试用例有效性和无效性的预测结果。
下面通过实验验证本发明所包含的模糊测试用例筛选模型对测试用例的分类效果。
本发明提供的方法选取常见工控协议Modbus TCP来进行实验。使用Modbus TCP协议的模拟器Modbus Poll和Modbus Slave建立Modbus模拟通信,使用第三方抓包软件Wireshark捕获通信流量,结合Bert分类模型来验证本发明所包含的工控协议模糊测试用例筛选方法对有效测试用例和无效测试用例的分类效果。具体实验过程如下:
一、实验环境
系统配置:Windows 10操作系统、AMD R7-5800H、16GB内存;测试协议:Modbus TCP协议;测试对象:Modbus Poll、Modbus Slave;模糊测试工具:Peach v3.1;编程语言:Python;深度学习框架:Pytorch;辅助工具:Wireshark;
二、实验过程
使用Modbus Poll模拟Modbus通信过程中的主站,Modbus Slave模拟Modbus通信过程中的从站经过配置后建立Modbus TCP通信。使用Peach进行一段时间的模糊测试,向从站发送测试用例数据包;使用Wireshark监听本地回环地址,捕获通信流量。得到的通信流量以Pcap文件的形式保存,分析其中的Modbus请求-响应报文对,对有效测试用例和无效测试用例进行分类。将测试用例数据包以文本文件的形式保存并进行标注,作为数据集输入到Bert分类模型中进行训练,训练完成后验证本方法的分类效果。
三、实验说明
在Bert模型进行训练之前需要对数据进行预处理以符合Bert模型的输入格式,其中有一项任务是统一样本的输入长度。因为捕获的Modbus TCP协议数据包是不等长的,选取的输入长度过小会截断部分有效载荷,输入长度过大则会导致样本特征过于稀疏,影响分类的准确性,而且输入长度过长会拖慢模型的训练速度。对捕获的样本进行分析可知,75%左右的样本长度<64字节,另有20%左右的样本长度位于64字节~128字节之间,样本长度>128字节的样本数量不足5%。所以我们分别选取输入长度分别为64、128、200进行实验。
四、实验结果分析
为了获得具有较优分类性能的模型,实验分析了在不同epoch的情况下,序列输入长度(max_len)对分类准确率的影响。如图4所示,可以看到在epoch=90,max_len=128的情况下,Bert分类模型具有较优的分类性能,分类准确率约为86.5%。为了对比现有模糊测试筛选方法在此情景下的效果,选择了QRNN模型进行对比试验,实验参数按照论文设置为input_size=257,lay_num=2,在不同的hidden_size和dropout下的分类性能如图5所示,可以看到在dropout=0.2,hidden_size=6时QRNN模型取得较好的分类性能,分类准确率约为81.2%。
实验表明,在相同的情境下,基于相同的训练数据集,本发明包含的测试用例筛选方法的分类效果要优于现有的方法,对模糊测试用例的有效性和无效性的分类准确率更高。
如图6所示的系统结构图,本发明还包含一种基于Bert的工控协议模糊测试用例筛选系统,其特征在于包括以下部分:
测试用例采集模块,用于获取模糊测试过程中的通信数据包,作为后续模型训练的数据集;捕获通信流量的过程主要通过两种途径实现:(1)调用网络数据包捕获函数库winpcap或者libpcap捕获通信流量;(2)通过第三方抓包软件如Wireshark、Sniffer等工具监听端口捕获通信流量。
数据预处理模块,用于对数据集进行预处理,以符合后续Bert模型的输入格式;
测试用例筛选模块,基于Bert模型实现,使用上述训练集对其进行训练,训练完成后的模型用于对输入的测试用例进行预测和分类,以完成筛选无效测试用例的功能;测试用例筛选模型基于深度学习框架Pytorch实现,通过HuggingFace提供的接口调用BertForSequenceClassfication模型进行训练和预测。
测试用例传输模块,用于接收预设模糊测试工具产生的测试用例并将筛选后的有效测试用例传递给模糊测试对象继续执行;
模糊测试模块,用于对待测试目标进行模糊测试,主要实现模糊测试用例的生成及异常监控等功能。所述模块可以基于自定义模糊器或者第三方模糊测试工具AFL、Peach等实现。
本发明采用以上技术方案,在针对工控协议进行模糊测试的过程中,使用测试过程中的通信流量作为数据集对Bert分类模型进行训练,Bert模型可以自动学习协议测试用例拥有的特征,训练完成后的模型作为测试用例筛选模型对待执行的测试用例进行有效性的筛选,避免协议实体大量执行无效的测试用例,以提高模糊测试的效率。本发明的有益效果在于:1、利用Bert模型中独特的嵌入和多头注意力机制,更好的提取了工控协议序列的双向特征;2、基于工控协议异常响应的机制定义了测试用例的有效性;3、对无法通过协议实体检查的无效测试用例进行过滤,提高模糊测试的效率;4、通过实验分析表明,基于Bert的工控协议模糊测试用例筛选模型对测试用例的有效性分类结果更准确。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
Claims (6)
1.一种基于Bert的工控协议模糊测试用例筛选方法,其特征在于,包括以下步骤:
S1、获取测试用例训练集:对待测工控协议实体进行模糊测试,在测试过程中,捕获协议实体间的通信流量;分析服务器的响应报文,将捕获的报文分为有效样本和无效样本两类,作为测试用例训练集;
S2、训练集预处理:将采集到的每个样本数据包按字节划分,在字节间加入空格,并将所有样本统一长度,以符合Bert分类模型的输入格式;
S3、Bert分类模型训练:以步骤S2中处理后的训练集作为输入,训练得到基于Bert模型的测试用例筛选模型即Bert分类模型;
S4、测试用例筛选:执行模糊测试过程,接收预设模糊测试工具生成的测试用例,使用步骤S3训练得到的Bert分类模型对收集到的测试用例进行预测和筛选,以筛选掉无效的测试用例,然后将有效的测试用例返回执行,从而提高模糊测试的效率。
2.根据权利要求1所述的一种基于Bert的工控协议模糊测试用例筛选方法,其特征在于,步骤S1的具体步骤为:
S101、在一次模糊测试过程中,捕获测试对象间的通信流量并从中提取出客户端发送的Query报文,将其保存至待执行测试用例队列;
S102、模糊测试工具对测试用例队列中的报文进行变异,产生新的测试用例并发送执行;
S103、根据协议实体返回的响应报文,分析测试用例执行后的结果:若触发了协议预设的异常响应过程或测试用例被协议实体拒绝,则将该条测试用例视为无效;若测试用例被正常执行或者产生新的超时或崩溃现象,则将该条测试用例视为有效;
S104、重复执行S102和S103一段时间,直至收集到预定数量的样本;
S105、以标签1代表有效测试用例,以标签0代表无效测试用例,对收集到的样本集进行标注,将该有标签的样本集作为测试用例训练集。
3.根据权利要求1所述的一种基于Bert的工控协议模糊测试用例筛选方法,其特征在于,步骤S2的具体步骤为:
S201、将步骤S1采集到的样本数据包以十六进制的形式输出;
S202、按字节对测试用例进行切分,并在相邻字节之间加入空格,以符合Bert分类模型的输入要求;其中每个字节的表示是0~255的十六进制表示;
S203、对每条测试用例进行数据标准化处理,即统一所有测试用例的长度,设设置的测试用例长度为m,对于测试用例字节数超过m的测试用例进行截断,对测试用例字节数不足m的测试用例在尾部用0补齐。
4.根据权利要求1所述的一种基于Bert的工控协议模糊测试用例筛选方法,其特征在于,Bert分类模型由Bert层、全连接层和分类层三部分组成;Bert层用于序列数据的嵌入和特征提取,训练集输入到Bert层后计算得到一个固定维度[768,1]的向量来表示整个序列的特征;全连接层是拥有768个神经元的线性层,用于接收Bert层的输出,整合所提取的序列特征;分类层采用的是softmax分类器,用于对每条样本进行有效性和无效性的分类。
5.根据权利要求4所述的一种基于Bert的工控协议模糊测试用例筛选方法,其特征在于,Bert层由嵌入层和多层transformer组成;嵌入层的作用是将文本序列数据转化为可进行数学计算的向量,Bert层将训练集中每条输入的测试用例的每个token转化为向量,Bert层中的嵌入层采用三种不同嵌入的方式,分别是Token嵌入、Segment嵌入和Position嵌入;多层transformer作用是提取序列特征和描述序列中前后词元的隐藏相关性,多层transformer使用transformer中的encoder部分,有12层encoder,每层有12个Attention块,词向量维度是768。
6.一种基于Bert的工控协议模糊测试用例筛选系统,其特征在于,包括:
测试用例采集模块,用于获取模糊测试过程中的通信数据包,作为后续模型训练的数据集;
数据预处理模块,用于对数据集进行预处理,以符合后续Bert模型的输入格式;
测试用例筛选模块,基于Bert模型实现,使用处理后的数据集作为训练集对其进行训练,训练完成后的模型用于对输入的测试用例进行预测和分类,以完成筛选无效测试用例的功能;
测试用例传输模块,用于接收预设模糊测试工具产生的测试用例并将筛选后的有效测试用例传递给模糊测试对象继续执行;
模糊测试模块,用于对待测试目标进行模糊测试,实现模糊测试用例的生成及异常监控等功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310652941.2A CN116662184B (zh) | 2023-06-05 | 2023-06-05 | 一种基于Bert的工控协议模糊测试用例筛选方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310652941.2A CN116662184B (zh) | 2023-06-05 | 2023-06-05 | 一种基于Bert的工控协议模糊测试用例筛选方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116662184A true CN116662184A (zh) | 2023-08-29 |
CN116662184B CN116662184B (zh) | 2024-01-30 |
Family
ID=87714886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310652941.2A Active CN116662184B (zh) | 2023-06-05 | 2023-06-05 | 一种基于Bert的工控协议模糊测试用例筛选方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116662184B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667749A (zh) * | 2024-01-31 | 2024-03-08 | 中兴通讯股份有限公司 | 一种模糊测试用例优化方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113779045A (zh) * | 2021-11-12 | 2021-12-10 | 航天宏康智能科技(北京)有限公司 | 工控协议数据异常检测模型的训练方法和训练装置 |
CN115237766A (zh) * | 2022-07-19 | 2022-10-25 | 科大讯飞股份有限公司 | 模糊测试用例筛选方法、装置、电子设备及存储介质 |
WO2022247738A1 (zh) * | 2021-05-24 | 2022-12-01 | 国网湖北电力有限公司电力科学研究院 | 一种基于模糊测试的电力物联网协议漏洞检测系统及方法 |
WO2023273449A1 (zh) * | 2021-06-29 | 2023-01-05 | 中国电子技术标准化研究院 | 基于生成对抗网络的测试用例生成方法及装置 |
-
2023
- 2023-06-05 CN CN202310652941.2A patent/CN116662184B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022247738A1 (zh) * | 2021-05-24 | 2022-12-01 | 国网湖北电力有限公司电力科学研究院 | 一种基于模糊测试的电力物联网协议漏洞检测系统及方法 |
WO2023273449A1 (zh) * | 2021-06-29 | 2023-01-05 | 中国电子技术标准化研究院 | 基于生成对抗网络的测试用例生成方法及装置 |
CN113779045A (zh) * | 2021-11-12 | 2021-12-10 | 航天宏康智能科技(北京)有限公司 | 工控协议数据异常检测模型的训练方法和训练装置 |
CN115237766A (zh) * | 2022-07-19 | 2022-10-25 | 科大讯飞股份有限公司 | 模糊测试用例筛选方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
刘智远: "《基于模糊测试的未知协议漏洞挖掘方法研究》", 《信息科技》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667749A (zh) * | 2024-01-31 | 2024-03-08 | 中兴通讯股份有限公司 | 一种模糊测试用例优化方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116662184B (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110597734B (zh) | 一种适用于工控私有协议的模糊测试用例生成方法 | |
CN109167796B (zh) | 一种基于工业scada系统的深度包检测平台 | |
US11336669B2 (en) | Artificial intelligence cyber security analyst | |
CN111818052B (zh) | 基于cnn-lstm的工控协议同源攻击检测方法 | |
CN109450842B (zh) | 一种基于神经网络的网络恶意行为识别方法 | |
Lichodzijewski et al. | Host-based intrusion detection using self-organizing maps | |
CN107360145B (zh) | 一种多节点蜜罐系统及其数据分析方法 | |
CN113158390B (zh) | 一种基于辅助分类式生成对抗网络的网络攻击流量生成方法 | |
CN108270779B (zh) | 一种入侵检测系统安全规则的自动生成方法 | |
CN112468347B (zh) | 一种云平台的安全管理方法、装置、电子设备及存储介质 | |
CN105024877A (zh) | 一种基于网络行为分析的Hadoop恶意节点检测系统 | |
CN116662184B (zh) | 一种基于Bert的工控协议模糊测试用例筛选方法及系统 | |
CN110046297B (zh) | 运维违规操作的识别方法、装置和存储介质 | |
CN111866024A (zh) | 一种网络加密流量识别方法及装置 | |
CN113612763A (zh) | 基于网络安全恶意行为知识库的网络攻击检测装置和方法 | |
CN111181930A (zh) | DDoS攻击检测的方法、装置、计算机设备及存储介质 | |
CN114330544A (zh) | 一种业务流量异常检测模型建立方法及异常检测方法 | |
CN114462520A (zh) | 一种基于流量分类的网络入侵检测方法 | |
CN114064471A (zh) | 一种基于生成对抗网络的Ethernet/IP协议模糊测试方法 | |
CN113194064A (zh) | 基于图卷积神经网络的webshell检测方法及装置 | |
CN116723058B (zh) | 网络攻击检测和防护方法和装置 | |
CN116827656A (zh) | 网络信息安全防护系统及其方法 | |
CN115333915B (zh) | 一种面向异构主机的网络管控系统 | |
CN115587007A (zh) | 基于RoBERTa的网络日志安全检测方法及系统 | |
Tan et al. | Using hidden markov models to evaluate the real-time risks of network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |