CN104796240B - 一种有状态网络协议的模糊测试*** - Google Patents
一种有状态网络协议的模糊测试*** Download PDFInfo
- Publication number
- CN104796240B CN104796240B CN201510219969.2A CN201510219969A CN104796240B CN 104796240 B CN104796240 B CN 104796240B CN 201510219969 A CN201510219969 A CN 201510219969A CN 104796240 B CN104796240 B CN 104796240B
- Authority
- CN
- China
- Prior art keywords
- fuzz testing
- procotol
- data
- request
- stateful
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/24—Testing correct operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种有状态网络协议的模糊测试***,解决了传统网络协议模糊测试框架缺乏对复杂的、有状态协议的支持问题。包括数据生成模块、会话管理模块、监控器、驱动模块;其中:数据生成模块用于存储原始数据样本,并基于规则树算法对原始数据进行模糊化,生成模糊测试用例;会话管理模块用于将模糊测试用例中定义的一个或多个请求连接为一个有向无环图,然后针对每一条路径进行模糊测试;监控器包括进程监控器与网络监控器;驱动模块用于与待测目标服务器通信,发送测试请求并接收服务器响应消息。
Description
技术领域
本发明涉及一种有状态网络协议的模糊测试***,属于模糊测试领域。
背景技术
术语解释:
模糊测试:模糊测试是黑盒测试的一种具体技术,在安全性测试中越来越受到重视。它的原理是将大量的畸形数据输入到目标程序中,通过监测被测程序的异常来发现被测程序中可能存在的安全漏洞。它是一个典型的自动或半自动的过程。
网络协议模糊测试:网络协议是指计算机网络中互相通信的对等实体间交换信息时所必须遵守的规则的集合。在网络协议模糊测试中要求识别攻击的界面,变异或生成包含错误的模糊值,然后将这些模糊值传递给一个目标应用,并监视目标应用以发现错误。
有状态网络协议:服务器在接收到客户端的请求后,会返回对应的响应,协议的状态是指下一次请求响应的时候会受本次请求的影响。有状态网络协议即要求服务器可以记录响应后的状态,并可恢复此次状态。
模糊测试框架:模糊测试框架是可以用于不同类型目标进行模糊测试的工具,它简化了许多种不同类型的测试目标的数据表示方法。标准的模糊测试框架一般包含测试用例生成、网络和磁盘传输以及脚本类语言三部分。
模糊测试是一种发现安全漏洞的有效的测试方法,在安全性测试中越来越受到重视。它的原理是将大量的畸形数据输入到目标程序中,通过监测程序的异常来发现被测程序中可能存在的安全漏洞。模糊测试中的网络协议测试是安全研究者来最感兴趣的部分,不仅因为所发现的漏洞通常具有较高级别的危险程度,而且还由于网络协议在互联网通信中被广泛应用,一旦被发现存在漏洞,受威胁的范围将会很广。
模糊测试和其他的软件测试相比,体现其核心价值之处在于能够将大量的手工测试转化为自动化测试。生成单个测试用例是费力和枯燥的,而其中的某些部分则非常适合于让计算机来自动生成。模糊器的核心竞争力就是它能够在最少人工干预的情况下,自动化生成有用测试数据的能力。
模糊测试框架是可以用于不同类型目标进行模糊测试的工具,它简化了许多种不同类型的测试目标的数据表示方法。标准的模糊测试框架包括三个部分:一个能够引发漏洞的方法库用来生成模糊测试用例;一系列例程用来简化磁盘输入输出和网络传输。现在已经有一些成熟的模糊测试框架,如SPIKE、Peach、 antiparser、Dfuz等,但目前这些框架都有着明显的缺陷,如SPIKE仅适用于 Linux***,缺乏对Windows平台的支持,Peach对应用场景的描述要求则过于严苛与繁琐,antiparser只能做些简单的模糊测试,对于复杂情形则无法处理, Dfuz同样缺乏对Windows平台的支持,同时还不具备智能性。同时这些框架无法测试有状态协议的状态转换过程,如图1,只能分别测试A、B、C、D状态,但是无法对A-B-C或A-C-D进行处理。即现有针对网络协议的模糊测试框架,虽然能够发现协议实现中的漏洞,但是他们缺乏对复杂、有状态协议的支持,他们的测试脚本不能包含消息序列的整个状态序列,并且协议模糊测试的覆盖范围不够完整。
发明内容
本发明提供一种有状态网络协议的模糊测试***,解决了传统网络协议模糊测试框架缺乏对复杂的、有状态协议的支持问题,以及传统网络协议模糊测试框架生成的测试脚本不能包含消息序列的整个状态序列,协议模糊测试的覆盖范围不够完整的问题。
本发明通过以下技术方案实现:
一种有状态网络协议的模糊测试***,包括数据生成模块、会话管理模块、监控器、驱动模块;其中:
数据生成模块用于存储原始数据样本,并基于规则树算法对原始数据进行模糊化,生成模糊测试用例;数据生成模块首先取得原始数据样本,然后根据协议请求格式将其表示成为一个请求;
会话管理模块用于将模糊测试用例中定义的一个或多个请求连接为一个有向无环图,每一个图有至少一个起点,每个节点代表一个请求,分支表示一个请求之后有多种可能的后续请求,一条路径即是一次模糊测试过程;将一个复杂协议分解为多个单独的请求过程,同时利用相应协议的有限状态机的转换图,生成该协议所有的状态转换路径,然后针对每一条路径进行模糊测试;
监控器包括进程监控器与网络监控器;进程监控器用来检测待测程序进行是否出现错误,如果模糊测试用例引发进程出现异常或崩溃,则进程监控器发出异常提示消息;网络监视器负责监控网络通信,并把通信过程记录在相应的文件中,方便检查错误;
驱动模块用于与待测目标服务器通信,发送测试请求并接收服务器响应消息。
其中所述的一个请求是一次状态转换测试中的一个数据单元,其中包括多个数据原子,或其他复杂的数据结构;一个或多个请求的有序组织即组成模糊测试的一个测试用例。
其中所述的数据生成模块分为三层,分别为原始层、扩展层和生成层;原始层为原始数据类型,包括整数、浮点数、字符基本数据类型;扩展层在原始层提供的基础数据类型进行整合,同时为不同协议提供不同的数据块结构,方便用户定义原始数据;生成层利用基于状态机的网络协议半合法化的模糊测试用例生成算法生成测试用例,该算法根据网络协议规约,提取网络协议相关信息并解析协议格式,构建网络协议状态机以及基于有限状态机的网络协议规则树,同时利用对状态转换路径的标记来缩小模糊测试用例规模。
其中所述的会话管理模块分为基础层和协议层两层;基础层为基础的会话类;协议层针对不同的协议定义相应的状态机,并根据状态机生成相应的会话过程。
其中所述的监控器分为进程监控器、网络监控器、虚拟机控制器三个监控工具,与待测程序运行在同一台计算机上,称为被测机。
本发明的有益效果:
本发明中分为数据生成、会话管理、驱动、监控器等4个模块。其中,数据生成模块根据不同的协议定义了不同的数据块,同时将一种基于规则树的算法对原始数据进行模糊化,简化框架用户者的操作;会话管理管理模块将不同协议的状态机进行封装,从而解决了传统框架对协议状态转换过程中测试不充分的问题,同时也使本发明可适用于不同多种协议。
附图说明
图1为背景技术中状态转换路径示意图;
图2本发明一种有状态网络协议的模糊测试***结构框图;
图3为本发明数据生成模块结构框图;
图4为本发明会话管理模块结构框图;
图5为本发明具体实施例中协议状态转换示意图;
图6为本发明具体实施例中会话过程示意图;
图7为本发明监控器模块结构框图。
具体实施方式
下面举例一种基于有限状态机的网络协议模糊测试框架SulleyEX来对本发明作详细的介绍。
SulleyEX针对现有工具对有状态协议状态转换测试的不足,并根据有状态网络协议的特点,提出一种基于有限状态机的模糊测试框架。SulleyEX主要分为测试和辅助两部分,测试部分主要由数据生成模块和会话管理模块组成,辅助部分主要由监控器和驱动模块组成,如图 2 。
1.数据生成模块
数据生成模块是存储原始数据样本,并基于一种基于规则树算法对原始数据进行模糊化,并生成模糊测试用例。数据生成模块首先要取得原始数据样本,然后根据协议请求格式将其表示成为一个请求。一个请求是一次状态转换测试中的一个数据单元,其中可包括多个数据原子,如整数、浮点数、字符串等,也可能包括复杂的数据结构、如数据块、数据组等。一个或多个请求的有序组织即组成模糊测试的一个测试用例。(如图3)。
数据生成模块分为三层,分别为原始层、扩展层和生成层。原始层为原始数据类型,包括整数、浮点数、字符等基本数据类型。扩展层是在原始层提供的基础数据类型进行整合,同时为不同协议提供不同的数据块结构,方便用户定义原始数据,该结构类似于面向对象语言中的结构类型。数据块结构以 s_block_start()开始,以s_block_end()结束。
生成层利用基于状态机的网络协议半合法化的模糊测试用例生成算法生成测试用例,该算法根据网络协议规约,提取网络协议相关信息并解析协议格式,构建网络协议状态机以及基于有限状态机的网络协议规则树,同时利用对状态转换路径的标记来缩小模糊测试用例规模。
2.会话管理模块
会话管理模块的工作是将测试用例中定义的一个或多个请求连接为一个有向无环图,每一个图有至少一个起点,图中每个节点代表一个请求,图中的分支表示一个请求之后有多种可能的后续请求。图中的一条路径即是一次模糊测试过程。这样的方法可以将一个复杂协议分解为多个单独的请求过程,同时利用相应协议的有限状态机的转换图,可生成该协议所有的状态转换路径,然后针对每一条路径进行模糊测试。通过这样的方法即可完整覆盖所有路径,提供了完整的测试覆盖率。(如图4)
会话管理模块分为基础层和协议层两层。基础层为一些基础的会话类,如与服务器连接的connection类,描述测试目标的target类,处理异常的handler 类等。协议层中针对不同的协议定义的了相应的状态机,如SMTP、SIP、FTP协议等,并根据状态机生成相应的会话过程。假设某有状态协议状态转换过程如图 5 。选取其中一条状态转换路径,如S1→S2→S4,该路径上的状态转换(如S1→S2)过程为一个Request,在测试过程中,数据生成模块将对Request的格式或内容进行模糊化,生成多个Request,由于一个变异的 Request只对应一个Session,因此在测试过程中,S1→S2的转换即会有多个会话过程(如图 6 )。
3.监控器模块
监控器模块和驱动模块组成了框架的辅助部分。驱动模块主要与待测目标服务器通信,发送测试请求并接收服务器响应消息。监控器模块分为进程监控器、网络监控器、虚拟机控制器三个监控工具(如图7)。这些监控器必须与待测程序运行在同一台计算机上,称为被测机。而数据生成和会话管理与驱动部分可以运行在另一台计算机上,称为测试机。
Claims (4)
1.一种有状态网络协议的模糊测试***,其特征在于,包括数据生成模块、会话管理模块、监控器、驱动模块;其中:
数据生成模块用于存储原始数据样本,并基于规则树算法对原始数据进行模糊化,生成模糊测试用例;数据生成模块首先取得原始数据样本,然后根据协议请求格式将其表示成为一个请求;
会话管理模块分为基础层和协议层两层;基础层为基础的会话类;协议层针对不同的协议定义相应的状态机,并根据状态机生成相应的会话过程;会话管理模块用于将模糊测试用例中定义的一个或多个请求连接为一个有向无环图,每一个图有至少一个起点,每个节点代表一个请求,分支表示一个请求之后有多种可能的后续请求,一条路径即是一次模糊测试过程;将一个复杂协议分解为多个单独的请求过程,同时利用相应协议的有限状态机的转换图,生成该协议所有的状态转换路径,然后针对每一条路径进行模糊测试;
监控器包括进程监控器与网络监控器;进程监控器用来检测待测程序进行是否出现错误,如果模糊测试用例引发进程出现异常或崩溃,则进程监控器发出异常提示消息;网络监视器负责监控网络通信,并把通信过程记录在相应的文件中,方便检查错误;
驱动模块用于与待测目标服务器通信,发送测试请求并接收服务器响应消息。
2.如权利要求1所述的一种有状态网络协议的模糊测试***,其特征在于,其中所述的一个请求是一次状态转换测试中的一个数据单元,其中包括多个数据原子,或其他复杂的数据结构;一个或多个请求的有序组织即组成模糊测试的一个测试用例。
3.如权利要求1或2所述的一种有状态网络协议的模糊测试***,其特征在于,其中所述的数据生成模块分为三层,分别为原始层、扩展层和生成层;原始层为原始数据类型,包括整数、浮点数、字符基本数据类型;扩展层在原始层提供的基础数据类型进行整合,同时为不同协议提供不同的数据块结构,方便用户定义原始数据;生成层利用基于状态机的网络协议半合法化的模糊测试用例生成算法生成测试用例,该算法根据网络协议规约,提取网络协议相关信息并解析协议格式,构建网络协议状态机以及基于有限状态机的网络协议规则树,同时利用对状态转换路径的标记来缩小模糊测试用例规模。
4.如权利要求1或2所述的一种有状态网络协议的模糊测试***,其特征在于,其中所述的监控器分为进程监控器、网络监控器、虚拟机控制器三个监控工具,与待测程序运行在同一台计算机上,称为被测机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510219969.2A CN104796240B (zh) | 2015-04-30 | 2015-04-30 | 一种有状态网络协议的模糊测试*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510219969.2A CN104796240B (zh) | 2015-04-30 | 2015-04-30 | 一种有状态网络协议的模糊测试*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104796240A CN104796240A (zh) | 2015-07-22 |
CN104796240B true CN104796240B (zh) | 2018-06-05 |
Family
ID=53560775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510219969.2A Active CN104796240B (zh) | 2015-04-30 | 2015-04-30 | 一种有状态网络协议的模糊测试*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104796240B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484611B (zh) * | 2015-09-02 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 基于自动化协议适配的模糊测试方法和装置 |
CN105763392B (zh) * | 2016-02-19 | 2019-03-08 | 中国人民解放军理工大学 | 一种基于协议状态的工控协议模糊测试方法 |
CN107046526A (zh) * | 2016-12-28 | 2017-08-15 | 北京邮电大学 | 基于Fuzzing算法的分布式异构网络漏洞挖掘方法 |
CN109347696B (zh) * | 2018-09-30 | 2020-10-20 | 中国人民解放军国防科技大学 | 一种基于分级变异的网络协议模糊测试方法 |
CN109525457B (zh) * | 2018-11-14 | 2020-08-04 | 中国人民解放军陆军工程大学 | 一种基于状态迁移遍历的网络协议模糊测试方法 |
CN111628900B (zh) * | 2019-02-28 | 2023-08-29 | 西门子股份公司 | 基于网络协议的模糊测试方法、装置和计算机可读介质 |
CN110661778A (zh) * | 2019-08-14 | 2020-01-07 | 中国电力科学研究院有限公司 | 一种基于逆向分析模糊测试工控网络协议的方法及*** |
TWI781354B (zh) | 2019-11-11 | 2022-10-21 | 財團法人資訊工業策進會 | 測試資料產生系統及測試資料產生方法 |
CN113326181A (zh) * | 2020-02-29 | 2021-08-31 | 华为技术有限公司 | 有状态网络协议的模糊测试方法、装置及存储介质 |
CN112330298A (zh) * | 2020-11-17 | 2021-02-05 | 中国平安财产保险股份有限公司 | 消费订单的流程管理方法、装置、计算机设备及存储介质 |
CN112905493B (zh) * | 2021-04-07 | 2023-07-18 | 南京大学 | 一种基于转换测试的结构化模糊测试方法 |
CN113709126A (zh) * | 2021-08-18 | 2021-11-26 | 深圳开源互联网安全技术有限公司 | 网络协议安全模糊测试方法、装置、设备以及存储介质 |
CN113760753B (zh) * | 2021-08-19 | 2023-07-18 | 东北大学 | 基于灰盒模糊技术的quic协议测试方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7310606B2 (en) * | 2006-05-12 | 2007-12-18 | Harris Corporation | Method and system for generating an image-textured digital surface model (DSM) for a geographical area of interest |
CN102087631A (zh) * | 2011-03-09 | 2011-06-08 | 中国人民解放军国发科学技术大学 | 一种面向状态协议实现软件的模糊测试方法 |
CN104142888A (zh) * | 2014-07-14 | 2014-11-12 | 北京理工大学 | 一种有状态协议的规则化状态机模型设计方法 |
-
2015
- 2015-04-30 CN CN201510219969.2A patent/CN104796240B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7310606B2 (en) * | 2006-05-12 | 2007-12-18 | Harris Corporation | Method and system for generating an image-textured digital surface model (DSM) for a geographical area of interest |
CN102087631A (zh) * | 2011-03-09 | 2011-06-08 | 中国人民解放军国发科学技术大学 | 一种面向状态协议实现软件的模糊测试方法 |
CN104142888A (zh) * | 2014-07-14 | 2014-11-12 | 北京理工大学 | 一种有状态协议的规则化状态机模型设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104796240A (zh) | 2015-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104796240B (zh) | 一种有状态网络协议的模糊测试*** | |
CN109714221B (zh) | 网络数据包的确定方法、装置及*** | |
KR101908467B1 (ko) | 가시화된 네트워크 운영 및 유지를 위한 방법 및 장치 | |
CN110912776B (zh) | 一种实体路由器管理协议的自动化模糊测试方法及装置 | |
CN105787364B (zh) | 任务的自动化测试方法、装置及*** | |
CN108092854B (zh) | 基于iec61375协议的列车级以太网设备的测试方法及装置 | |
CN108459850B (zh) | 生成测试脚本的方法、装置及*** | |
US10437717B2 (en) | Defect reporting in application testing | |
CN107908420A (zh) | 一种代码处理方法、装置及*** | |
Pfrang et al. | Advancing Protocol Fuzzing for Industrial Automation and Control Systems. | |
CN110532779A (zh) | 一种漏洞检测的方法、装置、终端及存储介质 | |
JP2019125319A (ja) | 学習プログラム、学習方法および学習装置 | |
CN113347060B (zh) | 基于流程自动化的电力网络故障检测方法、装置和*** | |
CN103297480B (zh) | 一种应用服务自动检测***和方法 | |
CN110868341B (zh) | 就地化保护智能管理单元测试方法及装置 | |
CN107678975A (zh) | 一种软件故障检测方法及装置 | |
CN107222332A (zh) | 测试方法、装置、***及机器可读存储介质 | |
CN116611670A (zh) | 一种半导体器件制造生产线的故障诊断方法及*** | |
CN113032255B (zh) | 响应噪音的识别方法、模型、电子设备及计算机存储介质 | |
CN115934513A (zh) | 一种需求分析及测试设计适配方法、装置、设备及介质 | |
CN106294146B (zh) | 参数替换测试方法及装置 | |
CN108874646A (zh) | 分析数据的方法和装置 | |
Lee et al. | Collecting big data from automotive ECUs beyond the CAN bandwidth for fault visualization | |
CN106649352A (zh) | 数据处理方法及装置 | |
CN106979794B (zh) | 传感器测试方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |