一种基于测试用例自动化生成的协议模糊测试方法及装置

文档序号:34451043发布日期:2023-06-13 14:49阅读:62来源:国知局
一种基于测试用例自动化生成的协议模糊测试方法及装置

本发明涉及网络安全,尤其涉及一种基于测试用例自动化生成的协议模糊测试方法及装置。


背景技术:

1、网络协议描述了两个通信实体相互传递数据的规范,在计算机网络中发挥着重要的作用。然而,在实现过程中由于开发人员理解上的偏差,会在其实现中引入漏洞。一些黑客利用协议中的漏洞传播病毒,甚至在不需要访问物理主机的发起远程攻击,导致数千上万的网络设备面临灾难性的威胁。根据nvd数据库统计,2022年上半年协议中高危漏洞占比超过70%,因此及时发现并修补协议中存在的安全漏洞极为重要。

2、作为当前主流的协议漏洞发掘方法,模糊测试具有操作简单、效率高的特点。自1989提出了以来已经被广泛用于多个领域的安全测试。模糊测试根据测试用例的生成方式可以分为:基于突变的模糊测试技术和基于生成的模糊测试技术。基于突变的模糊测试技术不需要掌握协议的先验知识,降低了创建状态机的努力。然而,该方式生成的测试用例往往无法通过格式校验。基于生成的模糊测试技术,通过对协议的分析获取协议的格式以及状态机模型,生成尽可能符合协议规范的测试用例。该技术生成的测试用例更容易被协议实现程序所接受,然而该方法需要大量的人工分析以及对协议有着足够的了解,并且难以根据新的协议特性进行扩展。另一方面,现有的黑盒模糊测试工具不关心协议程序执行时的信息,很难探测到协议的深层次状态空间。由于基于突变的协议模糊测试工具不了解协议的状态转换关系,因此同样难以到达深层次的状态。此外,灰盒协议模糊测试工具往往会选择更短的状态迁移路径,从而忽略达到该状态的其他路径,造成测试不够完备的问题。


技术实现思路

1、为了解决或者部分地解决传统协议模糊测试方法存在的种子构造代价高,难以扩展到新的协议,以及难以探测到深层次协议状态空间的问题,本发明提供一种基于测试用例自动化生成的协议模糊测试方法及装置。

2、一方面,本发明提供一种基于测试用例自动化生成的协议模糊测试方法,包括:

3、步骤1:捕获协议正常通信时的网络流量并对其进行过滤;

4、步骤2:使用多序列比对方法对齐报文序列;

5、步骤3:确定协议的关键词,基于所述关键词对所有报文序列进行聚类分析以推断出协议格式以及协议状态机模型;

6、步骤4:根据推断出的协议格式构建模板,根据所述模板自动化生成测试用例;

7、步骤5:根据推断出的协议状态机模型,生成测试路径;

8、步骤6:根据所述测试路径将测试用例发送至目标程序进行模糊测试,并监测目标程序的状态。

9、进一步地,步骤2具体包括:

10、步骤2.1:计算所有初始报文序列中的最长报文序列长度lmax和最短报文序列长度lmin;针对每个初始报文序列,执行步骤2.2至步骤2.6;

11、步骤2.2:以字节为单位将初始报文序列划分为静态字段和动态字段;

12、步骤2.3:初始化字段偏移;

13、步骤2.4:在当前字段偏移值下,判断相邻的两个静态字段是否相同,若相同,则将两个相邻静态字段合并一个长静态字段;

14、步骤2.5:更新字段偏移值,判断字段偏移值是否超过最短报文序列长度lmin,若否,则执行步骤2.4;若是,则执行步骤2.6;

15、步骤2.6:将字段偏移位于(lmin,lmax)之间的字段定义为数据字段,并在数据字段插入对齐符号。

16、进一步地,步骤3中具体包括:

17、针对每个候选关键词,设定采用其进行聚类后得到n个集群;

18、针对每个候选关键词,根据其对应的聚类结果计算报文相似度评分和集群内报文间结构相似性评分;

19、分别选取报文相似度评分最高和集群内报文间结构相似性评分最高的关键词,并计算选取的关键词对应的关键词位置字段评分;

