System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种网络协议模糊测试方法、系统、设备及介质技术方案_技高网

一种网络协议模糊测试方法、系统、设备及介质技术方案

技术编号:40672370 阅读:5 留言:0更新日期:2024-03-18 19:09
本发明专利技术涉及协议测试技术领域,公开一种网络协议模糊测试方法、系统、设备及介质,该方法包括:基于模糊测试种子,对网络协议进行模糊测试,得到消息链队列;对网络协议进行分析,确定状态变量;监控状态变量的变化,构建状态转换树;选择状态转换树当前最感兴趣的协议状态;根据协议状态查找消息链队列中对应的消息链,确定消息链中最感兴趣的种子消息;根据种子消息获取网络协议的快照数据;对种子消息进行突变,利用突变后的种子消息和快照数据对网络协议进行模糊测试,得到测试输出结果。本发明专利技术可有效地对有状态的网络协议测试,并发现其中的有状态的漏洞,避免了传统方法多次测试某个状态时因缺少状态信息产生的巨大消息开销。

【技术实现步骤摘要】

本专利技术涉及协议测试,特别涉及一种网络协议模糊测试方法、系统、设备及介质


技术介绍

1、随着技术的革新和用户群体的增加,当前网络空间不可避免地面临着各种各样的安全问题,而协议作为各种网络传输的载体,其安全性与网络安全息息相关。以openssl为例,在2014年openssl暴露了一个名为“heartbleed”的重大安全漏洞,导致服务器中的用户账户、密码和私钥等机密信息泄露。所以及时发现并修复协议的逻辑错误和实现错误至关重要,而这就需要对协议进行测试来发现错误。

2、目前已经提出的协议测试方法中,如果以人工的参与程度进行分类,则可以将方法分为需要大量人力的代码审计方法、自动化或半自动化的符号执行与模糊测试方法。由于当前网络协议其逻辑复杂程度高、状态数量多,代码审计不仅需要耗费较高的人力物力,并且难以发现代码逻辑错误或实现错误。而符号执行受限于求解引擎,在探索路径约束求解时计算资源需求量较大。相比前两者,模糊测试根据一定的规则,自动生成测试用例,并不需要人工干预即能发现深层次、未知的漏洞。

3、目前较为流行的模糊测试根据其处理的对象内部状态可获取的程度不同,可分为基于覆盖的灰盒模糊测试(cgf)和有状态的黑盒模糊测试(sbf),前者通过在执行过程中保存探索了新路径的测试用例来提高代码覆盖率,后者通过给定状态机(状态机来源于协议规范文档或者捕获的协议流量)来指导模糊器进行测试。但是考虑到许多网络协议是在交互式环境中运行的,如果漏洞(实现错误或逻辑错误)需要协议处于某个状态才能触发,则模糊器需要生成特定的消息序列以达到该状态,以便后续的测试可以在该状态下触发漏洞,此时可将这种漏洞称为有状态的漏洞。对于基于覆盖的灰盒模糊测试(cgf)和有状态的黑盒模糊测试(sbf),前者可以处理无状态程序和具体函数,后者可以无需了解协议内部而进行测试。但是当二者处理上述有状态的漏洞时,存在各自的问题:

4、(1)基于覆盖的灰盒模糊测试(cgf)虽然保留了可探索新路径的测试用例,但是缺少协议的状态转换信息。对于有状态的协议的server端,其响应取决于当前消息和由早期消息控制的当前状态,从发送消息的开销来考虑,如果当前消息序列不同但状态相同时,不同长度的消息序列可能会产生不同的开销,但cgf无法判断不同的消息会到达哪个状态,难以发送更短长度的消息序列对有状态的漏洞进行测试。从可达到的状态来考虑,由于cgf无法记录协议的状态,如果想要达到一个较深的状态s,那么模糊器需要发送大量消息前缀来达到这个状态,那么整个过程中想要在这个状态s进行多次测试,就需要耗费大量的时间。此外对于有状态的协议的client端也并不具有发送消息的顺序与结构,即测试过程处于无状态的测试。

5、(2)有状态的黑盒模糊测试(sbf)需要给定协议知识,形成有限状态机以获取状态转换关系,但是初始消息是人工编写的模型生成的,存在不确定性。此外,这种方法获取协议潜在漏洞的方式依赖人力,即需要手动比较和分析学习到的状态机模型与协议知识之间的差异,才能发现逻辑错误。


技术实现思路

1、本专利技术实施例提供了一种网络协议模糊测试方法、系统、设备及介质,以解决现有技术中的上述技术问题。

2、为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。

3、根据本专利技术实施例的第一方面,提供了一种网络协议模糊测试方法。

4、在一个实施例中,所述网络协议模糊测试方法,包括:

5、基于预先配置的模糊测试种子,对网络协议进行模糊测试,得到消息链队列;并对所述网络协议进行分析,确定所述网络协议的状态变量;

