Web 服务器攻击方法:如果漏洞扫描程序可以完成所有操作,为什么还要进行手动测试?

信息安全 漏洞扫描器
2021-08-13 23:59:26

我正在阅读来自著名认证的白帽黑客书。他们说入侵网络服务器的方法是:

  • 信息收集(域名、DNS、IP 等)
  • 足迹(例如:横幅抓取)
  • 网站镜像
  • 漏洞扫描
  • 会话劫持
  • 密码破解

除了会话劫持和信息收集之外,我不明白为什么我不启动 Acunetix Web App Scanner 和/或 Nessus 来查找所有弱点。

如果您可以将它们自动化,那么执行手动测试有什么意义?

例如,如果漏洞扫描程序不知道如何找到易受攻击的 cookie,并且如果我手动找到一种方法来进行会话劫持,我将无法为此训练 Nessus 的 Acunetix。即使我这样做了,我也不知道它会有多大的好处。

请解释为什么我不会让我的工具为我做黑客攻击。

4个回答

您在这里有几个假设:

  • 扫描程序可以找到所有漏洞
  • 如果扫描程序找不到漏洞,则没有漏洞
  • 所有手动任务都可以自动化
  • 攻击者只会使用自动化工具而不是手动方法
  • 手动方法不能变成定制的自动化工具
  • 发现漏洞与利用漏洞相同

这些假设都不是普遍正确的。

自动扫描器有助于提高查找漏洞的过程效率,但它们远非完美,也远非完整。扫描程序也并非旨在以有用的方式利用漏洞。

在实践中,您希望手动测试扫描仪的结果(误报)并执行手动测试以查找自动化工具可能遗漏的内容。

攻击者将使用多种方法,然后经常创建或修改工具来利用漏洞,使其可重复且可靠。但这并不意味着该工具可以在其他情况下工作。

自动化测试是基本门槛。如果您的站点/程序未能通过自动化测试,那么您就犯了一个非常愚蠢的错误,应该立即修复它(因为它很容易找到)。但是我见过一些情况,开发人员1=1在他们的 SQL 中添加了一个检查以隐藏自动扫描器,但我能够利用该站点使用2=2(现代 SQL 扫描器现在对此进行说明)。我只从手动测试和个人经验中知道这一点。您无法在工具中编码经验和直觉。

编码是一项极其复杂的活动。这意味着错误也可能很复杂。无法创建任何工具来查找或利用所有漏洞。

DAST工具有几个限制需要通过手动检查应用程序来解决:

  • 他们找不到业务逻辑缺陷,因为他们不了解应用程序的用例和误用情况。
  • 他们只发现已知的漏洞类型和模式。您的里程会根据扫描仪的成熟度而有所不同,但即使是最好的扫描仪也不会发现所有问题。
  • 复杂的模式通常具有微妙的安全问题,例如 OAuth 等授权协议的自定义实现。只有通过详细研究底层架构,渗透测试者才能发现这些缺陷,而自动化工具会失败,因为这种类型的分析需要更高阶的推理。
  • 验证应用程序可利用性的有效负载通常必须针对特定应用程序进行制作。即使扫描程序怀疑存在漏洞,验证它通常也必须手动完成。

话虽如此,安全扫描仪是渗透测试人员库中的一个方便工具,可以识别低悬的果实。大部分工作仍将是手动的。

此外,作为安全测试人员,如果可能,您应该始终进行白盒测试。这包括访问源代码,这使您也可以使用SAST工具。这些工具有类似的限制,但可能能够找到不同类型的漏洞,从而增加额外的价值。但即使结合了 DAST 和 SAST 工具,如果不进行手动测试,您也无法达到所需的测试深度,尤其是对于具有高保护配置的应用程序。

这是一个涉及同一问题的最新主题:与 Nmap 相比,为什么 OpenVAS 找不到所有打开的端口?. 要点:每个工具都是不同的,可能会产生不同的结果。更不用说误报和不同的测试方法了。

简而言之,自动化工具可以做出有根据的猜测并解释结果。大多数时候,他们做对了。但是您必须了解该工具的工作原理、它的作用(和不作用)并能够对其进行调整以获得最佳结果。

一个简单的例子:默认情况下,nmap、Openvas 等不扫描所有 tcp/udp 端口​​,而是选择最流行的端口,即 65535 中的几千个。如果您不知道并使用默认设置运行这些工具,您很容易错过活动端口。例如,许多系统管理员选择在某个随机端口上运行 SSH,而不是标准的 22。

自动化工具通常有很多选项,而不仅仅是一个按钮——所以你必须了解它们的作用,否则你就是在黑暗中拍摄。那么,你的审计不够深入,价值不大,因为你不知道你在做什么,你应该寻找什么。您所做的只是划伤表面并寻找最明显的缺陷。

换句话说,如果只需要下载和运行一个工具,我们为什么要聘请专业的渗透测试人员?因为一个称职的渗透测试者有经验,会走得更远,可以找到比脚本小子错过的漏洞。

它很少“像运行工具一样简单”。

暴露在 Internet 上的正确配置的机器应该具有某种内置的防御机制:防火墙和/或 IDS 会阻止这种侦察工作。

当他们检测到端口扫描活动时,他们通常会通过阻止您的 IP 地址来做出反应,或者他们会限制流量、选择性地丢弃一些数据包或选择返回故意误导的结果来挫败黑客。您最终会得到不完整或完全虚假的结果。

请记住,nmap、Acunetix 等工具很嘈杂,通常很容易被 IDS 发现(和阻止),因为它们生成的流量具有典型的签名模式因此,除非您正在测试未受保护或松散保护的机器(可能在 LAN 上),否则您必须对它们进行相当多的调整才能获得有意义的结果。

所以答案是你两个都做:你使用自动化工具,然后你做手动测试,特别是当工具检测到一些东西时,比如一个开放的端口,但不能利用它,或者你想仔细检查。

漏洞扫描程序无法找到可能存在的每个漏洞。他们基本上是寻找已知漏洞的模式和可利用性。

此外,当您使用自动化工具时,您可能会得到误报或其他意外输出。因此,您需要能够评估输出并进行更高级的渗透测试的专业人员。