CN117714351A - 一种网络协议模糊测试方法、系统、设备及介质 - Google Patents
一种网络协议模糊测试方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN117714351A CN117714351A CN202311490142.6A CN202311490142A CN117714351A CN 117714351 A CN117714351 A CN 117714351A CN 202311490142 A CN202311490142 A CN 202311490142A CN 117714351 A CN117714351 A CN 117714351A
- Authority
- CN
- China
- Prior art keywords
- state
- network protocol
- protocol
- state transition
- message
- 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.)
- Pending
Links
- 238000010998 test method Methods 0.000 title claims description 17
- 230000007704 transition Effects 0.000 claims abstract description 93
- 238000012360 testing method Methods 0.000 claims abstract description 92
- 238000000034 method Methods 0.000 claims abstract description 38
- 230000008859 change Effects 0.000 claims abstract description 35
- 238000012544 monitoring process Methods 0.000 claims abstract description 12
- 238000004590 computer program Methods 0.000 claims description 15
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 7
- 238000012423 maintenance Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 235000019580 granularity Nutrition 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000008014 freezing Effects 0.000 description 2
- 238000007710 freezing Methods 0.000 description 2
- 230000035772 mutation Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012550 audit Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000010367 cloning Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/18—Protocol analysers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
Abstract
本发明涉及协议测试技术领域,公开一种网络协议模糊测试方法、系统、设备及介质,该方法包括:基于模糊测试种子,对网络协议进行模糊测试,得到消息链队列;对网络协议进行分析,确定状态变量;监控状态变量的变化,构建状态转换树;选择状态转换树当前最感兴趣的协议状态;根据协议状态查找消息链队列中对应的消息链,确定消息链中最感兴趣的种子消息;根据种子消息获取网络协议的快照数据;对种子消息进行突变,利用突变后的种子消息和快照数据对网络协议进行模糊测试,得到测试输出结果。本发明可有效地对有状态的网络协议测试,并发现其中的有状态的漏洞,避免了传统方法多次测试某个状态时因缺少状态信息产生的巨大消息开销。
Description
技术领域
本发明涉及协议测试技术领域,特别涉及一种网络协议模糊测试方法、系统、设备及介质。
背景技术
随着技术的革新和用户群体的增加,当前网络空间不可避免地面临着各种各样的安全问题,而协议作为各种网络传输的载体,其安全性与网络安全息息相关。以OpenSSL为例,在2014年OpenSSL暴露了一个名为“HeartBleed”的重大安全漏洞,导致服务器中的用户账户、密码和私钥等机密信息泄露。所以及时发现并修复协议的逻辑错误和实现错误至关重要,而这就需要对协议进行测试来发现错误。
目前已经提出的协议测试方法中,如果以人工的参与程度进行分类,则可以将方法分为需要大量人力的代码审计方法、自动化或半自动化的符号执行与模糊测试方法。由于当前网络协议其逻辑复杂程度高、状态数量多,代码审计不仅需要耗费较高的人力物力,并且难以发现代码逻辑错误或实现错误。而符号执行受限于求解引擎,在探索路径约束求解时计算资源需求量较大。相比前两者,模糊测试根据一定的规则,自动生成测试用例,并不需要人工干预即能发现深层次、未知的漏洞。
目前较为流行的模糊测试根据其处理的对象内部状态可获取的程度不同,可分为基于覆盖的灰盒模糊测试(CGF)和有状态的黑盒模糊测试(SBF),前者通过在执行过程中保存探索了新路径的测试用例来提高代码覆盖率,后者通过给定状态机(状态机来源于协议规范文档或者捕获的协议流量)来指导模糊器进行测试。但是考虑到许多网络协议是在交互式环境中运行的,如果漏洞(实现错误或逻辑错误)需要协议处于某个状态才能触发,则模糊器需要生成特定的消息序列以达到该状态,以便后续的测试可以在该状态下触发漏洞,此时可将这种漏洞称为有状态的漏洞。对于基于覆盖的灰盒模糊测试(CGF)和有状态的黑盒模糊测试(SBF),前者可以处理无状态程序和具体函数,后者可以无需了解协议内部而进行测试。但是当二者处理上述有状态的漏洞时,存在各自的问题:
(1)基于覆盖的灰盒模糊测试(CGF)虽然保留了可探索新路径的测试用例,但是缺少协议的状态转换信息。对于有状态的协议的server端,其响应取决于当前消息和由早期消息控制的当前状态,从发送消息的开销来考虑,如果当前消息序列不同但状态相同时,不同长度的消息序列可能会产生不同的开销,但CGF无法判断不同的消息会到达哪个状态,难以发送更短长度的消息序列对有状态的漏洞进行测试。从可达到的状态来考虑,由于CGF无法记录协议的状态,如果想要达到一个较深的状态S,那么模糊器需要发送大量消息前缀来达到这个状态,那么整个过程中想要在这个状态S进行多次测试,就需要耗费大量的时间。此外对于有状态的协议的client端也并不具有发送消息的顺序与结构,即测试过程处于无状态的测试。
(2)有状态的黑盒模糊测试(SBF)需要给定协议知识,形成有限状态机以获取状态转换关系,但是初始消息是人工编写的模型生成的,存在不确定性。此外,这种方法获取协议潜在漏洞的方式依赖人力,即需要手动比较和分析学习到的状态机模型与协议知识之间的差异,才能发现逻辑错误。
发明内容
本发明实施例提供了一种网络协议模糊测试方法、系统、设备及介质,以解决现有技术中的上述技术问题。
为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
根据本发明实施例的第一方面,提供了一种网络协议模糊测试方法。
在一个实施例中,所述网络协议模糊测试方法,包括:
基于预先配置的模糊测试种子,对网络协议进行模糊测试,得到消息链队列;并对所述网络协议进行分析,确定所述网络协议的状态变量;
监控所述状态变量的变化,构建状态转换树;并对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态;
根据所述协议状态查找所述消息链队列中对应的消息链,确定消息链中最感兴趣的种子消息;并根据所述种子消息获取所述网络协议的快照数据;
对所述种子消息进行突变,利用突变后的种子消息和所述快照数据对所述网络协议进行模糊测试,得到测试输出结果。
在一个实施例中,对所述网络协议进行分析,确定所述网络协议的状态变量包括:查找所述网络协议中的枚举型的所有变量,并从枚举型的所有变量中,确定正则表达式能够识别状态的变量,即为所述网络协议的状态变量。
在一个实施例中,监控所述状态变量的变化,构建状态转换树包括:对所述状态变量进行赋值,并监控所述状态变量赋值后的值序列变化;根据所述值序列变化,构建状态转换树。
在一个实施例中,所述状态转换树的节点为网络协议运行期间状态变量的值;每个节点具有一个父节点和零个或多个子节点。
在一个实施例中,在只有一个状态变量时,所述状态转换树节点的父节点和子节点分别为该节点创建之前的状态变量值和该节点创建之后的状态变量值;在存在多个状态变量时,所述状态转换树节点的父节点和子节点分别为不同状态变量值。
在一个实施例中,对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态包括:利用预先配置的状态选择算法对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态。
在一个实施例中,所述的网络协议模糊测试方法,还包括:获取测试输出结果中的状态变量及其对应的状态序列变化信息,并基于该状态变量及其对应的状态序列变化信息维护所述状态转换树。
根据本发明实施例的第二方面,提供了一种网络协议模糊测试系统。
在一个实施例中,所述网络协议模糊测试系统,包括:
初始数据获取模块,用于基于预先配置的模糊测试种子,对网络协议进行模糊测试,得到消息链队列;并对所述网络协议进行分析,确定所述网络协议的状态变量;
状态转换处理模块,用于监控所述状态变量的变化,构建状态转换树;并对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态;
兴趣消息获取模块,用于根据所述协议状态查找所述消息链队列中对应的消息链,确定消息链中最感兴趣的种子消息;并根据所述种子消息获取所述网络协议的快照数据;
协议模糊测试模块,用于对所述种子消息进行突变,利用突变后的种子消息和所述快照数据对所述网络协议进行模糊测试,得到测试输出结果。
在一个实施例中,所述初始数据获取模块在对所述网络协议进行分析,确定所述网络协议的状态变量时,查找所述网络协议中的枚举型的所有变量,并从枚举型的所有变量中,确定正则表达式能够识别状态的变量,即为所述网络协议的状态变量。
在一个实施例中,所述状态转换处理模块在监控所述状态变量的变化,构建状态转换树时,对所述状态变量进行赋值,并监控所述状态变量赋值后的值序列变化;根据所述值序列变化,构建状态转换树。
在一个实施例中,所述状态转换树的节点为网络协议运行期间状态变量的值;每个节点具有一个父节点和零个或多个子节点。
在一个实施例中,在只有一个状态变量时,所述状态转换树节点的父节点和子节点分别为该节点创建之前的状态变量值和该节点创建之后的状态变量值;在存在多个状态变量时,所述状态转换树节点的父节点和子节点分别为不同状态变量值。
在一个实施例中,所述状态转换处理模块在对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态时,利用预先配置的状态选择算法对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态。
在一个实施例中,所述网络协议模糊测试系统,还包括:状态转换维护模块,用于获取测试输出结果中的状态变量及其对应的状态序列变化信息,并基于该状态变量及其对应的状态序列变化信息维护所述状态转换树。
根据本发明实施例的第三方面,提供了一种计算机设备。
在一个实施例中,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
根据本发明实施例的第四方面,提供了一种计算机可读存储介质。
在一个实施例中,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明实施例提供的技术方案可以包括以下有益效果:
本发明与传统的灰盒模糊测试相比,通过状态的识别与快照获取,可有效地对有状态的网络协议测试,并发现其中的有状态的漏洞,避免了传统方法多次测试某个状态时因缺少状态信息产生的巨大消息开销。此外,快照的获取加快了协议达到深层协议的速度,提高了协议状态的覆盖率与路径覆盖率。而状态转换树的构建在未给定协议规范的情况下,一定程度上直观地呈现了协议状态以及状态之间的的转换过程,呈现了协议本身的结构与逻辑。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种网络协议模糊测试方法的流程示意图;
图2是根据一示例性实施例示出的一种网络协议模糊测试系统的结构框图;
图3是根据一示例性实施例示出的计算机设备的结构示意图。
具体实施方式
以下描述和附图充分地示出本文的具体实施方案,以使本领域的技术人员能够实践它们。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本文的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。本文中,术语“第一”、“第二”等仅被用来将一个元素与另一个元素区分开来,而不要求或者暗示这些元素之间存在任何实际的关系或者顺序。实际上第一元素也能够被称为第二元素,反之亦然。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的结构、装置或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种结构、装置或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的结构、装置或者设备中还存在另外的相同要素。本文中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
本文中的术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本文和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。在本文的描述中,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
本文中,除非另有说明,术语“多个”表示两个或两个以上。
本文中,字符“/”表示前后对象是一种“或”的关系。例如,A/B表示:A或B。
本文中,术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,A和/或B,表示:A或B,或,A和B这三种关系。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本申请的装置或系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
图1示出了本发明的一种网络协议模糊测试方法的一个实施例。
在该可选实施例中,所述网络协议模糊测试方法,包括:
步骤S101,基于预先配置的模糊测试种子,对网络协议进行模糊测试,得到消息链队列;并对所述网络协议进行分析,确定所述网络协议的状态变量;
步骤S103,监控所述状态变量的变化,构建状态转换树;并对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态;
步骤S105,根据所述协议状态查找所述消息链队列中对应的消息链,确定消息链中最感兴趣的种子消息;并根据所述种子消息获取所述网络协议的快照数据;
步骤S107,对所述种子消息进行突变,利用突变后的种子消息和所述快照数据对所述网络协议进行模糊测试,得到测试输出结果。
图2示出了本发明的一种网络协议模糊测试系统的一个实施例。
在该可选实施例中,所述网络协议模糊测试系统,包括:
初始数据获取模块201,用于基于预先配置的模糊测试种子,对网络协议进行模糊测试,得到消息链队列;并对所述网络协议进行分析,确定所述网络协议的状态变量;
状态转换处理模块203,用于监控所述状态变量的变化,构建状态转换树;并对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态;
兴趣消息获取模块205,用于根据所述协议状态查找所述消息链队列中对应的消息链,确定消息链中最感兴趣的种子消息;并根据所述种子消息获取所述网络协议的快照数据;
协议模糊测试模块207,用于对所述种子消息进行突变,利用突变后的种子消息和所述快照数据对所述网络协议进行模糊测试,得到测试输出结果。
在具体应用时,在基于预先配置的模糊测试种子,对网络协议进行模糊测试,得到消息链队列时,是将一个或多个测试种子作为模糊测试提供初始输入用例,网络协议经过一段时间的模糊测试后生成消息队列,这些消息队列探索了协议的路径,此时将这些连续发送的消息队列作为消息链,消息链队列是指一次模糊测试迭代中连续发送的消息组成的链。如果一个消息链可以达到新的代码覆盖率,就将之存储到消息链队列中。
而在对所述网络协议进行分析,确定所述网络协议的状态变量时,则可查找所述网络协议中的枚举型的所有变量,并从枚举型的所有变量中,确定正则表达式能够识别状态的变量,即为所述网络协议的状态变量。
具体的,经广泛的研究使用最广泛的50个开源网络协议(协议程序实现)发现,绝大多数协议实现为特殊状态变量赋值常量,其中44个协议使用枚举类型,6个协议使用宏定义类型。具体来说就是设计正则表达式自动提取枚举类型的所有定义,然后使用这些定义返回至少被赋值一次的所有枚举变量的列表。但并非所有枚举类型的变量都是状态变量,其中可能还表示响应和错误代码,视作非规范的状态,因为这些状态也可用于状态的构建并对后续模糊测试进行指导。
而在监控所述状态变量的变化,构建状态转换树时,则是对所述状态变量进行赋值,并监控所述状态变量赋值后的值序列变化;根据所述值序列变化,构建状态转换树。
具体的,所述状态转换树的节点为网络协议运行期间状态变量的值;每个节点具有一个父节点和零个或多个子节点;在只有一个状态变量时,所述状态转换树节点的父节点和子节点分别为该节点创建之前的状态变量值和该节点创建之后的状态变量值;在存在多个状态变量时,所述状态转换树节点的父节点和子节点分别为不同状态变量值,其中,父节点到它的子节点的过程是状态变量值发生改变的过程,这个转换过程即状态转换。
具体应用时,通过监控网络协议运行中的状态变量,通过正则表达式查找协议实现中状态变量被赋新值的所有指令,记录状态变量被赋值前后状态发生的变化,每当发现一个状态的转换,就记录当前的消息链输入,并建立消息链与状态的映射,维护状态转换树的节点和边。
此外,由于在显示的状态外还存在隐式状态(如协议执行处于某个状态时,数据库和文件系统被更改、分配了一些内存,但从未释放。这类就视为隐式状态),所以为便于再次重现当前的显示和隐式状态,不仅要构造状态转换树,还要保存执行程序时每个状态对应的输入消息(消息链队列)来保存隐式状态。而在根据值序列变化构建状态转换树时,还可修改最后访问树节点指针。
而在对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态时,则利用状态选择算法对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态。该状态选择算法一方面选择较少被选择的协议状态,另一方面选择在之前的选择过程中显著增加代码或状态覆盖率的状态。
该状态选择算法具体步骤如下:
一、随机状态选择阶段:0.初期随机选择状态转换树中的状态,由于在初期状态转换树是不完全不充分的,此时状态之间无明显的数据以区分状态的选择,所以此时进行随机的状态选择。但是在初期的fuzz过程中,记录每一次选中的种子经fuzz后是否增加了状态/代码覆盖率,如果增加了,就为该种子所在消息链对应的状态树中的状态增加energy,此时energy增加的量为新增的状态/代码覆盖率除以总的状态/代码覆盖率的比值。
二、启发式状态选择阶段:1.选择状态转换树的状态:当状态树中的energy之间出现明显的区分后(自行设定状态之间出现区分的阈值energy_start),开始进行启发式的状态选择。随机选择energy更高的状态或很少被选择的rare状态。在被选择的状态对应的消息fuzz完成后,按照0中描述的方式记录要更新的energy的值。2.记录每个状态选择的次数:在进行启发式的状态选择后,记录每次被选中的状态,并计算每个状态被选中的次数和状态被选择的总次数的比值,记为rare[i]。设定rare如果小于阈值(自行设定状态极少出现的阈值energy_rare),且1中选择了rare的状态,此时选择这个rare的状态对应的消息,并在energy更新时增加选中该rare状态对应的消息经fuzz后提高的状态/代码覆盖率除以总的覆盖率的比值。3.更新状态转换树每个状态的energy在选择的状态对应的消息fuzz完成后,energy的更新一方面考虑到较少被选择的状态,另一方面考虑到在之前的选择过程中显著增加代码或状态覆盖率的状态。按照0和2步骤中更新energy的方式,累积更新状态转换树中状态的energy。4.重复上述步骤1到3直至fuzz结束。
对状态转换树的分析并选择最感兴趣的协议状态的步骤如下:一、状态转换树随机选择状态阶段初始化:对各个状态的energy进行初始化为0;1.随机选择状态转换树中的状态;2.按照所选择的状态对应消息链的消息并进行模糊测试;3.按照状态/代码覆盖率的增加更新各个状态的energy;4.判断是否进入启发式状态选择阶段;重复上述步骤直至进入启发式状态选择阶段。二、启发式状态选择阶段(energy继承第一阶段):初始化:对各个状态被选择的次数进行初始化为0:1.随机选择energy较高的状态或者很少被选择的rare状态;2.按照所选择的状态对应消息链的消息并进行模糊测试;3.记录每个状态被选择的次数;4.按所选状态的性质(高energy/rare)进行energy的更新,如果选择的是energy较高的状态就计算状态/代码覆盖率的增加的energy;如果是选择的rare的状态,在计算状态/代码覆盖率的增加的energy的基础上,计算按照次数更新rare状态的energy,将这两个值累积更新到当前所选的rare状态;重复上述步骤直至模糊测试结束。
此外,对于快照技术来说,其则是当协议处于某个状态时,借助快照技术转储上下文信息,并在需要对状态再次进行模糊测试时恢复上下文信息。具体来说就是当首次发送消息序列达到某个状态时,保存待模糊的网络协议程序的进程上下文(即进程快照),当需要再次测试这个状态时,恢复该状态的进程快照并在此基础上发送后续的突变消息。
虽然快照技术可以保存状态的上下文便于后续测试,但是不同粒度的快照影响模糊测试的效率,如果粒度过粗则获取和恢复的信息量大;如果粒度过细则难以保存完整信息。故在具体应用时可使用进程级的快照拍摄/恢复。
在进程级别的CRIU作为快照时,快照拍摄分为三步:1)冻结冻结进程及其子进程,防止进程在获取快照时执行错误;2)将过程的完整状态信息保存到镜像文件中;3)终止程序进程。而快照恢复分为五个步骤:1)读取镜像文件,获取快照信息;2)克隆该进程及其子进程;3)恢复基础资源;4)跳转到流程快照所处的状态;5)继续剩余的任务。
而在根据所述协议状态查找所述消息链队列中对应的消息链,确定消息链中最感兴趣的种子消息;并根据所述种子消息获取所述网络协议的快照数据时,则是当网络协议处于某个状态转化树的节点时,判断当前是否保存快照,如果未保存则拍摄快照,如果已经存在快照则恢复快照。拍摄/恢复快照后,对当前消息链进行划分为前缀、中缀、后缀,然后发送前缀消息令协议达到选择的状态,选择中缀消息作为下一步进行突变的区域(即最感兴趣的种子消息),而后续探索协议的空间与状态的即为消息链的后缀。
具体的,本发明中的快照算法则是先设置了已拍摄快照标志、可拍摄快照标志、快照恢复时间。如果当程序到达了状态树模块选择的状态时,已拍摄快照标志为false,可拍摄快照标志为true,则说明后续需要调用快照算法或单元拍摄快照,反之则恢复已经保存的快照信息。在恢复快照信息时,如果当前发送前缀信息到达该状态的时间要少于快照回复时间,则此时无需恢复快照并直接发送消息链开启新进程。
而在选择突变区域时,则首先对于被选择的消息链,遍历其所能到达的所有状态,如果能达到所选的状态且队列周期小于阈值,则划分此时发送的消息为中缀消息,之前的消息为前缀消息,之后的消息为后缀消息;如果高于阈值,则对每个消息进行评分,根据分数划分前缀、中缀、后缀消息,划分消息链后选择中缀消息作为下一步进行突变的区域。
此外,在得到测试输出结果后,还可获取测试输出结果中的状态变量及其对应的状态序列变化信息,并基于该状态变量及其对应的状态序列变化信息维护所述状态转换树,用于指导下一轮的模糊测试。而对于系统来说,则是通过状态转换维护模块来获取测试输出结果中的状态变量及其对应的状态序列变化信息,并基于该状态变量及其对应的状态序列变化信息维护所述状态转换树。
图3示出了本发明的一种计算机设备的一个实施例。该计算机设备可以是服务器,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储静态信息和动态信息数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述方法实施例中的步骤。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
此外,本发明还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述方法实施例中的步骤。
另外,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
本发明并不局限于上面已经描述并在附图中示出的结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (16)
1.一种网络协议模糊测试方法,其特征在于,包括:
基于预先配置的模糊测试种子,对网络协议进行模糊测试,得到消息链队列;并对所述网络协议进行分析,确定所述网络协议的状态变量;
监控所述状态变量的变化,构建状态转换树;并对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态;
根据所述协议状态查找所述消息链队列中对应的消息链,确定消息链中最感兴趣的种子消息;并根据所述种子消息获取所述网络协议的快照数据;
对所述种子消息进行突变,利用突变后的种子消息和所述快照数据对所述网络协议进行模糊测试,得到测试输出结果。
2.根据权利要求1所述的网络协议模糊测试方法,其特征在于,对所述网络协议进行分析,确定所述网络协议的状态变量包括:
查找所述网络协议中的枚举型的所有变量,并从枚举型的所有变量中,确定正则表达式能够识别状态的变量,即为所述网络协议的状态变量。
3.根据权利要求1所述的网络协议模糊测试方法,其特征在于,监控所述状态变量的变化,构建状态转换树包括:
对所述状态变量进行赋值,并监控所述状态变量赋值后的值序列变化;根据所述值序列变化,构建状态转换树。
4.根据权利要求2所述的网络协议模糊测试方法,其特征在于,所述状态转换树的节点为网络协议运行期间状态变量的值;每个节点具有一个父节点和零个或多个子节点。
5.根据权利要求4所述的网络协议模糊测试方法,其特征在于,在只有一个状态变量时,所述状态转换树节点的父节点和子节点分别为该节点创建之前的状态变量值和该节点创建之后的状态变量值;在存在多个状态变量时,所述状态转换树节点的父节点和子节点分别为不同状态变量值。
6.根据权利要求1所述的网络协议模糊测试方法,其特征在于,对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态包括:
利用预先配置的状态选择算法对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态。
7.根据权利要求1所述的网络协议模糊测试方法,其特征在于,还包括:
获取测试输出结果中的状态变量及其对应的状态序列变化信息,并基于该状态变量及其对应的状态序列变化信息维护所述状态转换树。
8.一种网络协议模糊测试系统,其特征在于,包括:
初始数据获取模块,用于基于预先配置的模糊测试种子,对网络协议进行模糊测试,得到消息链队列;并对所述网络协议进行分析,确定所述网络协议的状态变量;
状态转换处理模块,用于监控所述状态变量的变化,构建状态转换树;并对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态;
兴趣消息获取模块,用于根据所述协议状态查找所述消息链队列中对应的消息链,确定消息链中最感兴趣的种子消息;并根据所述种子消息获取所述网络协议的快照数据;
协议模糊测试模块,用于对所述种子消息进行突变,利用突变后的种子消息和所述快照数据对所述网络协议进行模糊测试,得到测试输出结果。
9.根据权利要求8所述的网络协议模糊测试系统,其特征在于,所述初始数据获取模块在对所述网络协议进行分析,确定所述网络协议的状态变量时,查找所述网络协议中的枚举型的所有变量,并从枚举型的所有变量中,确定正则表达式能够识别状态的变量,即为所述网络协议的状态变量。
10.根据权利要求8所述的网络协议模糊测试系统,其特征在于,所述状态转换处理模块在监控所述状态变量的变化,构建状态转换树时,对所述状态变量进行赋值,并监控所述状态变量赋值后的值序列变化;根据所述值序列变化,构建状态转换树。
11.根据权利要求10所述的网络协议模糊测试系统,其特征在于,所述状态转换树的节点为网络协议运行期间状态变量的值;每个节点具有一个父节点和零个或多个子节点。
12.根据权利要求11所述的网络协议模糊测试系统,其特征在于,在只有一个状态变量时,所述状态转换树节点的父节点和子节点分别为该节点创建之前的状态变量值和该节点创建之后的状态变量值;在存在多个状态变量时,所述状态转换树节点的父节点和子节点分别为不同状态变量值。
13.根据权利要求8所述的网络协议模糊测试系统,其特征在于,所述状态转换处理模块在对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态时,利用预先配置的状态选择算法对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态。
14.根据权利要求8所述的网络协议模糊测试系统,其特征在于,还包括:
状态转换维护模块,用于获取测试输出结果中的状态变量及其对应的状态序列变化信息,并基于该状态变量及其对应的状态序列变化信息维护所述状态转换树。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311490142.6A CN117714351A (zh) | 2023-11-09 | 2023-11-09 | 一种网络协议模糊测试方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311490142.6A CN117714351A (zh) | 2023-11-09 | 2023-11-09 | 一种网络协议模糊测试方法、系统、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117714351A true CN117714351A (zh) | 2024-03-15 |
Family
ID=90152312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311490142.6A Pending CN117714351A (zh) | 2023-11-09 | 2023-11-09 | 一种网络协议模糊测试方法、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117714351A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118349480A (zh) * | 2024-06-17 | 2024-07-16 | 中国电子科技集团公司第三十研究所 | 一种基于进程级局部内存快照的协议模糊测试方法 |
-
2023
- 2023-11-09 CN CN202311490142.6A patent/CN117714351A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118349480A (zh) * | 2024-06-17 | 2024-07-16 | 中国电子科技集团公司第三十研究所 | 一种基于进程级局部内存快照的协议模糊测试方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110505241B (zh) | 一种网络攻击面检测方法及系统 | |
CN112804208B (zh) | 一种基于攻击者特性指标的网络攻击路径预测方法 | |
CN109889538B (zh) | 用户异常行为检测方法及系统 | |
CN113612749B (zh) | 一种面向入侵行为的溯源数据聚类方法及装置 | |
CN109542783B (zh) | 一种基于变量分割的扩展有限状态机测试数据生成方法 | |
CN117714351A (zh) | 一种网络协议模糊测试方法、系统、设备及介质 | |
CN110166344B (zh) | 一种身份标识识别方法、装置以及相关设备 | |
CN113660225A (zh) | 基于时序点的网络攻击事件预测方法、系统、装置及介质 | |
CN113259176B (zh) | 一种告警事件分析方法和装置 | |
CN112288249A (zh) | 业务流程执行方法、装置、计算机设备和介质 | |
KR20220018318A (ko) | 컴퓨터 네트워크의 공격 취약점 예측 방법 및 장치 | |
CN113342500A (zh) | 任务执行方法、装置、设备及存储介质 | |
CN114706778A (zh) | 云服务api的模糊测试方法和装置 | |
CN117272330A (zh) | 服务器系统加固更新方法及系统 | |
US11539730B2 (en) | Method, device, and computer program product for abnormality detection | |
CN116743468A (zh) | 基于强化学习的动态攻击路径生成方法 | |
CN109344057B (zh) | 基于遗传方法和符号执行的组合加速测试用例生成方法 | |
CN114707151B (zh) | 一种基于api调用和网络行为的僵尸软件检测方法 | |
CN116340137A (zh) | 用于模糊测试筛选测试用例的方法、装置、电子设备和介质 | |
CN114911704A (zh) | 基于强化学习的接口测试用例生成方法、装置、设备 | |
Whalen et al. | Hidden markov models for automated protocol learning | |
CN114840856A (zh) | 一种状态感知的物联网可信执行环境模糊测试方法和系统 | |
CN115455426A (zh) | 基于漏洞分析模型开发的业务错误分析方法及云端ai系统 | |
CN114362992A (zh) | 一种基于snort日志的隐马尔可夫攻击链预测方法及装置 | |
Branchi et al. | Recommending the optimal policy by learning to act from temporal data |
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 |