1. 作品概述
1.1背景分析
随着互联网的飞速发展,特别是在5G时代的破晓,物联网、车联网以及工业互联网设备的普及已成为常态。作为物联网等技术的基石,网络协议承载着大量的数据传输和信息交换,其安全性直接影响着实体世界的安全。在这种背景下,人们对网络协议的安全性和稳定性提出了更高的期待。现实中,网络协议安全的问题远比我们想象的严重。首先,随着网络技术和应用的快速发展,网络协议的种类和复杂性都在增加,这也导致安全性的挑战更加繁多。新的协议在开发过程中可能会引入新的安全风险,而旧的协议在新的应用场景中可能会暴露出早先未曾被发现的安全问题。为了确保网络协议的安全稳定,研究人员需要及时发现并修复网络协议中存在的漏洞,并在合适的时间将其公开。这些公开的漏洞被称为通用漏洞披露(CVE, Common Vulnerabilities & Exposures)。网络协议漏洞的发现和修复都是一个极其复杂和困难的过程。尽管有大量的研究人员致力于寻找并修复这些漏洞,但是网络协议的复杂性使得这项任务变得艰巨。因此,网络协议中往往存在着许多尚未被供应商发现的漏洞。这其中的一些漏洞是攻击者在供应商意识到它之前发现的软件漏洞,被称为零日漏洞(Zero-day vulnerability)。由于供应商没有意识到,因此没有针对零日漏洞的补丁,从而大大提高了攻击成功的可能性。零日漏洞的存在更加加重了网络协议安全的挑战。这些未被发现并修复的漏洞,随时可能被黑客利用,对网络安全造成威胁。
表1 2014年至2022年的重大网络协议漏洞
漏洞名称 | 协议类型 | 造成危害 | 发现时间 |
Heartbleed | OpenSSL | 窃取敏感信息 | 2014年4月 |
KRACK | WPA2 | 窃取敏感信息 | 2017年10月 |
BlueBorne | Bluetooth | 窃取敏感信息、勒索、构建僵尸网络 | 2017年9月 |
POODLE | SSL | 窃取敏感信息 | 2014年10月 |
SIGRed | DNS | 提取管理员权限 | 2020年7月 |
Zerologon | Netlogon | 提取管理员权限 | 2020年8月 |
Ripple20 | treck tcp/ip | 远程代码执行、窃取敏感信息、构建僵尸网络 | 2020年6月 |
FragAttacks | Wi-Fi协议栈 | 窃取敏感信息 | 2021年8月 |
SMB远程代码执行漏洞 | SMB | 远程代码执行,窃取敏感信息 | 2022年12月 |
1.2传统测试方法不足
目前传统的检测漏洞的方法如下,但是它们在用于网络协议漏洞检测领域都存在一定的不足。
(1)静态分析
静态分析是一种对代码、配置文件等静态资源进行分析的方法。它主要关注于源代码的结构、语法和语义,并用于发现潜在的编码错误、安全漏洞和不良实践。静态分析工具可以通过静态代码扫描、语法分析、符号执行等技术来检测代码中的问题,例如缓冲区溢出、未经验证的输入等。然而静态分析主要关注代码层面的分析,网络协议漏洞可能涉及协议的消息格式、状态转换和复杂的协议逻辑,这些方面在静态代码中不易捕捉和分析。因此,静态分析的能力在发现协议层面的漏洞方面相对有限。
(2)动态测试
动态测试是一种通过模拟实际运行环境,执行系统或应用程序以检测漏洞和问题的方法。通过动态测试可以模拟协议的实际交互,并检测在运行时可能出现的漏洞。这包括发送特定类型的消息、异常输入和边界条件测试,以验证协议的行为是否符合预期。然而,动态测试需要在实际运行时环境中模拟和执行测试,可能需要更多的时间和计算资源。同时,动态测试的覆盖范围受限于测试用例的设计和执行。尽管可以设计多种测试场景和输入,但无法穷尽所有可能的情况。特别是对于复杂的协议和大规模的协议实现,完整地覆盖所有可能的协议路径和情况变得非常困难。因此,动态测试在发现协议层面的漏洞方面相对有限。
(3)安全审计
安全审计是一种全面的评估方法,旨在评估系统、应用或网络的安全性和合规性。它不仅关注代码级别的问题,还考虑其他因素,如配置、设计文档、架构等。安全审计的目标是发现系统中存在的潜在风险、漏洞和不安全实践,并提供改进建议。然而安全审计局限于静态资源分析,无法捕获到动态漏洞,无法覆盖所有运行情况,并且高度依赖于人工能力和经验。因此,安全审计在发现协议层面的漏洞方面相对有限。
1.3相关产品
1.Peach Fuzzer:
Peach Fuzzer,由Deja vu安全公司研发,是一款精湛的模糊测试工具,专门为自动化和高效的漏洞发现而设计。它拥有广泛的模拟环境能力,包括文件系统、网络环境和数据库等,同时支持多种类型的模糊测试,如数据模糊测试、变异模糊测试和生成模糊测试。Peach以其卓越的模糊测试能力、灵活的数据模型、及其稳健的监控和故障处理功能而著称。然而,Peach Fuzzer的企业版是付费的商业软件。尽管存在免费的开源版供用户使用,但开源版可能缺少部分企业版的高级功能,比如企业版提供的用户友好的图形界面。在开源版中,用户需要通过编写XML文件进行测试,这需要一定的学习和熟悉,可能对初学者而言稍显复杂。
图1-1 Peach fuzzer商业版的图形界面
2.Boofuzz:
Boofuzz是一个开源的网络协议模糊测试框架,它继承自Sulley模糊测试工具并进行了多项改进,通过提供灵活的API和强大的错误检测机制,帮助研究人员和安全工程师执行深入、全面的协议模糊测试。Boofuzz最大的特点在于它并不是一个程序而是一个Python库,测试者通过编写Python程序来实现模糊测试,因此Boofuzz可以被更加灵活的运用以及在此基础上开发其它模糊测试工具。
1.4 研究目标
本作品的研究目标是构建一个网络协议模糊测试系统。为了实现该系统,我们设计了以下研究目标以实现系统的完整性、可用性与安全性。
1.5 特色分析
1.5.1智能测试用例生成
在本系统中,我们采用了先进的智能技术——生成对抗网络(GAN),来实现高质量的测试用例生成。
1.5.2针对特定类型漏洞的检测
我们的系统能够对指定类型的漏洞进行扫描,例如用户可以选择对待测系统的缓冲区溢出漏洞进行扫描。
1.5.3详细的测试结果分析
我们的系统不仅会在测试结束后为用户提供详细的漏洞报告,更会对测试过程和结果进行深入分析。
1.5.4不需要待测系统的源代码
相比目前绝大多数的模糊测试工具,我们的模糊测试系统的一个显著特点是,不需要获取待测系统的源代码。
1.5.5高度自动化
高度自动化是我们模糊测试系统的一个核心特点。这不仅体现在测试用例的自动生成和执行过程,更重要的是,系统可以自动分析测试结果并生成详细的漏洞报告。。
1.5.6记忆性
我们的模糊测试系统具有"记忆性",即在进行第二次模糊测试时利用了第一次模糊测试的成果。具体而言,使用我们的系统进行第二次模糊测试时可以选择使用上一次模糊测试训练的GAN来进行测试样例的生成,这样做可以让第二次模糊测试利用上一次的成果,进而具有"记忆性"。这样做可以提高模糊测试的效率,同时可以起到近似于恢复某些意外中断的模糊测试任务的作用。
1.6 应用前景分析
随着网络技术的发展和互联网应用的广泛普及,网络安全已成为越来越重要的议题。因此,开发一个高效、易用、自动化的网络协议模糊测试系统具有广阔的应用前景。