System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于API HOOK的有状态网络协议模糊测试方法技术_技高网

一种基于API HOOK的有状态网络协议模糊测试方法技术

技术编号:40006124 阅读:6 留言:0更新日期:2024-01-09 05:07
本发明专利技术公开了一种基于API HOOK的有状态网络协议模糊测试方法,该方法针对有状态协议模糊测试的需求特点,采用API HOOK技术跟踪监测被测服务程序接收处理输入报文的过程,将内存使用情况和内存数据作为被测程序的状态标识,从而构建其协议状态模型,在后续测试迭代阶段基于该模型判断测试用例所引起的被测程序状态变化,并依此来引导新用例的生成。该方法不受协议状态码等外部表征限制,而是直接关注内存使用情况和内存数据来获取核心状态特征,有效提高了协议状态识别的准确性与可靠性,从而优化有状态网络协议的模糊测试效果,并能够适用于不输出特征码或缺少显示状态信息的协议。

【技术实现步骤摘要】

本专利技术属于信息安全测试领域,具体涉及一种基于api hook的有状态网络协议模糊测试方法。


技术介绍

1、网络协议是计算机网络中互相通信的实体之间交换信息时所要遵守的规则集合,包括通信环境、传输服务、词汇表、信息编码格式、时序/规则/过程等方面内容,网络上的各种应用服务程序都可认为是对特定协议的具体实现。

2、当前,网络应用服务的安全性问题日益突出,网络协议本身或网络应用服务在协议实现过程中存在的漏洞往往会导致严重的安全威胁,如openssl(基于ssl的安全套接字层协议)的“心脏滴血”漏洞、windows smb(服务消息块协议)的“永恒之蓝”漏洞,都在全球范围造成了巨大危害。因此,对网络应用服务程序进行安全测试,排查服务程序或协议本身存在的漏洞,是保证应用服务安全可靠的必要措施。

3、模糊测试(fuzzing)是一种基于缺陷注入的自动化软件测试技术,其技术思路简单、易于理解和重现,误报率低、可迅速定位软件中真正存在的漏洞,无需考虑其他漏洞挖掘方法(如符号执行)面临的路径爆炸问题,因此已成为当前应用最广泛的漏洞挖掘手段。近年来80%以上的公开漏洞都是通过模糊测试发现的。

4、几乎所有要求某种输入的软件都可以进行模糊测试,而网络应用服务程序的输入就是基于特定协议的网络通信,所以对网络应用服务程序的模糊测试被称为协议模糊测试(即协议fuzing)。

5、模糊测试的核心在于通过各种变异操作不断产生新的测试用例输入到被测软件并观测异常。因此,测试用例生成质量直接决定着测试过程的效率和测试结果的全面性、可靠性。覆盖率驱动就是为了监测和评估用例质量并引导用例生成路径而提出的一种技术手段。如代码覆盖率是指输入测试用例后被测软件中被执行的代码占其全部代码的比例,代码覆盖率越高说明对软件的测试越全面、越充分,一定程度上也意味着更有可能触发异常、发现漏洞。通过监测每个测试用例输入被测软件后实现的代码覆盖率,选择代码覆盖率更高的用例进一步变异迭代,就能驱动测试进程向高覆盖率方向优化。

6、但是,网络协议通常是有状态的,协议的各种状态及状态间转换关系构成了协议对应的状态机。当网络应用服务程序的输入空间受到协议状态的严格控制,程序的行为就取决于当前状态在协议状态机上所处的位置,只有满足特定条件的输入数据才会触发程序的状态转换,否则程序就将丢弃输入而阻塞在当前状态下。因此在模糊测试过程中,如果测试用例不满足协议的状态转换条件,就会成为无效输入导致测试进程停滞。而代码覆盖率驱动方法既无法识别服务程序的状态信息,也无法获取通信消息所要求的报文格式和顺序,导致测试器难以掌握和突破协议状态机的限制,严重制约了测试效率和效果。

7、由于网络协议的这一特点,只有根据协议状态及其转换规则来引导测试用例的生成,才能实现有效、全面、可靠的测试。因此,协议模糊测试更适合以状态覆盖驱动为主,基于测试用例对协议状态空间的覆盖程度来评估其质量并引导测试进程。为此,aflnet等工具通过提取服务程序响应报文中的状态码来识别协议状态,动态构建协议状态模型并引导测试用例逐步覆盖。但对于没有状态码或报文中缺少显式状态信息的协议来说,这种方法仍存在明显局限。


