Skip to content

Latest commit

 

History

History
215 lines (115 loc) · 26.4 KB

File metadata and controls

215 lines (115 loc) · 26.4 KB

四、用 Arachni 扫描漏洞

Web 应用漏洞扫描器是大企业。对替代方案的快速研究将告诉您,实际上有数百种开源和商用扫描仪,它们都提供了 vuln 空间的不同覆盖范围,以及延伸到 Pen 测试杀死链不同阶段的功能。与任何安全趋势一样,市场的这种爆炸性增长完全是另一种现象的征兆:web 应用从本质上来说,很容易访问,并且很受黑客的攻击。成功的违约或妥协的回报是巨大的。

参与网络安全解决方案的大多数大公司都会发布年度报告,总结过去一年的事件,并预测未来几年影响业务的预期趋势。Verizon、Dell、Cisco、FireEye、Symantec 和 HP 只是每年更受期待的版本之一。虽然它们通常不涉及具体威胁的技术细节和战术,技术和程序(TTP),但它们确实有助于揭示普遍存在的威胁领域、高水平的交付模式以及这些变化的感知动机。2016 年和 2017 年的一份一致报告指出,攻击者转向利用用户浏览器和插件,以及出现了恶意软件化、嵌入式广告和包含恶意软件或链接到相关网站的框架。

这些趋势表明了一些事情。首先,用户及其最终用户设备(移动设备、笔记本电脑、家庭)是我们安全故事中最薄弱的环节。其次,由于相同的用户要求随时随地访问,因此很难保护弹性周界,因为不再有周界需要保护,而是有一个非常流动的环境。黑客,就其本质而言,将利用我们对这些行为新变化和相应弱点的信任;在这个时候,黑客攻击企业更为复杂和微妙,因此根据他们的动机,快速致富计划将转向阻力最小的路径:web 应用和应用客户机范例。

那么,我们的客户对此有何反应?他们开始购买能够帮助他们开始保护环境的工具,但前提是这些工具使用得当。在 Kali Linux 中,我们有一些出色的、广受好评的扫描仪,可以帮助客户更好地了解他们暴露的漏洞,更好地了解他们的体系结构。虽然我们有一些很好的选择,但将它们混合在一起有助于确保我们使用多种工具覆盖向量,这些工具可以相互补充并减少盲点。其中一个最好的工具是Arachni,如果您曾经进行过 web 应用漏洞扫描,我相信您过去也使用过这个工具。

在本章中,我们将了解如何使用 Arachni 进行以下操作:

  • 有效抓取 web 应用以进行快速初始扫描
  • 使用主动扫描技术进一步探测并发现更多载体
  • 在 DOM 和 JavaScript 环境中启动扫描和跟踪流
  • 模仿移动平台的浏览器约束
  • 生成高质量的报告,无论是作为独立报告还是作为多工具笔测试可交付成果的基础

走进蜘蛛网


Arachni 是一款开源扫描仪,它以不同于其他任何工具的方式专注于渗透测试的侦察阶段。如果您使用 Arachni 时没有注意到它的不同之处(就像我一样),那么您可能会发现更改您的工作流程将大大改善结果。该工具的创建者塔索斯·拉斯科斯开发了该工具,以解决两个相反的目标。首先,扫描会花费大量时间(数小时甚至数周),这使得这些扫描没有什么帮助。这会浪费时间,使测试过程更加漫长。其次,更多的数据和覆盖率是一件好事,因为它提高了准确性,但也为测试过程增加了额外的时间来完成必要的事务。

Laskos 开发了 Arachni,以减少扫描时间,同时允许该工具进行缩放,从而能够有效地处理更多测试向量。通过采用异步 HTTP 请求来完成该工具的工作,并允许 Arachni 跨系统集群进行扩展,从而使它们都能并行处理,从而改进了它的时间安排。通过开源该工具和使用 Ruby 框架,任何人都可以向该工具添加新的或更好的优化测试,从而提高了准确性目标。机器学习技术进一步提高了测试的时间、准确性和覆盖率,允许扫描仪通过测试组中早期向量的结果来磨练使用的测试向量。总之,这些增强使 Arachni 成为一个强大的扫描工具,我们将更深入地探索,以提高测试效率和时间。

