我听说过这些工具,据我了解,它们只是在不同的服务上发送大量随机数据并观察他们对它的反应。
模糊器的目的是什么?在渗透测试期间如何应用它?
我听说过这些工具,据我了解,它们只是在不同的服务上发送大量随机数据并观察他们对它的反应。
模糊器的目的是什么?在渗透测试期间如何应用它?
模糊器的目的是什么?
模糊器试图通过提供未正确计划的输入来引起目标软件的意外反应。它通过将“创造性构造”的数据作为输入输入到软件来实现这一点。期待电话号码?哈!我要给你 0x00 的 1,024 个字符!随机十六进制!统一码!一个零宽度的字段!只是标点符号:“()-”
目标是得到一个不干净的错误响应......额外的访问、缓冲区溢出等。处理不当的输入基本上是几乎每个安全问题的症结所在,无论是扩展到不需要的内存范围还是任意数量的其他反应。电话号码字段返回 SQL 错误?SQL注入时间!
因此,尽管如此,模糊器在发现缺陷方面很有用,尤其是在使用这些缺陷作为尝试并从中启动漏洞的点的渗透测试期间。
模糊器是一种(半)自动化工具,用于发现软件中可能被攻击者利用的漏洞。好处包括但不限于:
位置不利因素包括但不限于:
据我了解,他们只是在不同的服务上发送大量随机数据并观察他们对它的反应
这部分是正确的,这取决于您所说的“随机”是什么意思。Fuzzer 可以以这种方式用于识别程序中的内存泄漏,但它们在渗透测试中也很有用(通过使程序崩溃)。如果您可以使用模糊器使程序崩溃,那么您可能会劫持它。
从渗透测试者的角度来看,模糊器对于识别输入验证错误最有用。
也许最好用一个简单的FTP fuzzer来解释,假设您可以阅读源代码。
典型的 FTP fuzzer 可能会尝试使用“随机”参数执行各种 FTP 命令,例如cd
、put
等。通常,模糊器会蛮力发送长度增加的字符串,这可用于识别缓冲区溢出错误,这可能是可利用的(ASLR 和其他技术在一定程度上缓解了这一点)。
在这方面,模糊器在调试器中运行服务器应用程序时最有用,因此您可以准确地看到它是如何/在哪里崩溃的。然后可以构造 shellcode 来劫持应用程序。
不发送随机数据的 Fuzzer 在这里可能更有用,例如发送“ABBCCCDDDD...”之类的模式可能更有助于确定需要溢出的缓冲区的确切大小,因为它们可以使用类似于二进制搜索以获得更快的结果。
来自网络服务的响应应该属于几个定义明确且广泛的类别之一。例如,如果您将随机数据发送到 HTTP 服务,您希望得到很多 HTTP 400 结果,可能还有一些其他 HTTP 4XX 结果。如果发生其他任何事情,例如超时或不同的响应,那么该异常结果值得注意并在之后进一步调查。