对于网络协议,我们或多或少也都知道一些,在网络管理中,对于协议的掌握也是一个重点。那么这里我们主要谈一谈网络协议模糊测试的相关内容。来帮助大家解析一下,什么是网络协议模糊测试。
模糊测试是威斯康星大学为UNIX工具中的命令行setuid引入随机参数值时提出的。尽管它最初是用于命令行参数,但模糊测试这个术语现在通常被认为是应用于网络协议领域,这是有合理理由的。网络协议模糊测试对安全研究者来说是最感兴趣的模糊测试类型,因为所发现的漏洞通常具有最高级别的危险程度。不需要有效的身份认证就可以到达或者不需要目标用户的任何交互就可以利用的一个远程的可利用漏洞是所发现漏洞的一个缩影,如果你将同它们进行交互那将是最好的。
客户端漏洞,例如影响微软的Internet Explorer的漏洞,通过在创建被恶意代码感染并控制的与Internet相连的计算机网络时被利用。贪婪的渔夫撒下一张大网,期望能够捕获尽可能多的鱼。在大多数时候,这些被捕获的鱼是宽度网络上所连接的个人桌面计算机。
在一个网络daemon程序中的服务器端漏洞对于创建一个被恶意代码感染并控制的与Internet相连的计算机网络同样是非常有用的,但是以这种方式来利用这些漏洞是对潜在资源的浪费。从一个攻击者的角度来看,拥有象后端数据库或企业级Web服务器这样的软件,那么就给数据的窃取提供了很大的机会,就像从一个可信的平台上执行进一步的攻击一样。在本章中,我们将介绍网络协议模糊测试,并提出一些由这种流行的模糊测试类型所带来的独特的特性和挑战。同时,我们还将研究一些网络协议漏洞。
什么是网络协议模糊测试
相对于其它类型的模糊测试而言,网络协议模糊测试要求识别攻击的界面,变异或生成包含错误的模糊值,然后将这些模糊值传递给一个目标应用,并监视目标应用以发现错误。非常的简单,如果你的模糊器通过某种形式的socket与其目标应用相通信,那么该模糊器就是一个网络协议模糊器。
基于网络的模糊测试中的socket通信构件带来了一个有趣的变化,因为它对测试的吞吐量造成了一个瓶颈。将文件格式模糊测试、命令行参数模糊测试以及环境变量模糊测试的传输速度与网络协议模糊测试的传输速度进行比较,那么就像是一辆阿斯顿·马丁DB9和谢奥·米托罗进行比赛一样。
现有的网络协议模糊器倾向于采用两种风格。其中一些采用了通用体系结构以能够对不同的协议进行模糊测试。这类工具的代表如SPIKE 和ProtoFuzz,我们在第16章"网络协议模糊测试:Windows平台上的自动化测试"中从头创建的一个模糊器也是属于这种类型。
SPIKE是最广为人知的一个模糊器,在下一章中将对它进行更加详细的介绍。另外一种类型的网络协议模糊器包括哪些被设计为面向特定协议的模糊器。这种类型模糊器的例子包括ircfuzz ,dhcpfuzz 以及Infigo FTPStress模糊器 。直接从它们的名字你就可以猜出每个所提到的模糊器被设计为面向哪种协议。特定于协议的模糊器通常面向于较小的目标脚本和应用程序,但其体系结构开发的工作量却较大。在第21章"模糊测试的体系结构"中,我们将讨论相对于特定的单机工具而言,创建和使用模糊测试体系结构的价值。