最佳蜘蛛部署提示

当我们只是在练习 Arachni 时,我们可能会调用一个服务器和一个托管在同一个 Kali 盒上的客户端。Web UI 客户端可执行文件应该正在运行,以确保 Arachni 的操作方式与实际测试场景中的操作方式相同。命令行选项是可用的,但它的规模往往有限,在单服务器部署中效果最好。

这里可以看到 Arachni 的高级架构:

阿拉奇尼的建筑是它的秘方�� 它有助于规模和速度一样。

这里的操作大脑是Web UI 客户端arachni_Web)。它提供单点联系人,该联系人将通过初始扫描请求联系其调度服务器调度服务器)网格。dispatchers 然后在服务器上生成一个新的实例。此时,Web UI 客户端将能够直接与生成的实例通信,以将其配置为适当的扫描作业。当一个实例完成了它的任务时,Web UI 客户端会提取数据并存储它,而该实例只是离开,将它所消耗的资源返回给操作系统,用于将来的实例或其他软件任务。

随着我们进入生产测试阶段,我们可以扩展部署以利用网格中其他服务器上的额外资源,这不仅允许我们运行多个扫描,还允许我们容纳用户团队,同时整合在 Web UI 客户端上的中央数据库中收集的数据。SQLite3是默认选项,但如果您想将此安装转换为网格或大规模安装,强烈建议您从 PostgreSQL 开始。有关如何执行此操作的文档位于此处:https://github.com/Arachni/arachni-ui-web/wiki/database

选择一个或另一个数据库后,您将被锁定;而改变主意意味着丢失所有以前的数据。如果您认为 PostgreSQL 环境会朝着这个方向发展,那么就值得为此付出努力。

Arachni 与其他黑盒动态应用安全测试DAST扫描仪不同,它大量使用异步 HTTP 进行扫描。这允许每个实例并行地向目标发送 HTTP 请求。因为您可以同时进行多个扫描,这大大提高了我们从启动到完成的速度。大多数扫描器花费大量时间等待扫描线程完成。考虑到这些扫描仪通常运行一组扫描,而不是像 Arachni 那样动态地定制扫描列表,这就更加令人震惊了。

可以支持的实例数量实际上取决于可用的服务器数量、它们的资源可用性以及用于启动扫描的出站可用带宽。我要提醒您,如果您担心带宽问题,那么生成的流量很可能会超过非常小的数量,应该加以限制,以避免损害应用对真实用户的性能或提醒安全操作人员。没有什么比来自应用扫描程序的分布式拒绝服务DDoS攻击更能说明我是来破坏您的应用的。正如他们所说,强大的力量带来巨大的责任!

对堆栈和框架的喝采


我们在任何主动侦察中的第一步很可能只是尝试扫描,但在执行任何工作或任务之前,最好先浏览网站的主页。使用诸如Wappalyzer等浏览器插件 https://wappalyzer.com ),我们可以很容易地看到网站的初始足迹,并发现构建 web 应用的平台或框架(如第 1 章*【常见 web 应用和架构】*中所述)。我们将使用该死的易受攻击的 Web 应用DVWA)开始详细的 Arachni 最佳实践,所以在我们开始扫描之前,让我们看看浏览器和 Wappalyzer 能告诉我们什么!

如下面的屏幕截图所示,DVWA 显然运行在 Linux 操作系统上,使用 Apache 作为 web 服务器,使用 MySQL 作为数据库,并使用多种脚本语言(Python、Perl、Ruby 和 PHP)。这非常像你典型的堆栈,我们将制作一个扫描,实现这些细节,并帮助缩短扫描时间。在 Windows 和 Linux/Unix 上使用 PHP 或 ASP.NET 等语言托管的其他传统堆栈正在让位给基于 Ruby、Java、JavaScript 和 Python 的新堆栈,这些堆栈专门用于移动服务、超可伸缩体系结构和其他现代关注点,因此有太多值得一提。为了增加乐趣,web 堆栈或框架对每个人都意味着不同的东西。HTML 被静态编码的时代正在让位给一种新的方法,这种方法以一个名为文档对象模型DOM的元素为中心,脚本语言(JavaScript、Python 等)在该元素中动态构建浏览器中呈现的 HTML 或 XML。无论使用哪种版本的堆栈,能够快速确定正在运行的内容,可以为我们指出**常见漏洞和漏洞(CVE)**以及我们可以在测试中利用的其他特征的正确方向。

