CN110597734A - 一种适用于工控私有协议的模糊测试用例生成方法 - Google Patents

一种适用于工控私有协议的模糊测试用例生成方法 Download PDF

Info

Publication number
CN110597734A
CN110597734A CN201910898735.3A CN201910898735A CN110597734A CN 110597734 A CN110597734 A CN 110597734A CN 201910898735 A CN201910898735 A CN 201910898735A CN 110597734 A CN110597734 A CN 110597734A
Authority
CN
China
Prior art keywords
value
field
protocol
data frame
weight
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
Application number
CN201910898735.3A
Other languages
English (en)
Other versions
CN110597734B (zh
Inventor
丁旭阳
谢盈
张帅
游新童
丁晓聪
张小松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN201910898735.3A priority Critical patent/CN110597734B/zh
Publication of CN110597734A publication Critical patent/CN110597734A/zh
Application granted granted Critical
Publication of CN110597734B publication Critical patent/CN110597734B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases

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)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种适用于工控私有协议的模糊测试用例生成方法,该方法包括以下5个步骤:数据预处理、特征生成和选择、协议数据帧聚类、带变异策略的格式提取以及模糊测试用例生成。该方法根据工控私有协议中各偏移位置的取值变化特征推断字段可能的类型,并进一步生成模糊测试的变异策略,从而降低工控私有协议的解析的代价,同时能够对工控私有协议进行针对性的变异,提高测试用例的生成效率。

Description