20、针对每个候选关键词,计算报文相似度评分、集群内报文间结构相似性评分和关键词位置字段评分的乘积,将乘积值最高的候选关键词作为最终的关键词;

21、基于最终的关键词的聚类结果来推断出协议的格式以及状态机模型。

22、进一步地,按照公式(1)计算报文相似度评分p1:

23、

24、其中,edit_distance(mk,mt)表示将任意两个报文序列mk和mt转变成两个相同的报文序列所需要的最少操作次数,所述操作是指增加、删除和替换中的一种或多种;max_len(mk,mt)表示两个报文序列mk和mt中较长的报文序列的长度。

25、进一步地,按照公式(2)计算集群内报文间结构相似性评分p2:

26、

27、其中,number_gapi表示第i个集群中所有报文在对齐过程中被插入的对齐符号的数量。

28、进一步地,按照公式(3)计算关键词位置字段评分p3:

29、

30、其中,dc、ds表示客户端、服务端候选关键词字段偏移值,lc、ls表示候选关键词字段长度。

31、进一步地,步骤4具体包括:

32、在模板中将字段分为静态字段和动态字段;

33、在生成测试用例时,生成规则包括:

34、规则1:在确保静态字段不被解析异常的情况下,保持静态字段不变;

35、规则2:对于不同类型的动态字段,则采用不同的生成方式生成动态字段,具体包括:针对文本类型动态字段,对分隔符执行替换、扩充和减少中的一种操作或多种操作;其中,替换是指将分隔符替换为其他特殊字符,扩充是指对分隔符进行n倍重复,减少是指将分隔符进行随机删除;

36、针对二进制类型动态字段,对长度较短的二进制字段进行逐位取反操作;对长度较长的二进制字段进行字节级的取反、右移和与其他动态字段互换中的一种操作或多种操作。

37、进一步地,步骤5具体包括:

38、定义协议的初始状态和终止状态;

39、将初始状态存放入状态迁移路径中,然后从初始状态开始遍历协议状态图中所有的协议状态,具体为:判断当前状态是否被遍历过,若否,则标记该状态为新状态并将其放入状态迁移路径中,然后继续遍历当前状态的后继状态;若是,则跳过当前状态,继续遍历下一个状态;直至遍历完成终止状态或不存在后继状态时完成遍历,此时获取到完整的状态迁移路径。

40、进一步地,步骤6具体包括:

41、设置超时阈值,然后根据测试路径的指示向目标程序发送测试用例;

42、当发送完测试用例之后,在达到超时阈值之后未接收到目标程序的返回消息,则重复发送t次该测试用例,若t次达到超时阈值之后均未收到目标程序的返回消息,则重新启动目标程序,并再次发送该测试用例,若在达到超时阈值之后仍未接收到目标程序的返回消息,则记录崩溃和该测试用例,并继续发送下一个测试用例。

43、另一方面,本发明提供一种基于测试用例自动化生成的协议模糊测试装置,包括:

44、捕获模块,用于捕获协议正常通信时的网络流量并对其进行过滤;

45、报文对齐模块,用于使用多序列比对方法对齐报文序列;

46、协议格式以及状态机推断模块,用于确定协议的关键词,基于所述关键词对所有报文序列进行聚类分析以推断出协议格式以及协议状态机模型;

47、测试用例生成模块,用于根据推断出的协议格式构建模板,根据所述模板自动化生成测试用例;

48、测试路径生成模块,用于根据推断出的协议状态机模型,生成测试路径;

49、网络监测模块,用于根据所述测试路径将测试用例发送至目标程序进行模糊测试,并监测目标程序的状态。

50、本发明的有益效果:

51、本发明通过捕获协议程序正常通信时的网络流量,逆向推断出协议格式及状态模型,然后依据协议格式在模板中定义生成规则,自动化生成符合规范的测试用例,从而可以在没有协议先验知识的情况下,生成符合协议规范的测试用例,能够提高模糊器生成有效测试用例的速度,快速开始一个模糊测试过程,并且具有更好的可扩展性。此外,通过状态机指导测试路径的生成以及消息链的发送,探测深层次的状态空间,实现深层次的协议状态覆盖以及到达该状态的所有路径,具有更好的漏洞发现能力。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1