技术实现思路

1、本专利技术的目的在于提供一种基于api hook的有状态网络协议模糊测试方法。

2、实现本专利技术目的的技术解决方案为:第一方面,本专利技术提供一种基于api hook的有状态网络协议模糊测试方法,包括以下步骤:

3、步骤1,在被测服务程序可执行文件中插入探针对其系统api调用进行hook,拦截被测程序对内存分配/拷贝/释放、网络数据接收/发送api函数的调用,在执行自定义的hook函数后再返回到被测程序正常指令流程;

4、步骤2,对被测服务程序的正常业务通信流量进行抓包,从捕获的流量数据中筛选出客户端请求报文,保存为pcap文件;

5、步骤3,将pcap文件以重放方式发送给完成api hook后的被测程序;当被测程序接收处理请求报文时,hook函数会监视被测程序的通信会话周期、内存使用和内存数据变化,基于这些信息构建协议状态模型;

6、步骤4,基于步骤2中用于重放的请求报文进行各种变异,生成测试用例发送给被测服务程序;

7、步骤5,监视被测服务程序接收处理测试用例的过程,捕获异常信息并记录异常现场上下文环境,并基于步骤3生成的协议状态模型,对照hook探针监测到的内存变化情况来判断当前协议状态;

8、步骤6,根据测试用例触发异常的相关信息,以及hook函数监测到的协议状态变化情况,引导测试用例下一步变异;

9、步骤7,循环执行步骤4、5、6,直到捕获足够多的异常或达到预定的覆盖度。

10、进一步的,该方法还包括:分析测试过程中捕获的所有异常,确认其是否由被测程序存在的漏洞所引起,并开展定位、复现、机理分析、严重程度评估,撰写漏洞报告。

11、第二方面,本专利技术提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的方法的步骤。

12、第三方面,本专利技术提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的方法的步骤。

13、与现有技术相比,本专利技术的有益效果为:本专利技术的模糊测试方法,针对有状态网络协议的运行机制和技术特点,通过对被测服务程序的api调用进行hook,来跟踪其处理测试用例过程中的关键行为与内存状态,基于这些信息构建协议状态模型以引导测试用例的变异进化,从而更有效地扩展和深化测试路径,提高测试过程对协议状态空间的覆盖度,比现有的协议模糊测试方法具备更强的测试对象适应性和协议状态识别能力。

本文档来自技高网...

【技术保护点】

1.一种基于API HOOK的有状态网络协议模糊测试方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的基于API HOOK的有状态网络协议模糊测试方法,其特征在于,该方法还包括:分析测试过程中捕获的所有异常,确认其是否由被测程序存在的漏洞所引起,并开展定位、复现、机理分析、严重程度评估,撰写漏洞报告。

3.根据权利要求1所述的基于API HOOK的有状态网络协议模糊测试方法,其特征在于,基于HOOK探针获取数据构建协议状态模型的步骤如下:

4.根据权利要求1所述的基于API HOOK的有状态网络协议模糊测试方法,其特征在于,生成测试用例的具体步骤如下:

5.根据权利要求1所述的基于API HOOK的有状态网络协议模糊测试方法,其特征在于,按照如下策略进行循环迭代:

6.根据权利要求1所述的基于API HOOK的有状态网络协议模糊测试方法,其特征在于,步骤7中,直到捕获足够多的异常,是指捕获到设定阈值数量的异常。

7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-6中任一所述的方法的步骤。

8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的方法的步骤。

...

【技术特征摘要】

1.一种基于api hook的有状态网络协议模糊测试方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的基于api hook的有状态网络协议模糊测试方法,其特征在于,该方法还包括:分析测试过程中捕获的所有异常,确认其是否由被测程序存在的漏洞所引起,并开展定位、复现、机理分析、严重程度评估,撰写漏洞报告。

3.根据权利要求1所述的基于api hook的有状态网络协议模糊测试方法,其特征在于,基于hook探针获取数据构建协议状态模型的步骤如下:

4.根据权利要求1所述的基于api hook的有状态网络协议模糊测试方法,其特征在于,生成测试用例的具体步骤如下:<...

【专利技术属性】
技术研发人员:周云彦刘义娄嘉宁吴皓敏赵亚新袁学军王鹏
申请(专利权)人:中国人民解放军六三八九一部队
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1