一种适用于工控私有协议的模糊测试用例生成方法
技术领域
本发明涉及工控系统的模糊测试领域,具体涉及一种适用于工控私有协议的模糊测试用例生成方法。
背景技术
模糊测试是一种挖掘工业控制系统(简称工控系统)潜在漏洞的有效技术手段,测试用例生成是模糊测试技术的关键步骤,由于众多的工控协议为私有协议,无法通过获取协议规范进行针对性的变异生成有效的测试用例,因此,本文提出了一种针对工控私有协议的模糊测试用例生成方法。
由于工控协议具有报文字段紧凑、缺少定位符和字段边界难以确定的特性,因此从二进制格式的工控私有协议中提取详细的报文结构和语义信息较为困难,且成本较高。
发明内容
针对上述问题,本发明对工控私有协议解析的目的是用于指导私有协议进行针对性的变异,从而提高模糊测试的代码覆盖率,以及较少无效测试用例的生成,因此只需要提取工控私有协议中各偏移位置的取值变化特征。
本发明实现工控私有协议模糊测试用例生成主要有以下5个步骤:数据预处理、特征生成和选择、协议数据帧聚类、带变异策略的格式提取以及模糊测试用例生成。对于从工控网络环境中得到的网络数据流中可能混合着多种协议类型,为了能够正确的对工控私有协议生成模糊测试用例,通常需要数据预处理、特征生成和选择、协议数据帧聚类的步骤,但本发明的核心是针对工控私有协议的带变异策略的格式提取。其中,
S1)数据预处理:基于网络数据采集软件采集被测工控系统中的真实私有协议通信数据包,然后对所述真实私有协议通信数据包进行过滤,得到真实私有协议数据帧;
S2)特征生成和选择:根据频繁出现的数据帧片段提取步骤S1)中所述真实私有协议的协议数据帧特征,以识别所述真实私有协议的协议类型;
S3)协议数据帧聚类:利用步骤S2)提取的协议数据帧特征,采用聚类算法对步骤S1)得到的所述真实私有协议数据帧进行分类,将所述真实私有协议数据帧分成若干组,其中具有相同数据帧格式的协议报文分为一组,构成一个数据帧分组;
S4)带变异策略的格式提取:对步骤S3)中的每一个数据帧分组统计其位置权重矩阵(Position Weight Matrix,PWM),并由此统计该数据帧分组中数据帧指定位置的概率分布,根据该数据帧分组中各字段位置的取值分布规律推断各字段的含义,根据不同字段在所述真实私有协议中表现出的特点来提取各字段的变异策略,由此提取模糊测试用例生成策略;
S5)模糊测试用例生成:基于步骤S4)提取的所述模糊测试用例的生成策略,并从步骤S1)得到的所述真实私有协议数据帧中提取变异种子,生成所述被测工控系统的私有协议模糊测试用例。
本发明提出的一种适用于工控私有协议的模糊测试用例生成方法,该方法根据工控私有协议中各偏移位置的取值变化特征推断字段可能的类型,并进一步生成模糊测试的变异策略,从而降低工控私有协议的解析的代价,同时能够对工控私有协议进行针对性的变异,提高测试用例的生成效率。
附图说明
图1为本发明的流程示意图
图2为本发明实施例中分组1的输出变异策略示意图
图3为实施例中分组1的部分测试用例截图
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下将参照附图和具体实施方式对本发明的技术方案进行进一步详细说明。
本发明实现工控私有协议模糊测试用例生成主要有以下5个步骤:数据预处理、特征生成和选择、协议数据帧聚类、带变异策略的格式提取以及模糊测试用例生成。对于从工控网络环境中得到的网络数据流中可能混合着多种协议类型,为了能够正确的对工控私有协议生成模糊测试用例,通常需要数据预处理、特征生成和选择、协议数据帧聚类的步骤,但本发明的核心是针对工控私有协议的带变异策略的格式提取。本发明的流程示意图如图1所示。
1、数据预处理:基于网络数据采集软件(如wireshark,一种网络数据包分析软件)采集被测工控系统中的真实私有协议通信数据包,然后对所述真实私有协议通信数据包进行过滤,得到真实私有协议数据帧。由于在工控系统中较多的是控制端或上位机向终端或现场控制设备发送的控制指令,终端或现场控制设备仅仅需要向控制端或上位机发送确认信息或运行状态等反馈消息。在模糊测试的执行过程中仅需要构造并发送控制端或上位机到终端或现场控制设备的数据,以及分析终端或现场控制设备返回到发送控制端或上位机的数据帧。
2、特征生成和选择:在工控系统中,由于协议通常具有面向控制以及格式单一等特性,控制指令或者功能码等字段会频繁的出现在所述真实私有协议通信协议数据帧中,因此可以根据频繁出现的数据帧片段(即频繁项)来提取所述真实私有协议的协议数据帧特征,以识别所述真实私有协议的协议类型。基于对常用工控协议的分析发现工控协议都具有结构紧凑、较少携带数据信息且通常字段长度不固定等特点,不能以单一的固定窗口值切分数据帧,因此本发明针对工控协议特征提取的特点,采用基于多窗口切分数据帧产生协议数据帧片段,并由此生成特征项的方法。由于多窗口切分数据帧会得到较多的特征项,因此需要对冗余的特征项进行融合以及对无效特征项进行筛选,确保能够细粒度的提取协议特征的同时避免特征维度过高。此外,在协议数据帧片段中,即使同一数据帧片段出现在不同的位置表示的意义也不相同,因此需要对切分后的数据帧片段偏移位置进行区分,使用偏移位置和数据帧片段共同提取所述真实私有协议的协议数据帧特征。
3、协议数据帧聚类:为了将不同数据帧格式的协议报文分离出来,提取协议格式,利用步骤2提取的协议数据帧特征,采用聚类算法实现对步骤1得到的所述真实私有协议数据帧进行分类,将所述真实私有协议数据帧分成若干组,其中具有相同数据帧格式的协议报文分为一组,构成一个数据帧分组。
4、带变异策略的格式提取:工控协议具有格式相同或相近、传输信息重复性高、语义有限、文本数据包相对较少且格式相对单一的特性。为了提取所述真实私有协议的数据帧格式并输入模糊测试的变异策略,对步骤3中的每一个数据帧分组统计其位置权重矩阵Position Weight Matrix(PWM),并由此统计该分组中数据帧指定位置的概率分布,根据各字段位置的取值分布规律推断该字段的含义,根据不同字段在协议中表现出的特点来提取字段的变异策略,由此提取模糊测试用例生成策略。
协议报文划分静态区域和可变区域,静态区域通常是保留关键字、协议标识符和特征定界符等,而可变区域通常意味着内容或者长度可变的字段。
工控协议中通常包含协议标识符、序号、地址、长度、功能码等字段。而这些字段通常会呈现出不同的分布特征,根据不同字段在协议中表现出的特点来提取字段的变异策略。
协议标识符通常用于标识协议的类型,不同协议具有不同的标识符,在同类协议报文中通常具有唯一标识符且通常位于报文协议帧的首部,即协议标识符是静态区域且为固定值。
序号字段用于标识协议的序号,通常根据捕获到的数据帧时序递增且靠近数据帧首部,因此是可变区域且在取值集合上的整体概率分布较均匀。
地址字段通常是标识协议通信双方或者目的地址,在工控协议中通常是可编程逻辑控制器(PLC)或者其他工控设备的地址,该字段为可变区域且在取值集合上分布较离散。
长度字段通常是标识协议的数据负载部分的长度,通常是可变区域,而由于工控协议格式相对固定且单一,所以长度字段的取值也相对固定,会集中在取值集合上的某几个值之间。
功能码字段是工控协议的关键字段,其为可变区域但通常取值范围相对固定在某一部分取值集合,对数据帧整体结构影响较大。
统计位置权重矩阵中指定位置的取值概率分布规律,即根据位置权重矩阵中各偏移位置的取值范围和分布规律推断数据帧中的字段类型,从而定位数据帧中容易引发异常的字段,并输出协议解析结果以及该数据帧字段的变异策略,将位置权重矩阵中的空项赋值为-1,若位置权重矩阵中某一列的权重集合中所有值均为0,则将其定义为-1,即Pro(-1)=0。该表格中的一列指一个字段,一个字段可以是多个字节,或多个bit。基于统计分析的方法得到数据帧的位置权重矩阵如表1所示:
表1数据帧的位置权重矩阵
其中,Proj,i表示位置权重矩阵中第j列的第i个偏移位置值vi的权重,i=1,2,…,n,j=1,2,…,m。
数据帧的变异策略包括以下几个参数:变异规则Mutr、变异权重Mutw、取值区间Muta和用例规模Muts,各个变异参数的定义如下:
变异规则Mutr定义为该字段在测试用例生成过程的变异方式,根据字段的值类型确定,如果是静态区域,则采用规则变异,规则变异主要的变异手段包括:位取反、邻近值替换、伪随机数替换、置0x00、置0xFF和超长串替换等方式;如果为可变域,则采用随机变异,变异手段为置0x00、置0xFF和超长字符串替换。
变异权重Mutw定义为该字段在测试用例生成过程进行变异对数据帧结构影响的重要程度,如果是功能码等对数据帧结构具有重要意义的特殊标识符应该赋值较高的权重,如果是数据域和序号等字段则赋值较低的权重。
取值区间Muta定义为该字段在数据帧集合中的取值边界和取值范围,通常协议字段取值边界容易触发系统的潜在漏洞,因此可以根据字段的取值边界和取值范围对数据帧进行针对性的变异。如果字段的取值范围为0x00到0xff,即取值区间为整个取值集合,那么定义其取值区间为null。
用例规模Muts定义为该字段在测试用例生成过程生成的变异规则执行的次数。
位置权重矩阵指定偏移位置的列取值分布率计算规则如下:
通过计算标准差来确定第j列的全局离散分布率Disglobal
其中n为取值集合的总数,Proj,i为第j列的第i个偏移位置值的权重,Prou为第j列权重总体均值,定义如下:
通过去除权重值为0的概率分布,得到第j列非0取值集合V′=(v1,v2,...,vn′)内的标准差,由此计算第j列局部离散分布率Dislocal
其中n′为去除第j列权重值为0的分布后取值集合的总数,Pro′j,k为第j列的第k个非0取值的权重,Pro′u为在第j列取值集合V′上的权重均值,定义如下:
在非0取值集合V'上计算取值与权重的分布关系,集合V'中的取值对应的第j列权重集合为Pro'=(Pro1,Pro2,...,Pron'),计算相邻两个取值间的权重的递增关系,得到第j列的取值权重分布向量VPro=(vp1,vp2,...,vpn-1),其中取值vpi的权重分布向量的计算公式如下所示:
其中,vi+1,vi指第j列非0取值集合V′上的第i+1个和第i个偏移位置值。
然后根据权值分布向量VPro计算第j列的取值权重分布系数α计算公式如下:
其中
其中,对于j=1,2,...,m(即位置权重矩阵中的每一列)均执行上述相同的操作。
对于任意一个j,其中j=1,2,...,m,根据位置权重概率分布输出协议格式和变异策略原则如下:
原则一:若即该字段在所有数据帧中取值为同一固定值,意味着该字段可能为协议标志符等静态域,则应采用规则变异的方式,取值区间为该固定值。固定值字段可能会对数据帧结构产生一定的影响,应该具有较高的变异权重,因此变异权重为3。如果对固定值字段进行变异生成的测试用例可能会被测试目标设备识别为无效报文丢弃,所以用例规模不应过大,避免产生过多的无效测试用例。但是固定值字段对于数据帧结构意义重大,因此也可能会识别出系统的较严重漏洞,此类漏洞对于工控系统安全脆弱性识别具有重要意义,因此可以以牺牲一定的用例规模代价,赋予用例规模为2。
原则二:若Disglobal<T,即该字段在所有数据帧中取值呈全局均匀分布,即取值范围相对均匀的分布在0x00到0xff之间,意味着该数据帧片段在整个值域集合内都能随机取值且取任意值的概率接近,根据其分布特征可以推断该数据帧位置可能为序号等取值会按序出现的字段,则应采用随机变异的方式,取值区间为null。表现为随机取值的字段通常对整个报文结构的影响不是很大,在通信过程中较少存在脆弱点,因此变异权重为1,用例规模为1。其中,T是预设全局区域阈值,用于衡量数据帧中的取值是否呈均匀分布,比如字段长为0x0000,判断0x0000-0xffff出现的频率是否相等,由于Disglobal是取的方差,所以可以通过预设全局区域阈值T来衡量取值分布规律。
原则三:若Disglobal>T且Dislocal<T′,且α<n′,即该字段在所有数据帧中取值在全局集合内分布较离散,而在局部取值范围内呈均匀分布,且取值分布率与字段值无关联关系,意味着该数据帧片段为可变域但是局限于一定值,可能为功能码、长度字段及其他特殊关键字段,则应采用规则变异的方式,取值区间为该取值范围。关键字段对工控协议的通信过程的具有重大意义且对数据帧结构可能会有一定的印象,出现内存溢出等漏洞的概率也较高,因此该字段的变异权重为4,用例规模为3。其中,T′是预设局部区域阈值,当Disglobal大于T,即全局分布较离散,则选择预设局部区域阈值T′判断取值分布,比如字段长为0x0000,但是取值只集中在0x0000-0x00ff,判断其在0x0000-0x00ff局部出现的频率。
原则四:若Disglobal>T且Dislocal<T′,且α=n′,即该字段在所有数据帧中取值在全局集合内分布较离散,而在局部取值范围内呈集中分布,取值集合局部连续,且取值分布率随取值的增加而严格递减。说明该列可能为随报文数量增加而值递增字段的高位,由于上位机与多台目标设备的通信,造成取值较小的序号出现的概率更高,因此取值分布规律表现为随取值的增加而权重降低。因此该类型字段应采用规则变异的方式,取值区间为该字段在数据帧中出现的取值范围。由于序号字段通常在工控协议中只是作为标志序号,较少协议控制信息和数据信息,因此,变异测试用例数量不宜过多,用例规模为1,对于序号的变异可能会导致测试目标设备错误识别数据帧的接收顺序,因此存在一定的可能性触发漏洞,因此变异权重为2。
原则五:若Disglobal>T且Dislocal>T′,且Pro(-1)=0,即该字段在所有数据帧中取值在全局取值集合呈离散分布且没有局部集中的区域,并且所有数据帧中该字段位置不为空。意味着该字段通常随机分布且取值无规律,可能为数据负载和地址等随机取值可变域,应采用随机变异的方式,取值区间为null。表现为随机取值的字段通常对整个报文结构的影响不是很大,因此变异权重为1。在协议的通信过程中可能会触发一些寻址异常或者数据异常造成的漏洞,因此应该生成较多的变异测试用例,用例规模为4。其中,Pro(-1)=0表示该列的权重集合中所有值均为0,则将其定义为-1。
原则六:若Disglobal>T且Dislocal>T′,且Pro(-1)不为0,即该字段在所有数据帧中取值在全局取值集合呈离散分布且没有局部集中的区域,并且部分数据帧中该字段位置为空。意味着该字段可能为变长域字段且在数据帧尾部,可能为数据负载等变长可变域,则应采用随机变异的方式,取值区间为null。表现为随机取值的字段通常对整个报文结构的影响不是很大,因此变异权重为1。在协议的通信过程中可能会超长字符串触发缓冲区溢出的漏洞,因此应该生成较多的变异测试用例,用例规模为4。
5、模糊测试用例生成:基于步骤4提取的模糊测试用例生成策略,并从步骤1采集的所述真实私有协议数据帧中提取变异种子,生成所述被测工控系统的私有协议模糊测试用例。
下面将以基于Modbus协议工控系统对本发明的测试用例生成方法进行详细的说明:
1、数据预处理:首先对工控系统网络环境下数据包进行捕获,然后对数据包进行过滤,得到Modbus协议数据帧。
2、对Modbus协议数据帧提取频繁项,提取能够识别协议类型的频繁项片段作为数据帧的特征。
3、根据提取到的特征对数据帧进行聚类操作,共得到4个分组。
4、对所述分组统计位置权重矩阵,并基于位置权重矩阵提取源数据帧的协议格式,根据各字段位置的取值分布规律推断该字段的协议类型,根据不同字段类型在协议中表现出的特征来提取字段的变异策略,由此提取模糊测试用例的生成策略。对于分组1输出变异策略如图2所示:
由输出的变异策略可以看出第一字段的取值规律符合变异策略原则四,即该字段在所有数据帧中取值在全局集合内分布较离散,而在局部取值范围内呈集中分布,取值集合局部连续,且取值分布率随取值的增加而严格递减。通过对分组1中数据帧的第一字段的取值进行统计,其取值范围为{0x00,0x01,0x02,0x03},取值的权重分别为{0.53,0.25,0.18,0.04},由此可见符合变异策略原则四,验证了变异策略输出的可靠性。
由输出的变异策略可以看出第二字段的取值规律符合变异策略原则二,即该字段在所有数据帧中取值呈全局均匀分布,取值范围均匀的分布在0x00到0xff之间。通过对分组1中数据帧的第二字段的取值进行统计,其取值为范围为0x00到0xff之间,且最大权重不超过0.04,由此可见符合变异策略二,验证了变异策略的可靠性。
由输出的变异策略可以看出第三、四、五、六和七字段的取值规律符合变异策略原则一,即该字段在所有数据帧中取值为固定值。通过对分组1中数据帧的第三、四、五、六和七字段的取值进行统计,其取值分别为固定值0x00、0x00、0x00、0x06和0x01,由此可见符合变异策略一,验证了变异策略的可靠性。
由输出的变异策略可以看出第八字段的取值规律符合变异策略原则三,即该字段在所有数据帧中的取值在全局集合内分布较离散,而在局部取值范围内呈均匀分布,且取值分布率与字段值无关联关系。通过统计分组1中数据帧的第八字段的取值分布,其取值范围为{0x01,0x02,0x03,0x04,0x06},取值的权重分别为{0.19,0.22,0.24,0.18,0.17},由此可见符合变异策略原则四,验证了变异策略输出的可靠性。
由输出的变异策略可以看出第九、十、十一和十二字段的取值规律符合变异策略原则五,即该字段在所有数据帧中取值在全局取值集合呈离散分布且没有局部集中的区域,并且所有数据帧中该字段位置不为空。意味着该字段通常随机分布且取值无规律。通过统计分组1中数据帧的第九、十、十一和十二字段的取值分布,其取值均为随机离散的点,由此可见符合变异策略五,验证了变异策略的可靠性。
5、基于生成的变异策略生成测试用例,如图3所示为第一个分组的部分测试用例截图:
截图中标记出的为变异的数据帧片段,从截图中我们可以看出该组的测试用例的种子数据帧为00 09 00 00 00 06 01 03 1A 3F 00 04。子测试用例集1是针对第一字段进行变异得到的测试用例,其中0xFF、0xFE、0xFD和0xFC分别为协议解析脚本中第一字段的取值区间{0x00,0x01,0x02,0x03}的位取反变异结果,0x04为取值区间的邻近值变异结果,0xC2为伪随机数变异结果,序列9A B1 2C 1D 21 F1 5E 39 0E 8E为随机生成超长串变异结果。子测试用例集2是针对第二字段进行变异得到的测试用例,其中置0x00变异由于生成的数据帧与变异源数据帧相同而被过滤,置0xFF由于与位取反变异方式生成的0xFF相同而被过滤,序列91 BA 50 F4 D0 17 5B为随机生成超长串变异结果。子测试用例集3是针对第三字段进行变异得到的测试用例,由于协议解析脚本中第三字段的用例规模为2,因此需要进行两轮变异,其中0xFF、0x01、0x27和序列A9 11 E1 9A 0E 8C 92 DE为第一轮变异得到的测试用例,0x9E和序列2E C3 41 71 DD 9F为第二轮变异的结果,其中相同的测试用例被过滤。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围。凡采用等同替换或等效替换,这些变化是显而易见,一切利用本发明构思的发明创造均在保护之列。

