System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及一种基于强化学习的有状态协议模糊测试方法、介质及产品,属于网络协议模糊测试。
技术介绍
1、模糊测试技术广泛应用于网络协议的漏洞挖掘。对网络协议进行模糊测试,其核心是自动或半自动地构造异常的报文数据发送给网络通信程序,实时监控被测程序的工作状态(崩溃、服务中断等)以发现网络通信程序存在的安全漏洞。按照测试用例构造方式的不同,协议模糊测试技术可以分成基于生成的模糊测试和基于变异的模糊测试两类。
2、基于生成的模糊测试技术中,测试用例的构造依赖于测试者提供的协议描述模型。在实施模糊测试前,测试者需要耗费大量精力获取协议格式和协议状态机等信息。虽然存在自动化协议逆向工具降低了协议分析的难度,但分析的精度难以满足模糊测试的需求。
3、基于变异的模糊测试方法对捕获到的网络报文进行变异以构造测试用例,不需要测试者对协议进行分析。基于变异的模糊测试方法在对有状态协议进行模糊测试时,往往通过引导报文将协议程序引导到特定状态下,再对后续报文进行变异以开展测试。
4、根据模糊测试所需要信息的不同,模糊测试可被划分为灰盒模糊测试和黑盒模糊测试。现有灰盒模糊测试方法往往采用对源代码进行插桩的方法获取目标程序的内部信息,通过桩点反馈跟踪内存分配和网络i/o流。这类方法可以通过获取程序执行时的内部反馈准确了解协议状态,但也存在一些局限。首先,现有方法多利用编译时插桩的方法对程序进行插桩,如果无法取得目标程序的源代码,此类方法将难以运用。其次,插桩方法需要在内存中维护探针数据,对状态的恢复也会消耗资源,在资源
5、现有基于变异的协议黑盒模糊测试方法中主要存在以下问题:首先,对报文的变异一般采用顺序化或随机化的操作。这类操作具有盲目性,不能使变异聚焦于某些关键字段以保证变异产生的用例探索更广的状态空间。其次,状态选择存在盲目性。现有方法往往采用随机的方法或基于规则进行状态选择。采用随机策略,难以使模糊测试聚焦到具备深入测试价值的状态。固定规则的测试又容易使状态选择陷入局部最优。此外,大部分模糊测试方法没有充分利用模糊测试过程积累的经验来提高模糊测试效率。这些因素制约了模糊测试的总体性能。
6、公开于该
技术介绍
部分的信息仅仅旨在增加对本专利技术的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域普通技术人员所公知的现有技术。
技术实现思路
1、本专利技术所要解决的技术问题是:如何提高模糊测试的针对性和模糊测试效率。
2、为达到上述目的/为解决上述技术问题,本专利技术是采用下述技术方案实现的。
3、第一方面,本专利技术提供一种基于强化学习的有状态协议模糊测试方法,包括:
4、捕获测试目标在通信过程中产生的网络流量;
5、将测试目标在通信过程中产生的网络流量,输入包含报文信息的状态模型中,提取包括状态信息和报文内容的种子序列,输出所述种子序列;
6、将所述种子序列进行变异生成测试用例,用于对测试目标进行测试;
7、其中,所述种子序列进行变异生成测试用例的方法包括:
8、将所述种子序列输入模糊器,评估测试目标的候选状态并从候选状态中选择当前测试的目标状态;
9、通过发送种子序列中的引导报文,将测试目标引导到目标状态;
10、将所选定的目标状态对应的报文按照特殊符号分割为多个分段;
11、基于汤普森采样算法,在所述多个分段中选择一个分段实施分段变异,得到已变异的分段和未变异的分段,将已变异的分段和未变异的分段拼接产生测试用例;
12、将所述测试用例发送给测试目标进行测试,重复执行以下步骤,直到达到预设的测试终止条件:
13、当测试目标的状态发生变化时,触发奖励机制,累积奖励值;
14、利用模糊器根据奖励值的累积情况更新当前步骤中发生变异的分段的采样概率;
15、选择采样概率最大的一个分段进行变异,将当前步骤中发生变异的分段和未变异的分段进行拼接构建新的测试用例;
16、将新的测试用例发送给测试目标进行测试,监测测试目标的状态变化;
17、其中,当触发测试目标的状态变化为新状态时,将测试目标的新状态和触发报文添加到包含报文信息的状态模型进行更新,并将触发新状态的报文序列作为新的种子序列添加到种子池。
18、进一步地,所述包含报文信息的状态模型的构建方法,包括:
19、捕获测试目标在每次通信过程中产生的网络流量,并从所述网络流量中提取数据包;
20、根据所述数据包的源ip地址和目标ip地址,将所述数据包划分为服务端应答报文和客户端服务请求报文;
21、从服务端应答报文中抽取关键词表示服务端的状态并基于所述关键词建立初始状态模型,所述关键词包括状态码和文本内容;
22、提取客户端服务请求报文的应用层载荷,进行变异处理得到变异载荷,将变异载荷封装回客户端服务请求报文数据包,将封装好的客户端服务请求报文数据包发送至服务端进行测试;
23、将客户端服务请求报文和初始状态模型进行合并,得到包含报文信息的状态模型。
24、进一步地,所述初始状态模型和所述包含报文信息的状态模型以图结构存储,图结构中的每个节点表示测试目标的一个状态,节点之间的边表示促使测试目标状态进行转换的报文,当测试目标有新状态出现,将新状态作为一个新节点插入到图结构中。
25、进一步地,所述目标状态的选择方法,包括:
26、基于ucb算法评估测试目标的候选状态并计算每个候选状态的ucb价值;
27、将ucb价值最高的候选状态作为当前测试的目标状态。
28、进一步地,将所选定的目标状态对应的报文按照特殊符号分割为多个分段的方法,包括:
29、当所述报文中存在特殊符号,则根据所述报文中的特殊符号对报文进行划分,得到多个分段;
30、当所述报文不存在特殊符号,采用定长划分的方法将报文进行划分,得到多个分段。
31、进一步地,所述奖励机制的规则为:
32、当触发测试目标变化为新状态时,当前步骤中发生变异的分段的奖励值加“1”;
33、当触发测试目标变化为已知状态时,当前步骤中发生变异的分段的奖励值加“0”。
34、进一步地,所述奖励机制的规则还包括:
35、当测试目标进入异常处理状态时,当前步骤中发生变异的分段的奖励值加“0”;
36、当基于c/s架构的协议通信时,根据服务端对客户端请求的实时响应,动态更新当前步骤中发生变异的分段的奖励值。
37、进一步地,所述奖励值的累积方法,包括:
38、重复以下步骤,直到当前所选定的目标状态对应的报文的测试次数本文档来自技高网...
【技术保护点】
1.一种基于强化学习的有状态协议模糊测试方法,其特征在于,包括:
2.根据权利要求1所述的基于强化学习的有状态协议模糊测试方法,其特征在于,所述包含报文信息的状态模型的构建方法,包括:
3.根据权利要求2所述的基于强化学习的有状态协议模糊测试方法,其特征在于,所述初始状态模型和所述包含报文信息的状态模型以图结构存储,图结构中的每个节点表示测试目标的一个状态,节点之间的边表示促使测试目标状态进行转换的报文,当测试目标有新状态出现,将新状态作为一个新节点插入到图结构中。
4.根据权利要求1所述的基于强化学习的有状态协议模糊测试方法,其特征在于,所述目标状态的选择方法,包括:
5.根据权利要求1所述的基于强化学习的有状态协议模糊测试方法,其特征在于,将所选定的目标状态对应的报文按照特殊符号分割为多个分段的方法,包括:
6.根据权利要求1所述的基于强化学习的有状态协议模糊测试方法,其特征在于,所述当测试目标的状态发生变化时,触发奖励机制,累积奖励值,利用模糊器根据奖励值的累积情况更新当前步骤中发生变异的分段的采样概率;其中,所述
7.根据权利要求6所述的基于强化学习的有状态协议模糊测试方法,其特征在于,所述奖励机制的规则还包括:
8.根据权利要求7所述的基于强化学习的有状态协议模糊测试方法,其特征在于,所述奖励值的累积方法,包括:
9.一种计算机可读存储介质,其上存储有计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1-8任一项所述方法的步骤。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1-8任一项所述方法的步骤。
...【技术特征摘要】
1.一种基于强化学习的有状态协议模糊测试方法,其特征在于,包括:
2.根据权利要求1所述的基于强化学习的有状态协议模糊测试方法,其特征在于,所述包含报文信息的状态模型的构建方法,包括:
3.根据权利要求2所述的基于强化学习的有状态协议模糊测试方法,其特征在于,所述初始状态模型和所述包含报文信息的状态模型以图结构存储,图结构中的每个节点表示测试目标的一个状态,节点之间的边表示促使测试目标状态进行转换的报文,当测试目标有新状态出现,将新状态作为一个新节点插入到图结构中。
4.根据权利要求1所述的基于强化学习的有状态协议模糊测试方法,其特征在于,所述目标状态的选择方法,包括:
5.根据权利要求1所述的基于强化学习的有状态协议模糊测试方法,其特征在于,将所选定的目标状态对应的报文按照特殊符号分割为多个分段的方法,包括:
【专利技术属性】
技术研发人员:洪征,陈乾,江川,张国敏,秦素娟,张沈梅,古津榜,
申请(专利权)人:中国人民解放军陆军工程大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。