干货分享

您所在的位置:网站首页 模糊测试的过程有哪些 干货分享

干货分享

2024-07-17 01:11| 来源: 网络整理| 查看: 265

源起

1988年,在威斯康星大学Barton-Miller教授的计算机实验课上,首次提出Fuzz生成器(Fuzz Generator)的概念,用于测试Unix程序的健壮性,即用随机数据来测试程序直至崩溃。因此,Barton Miller教授也被多数人尊称为”模糊测试之父”。

概念

模糊测试作为一种常用的软件安全测试技术,目的是寻找软件系统或给定目标程序的漏洞。其核心是自动或半自动的生成随机数据输入到应用程序中,同时监控程序的异常情况,如崩溃、代码断言失败,以此发现可能的程序错误,如内存泄漏。在系统开发与调试过程中,模糊测试也可以找到那些我们可能没有注意到的缺陷。

由于模糊测试技术具有可以充分遍历所有输入数据、代码覆盖全面、测试自动化,能够有效地发现软件中存在的安全问题等特点,受到信息安全中漏洞分析领域研究人员的广泛欢迎。模糊测试的对象可以是应用程序、操作系统、数据库、通信协议、智能合约等。其中,以协议模糊测试技术应用最为广泛,发展了约20多年,已经有许多成熟的测试工具。

本文主要讨论的是协议模糊测试的相关话题。

协议模糊测试

在互联网飞速发展的今天,许多本地应用都是在B/S模式下转化为网络服务:服务器部署在网络上,而客户端应用程序通过网络协议与服务器通信。网络协议的安全性测试成为一个重要问题。协议中的安全问题可能会产生比本地应用更严重的损害,如拒绝服务、信息泄露等。

早期的网络协议模糊器主要以黑盒的方式运行,通常是盲目地、持续地生成消息,并将消息发送到位于给定IP地址和端口的被测服务SUT(Server Under Test)。尽管黑盒模糊测试很容易实现,但由于在模糊过程中缺乏SUT内部反馈,导致代码覆盖率和漏洞发现效率具有局限性。因此也出现了很多改进的模糊测试方法,比如基于模型的协议模糊测试技术,该方法的关键在于如何去描述程序输入数据格式以及如何生成测试用例,结合输入数据的先验知识,包括格式或者规范等,通过建立数据描述模型,进而指导测试用例产生和执行,其优点在于不需要源代码、不受限于被测系统的内部实现细节和复杂程度。

在针对多状态协议的模糊测试方面,研究者们也提出了一些优化办法。比如采用XML脚本对协议状态机进行描述,通过构建协议状态转换路径标识的有限状态机和相应的测试数据序列,并设计算法去除具有相同路径转换关系的测试数据序列来为具有状态的协议生成模糊测试数据,以提高有状态协议的模糊测试效率。

研究者们利用这些方法与现有模糊测试工具相结合,虽然一定程度上提高了对多状态的覆盖率,但是依然无法避免传统协议漏洞挖掘工具的繁琐性。除了对模糊测试本身的算法进行优化以外, 近年来,随着灰盒模糊测试工具AFL的流行,研究者开始将AFL中基于程序反馈与遗传算法的灰盒模糊测试思想引入到协议模糊测试中,有效提高了协议模糊测试的性能。另外,模糊测试领域与机器学习各个领域相关知识的结合成为了新的研究热点。

应用领域

网络服务及设备

网络协议测试的对象是各类网络产品中的网络协议解析模块,目的是在测试其在组装、解析网络协议的过程中是否存在漏洞。其思想是模糊器通过Socket与被测目标之间进行通信,向被测目标应用发送变异或者包含错误的模糊值,并监视目标应用以发现错误。因此我们首先需要做的就是研究各类协议的规范和标准,以便创建合理的测试用例。

在常见的网络协议测试中,主要有两种类型。第一种是客户端和服务器模式,即模糊器和被测对象分别为测试过程中的两个端点。在这个过程中,模糊器既可以充当客户端的角色,用来测试服务端程序的安全性,比如Web服务程序,也可以充当服务端角色,用来测试客户端的安全性,一般还会有一个监视器模块,用来对被测对象的行为进行收集、分析以判断是否存在异常情况。第二种主要是用来测试防火墙、路由器和安全网关等部署在网络中间的设备,模糊器构造的数据被发送到协议服务器的过程中,位于模糊器和协议服务器之间的被测对象对其起到了重组和解析的作用,一旦重组和解析的过程中出错,可能造成被测对象出现异常状态,同样地,这里也会有一个监视器模块,来对被测对象的异常状态进行收集、分析,最终定位漏洞所在的位置。