Claims (5)

1.一种适用于工控私有协议的模糊测试用例生成方法,其特征在于,该方法包括如下步骤:数据预处理、特征生成和选择、协议数据帧聚类、带变异策略的格式提取以及模糊测试用例生成,其中,
S1)数据预处理:基于网络数据采集软件采集被测工控系统中的真实私有协议通信数据包,然后对所述真实私有协议通信数据包进行过滤,得到真实私有协议的数据帧;
S2)特征生成和选择:根据频繁出现的数据帧片段提取步骤S1)中所述真实私有协议的协议数据帧特征,以识别所述真实私有协议的协议类型;
S3)协议数据帧聚类:利用步骤S2)提取的协议数据帧特征,采用聚类算法对步骤S1)得到的所述真实私有协议的数据帧进行分类,将所述真实私有协议的数据帧分成若干组,其中具有相同数据帧格式的协议报文分为一组,构成一个数据帧分组;
S4)带变异策略的格式提取:对步骤S3)中的每一个数据帧分组统计其位置权重矩阵(PWM),并由此统计该数据帧分组中数据帧指定位置的概率分布,根据该数据帧分组中各字段位置的取值分布规律推断各字段的含义,根据不同字段在所述真实私有协议中表现出的特点来提取各字段的变异策略,由此提取模糊测试用例生成策略;
S5)模糊测试用例生成:基于步骤S4)提取的所述模糊测试用例的生成策略,并从步骤S1)得到的所述真实私有协议的数据帧中提取变异种子,生成所述被测工控系统的私有协议模糊测试用例。
2.根据权利要求1所述的适用于工控私有协议的模糊测试用例生成方法,其特征在于,所述步骤S1)中的所述网络数据采集软件为wireshark。
3.根据权利要求1或2所述的适用于工控私有协议的模糊测试用例生成方法,其特征在于,所述步骤S2)中提取所述真实私有协议的协议数据帧特征的方法具体包括:采用基于多窗口切分所述真实私有协议的数据帧产生协议数据帧片段,并由此生成特征项的方法,并对多窗口切分数据帧得到的冗余特征项进行融合以及对无效特征项进行筛选,确保能够细粒度的提取协议特征的同时避免特征维度过高,此外,对切分后的数据帧片段偏移位置进行区分,使用偏移位置和数据帧片段共同提取所述真实私有协议的协议数据帧特征。
4.根据权利要求3所述的适用于工控私有协议的模糊测试用例生成方法,其特征在于,所述步骤S4)中不同字段在所述真实私有协议中表现出的特点具体包括:工控协议中包含协议标识符、序号、地址、长度、功能码字段,这些字段呈现出不同的分布特征;
所述协议标识符用于标识协议的类型,不同协议具有不同的标识符,在同类协议报文中具有唯一标识符且通常位于报文协议帧的首部,即协议标识符是静态区域且为固定值;
所述序号字段用于标识协议的序号,通常根据捕获到的数据帧时序递增且靠近数据帧首部,因此是可变区域且在取值集合上的整体概率分布较均匀;
所述地址字段通常是标识协议通信双方或者目的地址,在工控协议中是可编程逻辑控制器(PLC)或者其他工控设备的地址,该字段为可变区域且在取值集合上分布较离散;
所述长度字段是标识协议的数据负载部分的长度,是可变区域,由于工控协议格式相对固定且单一,所以所述长度字段的取值也相对固定,会集中在取值集合上的某几个值之间;
所述功能码字段是工控协议的关键字段,其为可变区域但取值范围相对固定在某一部分取值集合,对数据帧整体结构影响较大。
5.根据权利要求4所述的适用于工控私有协议的模糊测试用例生成方法,其特征在于,所述步骤S4)中对每一个数据帧分组统计其位置权重矩阵由此提取模糊测试用例生成策略具体包括:
统计每一个数据帧分组位置权重矩阵中指定位置的取值概率分布规律,即根据位置权重矩阵中各偏移位置的取值范围和分布规律推断数据帧中的字段类型,从而定位数据帧中容易引发异常的字段,并输出协议解析结果以及该数据帧字段的变异策略,位置权重矩阵中的一列指一个字段,位置权重矩阵中的一行指一个偏移位置值,位置权重矩阵中的元素Proj,i表示位置权重矩阵中第j列的第i个偏移位置值vi的权重,i=1,2,…,n,j=1,2,…,m,将位置权重矩阵中的空项赋值为-1,即若位置权重矩阵中某一列的权重集合中所有值均为0,则将其定义为-1,表示为Pro(-1)=0;
数据帧的变异策略包括以下几个变异参数:变异规则Mutr、变异权重Mutw、取值区间Muta和用例规模Muts,各个变异参数的定义如下:
变异规则Mutr定义为该字段在测试用例生成过程的变异方式,根据字段的值类型确定,如果是静态区域,则采用规则变异,规则变异主要的变异手段包括:位取反、邻近值替换、伪随机数替换、置0x00、置0xFF和超长串替换;如果为可变区域,则采用随机变异,变异手段为置0x00、置0xFF和超长字符串替换;
变异权重Mutw定义为该字段在测试用例生成过程进行变异对数据帧结构影响的重要程度,如果是功能码这样对数据帧结构具有重要意义的特殊标识符应该赋值较高的权重,如果是数据域和序号字段则赋值较低的权重;
取值区间Muta定义为该字段在数据帧集合中的取值边界和取值范围,协议字段取值边界容易触发系统的潜在漏洞,因此可以根据字段的取值边界和取值范围对数据帧进行针对性的变异,如果字段的取值范围为0x00到0xff,即取值区间为整个取值集合,那么定义其取值区间为null;
用例规模Muts定义为该字段在测试用例生成过程生成的变异规则执行的次数;
位置权重矩阵指定偏移位置的列取值分布率计算规则如下:
通过计算标准差来确定第j列的全局离散分布率Disglobal
其中n为取值集合的总数,Proj,i为第j列的第i个偏移位置值的权重,Prou为第j列权重总体均值,定义如下:
通过去除第j列中权重值为0的概率分布,得到第j列非0取值集合V′=(v1,v2,...,vn′)内的标准差,由此计算第j列局部离散分布率Dislocal
其中n′为去除第j列权重值为0的分布后取值集合的总数,Pro′j,k为第j列的第k个非0取值的权重,Pro′u为在第j列取值集合V′上的权重均值,定义如下:
在第j列非0取值集合V′上计算取值与权重的分布关系,第j列非0取值集合V′中的取值对应的第j列权重集合为Pro′=(Pro1,Pro2,...,Pron′),计算相邻两个取值间的权重的递增关系,得到第j列的取值权重分布向量VPro=(vp1,vp2,...,vpn-1),其中取值vpi的权重分布向量的计算公式如下所示:
其中,vi+1,vi指第j列非0取值集合V′上的第i+1个和第i个偏移位置值;
然后根据第j列的取值权值分布向量VPro计算第j列的取值权重分布系数α,其计算公式如下:
其中
对于j=1,2,...,m均执行上述相同的操作;
对于任意一个j,其中j=1,2,...,m,根据位置权重概率分布输出协议格式和变异策略原则如下:
原则一:若即该字段在所有数据帧中取值为同一固定值,应采用规则变异的方式,取值区间为该固定值;变异权重为3;赋予用例规模为2;
原则二:若Disglobal<T,即该字段在所有数据帧中取值呈全局均匀分布,即取值范围相对均匀的分布在0x00到0xff之间,意味着该数据帧字段在整个值域集合内都能随机取值且取任意值的概率接近,应采用随机变异的方式,取值区间为null;变异权重为1,用例规模为1;其中,T是预设全局区域阈值,用于衡量数据帧中的取值是否呈均匀分布;
原则三:若Disglobal>T且Dislocal<T′,且α<n′,即该字段在所有数据帧中取值在全局集合内分布较离散,而在局部取值范围内呈均匀分布,且取值分布率与字段值无关联关系,意味着该数据帧字段为可变区域但是局限于一定值,应采用规则变异的方式,取值区间为该数据帧字段的取值范围;变异权重为4,用例规模为3;其中,T′是预设局部区域阈值;
原则四:若Disglobal>T且Dislocal<T′,且α=n′,即该字段在所有数据帧中取值在全局集合内分布较离散,而在局部取值范围内呈集中分布,取值集合局部连续,且取值分布率随取值的增加而严格递减,该类型字段应采用规则变异的方式,取值区间为该字段在数据帧中出现的取值范围;用例规模为1;变异权重为2;
原则五:若Disglobal>T且Dislocal>T′,且Pro(-1)=0,即该字段在所有数据帧中取值在全局取值集合呈离散分布且没有局部集中的区域,并且所有数据帧中该字段位置不为空,意味着该字段随机分布且取值无规律,应采用随机变异的方式,取值区间为null;变异权重为1;用例规模为4;
原则六:若Disglobal>T且Dislocal>T′,且Pro(-1)不为0,即该字段在所有数据帧中取值在全局取值集合呈离散分布且没有局部集中的区域,并且部分数据帧中该字段位置为空,应采用随机变异的方式,取值区间为null;变异权重为1;用例规模为4。
CN201910898735.3A 2019-09-23 2019-09-23 一种适用于工控私有协议的模糊测试用例生成方法 Active CN110597734B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910898735.3A CN110597734B (zh) 2019-09-23 2019-09-23 一种适用于工控私有协议的模糊测试用例生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910898735.3A CN110597734B (zh) 2019-09-23 2019-09-23 一种适用于工控私有协议的模糊测试用例生成方法

