一种协议模糊测试方法及系统与流程

文档序号:28924856发布日期:2022-02-16 14:03阅读:73来源:国知局
一种协议模糊测试方法及系统与流程

1.本发明涉及模糊测试技术领域,特别是涉及一种协议模糊测试方法及系统。


背景技术:

2.目前针对协议的模糊测试均是针对单个数据包报文的组成结构进行模糊测试,基于不同的算法生成单个数据包测试用例,发送给目标设备进行测试。此种单个数据包模糊测试方式存在漏洞发现概率低的问题。


技术实现要素:

3.本发明的目的是提供一种协议模糊测试方法及系统,以增加漏洞发现的概率。
4.为实现上述目的,本发明提供了如下方案:
5.一种协议模糊测试方法,包括:
6.根据测试目标的功能采集与所述测试目标通信的数据包;
7.对采集到的所述数据包按不同功能进行排列组合,生成各个功能对应的数据包组合;
8.对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合;
9.将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障;
10.提取造成所述测试目标故障的所述变异后的数据包并编写成脚本文件;
11.将所述脚本文件发送至所述测试目标,检测所述测试目标是否发生故障;
12.若所述测试目标再次发生故障,则确定造成所述测试目标故障的所述变异后的数据包为潜在漏洞数据包;
13.若所述测试目标没有发生故障,则返回所述将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障的步骤。
14.可选地,所述根据测试目标功能采集与所述测试目标通信的数据包,具体包括:
15.获取所述测试目标的功能说明文件;
16.根据所述功能说明文件确定所述测试目标的所有功能;
17.使用数据包采集工具,根据所述测试目标的不同功能,采集与所述测试目标通信的数据包。
18.可选地,所述对采集到的所述数据包按不同功能进行排列组合,具体包括:
19.对采集到的n个数据包中相同功能的m个数据包进行全排列,生成各个功能对应的数据包组合。
20.可选地,所述对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合,具体包括:
21.针对每个所述数据包组合中的每个单个数据包,随机抽取预设数量的字节;
22.对随机抽取的所述预设数量的字节采用移位、叠字或颠倒的方法进行变异,生成变异后的数据包组合。
23.一种协议模糊测试系统,包括:
24.数据包采集模块,用于根据测试目标的功能采集与所述测试目标通信的数据包;
25.排列组合模块,用于对采集到的所述数据包按不同功能进行排列组合,生成各个功能对应的数据包组合;
26.字节变异模块,用于对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合;
27.第一故障检测模块,用于将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障;
28.脚本文件编写模块,用于提取造成所述测试目标故障的所述变异后的数据包并编写成脚本文件;
29.第二故障检测模块,用于将所述脚本文件发送至所述测试目标,检测所述测试目标是否发生故障;
30.漏洞确定模块,用于若所述测试目标再次发生故障,则确定造成所述测试目标故障的所述变异后的数据包为潜在漏洞数据包;
31.第三故障检测模块,用于若所述测试目标没有发生故障,则返回所述将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障的步骤。
32.可选地,所述数据包采集模块具体包括:
33.文件获取单元,用于获取所述测试目标的功能说明文件;
34.功能确定单元,用于根据所述功能说明文件确定所述测试目标的所有功能;
35.数据包采集单元,用于使用数据包采集工具,根据所述测试目标的不同功能,采集与所述测试目标通信的数据包。
36.可选地,所述排列组合模块具体包括:
37.排列组合单元,用于对采集到的n个数据包中相同功能的m个数据包进行全排列,生成各个功能对应的数据包组合。
38.可选地,所述字节变异模块具体包括:
39.字节抽取单元,用于针对每个所述数据包组合中的每个单个数据包,随机抽取预设数量的字节;
40.字节变异单元,用于对随机抽取的所述预设数量的字节采用移位、叠字或颠倒的方法进行变异,生成变异后的数据包组合。
41.根据本发明提供的具体实施例,本发明公开了以下技术效果:
42.本发明提供了一种协议模糊测试方法及系统,所述方法包括:根据测试目标的功能采集与所述测试目标通信的数据包;对采集到的所述数据包按不同功能进行排列组合,生成各个功能对应的数据包组合;对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合;将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障;提取造成所述测试目标故障的所述变异后的数据包并编写成脚本文件;将所述脚本文件发送至所述测试目标,检测所述测试目标是否发生故障;若所述测试目标再次发生故障,则确定造成所述测试目标故障的所述变异后的数据包为潜在漏洞
数据包;若所述测试目标没有发生故障,则返回所述将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障的步骤。本发明方法为一种新的针对协议的测试流程,通过数据包组合对协议从渗透测试的维度进行模糊测试,扩展了测试用例生成的维度,增加了漏洞发现的概率。
附图说明
43.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
44.图1为本发明一种协议模糊测试方法的流程图;
45.图2为本发明一种协议模糊测试方法的原理示意图;
46.图3为本发明一种协议模糊测试方法中对数据包进行排列组合的示意图;
47.图4为本发明一种协议模糊测试系统的结构图。
具体实施方式
48.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.本发明的目的是提供一种协议模糊测试方法及系统,以增加测试的覆盖面,提高发现漏洞或缺陷的概率。
50.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
51.图1为本发明一种协议模糊测试方法的流程图;图2为本发明一种协议模糊测试方法的原理示意图。如图1和图2所示,本发明本发明一种协议模糊测试方法包括:
52.步骤101:根据测试目标的功能采集与所述测试目标通信的数据包。
53.模糊测试开始后,即进行功能数据包采集阶段。使用数据包采集工具,按照测试目标的功能说明文件,采集与测试目标通信的数据包。测试目标是指协议通信的另一端对象,如测试一个手机的通信协议,这里的测试目标就是指手机这个对象;如测试一个应用app的通信协议,则测试目标就是指该app。
54.而测试目标的功能说明文件是指测试目标的使用说明文件,如测试一个应用app的通信协议,则需要参考该app的功能使用说明书,这些功能说明书会将这个app的所有功能介绍说明,便于能够采集到所有功能对应的数据包。
55.因此,所述步骤101具体包括:
56.获取所述测试目标的功能说明文件;
57.根据所述功能说明文件确定所述测试目标的所有功能;
58.使用数据包采集工具,根据所述测试目标的不同功能,采集与所述测试目标通信的数据包。
59.步骤102:对采集到的所述数据包按不同功能进行排列组合,生成各个功能对应的数据包组合。
60.在数据包组合阶段,对采集到的数据包按不同功能进行排列组合。采集到的所有数据包共n个,从n个不同数据包中,选取同一功能对应的m(m≤n,m与n均为自然数)个数据包按照一定的顺序排成一列,在实际操作中,通常是进行m个数据包的全排列,就是全覆盖,进而形成不同的数据包排列组合。举例如图3所示,当m=3时,即单个数据包a、b、c为同一功能对应的数据包时,将数据包排列成abc、acb、bac、bca、cab、cba等数据包组合。
61.即,所述步骤102具体包括:
62.对采集到的n个数据包中相同功能的m个数据包进行全排列,生成各个功能对应的数据包组合。
63.步骤103:对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合。
64.在数据包变异阶段,针对每个数据包组合中的每个单个数据包(例如对数据包组合abc中的单个数据包a),在数据包(例如数据包a)中随机抽取1-6个字节采用移位、叠字、颠倒等方法进行变异,生成变异后的数据包组合。
65.即,所述步骤103具体包括:
66.针对每个所述数据包组合中的每个单个数据包,随机抽取预设数量的字节;
67.对随机抽取的所述预设数量的字节采用移位、叠字或颠倒的方法进行变异,生成变异后的数据包组合。
68.步骤104:将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障。
69.在数据包测试阶段,使用测试工具将变异后的数据包组合(例如变异后的abc)发送至测试目标,查看测试目标的运行状态,看是否造成故障。
70.步骤105:提取造成所述测试目标故障的所述变异后的数据包并编写成脚本文件。
71.在结果验证阶段,提取造成故障的数据包,将其编写成脚本文件,重新发送给测试目标,查看测试目标故障是否会重新出现:
72.(1)如果重新出现故障,证明该数据包会造成故障;
73.(2)如果不会出现故障,将此数据包执行步骤104,重新进行测试。
74.步骤106:将所述脚本文件发送至所述测试目标,检测所述测试目标是否发生故障。
75.步骤107:若所述测试目标再次发生故障,则确定造成所述测试目标故障的所述变异后的数据包为潜在漏洞数据包。
76.若所述测试目标再次发生故障,则证明该变异后的数据包组合会造成故障,可以根据该潜在漏洞数据包发现测试目标的漏洞或缺陷。
77.步骤108:若所述测试目标没有发生故障,则返回所述将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障的步骤。
78.若所述测试目标没有发生故障,则将该变异后的数据包组合执行步骤104,重新进行测试。
79.本发明方法是对多个数据包(另一个层面,可以理解为从功能逻辑角度)进行的测
试,为模糊测试提供了一种新的测试思路。本发明方法提供一种新的针对协议的测试流程,通过数据包组合对协议从渗透测试的维度(基于测试目标的功能逻辑角度)进行模糊测试,增加了测试的覆盖面,提高了漏洞发现的概率。
80.本发明还提供一种协议模糊测试系统,如图4所示,所述系统包括:
81.数据包采集模块201,用于根据测试目标的功能采集与所述测试目标通信的数据包;
82.排列组合模块202,用于对采集到的所述数据包按不同功能进行排列组合,生成各个功能对应的数据包组合;
83.字节变异模块203,用于对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合;
84.第一故障检测模块204,用于将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障;
85.脚本文件编写模块205,用于提取造成所述测试目标故障的所述变异后的数据包并编写成脚本文件;
86.第二故障检测模块206,用于将所述脚本文件发送至所述测试目标,检测所述测试目标是否发生故障;
87.漏洞确定模块207,用于若所述测试目标再次发生故障,则确定造成所述测试目标故障的所述变异后的数据包为潜在漏洞数据包;
88.第三故障检测模块208,用于若所述测试目标没有发生故障,则返回所述将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障的步骤。
89.其中,所述数据包采集模块201具体包括:
90.文件获取单元,用于获取所述测试目标的功能说明文件;
91.功能确定单元,用于根据所述功能说明文件确定所述测试目标的所有功能;
92.数据包采集单元,用于使用数据包采集工具,根据所述测试目标的不同功能,采集与所述测试目标通信的数据包。
93.所述排列组合模块202具体包括:
94.排列组合单元,用于对采集到的n个数据包中相同功能的m个数据包进行全排列,生成各个功能对应的数据包组合。
95.所述字节变异模块203具体包括:
96.字节抽取单元,用于针对每个所述数据包组合中的每个单个数据包,随机抽取预设数量的字节;
97.字节变异单元,用于对随机抽取的所述预设数量的字节采用移位、叠字或颠倒的方法进行变异,生成变异后的数据包组合。
98.本发明方法及系统的优点主要来源于功能数据包采集和数据包组合两个步骤,其中功能数据包采集将测试目标的所有数据包均覆盖,增加了测试的覆盖面;而数据包组合将所有数据包进行组合排列,扩展了测试用例生成的维度,从而更容易发现目标设备的缺陷,提高了发现漏洞或缺陷的概率,解决了目前针对协议的模糊测试漏洞发现概率低的问题。
99.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他
实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
100.本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1