2009-12-16 54 views
7

如何执行模糊策略来强调网络堆栈,尤其是第三层和第四层(网络和传输层)?我已经看过框架来生成fuzzers,比如SPIKE,但是在我看来,他们主要关注应用层和更高层?是否有任何已知的技术来模糊这些层中的众所周知的协议,比如TCP?网络或传输层模糊

谢谢。

回答

8

看看Scapy。它允许您在网络层和传输层进行模糊处理。 fuzz函数会模糊IP或TCP层中未明确指定的任何内容(您可以分别将其应用于每个层)。这为您提供了一系列能力,包括随机生成IP地址和端口对以发送和发送无意义数据包。

你可能也想看看Fragroute。这将扭转TCP/IP使用各种逃避技术,但可能会揭示网络堆栈中隐藏的错误/漏洞。此外,如果您的组织不反对,您可以设置一个Tor出口节点并从中捕获流量。我发现它适用于测试正确的TCP连接状态跟踪。尽管您的连接终点是众所周知且不变的,但有各种各样的服务器以及有趣的网络拥塞问题。它基本上是一个无限的流量来源。因为您的组织可能反对成为潜在的恶意流量来源(即使有强烈的无责任先例),请务必与您的上级进行核对。我通过在家中运行/捕获来解决这个问题,然后引入pcap。

3

如果您想模拟IP,UDP或TCP将数据包从高级别服务通过回送路由到读取它们的进程,模糊它们并转发它们。您需要一个驱动程序,让您可以与原始套接字进行通信,并且您需要阅读/了解适用的RFC对于这些协议所说的内容。

有一个简单的方法来做到这一点。就像Justdelegard建议的一样,Scapy可能是最好的选择。

看看LaurentGaffié的Releasing ICMPv4/IP fuzzer prototype。他的Python代码,顺便说一句,他在pastebin.com以more readable的方式转贴,从scapy导入并使用他定义的一些方法来执行几种类型的模糊。 IP和ICMP数据包在他的示例代码中处理。所以,这听起来完全像你正在寻找的东西。

现在,似乎有很多公司使用网络的Tcl/Expect to do custom automated testing。 SIP,H.323,第2层& 3协议等

因此,如果Scapy不能满足您的需求,您可能可以在Tcl中使用期望来完成这项工作。或者,你可能希望在Python中使用Scapy来做一些事情 - 在Tcl中使用Expect来做其他事情。

Tcl长期以来一直用于网络测试和管理应用。 20世纪90年代,有一本关于如何使用Tcl来完成基于SNMP的网络管理的书。

Tcl的语法很奇怪,但是这些库非常强大。它具有类似于框架的能力来定义套接字之上的自定义网络行为的行为,类似于您可以使用Python编程语言的标准库执行的操作。

与Python和其他脚本语言不同,对于名为Expect的Tcl程序(参见expect man page),有一个非常强大的工具。

期待有一个方便的能力。它可以自动生成一个Tcl测试脚本。生成的脚本调用Expect函数。在进行录音时,它可以作为被动的中间人,记录对话的双方。在MS Word或Emacs中编辑时记录宏的方式。

然后,您可以编辑自动生成的Expect脚本来微调它,使其表现不同,或创建它的多个变体。创建回归测试非常方便。如果你需要一些,你应该可以使用它来开始编写更高层的协议测试。节奏从头开始。

我想你可以使用Tcl/Expect来测试使用基于字符串的命令的标准TCP应用程序(FTP,HTTP,SMTP等)。它适用于测试基于字符的应用程序,如从标准输入读取输入并生成输出到标准输出。