Publications (2)

Publication Number Publication Date
CN110597734A true CN110597734A (zh) 2019-12-20
CN110597734B CN110597734B (zh) 2021-06-01

Family

ID=68862363

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910898735.3A Active CN110597734B (zh) 2019-09-23 2019-09-23 一种适用于工控私有协议的模糊测试用例生成方法

Country Status (1)

Country Link
CN (1) CN110597734B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111427305A (zh) * 2020-03-29 2020-07-17 博智安全科技股份有限公司 针对西门子plc漏洞挖掘的方法
CN111444108A (zh) * 2020-04-14 2020-07-24 北京天地和兴科技有限公司 一种基于s7工业协议的行为审计自动化测试方法
CN111444094A (zh) * 2020-03-25 2020-07-24 中国邮政储蓄银行股份有限公司 一种测试数据的生成方法和系统
CN112055003A (zh) * 2020-08-26 2020-12-08 上海电力大学 一种基于字节长度分类的私有协议模糊测试用例生成方法
CN112395209A (zh) * 2021-01-21 2021-02-23 博智安全科技股份有限公司 工控协议模糊测试用例生成方法、装置、设备及存储介质
CN112463638A (zh) * 2020-12-11 2021-03-09 清华大学深圳国际研究生院 基于神经网络的模糊测试方法及计算机可读存储介质
CN112765023A (zh) * 2021-01-19 2021-05-07 上海幻电信息科技有限公司 测试用例生成方法、装置
CN113206834A (zh) * 2021-04-07 2021-08-03 南京邮电大学 一种基于逆向技术的未知协议模糊测试自动化方法
CN113392402A (zh) * 2021-05-24 2021-09-14 国网湖北省电力有限公司电力科学研究院 一种基于模糊测试的电力物联网协议漏洞检测系统及方法
CN113709126A (zh) * 2021-08-18 2021-11-26 深圳开源互联网安全技术有限公司 网络协议安全模糊测试方法、装置、设备以及存储介质
CN114064499A (zh) * 2021-11-23 2022-02-18 电子科技大学 一种黑盒模糊测试方法、系统、电子设备及存储介质
CN114064506A (zh) * 2021-11-29 2022-02-18 电子科技大学 一种基于深度神经网络的二进制程序模糊测试方法及系统
CN115208958A (zh) * 2022-06-10 2022-10-18 珠海格力电器股份有限公司 协议自动分段方法和装置
CN116094972A (zh) * 2023-01-18 2023-05-09 重庆邮电大学 基于QRNN神经网络的Modbus TCP协议模糊测试方法
CN116841243A (zh) * 2023-06-19 2023-10-03 浙江大学 一种智能化plc协议格式推断方法、模糊测试方法及装置
CN117453573A (zh) * 2023-12-22 2024-01-26 信联科技(南京)有限公司 一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法及引擎

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150309914A1 (en) * 2013-07-17 2015-10-29 Deja Vu Security, Llc Metaphor based language fuzzing of computer code
US20160350211A1 (en) * 2015-06-01 2016-12-01 Peach Fuzzer Llc Whitebox network fuzzing
CN106330601A (zh) * 2016-08-19 2017-01-11 北京匡恩网络科技有限责任公司 测试用例生成方法及装置
CN107193731A (zh) * 2017-05-12 2017-09-22 北京理工大学 使用控制变异的模糊测试覆盖率改进方法
CN107241226A (zh) * 2017-06-29 2017-10-10 北京工业大学 基于工控私有协议的模糊测试方法
CN108416219A (zh) * 2018-03-18 2018-08-17 西安电子科技大学 一种Android二进制文件漏洞检测方法及系统
CN109634870A (zh) * 2018-12-20 2019-04-16 国家计算机网络与信息安全管理中心 一种工控系统协议模糊测试的脚本管理方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150309914A1 (en) * 2013-07-17 2015-10-29 Deja Vu Security, Llc Metaphor based language fuzzing of computer code
US20160350211A1 (en) * 2015-06-01 2016-12-01 Peach Fuzzer Llc Whitebox network fuzzing
CN106330601A (zh) * 2016-08-19 2017-01-11 北京匡恩网络科技有限责任公司 测试用例生成方法及装置
CN107193731A (zh) * 2017-05-12 2017-09-22 北京理工大学 使用控制变异的模糊测试覆盖率改进方法
CN107241226A (zh) * 2017-06-29 2017-10-10 北京工业大学 基于工控私有协议的模糊测试方法
CN108416219A (zh) * 2018-03-18 2018-08-17 西安电子科技大学 一种Android二进制文件漏洞检测方法及系统
CN109634870A (zh) * 2018-12-20 2019-04-16 国家计算机网络与信息安全管理中心 一种工控系统协议模糊测试的脚本管理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
REBECCA SHAPIRO, SERGEY BRATUS, EDMOND ROGERS, SEAN SMITH: "Identifying Vulnerabilities in SCADA Systems via", 《HAL》 *
张亚丰: "基于状态的工控协议Fuzzing测试技术", 《计算机科学》 *

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111444094A (zh) * 2020-03-25 2020-07-24 中国邮政储蓄银行股份有限公司 一种测试数据的生成方法和系统
CN111444094B (zh) * 2020-03-25 2023-08-04 中国邮政储蓄银行股份有限公司 一种测试数据的生成方法和系统
CN111427305A (zh) * 2020-03-29 2020-07-17 博智安全科技股份有限公司 针对西门子plc漏洞挖掘的方法
CN111427305B (zh) * 2020-03-29 2021-09-24 博智安全科技股份有限公司 针对西门子plc漏洞挖掘的方法
CN111444108A (zh) * 2020-04-14 2020-07-24 北京天地和兴科技有限公司 一种基于s7工业协议的行为审计自动化测试方法
CN112055003A (zh) * 2020-08-26 2020-12-08 上海电力大学 一种基于字节长度分类的私有协议模糊测试用例生成方法
CN112055003B (zh) * 2020-08-26 2022-12-23 上海电力大学 一种基于字节长度分类的私有协议模糊测试用例生成方法
CN112463638A (zh) * 2020-12-11 2021-03-09 清华大学深圳国际研究生院 基于神经网络的模糊测试方法及计算机可读存储介质
CN112765023A (zh) * 2021-01-19 2021-05-07 上海幻电信息科技有限公司 测试用例生成方法、装置
CN112765023B (zh) * 2021-01-19 2023-10-03 上海幻电信息科技有限公司 测试用例生成方法、装置
CN112395209A (zh) * 2021-01-21 2021-02-23 博智安全科技股份有限公司 工控协议模糊测试用例生成方法、装置、设备及存储介质
CN113206834B (zh) * 2021-04-07 2022-12-09 南京邮电大学 一种基于逆向技术的未知协议模糊测试自动化方法
CN113206834A (zh) * 2021-04-07 2021-08-03 南京邮电大学 一种基于逆向技术的未知协议模糊测试自动化方法
CN113392402A (zh) * 2021-05-24 2021-09-14 国网湖北省电力有限公司电力科学研究院 一种基于模糊测试的电力物联网协议漏洞检测系统及方法
WO2022247738A1 (zh) * 2021-05-24 2022-12-01 国网湖北电力有限公司电力科学研究院 一种基于模糊测试的电力物联网协议漏洞检测系统及方法
CN113709126A (zh) * 2021-08-18 2021-11-26 深圳开源互联网安全技术有限公司 网络协议安全模糊测试方法、装置、设备以及存储介质
CN114064499A (zh) * 2021-11-23 2022-02-18 电子科技大学 一种黑盒模糊测试方法、系统、电子设备及存储介质
CN114064499B (zh) * 2021-11-23 2023-04-07 电子科技大学 一种黑盒模糊测试方法、系统、电子设备及存储介质
CN114064506A (zh) * 2021-11-29 2022-02-18 电子科技大学 一种基于深度神经网络的二进制程序模糊测试方法及系统
CN115208958B (zh) * 2022-06-10 2023-08-25 珠海格力电器股份有限公司 协议自动分段方法和装置
CN115208958A (zh) * 2022-06-10 2022-10-18 珠海格力电器股份有限公司 协议自动分段方法和装置
CN116094972A (zh) * 2023-01-18 2023-05-09 重庆邮电大学 基于QRNN神经网络的Modbus TCP协议模糊测试方法
CN116094972B (zh) * 2023-01-18 2024-05-07 重庆邮电大学 基于QRNN神经网络的Modbus TCP协议模糊测试方法
CN116841243A (zh) * 2023-06-19 2023-10-03 浙江大学 一种智能化plc协议格式推断方法、模糊测试方法及装置
CN116841243B (zh) * 2023-06-19 2024-01-09 浙江大学 一种智能化plc协议格式推断方法、模糊测试方法及装置
CN117453573A (zh) * 2023-12-22 2024-01-26 信联科技(南京)有限公司 一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法及引擎
CN117453573B (zh) * 2023-12-22 2024-04-02 信联科技(南京)有限公司 一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法及引擎

