[发明专利]基于Fuzzing算法的分布式异构网络漏洞挖掘方法在审
申请号: | 201611235833.1 | 申请日: | 2016-12-28 |
公开(公告)号: | CN107046526A | 公开(公告)日: | 2017-08-15 |
发明(设计)人: | 张陆勇;王建章;许德森;赵鹏;李东垣;王国相;郭冰楠;朱佩佩;李璇;单路超 | 申请(专利权)人: | 北京邮电大学;中华通信系统有限责任公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 北京卫平智业专利代理事务所(普通合伙)11392 | 代理人: | 董琪 |
地址: | 100876*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 fuzzing 算法 分布式 网络 漏洞 挖掘 方法 | ||
技术领域
本发明涉及网络漏洞挖掘技术领域,具体说是基于Fuzzing算法的分布式异构网络漏洞挖掘方法。
背景技术
在软硬件产品的开发过程当中,产品的测试是非常重要而且必不可少的过程,因此各大厂家都非常注重软硬件产品的测试过程,常见的软硬件产品的测试技术包括:白盒测试,黑盒测试和灰盒测试等。不同的测试方法,要求获得被测系统的不同层次的资源,其中黑盒测试几乎不要求任何被测系统的任何资源。在分布式异构网络当中,各种网络设备纷繁复杂,软件产品也多种多样,因此黑盒测试和灰盒测试,可以在分布式异构网络当中起到较好的效果。
近年来,模糊测试(Fuzzing测试)作为一种有名的黑盒测试技术,广泛地被应用在软件产品测试当中。模糊测试的原理是:通过向测试目标发送非预期的输入并监控输出中的异常来发现软件或者硬件中的故障。典型而言,模糊测试利用半自动化或者全自动化的方法重复的向测试目标提供输入,并且实时监控测试目标的运行情况,观察测试目标的反应,进而期待挖掘相应的漏洞。
目前用于模糊测试技术的主要方式有两种,分别是:基于生成的模糊测试和基于变异的模糊测试。
基于生成的模糊测试需要事先对网络协议或文件的格式进行分析研究,并将其描述出来,通常情况下协议分析人员将格式规范通过脚本文件来描述,然后根据这些脚本文件来产生大量的测试用例,构造的数据一方面要符合脚本文件中的格式规范,以防测试目标直接丢弃非法的用例,达不到测试的效果,另一方面也要尽可能的有特殊性,如边界值、格式字符串等,增加触发漏洞的可能性。
基于变异的模糊测试又分为随机变异和启发变异,这种模糊测试算法需要一个样本文件作为测试用例构造的样本。
现有的网络模糊测试(Fuzzing测试),其主要采用如图1所示技术架构对测试目标进行漏洞挖掘。该技术架构大致可以分成两部分,第一部分是模糊测试引擎部分(简称引擎),它主要负责产生相应的测试用例,根据样本文件或脚本文件中的分析结果,生成相应的畸形数据,用于后续测试目标的注入,即非预期的输入。第二部分是目标监控模块(简称代理),该部分主要负责对测试目标进行监控,观察其相对于畸形数据输入的反应,从而确定测试目标是否存在相应的漏洞。
现有的网络模糊测试(Fuzzing)的工作流程如下:
Fuzzing测试是通过向测试目标发送大量的半有效数据并观测输出结果来实现的,它利用半自动或是全自动的方式发送数据。Fuzzing测试的工作流程一般都会包含以下步骤,如图2所示:
(1)确定测试目标
确定测试目标可以使测试更加明确。在科技迅速发展的今天,模糊测试已经有了较成熟的发展,对于不同的测试目标,选择对应的工具或者是测试框架,能够节省开发成本,节约测试时间。所以,测试目标的确定决定了所选用的测试工具和方法的类型。
(2)分析输入矩阵
大多数的安全漏洞的产生都是因为对程序的输入数据没有进行校验或对非法输入没有给出明确的处理标准导致的,所以,确定输入矩阵是Fuzzing测试能否成功的关键。输入矩阵应该尽可能的包含能够引起程序崩溃的各类非预期的输入,例如文件名、注册表键值、命令行参数、配置信息、环境变量等信息。盲目的测试,在浪费人力和时间的同时可能也无法满足测试的要求。
(3)构造测试用例
在深入分析输入矩阵应该包含的内容之后,就可以根据分析结果构造测试用例。Fuzzing测试一般通过半自动或者全自动的方式发送输入数据,所以,需要将测试用例写成形式化语言,例如适合模糊测试器Fuzzer读取并产生测试用例的脚本文件。通过人工的方式构造出测试用例形式化文件后,后续的测试过程就可以通过自动化的方式进行。在这个过程中,要针对测试目标,综合考虑其他的因素,选择合适的测试用例构造方式,打好漏洞挖掘的基础。
(4)启动模糊测试
这个过程一般是一个自动化过程,它与上一步并行发生,在构造测试用例的同时,模糊测试器会连接测试目标,执行被测试应用,并向测试目标发送数据。
(5)监控异常和错误
这个步骤是一个非常重要的步骤,在发送的大量测试用例中,并不是每个测试用例都会导致测试目标崩溃,所以,需要对导致异常产生的测试用例进行记录。监控和记录崩溃信息对于后续的分析工作至关重要,如果缺少这一步,在测试目标崩溃后就无法确定是哪些数据导致了异常的发生,从而整个测试就是失败的。
(6)分析可利用漏洞
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学;中华通信系统有限责任公司,未经北京邮电大学;中华通信系统有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611235833.1/2.html,转载请声明来源钻瓜专利网。