当我们让浏览器帮助快速跟踪目标时,扫描效率更高。

DVWA 还使用 OpenSSL,在过去两三年之后,它非常值得仔细研究,因为它受到了几个引人注目的漏洞的影响,如Heartbleed和其他(等)https://www.openssl.org/news/vulnerabilities.html )占据了全球新闻媒体的主导地位。用如此技术性的东西来捕捉头条新闻总是让人印象深刻,但我们追求的甚至是小东西�� 这些漏洞同样容易被利用,而且往往没有得到解决,而倾向于更高知名度的漏洞。Firefox 上一个带有 Wappalyzer 插件的屏幕截图向我们展示了所有这些有趣的信息。

为了更好地了解流行站点上运行的堆栈,您可以在了解更多信息 https://stackshare.io 。如果你想知道有多少堆栈和透视图,这个 Reddit 线程很有教育意义,令人印象深刻,可以在上找到 https://www.reddit.com/r/webdev/comments/2les4x/what_frameworks_do_you_use_and_why_are_they/ 是的。

阿拉奇尼试验场景


我们正在使用的 DVWA 包含在OWASP BWA图像中,该图像位于我的实验室的地址https://172.16.30.131/dvwa/。我们的 Kali 盒位于同一子网(172.16.30.133),我们希望缩短默认配置文件的扫描时间。我们将在下图中使用这个非常简单的拓扑图来展示 Arachni 在基础扫描上只需稍加努力和输入即可实现的一些高级移动。

简单的蛛网膜下腔测试场景

效率剖面图

大多数 pen 测试人员早期使用 Arachni 的经验通常涉及使用默认设置运行扫描,这会运行经过目标环境的威胁向量的综合列表。这是一个很好的方法来了解阿拉奇尼能做什么,但是在侦察阶段收集的 OSINT,甚至通过浏览,正如我们刚才看到的,给了我们一些很好的信息,可以帮助我们缩小搜索范围。我们可以利用这些信息来制作一个定制的个人资料,就阿拉奇尼而言,这是大多数钟声和口哨的所在地。

我们为什么要这样做?消除我们知道不感兴趣的向量(未使用的数据库测试、操作系统向量等),既可以减少扫描时间,又可以避免用过多的请求破坏目标。这一信息还可以引导我们以较低的速度进行更深入的调查。我们将一起走过这个过程,并确定一些值得考虑的选项。

创建新的配置文件

让我们为运行最常见堆栈之一的系统构建一个概要文件。我们在 DVWA 网站上看到运行的 LAMP 堆栈仍然运行着大多数 web 应用,Windows/IIS/SQL/ASP.NETWISA)紧随其后,因此这是一个很好的配置文件。我们想点击顶部**Profiles菜单中的+**按钮,如图所示:

默认情况下,大多数 Arachni's 都处于启用状态–No No No modHFGen.dll�� 我们可以使用配置文件根据侦察和侦察来定制或聚焦。

这将从下图中位于浏览器窗口(1)左侧的**Profiles导航菜单的Top开始。我们需要确定一个概要文件名(2),输入一个描述来帮助跟踪意图(3,对团队和大型生产网格来说是个好主意),以及可以访问它的用户(4);选择了Global**。请务必注意,这些配置文件是 Web UI 客户端的本地配置文件,因此您的队友需要能够从他们的位置访问门户。

这不是最令人兴奋的部分,但命名约定和文档使生活更轻松。

范围界定和审计选项

范围部分定制的内容有点过于精细,无法用于适合多个应用的概要文件中。本节包括仅扫描 HTTPS、设置路径和子域限制、基于字符串排除路径或限制 DOM 树深度的选项。如果您正在进行白盒测试或对作为 SDLC 一部分的同一应用进行内部渗透测试,这些选项是帮助将测试重点放在受影响区域的一种非常好的方式,而不是撒下如此大的网,以致扫描时间延长,并且包含无关的结果。记住这一点,让我们继续前进。