车联网

由于汽车与外部通信的接口不断增多,黑客可以通过多种方式与汽车内部的 CAN总线网络进行通信。另外,由于 CAN 总线本身的脆弱性,攻击者往往利用向总线上发送非预期的报文从而对汽车产生影响。再就是利用测试工具通过随机生成大量数据,将数据发送给车辆,可以通过发送大量伪造报文来进行拒绝服务攻击。

另外还有车外通信,比如典型的无线通信协议蓝牙、WIFI,以及近年来的5G等。随着技术的发展,越来越多的设备通过无线传输的方式连接到互联网,在给使用者带来便捷的同时,也给了攻击者提供了更多的攻击机会。比如通过欺骗用户连接到虚假的WIFI接入点。

模糊测试技术除了用于揭示安全漏洞以外还可以用于入侵检测算法的测试与验证。

物联网

鉴于对提升IoT系统的安全性的迫切需求,许多国际上重要的物联网设备供应和制造商,例如华为、海康、谷歌、思科等,都分別成立了自己的IoT安全实验室。国内外的重点高校,实验室,研究所,也开始关注和开展了大量的IoT系统安全研究。

在对传统软件的安全漏洞挖掘研究中,模糊测试技术能够取得不错的效果,历史上通过模糊测试检测出过大量的软件安全漏洞。模糊测试主要方法是通过随机构造的输入数据,对软件进行破坏性测试,用以挖掘出软件中存在的潜在安全漏洞与缺陷。

工业控制

随着“两化”融合的推进和以太网技术在工业控制系统中得到大量使用,进而引发的病毒和木马攻击工控设备的事件不断出现,严重威胁基础工业控制设备的安全运行,其造成的 损失可能非常巨大,甚至不可估量。2010 年 10 月, 伊朗“震网”(Stuxnet) 病毒事件,引起了各国对工控设备安全的高度重视。必须要针对工业控制系统设备进行安全性模糊测试, 发现潜在安全风险,以便及时采取风险应对措施,防止安全风险被进一步利用,降低工业控制系统安全风险被利用的概率。

工控设备的通信协议可分为3类:基础通信协议(ARP、IP、ICMP、TCP、UDP等)、通用服务协议(HTTP、FTP、SNMP等)和工业控制协议(Modbus TCP、Ethernet/IP、DNP3、BACnet等)。由于工控设备自身的脆弱性,往往在基础通信协议和通用协议测试中就能发现不少问题。

面临挑战

网络服务可能会定义它们自己特有的通信协议,有时我们也称其为“专有协议”或“私有协议”,而这些协议标准往往不公开。此外,即使是有文档规范的协议,其具体实现也不一定能严格遵循诸如RFC文档之类的规范。

协议模糊器需要与被测目标建立通信连接,然后将生成的符合协议规范的测试用例发送给被测目标。建立通信的过程和发送测试用例的过程会带来额外的开销,因此协议模糊测试吞吐量往往低于本地文件模糊测试的吞吐量。

协议模糊测试的被测目标通常具有很大的状态空间,有时需要精心构造特定顺序的消息序列才能到达某一状态。早期的协议模糊测试工具常采用基于生成的方式进行黑盒模糊测试,这种方式依赖于协议格式的先验知识来生成有效的模糊测试用例,并且由于黑盒的特性,很难探索深层次的漏洞。

发展趋势

协议模糊测试的发展以AFLNET工具为分界线。在AFLNET提出之前,主流的协议模糊测试工具采用黑盒的方法,由于黑盒测试不能得到SUT的反馈,模糊测试很难有效探索协议的状态空间;在AFLNET提出之后,基于覆盖的有状态灰盒模糊测试成为协议模糊测试的主流方法。未来协议模糊测试技术的研究应侧重于两点:

一是改进种子筛选策略,以更快更有效地发现深层次的漏洞。

二是引入状态感知和结构感知的变异,使模糊测试变异阶段能够生成更有效、更有价值的测试用例。

开源网安模糊测试平台(SFuzz)

开源网安模糊测试平台是自主研发的基于模糊测试技术的黑盒安全检测产品,专注于面向文件格式和网络协议的模糊测试,具有模块化、跨平台、自动化测试及高效可控等优点。在航空航天、医疗、物联网、计算机、工业控制系统等行业实践落地并广受客户好评。与国际同类产品相比,本产品在技术创新性、产品功能、可靠性、稳定性等方面已处在同一梯队,并在产品本地化方面,如中文支持、售后服务及适用性等方面优于国外产品,完全可用于国外相关产品的国产化替代。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3