CN114048126B - 一种协议模糊测试方法及系统 - Google Patents
一种协议模糊测试方法及系统 Download PDFInfo
- Publication number
- CN114048126B CN114048126B CN202111319258.4A CN202111319258A CN114048126B CN 114048126 B CN114048126 B CN 114048126B CN 202111319258 A CN202111319258 A CN 202111319258A CN 114048126 B CN114048126 B CN 114048126B
- Authority
- CN
- China
- Prior art keywords
- data packet
- test target
- combination
- test
- mutated
- 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
Images
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
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)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种协议模糊测试方法及系统。所述方法包括:根据测试目标的功能采集与所述测试目标通信的数据包并按不同功能进行排列组合,生成各个功能对应的数据包组合;对每个数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合;将变异后的数据包组合发送至测试目标,提取造成测试目标故障的变异后的数据包并编写成脚本文件;将脚本文件发送至测试目标,检测测试目标是否发生故障;若是,则确定造成测试目标故障的变异后的数据包为潜在漏洞数据包。本发明方法为一种新的针对协议的测试流程,通过数据包组合对协议从渗透测试的维度进行模糊测试,扩展了测试用例生成的维度,增加了漏洞发现的概率。
Description
技术领域
本发明涉及模糊测试技术领域,特别是涉及一种协议模糊测试方法及系统。
背景技术
目前针对协议的模糊测试均是针对单个数据包报文的组成结构进行模糊测试,基于不同的算法生成单个数据包测试用例,发送给目标设备进行测试。此种单个数据包模糊测试方式存在漏洞发现概率低的问题。
发明内容
本发明的目的是提供一种协议模糊测试方法及系统,以增加漏洞发现的概率。
为实现上述目的,本发明提供了如下方案:
一种协议模糊测试方法,包括:
根据测试目标的功能采集与所述测试目标通信的数据包;
对采集到的所述数据包按不同功能进行排列组合,生成各个功能对应的数据包组合;
对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合;
将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障;
提取造成所述测试目标故障的所述变异后的数据包并编写成脚本文件;
将所述脚本文件发送至所述测试目标,检测所述测试目标是否发生故障;
若所述测试目标再次发生故障,则确定造成所述测试目标故障的所述变异后的数据包为潜在漏洞数据包;
若所述测试目标没有发生故障,则返回所述将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障的步骤。
可选地,所述根据测试目标功能采集与所述测试目标通信的数据包,具体包括:
获取所述测试目标的功能说明文件;
根据所述功能说明文件确定所述测试目标的所有功能;
使用数据包采集工具,根据所述测试目标的不同功能,采集与所述测试目标通信的数据包。
可选地,所述对采集到的所述数据包按不同功能进行排列组合,具体包括:
对采集到的n个数据包中相同功能的m个数据包进行全排列,生成各个功能对应的数据包组合。
可选地,所述对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合,具体包括:
针对每个所述数据包组合中的每个单个数据包,随机抽取预设数量的字节;
对随机抽取的所述预设数量的字节采用移位、叠字或颠倒的方法进行变异,生成变异后的数据包组合。
一种协议模糊测试系统,包括:
数据包采集模块,用于根据测试目标的功能采集与所述测试目标通信的数据包;
排列组合模块,用于对采集到的所述数据包按不同功能进行排列组合,生成各个功能对应的数据包组合;
字节变异模块,用于对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合;
第一故障检测模块,用于将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障;
脚本文件编写模块,用于提取造成所述测试目标故障的所述变异后的数据包并编写成脚本文件;
第二故障检测模块,用于将所述脚本文件发送至所述测试目标,检测所述测试目标是否发生故障;
漏洞确定模块,用于若所述测试目标再次发生故障,则确定造成所述测试目标故障的所述变异后的数据包为潜在漏洞数据包;
第三故障检测模块,用于若所述测试目标没有发生故障,则返回所述将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障的步骤。
可选地,所述数据包采集模块具体包括:
文件获取单元,用于获取所述测试目标的功能说明文件;
功能确定单元,用于根据所述功能说明文件确定所述测试目标的所有功能;
数据包采集单元,用于使用数据包采集工具,根据所述测试目标的不同功能,采集与所述测试目标通信的数据包。
可选地,所述排列组合模块具体包括:
排列组合单元,用于对采集到的n个数据包中相同功能的m个数据包进行全排列,生成各个功能对应的数据包组合。
可选地,所述字节变异模块具体包括:
字节抽取单元,用于针对每个所述数据包组合中的每个单个数据包,随机抽取预设数量的字节;
字节变异单元,用于对随机抽取的所述预设数量的字节采用移位、叠字或颠倒的方法进行变异,生成变异后的数据包组合。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明提供了一种协议模糊测试方法及系统,所述方法包括:根据测试目标的功能采集与所述测试目标通信的数据包;对采集到的所述数据包按不同功能进行排列组合,生成各个功能对应的数据包组合;对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合;将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障;提取造成所述测试目标故障的所述变异后的数据包并编写成脚本文件;将所述脚本文件发送至所述测试目标,检测所述测试目标是否发生故障;若所述测试目标再次发生故障,则确定造成所述测试目标故障的所述变异后的数据包为潜在漏洞数据包;若所述测试目标没有发生故障,则返回所述将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障的步骤。本发明方法为一种新的针对协议的测试流程,通过数据包组合对协议从渗透测试的维度进行模糊测试,扩展了测试用例生成的维度,增加了漏洞发现的概率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种协议模糊测试方法的流程图;
图2为本发明一种协议模糊测试方法的原理示意图;
图3为本发明一种协议模糊测试方法中对数据包进行排列组合的示意图;
图4为本发明一种协议模糊测试系统的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种协议模糊测试方法及系统,以增加测试的覆盖面,提高发现漏洞或缺陷的概率。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明一种协议模糊测试方法的流程图;图2为本发明一种协议模糊测试方法的原理示意图。如图1和图2所示,本发明本发明一种协议模糊测试方法包括:
步骤101:根据测试目标的功能采集与所述测试目标通信的数据包。
模糊测试开始后,即进行功能数据包采集阶段。使用数据包采集工具,按照测试目标的功能说明文件,采集与测试目标通信的数据包。测试目标是指协议通信的另一端对象,如测试一个手机的通信协议,这里的测试目标就是指手机这个对象;如测试一个应用APP的通信协议,则测试目标就是指该APP。
而测试目标的功能说明文件是指测试目标的使用说明文件,如测试一个应用APP的通信协议,则需要参考该APP的功能使用说明书,这些功能说明书会将这个APP的所有功能介绍说明,便于能够采集到所有功能对应的数据包。
因此,所述步骤101具体包括:
获取所述测试目标的功能说明文件;
根据所述功能说明文件确定所述测试目标的所有功能;
使用数据包采集工具,根据所述测试目标的不同功能,采集与所述测试目标通信的数据包。
步骤102:对采集到的所述数据包按不同功能进行排列组合,生成各个功能对应的数据包组合。
在数据包组合阶段,对采集到的数据包按不同功能进行排列组合。采集到的所有数据包共n个,从n个不同数据包中,选取同一功能对应的m(m≤n,m与n均为自然数)个数据包按照一定的顺序排成一列,在实际操作中,通常是进行m个数据包的全排列,就是全覆盖,进而形成不同的数据包排列组合。举例如图3所示,当m=3时,即单个数据包a、b、c为同一功能对应的数据包时,将数据包排列成abc、acb、bac、bca、cab、cba等数据包组合。
即,所述步骤102具体包括:
对采集到的n个数据包中相同功能的m个数据包进行全排列,生成各个功能对应的数据包组合。
步骤103:对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合。
在数据包变异阶段,针对每个数据包组合中的每个单个数据包(例如对数据包组合abc中的单个数据包a),在数据包(例如数据包a)中随机抽取1-6个字节采用移位、叠字、颠倒等方法进行变异,生成变异后的数据包组合。
即,所述步骤103具体包括:
针对每个所述数据包组合中的每个单个数据包,随机抽取预设数量的字节;
对随机抽取的所述预设数量的字节采用移位、叠字或颠倒的方法进行变异,生成变异后的数据包组合。
步骤104:将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障。
在数据包测试阶段,使用测试工具将变异后的数据包组合(例如变异后的abc)发送至测试目标,查看测试目标的运行状态,看是否造成故障。
步骤105:提取造成所述测试目标故障的所述变异后的数据包并编写成脚本文件。
在结果验证阶段,提取造成故障的数据包,将其编写成脚本文件,重新发送给测试目标,查看测试目标故障是否会重新出现:
(1)如果重新出现故障,证明该数据包会造成故障;
(2)如果不会出现故障,将此数据包执行步骤104,重新进行测试。
步骤106:将所述脚本文件发送至所述测试目标,检测所述测试目标是否发生故障。
步骤107:若所述测试目标再次发生故障,则确定造成所述测试目标故障的所述变异后的数据包为潜在漏洞数据包。
若所述测试目标再次发生故障,则证明该变异后的数据包组合会造成故障,可以根据该潜在漏洞数据包发现测试目标的漏洞或缺陷。
步骤108:若所述测试目标没有发生故障,则返回所述将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障的步骤。
若所述测试目标没有发生故障,则将该变异后的数据包组合执行步骤104,重新进行测试。
本发明方法是对多个数据包(另一个层面,可以理解为从功能逻辑角度)进行的测试,为模糊测试提供了一种新的测试思路。本发明方法提供一种新的针对协议的测试流程,通过数据包组合对协议从渗透测试的维度(基于测试目标的功能逻辑角度)进行模糊测试,增加了测试的覆盖面,提高了漏洞发现的概率。
本发明还提供一种协议模糊测试系统,如图4所示,所述系统包括:
数据包采集模块201,用于根据测试目标的功能采集与所述测试目标通信的数据包;
排列组合模块202,用于对采集到的所述数据包按不同功能进行排列组合,生成各个功能对应的数据包组合;
字节变异模块203,用于对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合;
第一故障检测模块204,用于将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障;
脚本文件编写模块205,用于提取造成所述测试目标故障的所述变异后的数据包并编写成脚本文件;
第二故障检测模块206,用于将所述脚本文件发送至所述测试目标,检测所述测试目标是否发生故障;
漏洞确定模块207,用于若所述测试目标再次发生故障,则确定造成所述测试目标故障的所述变异后的数据包为潜在漏洞数据包;
第三故障检测模块208,用于若所述测试目标没有发生故障,则返回所述将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障的步骤。
其中,所述数据包采集模块201具体包括:
文件获取单元,用于获取所述测试目标的功能说明文件;
功能确定单元,用于根据所述功能说明文件确定所述测试目标的所有功能;
数据包采集单元,用于使用数据包采集工具,根据所述测试目标的不同功能,采集与所述测试目标通信的数据包。
所述排列组合模块202具体包括:
排列组合单元,用于对采集到的n个数据包中相同功能的m个数据包进行全排列,生成各个功能对应的数据包组合。
所述字节变异模块203具体包括:
字节抽取单元,用于针对每个所述数据包组合中的每个单个数据包,随机抽取预设数量的字节;
字节变异单元,用于对随机抽取的所述预设数量的字节采用移位、叠字或颠倒的方法进行变异,生成变异后的数据包组合。
本发明方法及系统的优点主要来源于功能数据包采集和数据包组合两个步骤,其中功能数据包采集将测试目标的所有数据包均覆盖,增加了测试的覆盖面;而数据包组合将所有数据包进行组合排列,扩展了测试用例生成的维度,从而更容易发现目标设备的缺陷,提高了发现漏洞或缺陷的概率,解决了目前针对协议的模糊测试漏洞发现概率低的问题。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (4)
1.一种协议模糊测试方法,其特征在于,包括:
根据测试目标的功能采集与所述测试目标通信的数据包;
对采集到的所述数据包按不同功能进行排列组合,生成各个功能对应的数据包组合;
所述对采集到的所述数据包按不同功能进行排列组合,具体包括:
对采集到的n个数据包中相同功能的m个数据包进行全排列,生成各个功能对应的数据包组合;
对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合;
所述对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合,具体包括:
针对每个所述数据包组合中的每个单个数据包,随机抽取预设数量的字节;
对随机抽取的所述预设数量的字节采用移位、叠字或颠倒的方法进行变异,生成变异后的数据包组合;
将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障;
提取造成所述测试目标故障的所述变异后的数据包并编写成脚本文件;
将所述脚本文件发送至所述测试目标,检测所述测试目标是否发生故障;
若所述测试目标再次发生故障,则确定造成所述测试目标故障的所述变异后的数据包为潜在漏洞数据包;
若所述测试目标没有发生故障,则返回所述将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障的步骤。
2.根据权利要求1所述的方法,其特征在于,所述根据测试目标功能采集与所述测试目标通信的数据包,具体包括:
获取所述测试目标的功能说明文件;
根据所述功能说明文件确定所述测试目标的所有功能;
使用数据包采集工具,根据所述测试目标的不同功能,采集与所述测试目标通信的数据包。
3.一种协议模糊测试系统,其特征在于,包括:
数据包采集模块,用于根据测试目标的功能采集与所述测试目标通信的数据包;
排列组合模块,用于对采集到的所述数据包按不同功能进行排列组合,生成各个功能对应的数据包组合;
所述排列组合模块具体包括:
排列组合单元,用于对采集到的n个数据包中相同功能的m个数据包进行全排列,生成各个功能对应的数据包组合;
字节变异模块,用于对每个所述数据包组合中随机抽取的预设数量的字节进行变异,生成变异后的数据包组合;
所述字节变异模块具体包括:
字节抽取单元,用于针对每个所述数据包组合中的每个单个数据包,随机抽取预设数量的字节;
字节变异单元,用于对随机抽取的所述预设数量的字节采用移位、叠字或颠倒的方法进行变异,生成变异后的数据包组合;
第一故障检测模块,用于将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障;
脚本文件编写模块,用于提取造成所述测试目标故障的所述变异后的数据包并编写成脚本文件;
第二故障检测模块,用于将所述脚本文件发送至所述测试目标,检测所述测试目标是否发生故障;
漏洞确定模块,用于若所述测试目标再次发生故障,则确定造成所述测试目标故障的所述变异后的数据包为潜在漏洞数据包;
第三故障检测模块,用于若所述测试目标没有发生故障,则返回所述将所述变异后的数据包组合发送至所述测试目标,检测所述测试目标是否发生故障的步骤。
4.根据权利要求3所述的系统,其特征在于,所述数据包采集模块具体包括:
文件获取单元,用于获取所述测试目标的功能说明文件;
功能确定单元,用于根据所述功能说明文件确定所述测试目标的所有功能;
数据包采集单元,用于使用数据包采集工具,根据所述测试目标的不同功能,采集与所述测试目标通信的数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111319258.4A CN114048126B (zh) | 2021-11-09 | 2021-11-09 | 一种协议模糊测试方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111319258.4A CN114048126B (zh) | 2021-11-09 | 2021-11-09 | 一种协议模糊测试方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114048126A CN114048126A (zh) | 2022-02-15 |
CN114048126B true CN114048126B (zh) | 2022-06-07 |
Family
ID=80207888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111319258.4A Active CN114048126B (zh) | 2021-11-09 | 2021-11-09 | 一种协议模糊测试方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114048126B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115941358B (zh) * | 2023-01-29 | 2023-06-30 | 国家工业信息安全发展研究中心 | 漏洞挖掘方法、装置、终端设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010069587A1 (en) * | 2008-12-18 | 2010-06-24 | Nec Europe Ltd. | Method and device for supporting penetration testing of a computer system |
CN105245403B (zh) * | 2015-10-27 | 2019-09-06 | 国网智能电网研究院 | 一种基于模糊测试的电网工控协议漏洞挖掘系统和方法 |
CN113326194A (zh) * | 2021-06-08 | 2021-08-31 | 博智安全科技股份有限公司 | 一种基于变异报文随机排序的模糊测试方法、装置和存储介质 |
-
2021
- 2021-11-09 CN CN202111319258.4A patent/CN114048126B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114048126A (zh) | 2022-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103699475B (zh) | 对模糊测试中的测试用例进行优化的方法,装置和系统 | |
CN108694320B (zh) | 一种多安全环境下敏感应用动态度量的方法及系统 | |
CN114048126B (zh) | 一种协议模糊测试方法及系统 | |
CN104360938B (zh) | 一种故障确认方法及其系统 | |
CN108768793B (zh) | 一种存储双活链路故障测试方法及装置 | |
CN111200544B (zh) | 一种网络端口流量测试方法和装置 | |
CN111628900A (zh) | 基于网络协议的模糊测试方法、装置和计算机可读介质 | |
Khan et al. | SNTS: Sensor network troubleshooting suite | |
CN109683997B (zh) | 通过沙箱访问应用程序接口的方法、沙箱及沙箱设备 | |
CN105468508B (zh) | 代码检测方法及装置 | |
CN108009085B (zh) | 渠道包测试方法 | |
CN113572726B (zh) | 一种多模态网络控制-数据平面一致性校验方法及装置 | |
CN111988170B (zh) | 一种终端故障定位方法及装置 | |
CN108134717B (zh) | 基于有界模型检验的片上网络固定型故障在线测试方法 | |
CN106681923A (zh) | 一种软件测评方法及装置 | |
CN108491717A (zh) | 一种基于机器学习的xss防御系统及其实现方法 | |
CN109218132B (zh) | 一种自动测试服务器IPv6稳定性的方法 | |
CN112615848B (zh) | 漏洞修复状态检测方法及系统 | |
CN117061222B (zh) | 一种漏洞数据获取方法及漏洞验证方法 | |
CN114489014B (zh) | 一种总线控制器故障排查方法与系统 | |
CN112463572A (zh) | 一种跨境多服务拨测的软件测试系统及其方法 | |
CN116010254A (zh) | 一种系统研发阶段的性能检测方法和系统 | |
CN109167707A (zh) | 一种分流设备测试系统、方法、装置、服务器及存储介质 | |
CN101227346A (zh) | 通信设备自动化测试过程中故障监控方法与装置 | |
CN103425570A (zh) | 一种基于文件格式的Fuzz优化方法 |
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 |