Also Published As

Publication number Publication date
CN110597734B (zh) 2021-06-01

Similar Documents

Publication Publication Date Title
CN110597734B (zh) 一种适用于工控私有协议的模糊测试用例生成方法
JP6055548B2 (ja) データストリームにおいてデータパターンを検出する装置、方法、及びネットワークサーバ
CN109117634B (zh) 基于网络流量多视图融合的恶意软件检测方法及系统
CN111885059B (zh) 一种工业网络流量异常检测定位的方法
CN108616498A (zh) 一种web访问异常检测方法和装置
Barbosa et al. Exploiting traffic periodicity in industrial control networks
CN109660518B (zh) 网络的通信数据检测方法、装置以及机器可读存储介质
CN110611640A (zh) 一种基于随机森林的dns协议隐蔽通道检测方法
CN111371651A (zh) 一种工业通讯协议逆向分析方法
CN112800424A (zh) 一种基于随机森林的僵尸网络恶意流量监测方法
CN106789954A (zh) 一种基于多cpu的ddos攻击识别的方法和装置
CN108234452A (zh) 一种网络数据包多层协议识别的系统和方法
Li et al. A lightweight intrusion detection model based on feature selection and maximum entropy model
CN112087450B (zh) 一种异常ip识别方法、系统及计算机设备
CN112134906B (zh) 一种网络流量敏感数据识别及动态管控方法
CN110162973A (zh) 一种Webshell文件检测方法及装置
CN111431883B (zh) 一种基于访问参数的web攻击检测方法及装置
CN116662184A (zh) 一种基于Bert的工控协议模糊测试用例筛选方法及系统
CN106060025A (zh) 应用程序的自动分类方法和装置
Whalen et al. Hidden markov models for automated protocol learning
CN106411879B (zh) 一种软件识别特征的获取方法和装置
CN113242160A (zh) 一种基于状态机的协议识别方法
EP4254237A1 (en) Security data processing device, security data processing method, and computer-readable storage medium for storing program for processing security data
CN114745148B (zh) 基于动态规划的车载网络can总线入侵检测方法及系统
Cao et al. Encoding NetFlows for State-Machine Learning

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