网络或传输层模糊测试

7

如何执行模糊测试策略以压力测试第三层和第四层(网络和传输)的网络堆栈?我已经查看了生成模糊器的框架,例如SPIKE,但是我认为它们主要关注应用程序层及以上?是否有任何众所周知的技术可以在这些层中对众所周知的协议进行模糊测试,例如TCP?

谢谢。

2个回答

8
看看 Scapy。它允许您在网络和传输层进行模糊测试。如果在IP或TCP层中未明确指定任何内容,则fuzz函数将对其进行模糊处理(您可以将其单独应用于每个层)。这使您可以从仅随机生成IP地址和端口对到创建并发送无意义的数据包的范围内操作。
您还可以查看Fragroute。它会将TCP / IP扭曲为使用各种规避技术,但可能会揭示网络堆栈中隐藏的漏洞/漏洞。
此外,如果您的组织没有反对意见,您可以设置一个Tor出口节点并从中捕获流量。我发现它对于测试正确的TCP连接状态跟踪非常有用。虽然您的连接的端点是众所周知和不变的,但服务器的类型繁多,以及存在有趣的网络拥塞问题。这基本上是一个无尽的流量来源。请务必与上级领导核实,因为您的组织可能会反对成为潜在的恶意流量来源(尽管有非责任的强有力先例)。我通过在家中运行它/捕获它,然后将PCAP文件带到组织中来解决这个问题。

3
如果您想对IP、UDP或TCP进行模糊处理,可以通过环回将数据包从高级服务路由到读取它们、进行模糊处理并转发它们的进程。您需要一个允许您使用原始套接字通信的驱动程序,并且需要阅读/学习适用于这些协议的RFC。
有一种简单的方法可以做到这一点。就像Justdelegard建议的那样,Scapy可能是通常情况下最好的选择。
请查看Laurent Gaffié的发布的ICMPv4/IP fuzzer原型。他的Python代码,顺便说一句,他已经在pastebin.com上重新发布了更易读的方式,导入自Scapy并使用他定义的一些方法来执行几种类型的模糊处理。在他的样本代码中处理了IP和ICMP数据包。所以,这听起来正是您正在寻找的东西。

现在,似乎有很多公司使用Tcl/Expect进行自定义自动化测试网络。SIP、H.323、2层和3层协议等。

因此,如果Scapy不能满足您的需求,您可能可以编写或查找使用Expect编写的Tcl程序来完成工作。或者,您可能希望使用Scapy在Python中执行某些操作,并在Tcl中使用Expect执行其他操作。

Tcl长期以来一直被用于网络测试和管理应用程序。早在1990年代就有一本关于如何使用Tcl进行基于SNMP的网络管理的书籍。

Tcl的语法明显很奇怪,但其库非常强大。它具有类似于Python编程语言的标准库所能做的自定义网络行为的框架式能力。

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

Expect有一个方便的功能,它可以自动生成一个Tcl测试脚本。生成的脚本调用Expect函数。在进行录制时,它作为被动中间人,记录对话的双方。就像你在MS Word或Emacs中编辑时记录宏一样。
然后,您可以编辑自动生成的Expect脚本以微调它,使其行为不同,或创建多个变体。它非常适用于创建回归测试。如果需要一些高层协议测试,您应该能够使用它来启动编写。比从头开始要好。
我认为您可以使用Tcl/Expect来测试使用基于字符串的命令的标准TCP应用程序(FTP、HTTP、SMTP等)。它很适合测试像TELNET这样从stdin读取输入并生成stdout输出的字符型应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接