CN117435506B - 模糊测试方法、电子设备及计算机可读存储介质 - Google Patents
模糊测试方法、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN117435506B CN117435506B CN202311726019.XA CN202311726019A CN117435506B CN 117435506 B CN117435506 B CN 117435506B CN 202311726019 A CN202311726019 A CN 202311726019A CN 117435506 B CN117435506 B CN 117435506B
- Authority
- CN
- China
- Prior art keywords
- test
- protocol
- data message
- tree model
- generating
- 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.)
- Active
Links
- 238000010998 test method Methods 0.000 title claims abstract description 29
- 238000012360 testing method Methods 0.000 claims abstract description 243
- 230000004044 response Effects 0.000 claims abstract description 61
- 238000000034 method Methods 0.000 claims abstract description 31
- 230000035772 mutation Effects 0.000 claims description 30
- 238000010801 machine learning Methods 0.000 claims description 25
- 230000002159 abnormal effect Effects 0.000 claims description 20
- 238000004458 analytical method Methods 0.000 claims description 14
- 239000000523 sample Substances 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 10
- 230000000007 visual effect Effects 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000012549 training Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- 230000005856 abnormality Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 241000565357 Fraxinus nigra Species 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 230000002547 anomalous effect Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000013142 basic testing Methods 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000036244 malformation Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000007723 transport mechanism Effects 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
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)
Abstract
本公开实施例提供一种模糊测试方法、电子设备及计算机可读存储介质,属于计算机测试技术领域,该模糊测试方法包括获取数据报文;基于所述数据报文生成协议规则树模型;基于所述协议规则树模型生成测试用例;将所述测试用例发送至被测设备;基于所述被测设备的响应信息确定测试结果。该方法可以提高模糊测试的应用范围。
Description
技术领域
本公开涉及计算机测试技术领域,具体涉及一种模糊测试方法、电子设备及计算机可读存储介质。
背景技术
模糊测试是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。目前,实施模糊测试的测试用例包括基础测试用例和变异测试用例。其中,基础测试用例是通过对程序输入的建模生成的测试用例,需人工学习协议规则,建模成本高。变异测试用例是通过改变已有的测试用例生成的测试用例,虽覆盖率高、时间成本高。但由于黑盒测试无法获知程序内部结构和内部特性,这种变异测试用例不适用于黑盒测试。因此,用于黑盒测试的测试用例是通过分析标准—建立模型—生成测试用例的技术路线生成的。然而,建立模型需要以协议字段为单位,逐字段、逐字节、甚至逐比特进行判断分析,需要耗费大量的人力,而且,每种测试用例只能用于测试特定异常,测试用例的有效性低。
另外,目前的模糊测试专注于单一的工控/私有协议测试,且主要专注应用层,而由于物联网领域无线环境复杂、相关设备众多、易造成干扰等因素,对物联网公开协议/功能(如第五代移动通信(5th Generation,简称5G)空口和蓝牙等)和链路层适配上未提出合理、高效、集成化的技术方案。
发明内容
本公开实施例提供一种模糊测试方法、电子设备及计算机可读存储介质,可以提高模糊测试的适用范围。
第一方面,本公开实施例提供一种模糊测试方法,所述方法包括:
获取数据报文;
基于所述数据报文生成协议规则树模型;
基于所述协议规则树模型生成测试用例;
将所述测试用例发送至被测设备;
基于所述被测设备的响应信息确定测试结果。
第二方面,本公开实施例提供一种电子设备,包括:
一个或多个处理器;
存储器,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据本公开实施例提供的所述的模糊测试方法。
第三方面,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现根据本公开实施例提供的所述的模糊测试方法。
本公开实施例提供的模糊测试方法,基于所述协议规则树模型生成模糊处理的测试用例,由于协议规则树模型是基于数据报文生成的,使得测试用例可以获得协议特征,因此,测试用例不仅适用于应用层协议,还适用于底层协议,扩大了模糊测试的应用范围。而且,由于协议规则树模型和测试用例均是自动生成,可以节约大量的人力成本。
附图说明
图1为实施本公开实施例提供的模糊测试方法的测试硬件的组成图;
图2为本公开实施例中进行模糊测试系统的架构图;
图3为本公开实施例提供的一种模糊测试方法的流程图;
图4为本公开实施例中模型自动生成算法生成协议规则树模型的流程图;
图5为本申请实施例中基于状态反馈更新协议规则树模型的状态更新反馈环的示意图;
图6为本公开实施例中基于权重策略更新协议规则树模型的权重更新反馈环的示意图;
图7为本公开实施例中基于机器学习变异策略生成测试用例的示意图;
图8为本公开实施例中对测试日志进行处理的示意图;
图9为本公开实施例中黑灰盒混合模糊测试方法的流程图;
图10为本公开实施例提供一种电子设备的框图;
图11为本公开实施例提供一种计算机可读介质的框图。
具体实施方式
为使本领域的技术人员更好地理解本公开的技术方案,下面结合附图对本公开提供的模糊测试方法、电子设备及计算机可读存储介质进行详细描述。
在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
模糊测试是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。经过多年发展,已经成为诸多商业化科技公司的测试工具。
黑盒测试是无法获知程序内部结构和内部特性的软件测试方法。
需要说明的是,本公开实施例提供一种模糊测试方法、电子设备及计算机可读存储介质不仅适用于黑盒测试,也可适用于灰盒测试,而且适用多种协议,即本公开实施例提供的模糊测试方法是一种能够适用多种协议的黑灰盒混合模糊测试。
图1为实施本公开实施例提供的模糊测试方法的测试硬件的组成图。如图1所示,实施模糊测试方法的测试硬件包括测试设备10、被测设备20和测试硬件30。其中,测试设备10可以是电脑(PC),而且,在测试设备10中部署的软件包括但不限于测试工具的交互用户界面(User Interface ,简称UI)、测试环境插件和软件代码等。测试设备10可以是Linux内核设备,也可以以虚拟机/容器(Docker)形式部署搭建。被测设备20是需要测试协议/功能的设备,其可以是移动设备,如手机、pad或电脑。测试协议包括但不限于,如适用于基站、物联网与智能手机协议。
测试设备10和被测设备20需要通过测试硬件30连接,测试硬件30需要根据测试协议设定。例如,若测试无线局域网通用标准(IEEE 802.11)协议,则测试硬件30是支持监控模式的无线网卡;若测试5G空口协议,则测试硬件30是深度定制的5G模糊(Fuzz)终端;若测试蓝牙协议,则测试硬件30是蓝牙适配器/蓝牙低功耗(Bluetooth Low Energy,简称BLE)适配器;若测试近距离无线通讯(Near Field Communication,简称NFC)协议,则测试硬件30是NFC适配器,将手机连接到PC获取日志信息辅助监控;如测试被测设备20的指令集(Attention,简称AT)命令健壮性,只需要通用串行总线(Universal Serial Bus,简称USB)与被测设备20串口直连即可。测试协议还可以是AT协议、安全外壳协议(Secure ShellProtocol,简称SSH)、超文本传输协议(HyperText Transfer Protocol,简称HTTP)协议等,在此不一一列举。
测试设备10与测试硬件30可以通过USB或网口连接。
测试设备10包括但不限于支持5G空口802.11、蓝牙、BLE、NFC、AT、SSH、HTTP等协议的大多数设备,包括但不限于5G基站、智能手机、笔记本电脑、蓝牙耳机/音箱、蓝牙鼠标/键盘、路由器、无线网卡、NFC智能设备、物联网智能生态家居系列产品及WEB网站等。
图2为本公开实施例中进行模糊测试系统的架构图。如图2所示,模糊测试系统包括测试设备10、被测设备20,采用浏览器/服务器(Browser/Server,简称B/S)架构。
测试设备10和被测设备20通过无线网卡、USB或串口连接。测试设备10包括前端UI11和后台服务器12,前端UI11和后台服务器12通过中间件信号连接。其中,前端UI11用于显示,辅助用户实现模糊测试。例如报文上传、配置管理、日志报告和状态显示。后台服务器12与被测设备20进行信息交互,实现模糊测试。后台服务器12主要执行模型生成模块、模型导入模块、配置模块、监控模块、日志模块和报告模块,用于实现数据变异、测试用例生成、测试状态监控与模型更新、测试权重优化等功能。被测设备20可以用于测试802.11协议、蓝牙协议、NFC协议、AT协议以及异常/状态监控。中间件可以是串口。
在本公开实施例中,前端UI11可以利用Django框架和Vue语言编写,后台服务器12可以使用Python语言编写。
基于上述测试硬件和模糊测试系统,实现下文描述的模糊测试方法。该模糊测试方法可以用于发现被测设备的安全漏洞,从而提高被测设备的安全性。
第一方面,本公开实施例提供一种模糊测试方法。
图3为本公开实施例提供的一种模糊测试方法的流程图。如图3所示,本公开实施例提供一种模糊测试方法,包括:
步骤S301,获取数据报文。
其中,数据报文可以通过相关软件抓取,例如,通过Wireshark、tcpdump等软件抓取。数据报文还可以通过调用libpcap、WinPcap等网络截包库获取。对数据报文进行分析,可以确定协议功能、加密协议和字段等信息。
在一些实施例中,数据报文来自被测设备,也可以事先通过其他方式生成。本公开实施例对数据报文的格式不作限定,例如,数据报文的格式可以是pcap格式。
步骤S302,基于数据报文生成协议规则树模型。
其中,协议规则树模型是基于数据报文中的信息构建的树模型。
在一些实施例中,基于数据报文生成协议规则树模型,包括:对数据报文进行特征提取,获得协议特征;基于协议特征生成协议规则树模型。
本实施例中的协议规则树模型是通过协议特征建立的,相对于通过被测设备的反馈信息建立的协议规则树模型而言,生成的测试用例不仅适用于应用层协议,还适用于底层协议,扩大了测试范围。
为了获得更准确地协议特征,在提取协议特征时,可以参考数据报文所用的协议,即参考协议配置参数进行特征提取。协议配置参数是协议通用的配置参数。例如,如wifi协议,协议配置参数包括但不限于协议字段长度、协议字段类型等。
在一些实施例中,对数据报文进行特征提取,获得协议特征,包括:获取数据报文对应的协议配置参数;基于协议配置参数对数据报文进行特征提取,获得协议特征。
当测试设备和被测设备连接后,通过枚举(遍历)被测设备支持的功能,获取协议配置参数。然后利用特征提取算法提取数据报文中的协议特征,而且在提取协议特征时参考协议配置参数。
本公开实施例通过最长公共子序列(Longest Common Subsequence,简称LCS)算法提取数据报文中的特征,获得协议特征。
LCS算法可以提取两个字符串的最大公共子串,也可以计算两个字符串的相似度。LCS算法最简单的办法就是穷举所有的子序列进行比较,找出字符串A和字符串B的最大公共子串,需要找字符串A和字符串Bn-1,或者字符串An-1和字符串B的最大公共子串,一直递归查找下去。如果C[i,j]是序列Xi和Yi的一个公共子串的长度,那么得到LCS算法的最优公共子串。
LCS 算法的具体步骤如下:
构建一张表,以 A{1,2,…,I} 和 B{1,2,…,J} 为输入该表中,其中,I和J均是大于1的整数。
在填表时,填表的顺序是从左到右、从上到下依次填写,填写的内容分为两部分,第一部分是C[i,j]的值,即截至到目前单元格最大的公共子串的长度是多少,第二部分是这个C[i,j]的值来源于哪个单元格。
然后,从整张表的最右下端进行回溯,按照箭头所指的方向进行回溯,得到LCS子串进行倒序得到的最大公共子串。
在计算出最大公共子串的长度后,计算字符串之间的相似度,字符串之间的相似度为两个字符串最大公共子串的长度比上两个字符串的平均长度,化简后得到公式(1):
(1)
在公式(1)中,w2表示第一字符串,w2表示第二字符串,len()用于计算字符串长度的函数,simw(w1,w2)表示第一字符串和第二字符串的相似性函数。
本公开实施例中,每个数据报文可看成是一个字符串,而数据报文和协议配置参数之间的相似度和公共的字符串可以视为一种协议特征。
通过LCS 算法获得协议配置参数和数据报文中的最大公共子串,从而获得协议特征。
在一些实施例中,基于数据报文生成协议规则树模型,包括:对数据报文进行解析,获得分析结果;基于分析结果获得协议规则树模型。
本公开实施例可以通过Wireshark等工具对数据报文进行分析,获得分析结果。
在一些实施例中,分析结果包括数据报文的分层结构、字段位置、字段之间的关联关系、字段类型和字段长度中的一种或多种。
利用分析结果进行建模,然后通过模型自动生成算法获得协议规则树模型。本公开实施例对模型自动生成算法不作限定,例如,模型自动生成算法可以采用人工智能领域的算法。
图4为本公开实施例中模型自动生成算法生成协议规则树模型的流程图。如图4所示,通过Wireshark工具分析数据报文,获得报文分层结构、字段位置、字段类型、字段长度和字段间的关联关系等特征,然后,利用这些特征并通过模型自动生成算法生成协议规则树模型,并将协议规则树模型存储于协议规则树模型池中。
步骤S303,基于协议规则树模型生成测试用例。
本公开实施例由于协议规则树模型是基于数据报文特征生成的,因此,协议规则树模型更符合协议要求,由此生成的测试用例有助于提高测试的准确性。而且,根据数据报文自动化生成协议规则树模型,进而自动生成测试用例,无需人工干预,生成测试用例的效率可达到99.99%。
为了提高测试用例的有效性,本公开实施例利用协议规则树模型结合变异策略生成测试用例。
在一些实施例中,基于协议规则树模型和变异策略生成测试用例。
其中,变异策略是用于生成和调整测试用例的策略。本公开实施例可以对协议字段特征进行变异,也可以根据被测设备的目标响应状态进行变异,还可以通过机器学习算法进行变异。基于协议规则树模型和变异策略生成测试用例,变异策略使得测试用例的异常响应显著增加,从而提高测试用例的有效性,进而提高了模糊测试的效率。
在一些实施例中,变异策略包括字段变异策略;其中,字段变异策略是指对协议规则树模型中的协议字段特征进行字段变异处理的策略。
本公开实施例是通过梳理网络文件中可能存在问题的字段,查询标准协议并对存在问题的字段进行修正,获得测试用例。
在一些实施例中,字段变异策略包括随机(s_random)变异策略和比特位翻转(s_bytes)变异策略中的一种或多种;其中,随机变异策略是对协议规则树模型中的协议字段特征进行随机突变处理的策略,如对某个或某几个字段进行变更;比特位翻转变异策略是对协议规则树模型中的协议字段特征进行翻转处理的策略,如字段前后顺序进行翻转。
本公开实施例还可以通过被测设备的目标响应状态设计变异策略。变异策略包括状态反馈策略,状态反馈策略是基于被测设备的目标响应状态生成的策略。被测设备可以通过状态监控器反馈目标响应状态。
在一些实施例中,状态变异策略的生成步骤,包括:获取被测设备运行的新状态数据;基于新状态数据生成状态变异策略。
当被测设备出现新的测试状态时,基于该新的测试状态生成状态变异策略,再扩充模型池中的协议规则树模型,形成了状态更新反馈环。在模糊测试过程中,不断地更新、扩充模型池,提高模糊测试的有效性。
图5为本申请实施例中基于状态反馈更新协议规则树模型的状态更新反馈环的示意图。如图5所示,模糊测试器从模型池中提取协议规则树模型,并基于该协议规则树模型生成变异报文(测试用例),然后将该变异报文发送至被测设备,状态监控器监控被测设备的状态,并将监控报文返回给模糊测试器。当状态监控器发现测试用例导致新状态时,将该新状态发送至状态机,同时,分析测试用例的变异字段,生成新的协议规则树模型,并将该新的协议规则树模型存储于模型池中,扩充模型池中协议规则树模型的数量。
在实际应用中,根据第一轮测试过程中的目标响应状态,提取被测设备运行的新状态,并基于新状态生成新的变异策略,进而生成新的测试用例。
在一些实施例中,变异策略包括权重反馈策略,将使用权重反馈算法基于测试用例响应时间和探针响应时间产生协议规则树模型,权重反馈算法是针对协议规则树模型中权重较重的字段进行变异,获得测试用例,提高了测试用例的指向性,从而减少了测试用例的数量,提高了测试用例的有效性。
权重变异策略的生成步骤,包括:从目标响应状态中确定出目标异常状态;提取目标异常状态的测试用例响应时间;基于测试用例响应时间和探针响应时间的权重,生成变异策略;其中,探针响应时间是被测设备非变异测试用例的响应时间。
在测试用例发送至被测设备后,记录被测设备针对该测试用例的响应时间,即获得测试用例响应时间。将非变异测试用例发送至被测设备,记录被测设备针对该非变异测试用例的响应时间,即获得非变异测试用例的响应时间。权重反馈算法是将探针响应时间和测试用例响应时间作为权重,建立测试用例权重配置树模型,经过多轮测试对测试用例权重配置树模型的权重进行动态调节,更新模型池中特定测试用例对应的协议规则树模型的比重,减少测试用例,提升测试用例的有效性。
图6为本公开实施例中基于权重策略更新协议规则树模型的权重更新反馈环的示意图。如图6所示,在测试过程中,状态监控器监控被测设备的状态,当状态监控器发现响应时间异常时,利用该测试用例响应时间和探针响应时间,调整该测试用例对应的协议规则树模型的权重,更新模型池中该测试用例对应的协议规则树模型的比重。
需要说明的是,图6中状态更新反馈环中各个步骤与图5相同,在此不再赘述。
在实际应用中,根据第一轮测试过程中的目标异常状态,利用测试用例响应时间和探针响应时间作为权重,使用权重反馈算法基于测试用例响应时间和探针响应时间生成协议规则树模型,从而生成新的测试用例。
在一些实施例中,变异策略包括机器学习变异策略,机器学习变异策略是基于有效测试用例和数据报文通过机器学习获得的变异策略;其中,有效测试用例是指能够被测设备反馈的测试用例。
将第一轮测试中有效测试用例(例如1000个有效测试用例)和网络报文,作为机器学习的训练数据,通过机器学习获得的变异策略。其中,机器学习使用的模型可以是循环神经网络(recurrent neural network,简称RNN)的编码-解码(Seq2Seq)模型。训练好的机器学习模型可以直接生成新的测试用例。
采用RNN的Seq2Seq模型可进行序列化预测,一个输入序列对应一个输出序列。将用户第一轮测试的有效测试用例按照时间顺序排列形成输入序列,将用户在输入节点后的测试用例按照时间顺序形成输出序列,然后运用Seq2Seq模型进行预测。当数据集中的训练样本达到以下条件时,认为数据集满足要求。然后使用该数据集采用无监督训练方式训练Seq2Seq模型,输入网络报文,生成测试用例。训练完成后获得机器学习模型。
数据集中的训练样本达到的条件包括但不限于数据集中的样本数量达到预设的训练阈值,数据集中的训练样本覆盖较多边(所需的范围),数据集中的训练样本包含满足所需状态的全部变化,数据集中的训练样本满足原模糊(Fuzz)工具。
图7为本公开实施例中基于机器学习变异策略生成测试用例的示意图。如图7所示,机器学习模型从报文请求响应池中获得训练样本,对机器学习模型进行训练,当机器学习模型训练完成后,利用该训练好的机器学习模型生成变异报文,由模糊测试器将变异报文发送至被测设备进行模糊测试,生成有效的请求报文和响应报文,使用经过模糊处理的测试用例(数据包)注入网络,并记录被测设备的响应,以评估其对畸形输入的稳健性。同时,可以发送非变异的原始网络报文,查看响应报文的情况作为补充监控。
本公开实施例结合状态反馈、权重反馈、机器学习等多种变异策略,测试过程中根据状态监控器反馈的状态动态调整变异策略,从而实现动态生成测试用例,提升测试用例的有效性。
步骤S304,将测试用例发送至被测设备。
通过模糊测试器生成测试用例后,将测试用例发送至被测设备。
在一些实施例中,协议规则树模型包括多个节点,所述测试用例对所述节点顺序执行。该模糊测试方法还包括:监控测试用例的执行过程,获得输入数据;基于输入数据确定协议规则树模型的当前节点;基于当前节点确定下一个节点及对应的数据报文,直至目标响应状态发生异常或协议规则树模型遍历完成。
其中,输入数据是指输入节点的数据,将输入数据输入当前节点,当前节点处理后输出数据报文,该数据报文被输入下一个节点,依次顺序执行,直至目标响应状态发生异常或协议规则树模型遍历完成。
具体地,被测设备调用状态监控器,监控被测设备的响应状态,并基于响应状态监测被测设备执行测试用例的过程及结果。例如,采用污点分析、执行流跟踪等技术监控执行过程及结果,将接收信息反馈给流量识别模块判断被测设备执行到协议规则树模型的哪个节点,从而判断生成下一个节点的报文,一直到发生目标响应异常,或者协议规则树模型遍历完毕。
其中,污点分析技术是一种跟踪并分析污点信息在程序中流动的技术。使用污点分析技术将状态异常的输入数据标记为污点数据,然后通过跟踪和污点数据相关信息的流向,判断进入到协议规则树模型的哪个节点,从而判断生成下一个节点的报文,直到发生目标响应异常。
流跟踪技术可以跟踪到模块、线程、函数和线程类型,能够记录函数调用流程、调用函数时的时间点和所在源文件的行号,还可以获得调用函数时传入的参数值等。
在一些实施例中,由于环境中测试报文噪声较多,测试设备调用状态监控器实时监控被测设备的响应状态时,需要对目标响应状态进行去噪声处理,收集测试用例的响应时间、响应情况、响应报文的长度、响应异常等情况,并在日志中记录。还可以发送非变异的探针报文,查看响应报文的情况作为补充监控手段。
步骤S305,基于被测设备的响应信息确定测试结果。
当监测到被测设备的响应信息均无异常时,测试结果为通过。当监测到被测设备的响应异常时,测试结果为有漏洞。
在一些实施例中,该模糊测试方法还包括:在测试完成或者发现漏洞时,记录产生故障的数据报文和测试日志;基于产生故障的数据报文和测试日志,生成可视化测试报告。
在一些实施例中,基于产生异常的数据报文和测试日志,生成可视化测试报告之后,包括:基于可视化测试报告进行漏洞复现和漏洞定位。
记录产生故障的数据报文和测试日志有助于对检测到的安全漏洞进行复现,便于开发人员进行定位和修复。数据报文和测试日志可以存储在任务管理模块中,从任务管理模块中的日志和报告可以查看完整的测试用例及测试信息。用例复现模块可以复现漏洞,开发人员只需复现存在异常的测试用例,即可对漏洞进行定位。
测试日志中包含有异常日志,对异常日志进行分析,得到可视化结果可用于直观分析,如测试响应时间随测试时间的变化、测试请求与测试响应相关关系、测试模型的效果对比等,基于可视化结论辅助进行问题分析和定位。
图8为本公开实施例中对测试日志进行处理的示意图。如图8,基于测试日志可以提取网络报文、漏洞复现、导出测试报告和定位问题,通过分析测试报告可以确定问题。
为了更清楚地理解本实施例,下面以黑灰盒混合模糊测试方法为例进行说明。
图9为本公开实施例中黑灰盒混合模糊测试方法的流程图。如图9所示,黑灰盒混合模糊测试方法包括:
步骤S901,确定被测设备和协议。
步骤S902,新建测试任务,以及配置测试任务的参数。
步骤S903,判断是否存在协议规则树模型,若否,则执行步骤S904;若是,则执行步骤S906;
步骤S904,抓取数据报文,提取协议特征。
通过Wireshark工具抓取数据报文,并对数据报文进行特征提取,获得协议特征。
步骤S905,基于协议特征建立协议规则树模型。
基于协议特征建立协议规则树模型。
步骤S906,上传抓取的数据报文。
步骤S907,模型自动生成算法建立协议规则树模型。
利用数据报文确定模型自动生成算法,并基于协议特征和模型自动生成算法建立协议规则树模型。
步骤S908,生成测试用例。
利用协议规则树模型生成测试用例。当获得状态反馈策略、权重反馈策略和机器学习变异策略等时,基于协议规则树模型和变异策略生成测试用例。
步骤S909,将测试用例发送至被测设备。
利用底层发包模块将测试用例发送至被测设备。
步骤S910,状态监控器监控被测设备的目标响应状态。
步骤S911,判断是否是出现新状态,若否,则执行步骤S912;若是,则执行步骤S916。
步骤S912,判断是否发生目标异常状态;若否,则执行步骤S913;若是,则执行步骤S917。
步骤S913,判断是否具有机器学习功能,若否,则执行步骤S914;若是,则执行步骤S918。
步骤S914,判断是否完成测试任务,若是,则执行步骤S915;若否,则返回执行步骤S905,继续执行测试任务。
步骤S915,生成并导出测试报告。
步骤S916,将新状态反馈给测试用例生成模块。
基于状态反馈策略生成新的测试用例。其中,基于状态反馈策略生成新的测试用例的具体方式可以参见步骤S303,在此不再赘述。
步骤S917,将权重反馈测试用例生成模块。
基于权重反馈策略生成新的测试用例。其中,基于权重反馈策略生成新的测试用例的具体方式可以参见步骤S303,在此不再赘述。
步骤S918,机器学习模型训练。
利用目标异常状态的测试报文训练机器学习模型,并利用机器学习模型获得新的测试用例。
在步骤S911判断存在新状态和步骤S912判断出现目标异常状态时,执行步骤S919。
步骤S919,记录出现异常状态的数据报文和测试日志。
记录出现异常状态的数据报文和测试日志,方便生成可视化测试报告,以及后期漏洞复现以及漏洞定位。
第二方面,参照图10,本公开实施例提供一种电子设备,其包括:
一个或多个处理器1001;
存储器1002,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现上述任意一项的模糊测试方法;
一个或多个I/O接口1003,连接在处理器与存储器之间,配置为实现处理器与存储器的信息交互。
其中,处理器1001为具有数据处理能力的器件,其包括但不限于中央处理器(CPU)等;存储器1002为具有数据存储能力的器件,其包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH);I/O接口(读写接口)1003连接在处理器1001与存储器1002间,能实现处理器1001与存储器1002的信息交互,其包括但不限于数据总线(Bus)等。
在一些实施例中,处理器1001、存储器1002和I/O接口1003通过总线1004相互连接,进而与计算设备的其它组件连接。
第三方面,参照图11,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现上述任意一种模糊测试的方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其它的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其它传输机制之类的调制数据信号中的其它数据,并且可包括任何信息递送介质。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其它实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。
Claims (9)
1.一种模糊测试方法,其中,所述方法包括:
获取数据报文;
基于所述数据报文生成协议规则树模型;
基于所述协议规则树模型和变异策略生成测试用例;
将所述测试用例发送至被测设备;
基于所述被测设备的响应信息确定测试结果;
所述基于所述数据报文生成协议规则树模型,包括:
对所述数据报文进行特征提取,获得协议特征;基于所述协议特征生成所述协议规则树模型;其中,协议配置参数和数据报文中的最大公共子串作为协议特征;
所述变异策略包括状态反馈策略、权重反馈策略,或状态反馈策略和机器学习变异策略的结合,或者权重反馈策略和机器学习变异策略的结合;
所述状态反馈策略的生成步骤,包括:获取所述被测设备运行的新状态数据;基于所述新状态数据生成所述状态反馈策略;所述状态反馈策略是基于所述被测设备的目标响应状态生成的策略;
所述权重反馈策略的生成步骤,包括:从所述被测设备的目标响应状态中确定出目标异常状态;提取所述目标异常状态的测试用例响应时间;将所述测试用例响应时间和探针响应时间作为权重,生成所述权重变异策略;其中,所述探针响应时间是所述被测设备对非变异测试用例的响应时间;
所述机器学习变异策略是基于有效测试用例和所述数据报文通过机器学习获得的变异策略;其中,所述有效测试用例是指能够被所述被测设备反馈的测试用例。
2.根据权利要求1所述的方法,其中,所述对所述数据报文进行特征提取,获得协议特征,包括:
获取所述数据报文对应的协议配置参数;
基于所述协议配置参数对所述数据报文进行特征提取,获得协议特征。
3.根据权利要求1所述的方法,其中,所述基于所述数据报文生成协议规则树模型,包括:
对所述数据报文进行解析,获得分析结果;
基于所述分析结果获得所述协议规则树模型。
4.根据权利要求3所述的方法,其中,所述分析结果包括所述数据报文的分层结构、字段位置、字段之间的关联关系、字段类型和字段长度中的一种或多种。
5.根据权利要求1所述的方法,其中,所述协议规则树模型包括多个节点,所述测试用例对所述节点顺序执行;所述方法还包括:
监控所述测试用例的执行过程,获得输入数据;
基于所述输入数据确定所述协议规则树模型的当前节点;
基于所述当前节点确定下一个节点及对应的数据报文,直至所述被测设备的目标响应状态发生异常或所述协议规则树模型遍历完成。
6.根据权利要求1所述的方法,其中,所述方法还包括:
在测试完成或者发现漏洞时,记录产生故障的数据报文和测试日志;
基于所述产生故障的数据报文和所述测试日志,生成可视化测试报告。
7.根据权利要求6所述的方法,其中,所述基于所述产生故障的数据报文和所述测试日志,生成可视化测试报告之后,包括:
基于所述可视化测试报告进行漏洞复现和漏洞定位。
8.一种电子设备,包括:
一个或多个处理器;
存储器,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据权利要求1至7中任意一项所述的模糊测试方法。
9.一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现根据权利要求1至7中任意一项所述的模糊测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311726019.XA CN117435506B (zh) | 2023-12-15 | 2023-12-15 | 模糊测试方法、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311726019.XA CN117435506B (zh) | 2023-12-15 | 2023-12-15 | 模糊测试方法、电子设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117435506A CN117435506A (zh) | 2024-01-23 |
CN117435506B true CN117435506B (zh) | 2024-04-16 |
Family
ID=89556847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311726019.XA Active CN117435506B (zh) | 2023-12-15 | 2023-12-15 | 模糊测试方法、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117435506B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667749A (zh) * | 2024-01-31 | 2024-03-08 | 中兴通讯股份有限公司 | 一种模糊测试用例优化方法及系统 |
CN117792967B (zh) * | 2024-02-26 | 2024-05-10 | 南京邮电大学 | 一种基于差异度反馈的摄像头模糊测试方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110661778A (zh) * | 2019-08-14 | 2020-01-07 | 中国电力科学研究院有限公司 | 一种基于逆向分析模糊测试工控网络协议的方法及系统 |
CN111831562A (zh) * | 2020-07-08 | 2020-10-27 | 信联科技(南京)有限公司 | 一种基于机器学习的模糊测试用例生成方法及运行该方法的计算机设备与可读存储介质 |
CN113468071A (zh) * | 2021-07-23 | 2021-10-01 | 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) | 模糊测试用例生成方法、系统、计算机设备及存储介质 |
CN113542299A (zh) * | 2021-07-29 | 2021-10-22 | 国家工业信息安全发展研究中心 | 一种基于模糊测试的工业互联网漏洞挖掘方法及系统 |
CN114168451A (zh) * | 2021-11-12 | 2022-03-11 | 北京水木羽林科技有限公司 | 一种双端支持的协议模糊测试方法和装置 |
CN114661621A (zh) * | 2022-05-13 | 2022-06-24 | 上海交通大学宁波人工智能研究院 | 一种基于强化学习的工控协议模糊测试系统和方法 |
CN115712563A (zh) * | 2022-11-03 | 2023-02-24 | 上海安般信息科技有限公司 | 一种基于文法变异的模糊测试方法 |
WO2023155699A1 (zh) * | 2022-02-15 | 2023-08-24 | 中兴通讯股份有限公司 | 空口协议安全漏洞的挖掘方法、装置、移动终端 |
CN117130906A (zh) * | 2023-06-30 | 2023-11-28 | 中国科学院信息工程研究所 | 嵌入式设备中网络服务器的模糊测试方法及装置 |
CN117216772A (zh) * | 2023-11-09 | 2023-12-12 | 中兴通讯股份有限公司 | 模糊测试用例优化方法、装置、设备及可读介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FI20080095A0 (fi) * | 2008-02-11 | 2008-02-11 | Codenomicon Oy | Menetelmä ja järjestelmä testitapausten muodostamiseksi |
-
2023
- 2023-12-15 CN CN202311726019.XA patent/CN117435506B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110661778A (zh) * | 2019-08-14 | 2020-01-07 | 中国电力科学研究院有限公司 | 一种基于逆向分析模糊测试工控网络协议的方法及系统 |
CN111831562A (zh) * | 2020-07-08 | 2020-10-27 | 信联科技(南京)有限公司 | 一种基于机器学习的模糊测试用例生成方法及运行该方法的计算机设备与可读存储介质 |
CN113468071A (zh) * | 2021-07-23 | 2021-10-01 | 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) | 模糊测试用例生成方法、系统、计算机设备及存储介质 |
CN113542299A (zh) * | 2021-07-29 | 2021-10-22 | 国家工业信息安全发展研究中心 | 一种基于模糊测试的工业互联网漏洞挖掘方法及系统 |
CN114168451A (zh) * | 2021-11-12 | 2022-03-11 | 北京水木羽林科技有限公司 | 一种双端支持的协议模糊测试方法和装置 |
WO2023155699A1 (zh) * | 2022-02-15 | 2023-08-24 | 中兴通讯股份有限公司 | 空口协议安全漏洞的挖掘方法、装置、移动终端 |
CN114661621A (zh) * | 2022-05-13 | 2022-06-24 | 上海交通大学宁波人工智能研究院 | 一种基于强化学习的工控协议模糊测试系统和方法 |
CN115712563A (zh) * | 2022-11-03 | 2023-02-24 | 上海安般信息科技有限公司 | 一种基于文法变异的模糊测试方法 |
CN117130906A (zh) * | 2023-06-30 | 2023-11-28 | 中国科学院信息工程研究所 | 嵌入式设备中网络服务器的模糊测试方法及装置 |
CN117216772A (zh) * | 2023-11-09 | 2023-12-12 | 中兴通讯股份有限公司 | 模糊测试用例优化方法、装置、设备及可读介质 |
Non-Patent Citations (2)
Title |
---|
基于模糊测试的嵌入式设备协议漏洞挖掘及分析;刘晋兵 等;山西电力;20191230(第06期);第46-49页 * |
面向应用层协议的自动化模糊测试方案;张光华 等;微电子学与计算机;20180305(第03期);第105-109页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117435506A (zh) | 2024-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117435506B (zh) | 模糊测试方法、电子设备及计算机可读存储介质 | |
AU2015201161B2 (en) | Event correlation | |
CN108183916B (zh) | 一种基于日志分析的网络攻击检测方法及装置 | |
US10855717B1 (en) | Systems and methods of intelligent and directed dynamic application security testing | |
EP3975482B1 (en) | Quantitative network testing framework for 5g and subsequent generation networks | |
CN111488577B (zh) | 一种基于人工智能的模型建立方法和风险评估方法及装置 | |
CN108174405A (zh) | 产品测试方法及设备 | |
US20220030017A1 (en) | Cybersecurity investigation tools utilizing information graphs | |
US20070162427A1 (en) | Query parameter output page finding method, query parameter output page finding apparatus, and computer product | |
CN113114680B (zh) | 用于文件上传漏洞的检测方法和检测装置 | |
CN111367773B (zh) | 一种检测服务器网卡的方法、系统、设备及介质 | |
CN110489324A (zh) | 测试页面跳转的方法、装置、存储介质、电子装置 | |
CN111898059B (zh) | 网站页面质量评估和监控方法及其系统 | |
CN113268243B (zh) | 内存预测方法及装置、存储介质、电子设备 | |
Trivedi et al. | A fully automated deep packet inspection verification system with machine learning | |
CN109408309A (zh) | 多终端的测试方法及装置 | |
CN111625448B (zh) | 协议包生成方法、装置、设备及存储介质 | |
CN113419971A (zh) | 安卓系统服务漏洞检测方法及相关装置 | |
CN112363939A (zh) | 快速生成模糊测试网络协议模板的方法及系统、设备 | |
CN117131100A (zh) | 电力设备故障数据的挖掘方法、装置、设备及存储介质 | |
CN112860558B (zh) | 基于拓扑发现的多接口自动化测试方法及装置 | |
CN116094850A (zh) | 基于系统状态追踪图引导的网络协议漏洞检测方法及系统 | |
WO2021254243A1 (zh) | 代码构建方法、装置、设备和存储介质 | |
US20210173389A1 (en) | Smart Building Sensor Network Fault Diagnostics Platform | |
Muthukumar et al. | Denoising internet delay measurements using weak supervision |
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 |