我们将使用下图中的审计选项设置高级扫描策略。当我们测试一台服务器时,如果我们省略了资源密集型元素(这些元素不必要地延迟了我们的进度),那么我们的扫描可以变得更加高效。如果我们知道有一个站点同样使用 HTTPgetPOSTs,我们可以使用其中一个查询进行测试。对于我们所有人来说,测试过程都是不同的�� 我们可能会将 Arachni 扫描与 Burp Suite 或 OWASP ZAP 扫描重叠,不再需要扫描标题或处理 cookie;我们将在第 5 章*中介绍 OWASP ZAP 和 BurpSuite 的代理操作。*接下来,我们也将取消选中此框。

审计部分是我们决定测试 web 服务器的多少方面的地方。

将社会工程转化为用户输入和移动平台仿真

根据我们在侦察阶段的成功程度,我们的一些 OSINT 可能包括 web 用户的凭据。这些凭据通常可以在 MITM 攻击中删除,类似于我们在第 3 章中讨论的通过目标侦察跟踪猎物。虽然在没有凭据的情况下扫描网站是可以接受的,但作为登录用户进行扫描时可能会发现的情况从未让人失望。如果没有凭据,您可能会在黑盒测试中看到大多数静态内容和不太敏感的信息。白盒测试可以更好地用于在凭据受损的情况下保护数据,因此,此处的输入字符串在可用时同样有价值。下面的 HTTP 部分同样可以帮助定制 HTTP 请求,以更好地模拟合法客户端,通过路径中的任何代理工作,还可以限制一些请求速率和文件大小,以确保扫描器和目标都不会被淹没,或者在他们的情况下,提醒我们存在。如果您需要模拟不同的浏览器和平台组合,您可以在此处提供这些修改(网址为http://www.useragentstring.com/pages/useragentstring.php 提供了详尽的列表)。正如我们将看到的,**Input**字段中输入的简单字段将在我们深入研究应用时产生更大的扫描区域。

之后的图中还有许多其他字段,我们可能也需要注意。地址、名称和其他静态信息很流行,但更动态的输入过程(如验证码字段)是专门为防止非人工表单填充而构建的。这可能会限制扫描仪的范围,但请放心,还有许多其他方法可以克服这一障碍,以便我们可以进行测试,以确保目标得到真正的保护。

当我们可以利用用户的潜在凭证时,输入部分非常方便

指纹识别与鉴定平台

指纹部分是我们集中扫描并在日程安排中赢得时间的最有效的方法之一。如果你还不知道目标的堆栈,那么指纹识别本身就是一个很棒的工具。正如我们之前在浏览器中发现的,我们正在运行 LAMP,并且可以在选择仅与该框架相关的测试时忽略指纹。请注意,在*后面的图中,*我试图针对所有 4 种检测到的语言(Perl、PHP、Python 和 Ruby)进行测试:

指纹识别允许我们显式地选择测试�� 如果不需要的话,把它们都用上是没有意义的。

支票(请)

检查部分提供了我们将测试哪些漏洞的详细细节。每个检查都是主动或被动检查,我们可以根据需要启用全部或部分检查。在这种情况下,我们有大量关于 DVWA 框架的信息,但我们不知道它们将受到什么影响。如果这是一次真正的黑盒扫描,并且我们试图保持秘密,我可能会在早期的扫描中忽略所有的活动检查(如下图所示),并等待直到我能够从一个更靠近 web 服务器的可疑主机执行此操作。

主动检查决定 Arachni 将主动与目标交互以发现哪些漏洞。

被动扫描部分不那么显眼,虽然这些测试可以增加一些时间,但它们非常值得使用,尤其是在早期侦察工作中。如下图所示,有关更多详细信息,您可以单击每个类型的名称以获取更多信息。

被动检查是在不与应用上的输入字段交互的情况下收集的。

插入 Arachni 扩展和第三方附加组件

Arachni 基于 Ruby 的框架(因为,令人惊讶的是,Arachni 也是一个 web 应用!)对于任何人来说都是一个为其构建额外功能的简单工具。被广泛接受的插件,在满足开发人员的高标准时,甚至可以在**Plugins部分进入 Web UI 客户端。在这个版本的 Arachni 中,我们有几个插件已经集成到 Arachni 中,可以帮助我们的扫描减少对目标的影响(自动油门或速率限制器),或者添加功能来扫描额外的怪癖和漏洞。它甚至允许动态修改字段和测试参数。其中一些是简单选中的(请参见下面的屏幕截图),其他则需要在展开后进行额外配置(只需单击每个插件的超链接名称了解详细信息)。

我选择了*AutoThrottleWAF Detector**作为此配置文件:

插件修改任何配置文件以允许动态参数模糊、速率限制或其他特殊测试。

进行 WAF 检测的另一种方法是使用我们可靠的Nmap工具。Nmap 包含了几个用于此目的的脚本。一个简单地检测 WAF 的存在,而另一个,如果发现 WAF,通常会告诉我们使用的是什么品牌或版本。通过多个脚本和工具进行确认通常可以增加对整体测试保真度的信心。要使用这些脚本,请输入以下命令:

nmap �p 80,443 --script http-waf-detect <hostname or ip address> nmap --script=http-waf-fingerprint < hostname or ip address> 
```*  *#### 浏览器集群

所有这些扫描和测试都是像实例实际上是与 web 应用和用户交互的浏览器会话一样进行的。实际上,我们可以在**`Browser Cluster`**部分修改浏览器的模拟行为、时间限制、大小,甚至修改正在使用的独立浏览器的数量。对于快速扫描,我建议选中允许扫描仪忽略图像的框。

会话检查也是一种潜在的有价值的功能,其选项如下图所示。没有什么比扫描应用更糟糕的了,只是为了发现该应用背后的逻辑将您的会话、扫描或通信分流到目标控制之外的链接域。我们可以在这里输入确认页面,以确保我们定期使用锚定页面检入,以确定我们的状态,并确保我们仍在扫描目标应用的结构内部,而不是沿着切线进入链接的应用。

![](https://www.packtpub.com/img/9781784395070/img/B03918_04_11.png)

浏览器和会话设置确保我们向正确的站点展示我们最好的一面。

在我们完成所有的个人资料更改后,我们可以选择底部的**`Create Profile`**按钮,我们应该可以开始了!如果您遇到问题,一个上止点错误框将引导您找到问题所在,并告诉您在接受概要文件之前必须修改哪些内容。*  *### 开始我们的定制扫描

一旦我们创建了自定义配置文件,我们就可以调用它、安排它或将它保存起来。要运行扫描,只需启动扫描并在**`Configuration Profile to use`**字段中选择**`LAMP Profile`****` (Global)`**(或您使用的任何名称),如下图所示。我们可以控制实例的数量、工作负载的配置方式(直接到运行一个或多个实例的本地计算机、到远程服务器或使用计算机网格),并根据需要对其进行调度。在这里,我们将仅使用两个实例运行它,并查看它的性能。

![](https://www.packtpub.com/img/9781784395070/img/B03918_04_12.png)

使用自定义配置文件运行扫描非常简单。

在扫描运行时,我们可以观察摘要,并查看自定义配置文件的工作情况。如下图所示,我们的扫描已经远远超出了默认配置文件的范围,发现的页面更多,尝试的请求更多,总体覆盖率更好,同时保持较低的配置文件。这将导致更多的时间来完成,但自动化应该允许我们在处理其他事情时开火和遗忘。 

我建议您在自己的工作流程中找到可以启动自动化任务的地方,同时亲自进行更为劳动密集型的工作,如 Maltego 图形构建、社会工程或后续任务的设置。

![](https://www.packtpub.com/img/9781784395070/img/B03918_04_13.png)

LAMP 配置文件速度较慢,但对目标服务器显示更多且负担较低。

### 审核结果

我们定制的扫描结果是,我们看到了 34 个问题,而之前在大范围开放扫描中发现了 29 个问题,但是我们的扫描时间是 28 分钟,而不是 34 秒。我们还成功地挖掘了超过 90 页而不是 27 页(一些是由于我们的用户输入),并且以比默认值低得多的请求速率进行了挖掘,从而保护 DVWA 免受小型**拒绝服务**(**DoS**)的攻击,并且不受任何可能正在进行的防御的影响。阿拉奇尼档案扫描,直到我们用完空间或告诉它删除它们,所以我们总是有比较和对比。在实践中,我建议在风险可接受时运行单一目标扫描,并在工作的更隐蔽阶段运行更小的子扫描。

以下是这些结果的摘要:

<colgroup class="calibre14"><col class="calibre15"> <col class="calibre15"> <col class="calibre15"></colgroup> 
|   | **灯具外形** | **默认配置文件** |
| 完成时间 | 38 分钟 | 36 秒 |
| 找到的页面 | 90 | 27 |
| 高严重性 | 3. | 0 |
| 中等严重程度 | 8. | 7. |
| 低严重性 | 6. | 6. |
| 信息的 | 17 | 16 |
| 全部问题 | 34 | 29 |

报告可以以多种有用的格式导出,并提供 HTML、JSON、XML、Marshal、YAMR 和 AFR。与所有这些报表一样,HTML 报表数据丰富,几乎可以显示,如下图所示:

![](https://www.packtpub.com/img/9781784395070/img/B03918_04_14.png)

Arachni 的报告格式已准备好生产,这是向客户构建可交付成果的良好开端。

对于技术性更强的客户,提供他们可以采取的后续行动或即时行动(参见下图)是很有帮助的。如果您不仅能够发现问题,而且能够提供基于最佳实践的建议,帮助客户的目标网络得到修复并变得更加安全,那么您作为笔式测试仪的价值将大得多。

![](https://www.packtpub.com/img/9781784395070/img/B03918_04_15.png)

详细的漏洞信息有助于快速教育客户或设置下一阶段。*  *## 总结

* * *

有效的渗透测试取决于许多因素,但最好的结果来自于一组受过良好教育的扫描,这些扫描既可以教育也可以为测试的后期阶段准备表格。正如最近的事件和连续的头条新闻所表明的那样,攻击者可以利用的向量数量和种类多得惊人。这些潜在漏洞的数量和重要性要求全面的测试套件,能够自动扫描并帮助我们快速确定目标的风险暴露。几乎同样重要的是处理大量原始数据并将其转化为可操作的情报的能力。

Arachni 是提供这些扫描的绝佳工具,作为额外的奖励,您可以形成我们详细报告或交付成果的基础。因为 Arachni 是一个开源和可扩展的产品,它得到了社区的良好支持,并提供了一个 Ruby 框架,任何人都可以在这个框架上移植自己的扩展或插件。Arachni 中有数以千计的选项,但希望我们对 profile builder 的深入了解能够帮助我们更好地在浏览器或 nmap 中使用 Arachni 和其他补充工具,从而有效地确定目标系统。阿拉奇尼对目标弱点的调查深度,使其能够详细揭示与许多商业替代品相媲美或超越的潜在载体。

在本章中,我们讨论了如何扩展 Arachni 的部署,以及如何调整扫描配置文件以显示更多信息并保持不引人注目。我们研究了如何更好地分析目标,定制扫描行为,加载并关注从测试侦察阶段获得的目标属性。我们还看到了这些调整对于更深入的页面发现和漏洞识别有很大帮助。还简要讨论了报告内容;如果有什么不同的话,这一领域已经具备了各种可能性,根据您的工作流程,您的流程将大大加快报告生成,并支持长期持续改进,我们都希望这种改进成为 SDLC 的标准。

在下一章中,我们将再看两个与 Arachni 重叠的工具,但将 pen 测试进一步深入到杀伤链中--**打嗝套件**和**OWASP ZAP**。这些工具复制了 Arachni 的一些功能,但也可以利用我们在这里学到的知识,开始实际利用这些漏洞并确认其影响。在看到 DVWA 需要担心的事情之后,我相信我们会看到一些有趣的结果!*