6、监控所述状态变量的变化,构建状态转换树;并对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态;

7、根据所述协议状态查找所述消息链队列中对应的消息链,确定消息链中最感兴趣的种子消息;并根据所述种子消息获取所述网络协议的快照数据;

8、对所述种子消息进行突变,利用突变后的种子消息和所述快照数据对所述网络协议进行模糊测试,得到测试输出结果。

9、在一个实施例中,对所述网络协议进行分析,确定所述网络协议的状态变量包括:查找所述网络协议中的枚举型的所有变量,并从枚举型的所有变量中,确定正则表达式能够识别状态的变量,即为所述网络协议的状态变量。

10、在一个实施例中,监控所述状态变量的变化,构建状态转换树包括:对所述状态变量进行赋值,并监控所述状态变量赋值后的值序列变化;根据所述值序列变化,构建状态转换树。

11、在一个实施例中,所述状态转换树的节点为网络协议运行期间状态变量的值;每个节点具有一个父节点和零个或多个子节点。

12、在一个实施例中,在只有一个状态变量时,所述状态转换树节点的父节点和子节点分别为该节点创建之前的状态变量值和该节点创建之后的状态变量值;在存在多个状态变量时,所述状态转换树节点的父节点和子节点分别为不同状态变量值。

13、在一个实施例中,对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态包括:利用预先配置的状态选择算法对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态。

14、在一个实施例中,所述的网络协议模糊测试方法,还包括:获取测试输出结果中的状态变量及其对应的状态序列变化信息,并基于该状态变量及其对应的状态序列变化信息维护所述状态转换树。

15、根据本专利技术实施例的第二方面,提供了一种网络协议模糊测试系统。

16、在一个实施例中,所述网络协议模糊测试系统,包括:

17、初始数据获取模块,用于基于预先配置的模糊测试种子,对网络协议进行模糊测试,得到消息链队列;并对所述网络协议进行分析,确定所述网络协议的状态变量;

18、状态转换处理模块,用于监控所述状态变量的变化,构建状态转换树;并对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态;

19、兴趣消息获取模块,用于根据所述协议状态查找所述消息链队列中对应的消息链,确定消息链中最感兴趣的种子消息;并根据所述种子消息获取所述网络协议的快照数据;

20、协议模糊测试模块,用于对所述种子消息进行突变,利用突变后的种子消息和所述快照数据对所述网络协议进行模糊测试,得到测试输出结果。

21、在一个实施例中,所述初始数据获取模块在对所述网络协议进行分析,确定所述网络协议的状态变量时,查找所述网络协议中的枚举型的所有变量,并从枚举型的所有变量中,确定正则表达式能够识别状态的变量,即为所述网络协议的状态变量。

22、在一个实施例中,所述状态转换处理模块在监控所述状态变量的变化,构建状态转换树时,对所述状态变量进行赋值,并监控所述状态变本文档来自技高网...

【技术保护点】

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中任一项所述的方法的步骤。

...

【技术特征摘要】

1.一种网络协议模糊测试方法,其特征在于,包括:

2.根据权利要求1所述的网络协议模糊测试方法,其特征在于,对所述网络协议进行分析,确定所述网络协议的状态变量包括:

3.根据权利要求1所述的网络协议模糊测试方法,其特征在于,监控所述状态变量的变化,构建状态转换树包括:

4.根据权利要求2所述的网络协议模糊测试方法,其特征在于,所述状态转换树的节点为网络协议运行期间状态变量的值;每个节点具有一个父节点和零个或多个子节点。

5.根据权利要求4所述的网络协议模糊测试方法,其特征在于,在只有一个状态变量时,所述状态转换树节点的父节点和子节点分别为该节点创建之前的状态变量值和该节点创建之后的状态变量值;在存在多个状态变量时,所述状态转换树节点的父节点和子节点分别为不同状态变量值。

6.根据权利要求1所述的网络协议模糊测试方法,其特征在于,对所述状态转换树进行分析,选择所述状态转换树当前最感兴趣的协议状态包括:

7.根据权利要求1所述的网络协议模糊测试方法,其特征在于,还包括:

8.一种网络协议模糊测试系统,其特征在于,包括:

9.根据权利要求8所述的网络协议模糊测试系统,其特征在于,所述初始数据获取模块在对所述网络协议进行分析,确定所述网络协议的状态变量时,查找所述网络协议中的枚举型的所有变量,并从枚举型的所有变量中,确定正则表达式能够识别状态的变量,即为所述网络协议的状态变量。

10.根据权利...

【专利技术属性】
技术研发人员:刘新刘冬兰常英贤赵鹏王勇王睿郭山清胡程瑜张方哲张昊陈剑飞马雷孙莉莉赵夫慧姚洪磊李正浩于灏秦佳峰赵洺哲孙梦谦苏冰金玉辉许善杰
申请(专利权)人:国网山东省电力公司电力科学研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1