我们需要一个 ISO 映像来用于我们的虚拟机。为此,我们将使用优秀的工具 Samurai**Web 测试框架**(**WTF**。这是一个 web 应用程序测试框架,它是一个实时 Linux 环境,已预配置为 web 测试框架。这张 CD 包含了一些最好的开源和免费工具,可以用来测试和攻击网站。您可以从[下载 ISO 图像 http://www.samurai-wtf.org/](http://www.samurai-wtf.org/) 。
我们需要一个 ISO 映像来用于我们的虚拟机。为此,我们将使用优秀的工具 Samurai**Web 测试框架**(**WTF**。这是一个 web 应用测试框架,它是一个实时 Linux 环境,已预配置为 web 测试框架。这张 CD 包含了一些最好的开源和免费工具,可以用来测试和攻击网站。您可以从[下载 ISO 图像 http://www.samurai-wtf.org/](http://www.samurai-wtf.org/) 。
现在,我们将为本书其他章节中使用的其中一台机器创建一个虚拟机。我们将要使用的机器已经创建,并且可以作为 VMware VMDK 文件格式的虚拟机使用。我们将在本章后面介绍虚拟硬盘驱动器的不同格式。我们想从[www.OWASP.org](http://www.owasp.org)上的**开放式 Web 应用安全组**(**OWASP**)下载破碎的 Web 应用项目虚拟机。该虚拟机由 Mandiant 赞助,是实践 web 应用程序测试的优秀教程。您可以从[下载虚拟机 http://sourceforge.net/projects/owaspbwa/files/](http://sourceforge.net/projects/owaspbwa/files/) 。
现在,我们将为本书其他章节中使用的其中一台机器创建一个虚拟机。我们将要使用的机器已经创建,并且可以作为 VMware VMDK 文件格式的虚拟机使用。我们将在本章后面介绍虚拟硬盘驱动器的不同格式。我们想从[www.OWASP.org](http://www.owasp.org)上的**开放式 Web 应用安全组**(**OWASP**)下载破碎的 Web 应用项目虚拟机。该虚拟机由 Mandiant 赞助,是实践 web 应用测试的优秀教程。您可以从[下载虚拟机 http://sourceforge.net/projects/owaspbwa/files/](http://sourceforge.net/projects/owaspbwa/files/) 。
1. 点击**打开虚拟机**。导航到提取文件的文件夹,并找到已损坏的 Web 应用程序项目 VM 的配置文件。
1. 点击**打开虚拟机**。导航到提取文件的文件夹,并找到已损坏的 Web 应用项目 VM 的配置文件。
2. Once you have located the file, select it and click on **Open** to open the file. This will open the VM and you should be in the configuration screen, as shown in the following screenshot:
您可以从[下载软件 http://www.starwindsoftware.com/converter](http://www.starwindsoftware.com/converter) 。请注意,您需要注册并且应用程序在 Windows 中运行。下载软件后,安装软件,然后运行程序。这是一个易于使用的工具;您可以通过导航到文件图像来选择要转换的文件图像。随后,该工具将显示格式输出的选项。以下屏幕截图显示了一个示例:
您可以从[下载软件 http://www.starwindsoftware.com/converter](http://www.starwindsoftware.com/converter) 。请注意,您需要注册并且应用在 Windows 中运行。下载软件后,安装软件,然后运行程序。这是一个易于使用的工具;您可以通过导航到文件图像来选择要转换的文件图像。随后,该工具将显示格式输出的选项。以下屏幕截图显示了一个示例:
我们现在来看一个简单的例子。在 VMware 工作站中的 Kali 虚拟机中,单击**打开此虚拟机的电源**以启动虚拟机。机器加载后,点击**其他**登录。这将打开机器的登录页面。输入`root`作为用户名,输入`toor`作为密码。打开桌面后,导航至**应用程序****附件****终端**打开终端窗口。在窗口中,输入`ifconfig eth1`查看连接到交换机的接口的 IP 地址信息。
我们现在来看一个简单的例子。在 VMware 工作站中的 Kali 虚拟机中,单击**打开此虚拟机的电源**以启动虚拟机。机器加载后,点击**其他**登录。这将打开机器的登录页面。输入`root`作为用户名,输入`toor`作为密码。打开桌面后,导航至**应用****附件****终端**打开终端窗口。在窗口中,输入`ifconfig eth1`查看连接到交换机的接口的 IP 地址信息。
在我们做任何其他事情之前,我们将更新 Kali 发行版。这里需要注意的是:更新有时会出错,所以在我们执行更新之前,强烈建议我们拍下机器的快照。在 VMware Workstation 中,导航到**VM****拍摄快照**。在打开的窗口中,输入快照的名称,然后单击**拍摄快照**。
既然我们有了连接,我们就可以添加我们的下一台机器,这就是我们的 web 服务器。正如我们在[第 4 章](04.html"Chapter 4. Identifying Range Architecture")*识别范围架构*中提到的,我们在添加 web 服务器时有很多选择,这确实是个人偏好的问题。正如我们所知,我们将在体系结构中有两个 web 服务器;我们可以为第二台机器选择与第一台机器不同的 web 服务器。对于本书中的第一个 web 服务器,我们将从 OWASP 和 Mandiant 中选择**已损坏的 web 应用程序 VM**。由于这将连接到 DMZ 交换机,我们只需确保网络适配器连接到 VMnet2 交换机。
既然我们有了连接,我们就可以添加我们的下一台机器,这就是我们的 web 服务器。正如我们在[第 4 章](04.html"Chapter 4. Identifying Range Architecture")*识别范围架构*中提到的,我们在添加 web 服务器时有很多选择,这确实是个人偏好的问题。正如我们所知,我们将在体系结构中有两个 web 服务器;我们可以为第二台机器选择与第一台机器不同的 web 服务器。对于本书中的第一个 web 服务器,我们将从 OWASP 和 Mandiant 中选择**已损坏的 web 应用 VM**。由于这将连接到 DMZ 交换机,我们只需确保网络适配器连接到 VMnet2 交换机。
以下屏幕截图显示了此配置的示例:
...
...
@@ -168,7 +168,7 @@ apt-get dist-upgrade
# 配置防火墙架构
我们在 Smoothwall 防火墙中配置了一条规则,这是我们唯一配置的过滤。虽然我们希望从外部位置进行测试,而没有任何过滤,这将有效地为我们提供一个平坦的网络,但事实上,这种情况很少发生。因此,我们希望在我们的体系结构中设置一组最小的过滤器,这些过滤器将类似于我们在典型网络体系结构中看到的东西。这里有一点很重要:如果我们运行在一个配置良好的分层和受保护的体系结构中,我们将只通过它们必须允许进入其服务的端口。这就是测试的现实;一个配置良好的体系结构不会为我们提供很多向量,除了它们必须允许的向量之外。因此,这并不是一件坏事,因为我们知道会有空缺,我们几乎总是有一个 web 服务器和 web 应用程序可以使用。
我们在 Smoothwall 防火墙中配置了一条规则,这是我们唯一配置的过滤。虽然我们希望从外部位置进行测试,而没有任何过滤,这将有效地为我们提供一个平坦的网络,但事实上,这种情况很少发生。因此,我们希望在我们的体系结构中设置一组最小的过滤器,这些过滤器将类似于我们在典型网络体系结构中看到的东西。这里有一点很重要:如果我们运行在一个配置良好的分层和受保护的体系结构中,我们将只通过它们必须允许进入其服务的端口。这就是测试的现实;一个配置良好的体系结构不会为我们提供很多向量,除了它们必须允许的向量之外。因此,这并不是一件坏事,因为我们知道会有空缺,我们几乎总是有一个 web 服务器和 web 应用可以使用。
![Integrating web application firewalls](graphics/477-1_06_40.jpg)
我们现在准备开始安装过程。输入`./dotDefender-5.12.Linux.i386.deb.bin`开始安装过程。遵循默认设置,直到必须输入 Apache 可执行文件的路径为止。输入`/usr/sbin/apache2`作为 Apache 服务器的位置,并继续安装默认值,直到您可以输入 URI 来访问应用程序。输入`dotDefender`。然后,输入管理员访问的密码;同样,您可以输入您选择的任何密码,但在测试环境中,我希望保持简单,因此我们将使用密码`adminpw`并继续安装。在更新选项中,选择**或**选项并继续安装。如果提示您输入更新周期选项,请选择任意一个选项,然后单击**下一步**。选择第一个选项从网站获取更新,然后选择**下一个**继续安装。
我们现在准备开始安装过程。输入`./dotDefender-5.12.Linux.i386.deb.bin`开始安装过程。遵循默认设置,直到必须输入 Apache 可执行文件的路径为止。输入`/usr/sbin/apache2`作为 Apache 服务器的位置,并继续安装默认值,直到您可以输入 URI 来访问应用。输入`dotDefender`。然后,输入管理员访问的密码;同样,您可以输入您选择的任何密码,但在测试环境中,我希望保持简单,因此我们将使用密码`adminpw`并继续安装。在更新选项中,选择**或**选项并继续安装。如果提示您输入更新周期选项,请选择任意一个选项,然后单击**下一步**。选择第一个选项从网站获取更新,然后选择**下一个**继续安装。
如果一切顺利,您将看到一条成功安装完成消息,如以下屏幕截图所示:
...
...
@@ -373,6 +373,6 @@ ip access-group External in .
在我们构建了防火墙并测试了配置之后,接下来我们承担了向范围中添加监控功能的任务。我们在所有三个子网上构建并配置了 Snort,以支持我们对入侵检测能力的需求。然后,我们讨论了向配置中添加 IP 和负载平衡的过程。
最后,我们在本章结尾讨论了 web 应用程序防火墙的集成。我们安装并配置了 web 应用程序防火墙 dotDefender。一旦我们构建了这台机器,我们就克隆了它,这样我们现在就有了一台 WAF 机器,可以连接到架构中的任何位置。完成克隆过程后,我们使用 nikto 工具测试 WAF 是否检测到 web 应用程序类型的攻击。
最后,我们在本章结尾讨论了 web 应用防火墙的集成。我们安装并配置了 web 应用防火墙 dotDefender。一旦我们构建了这台机器,我们就克隆了它,这样我们现在就有了一台 WAF 机器,可以连接到架构中的任何位置。完成克隆过程后,我们使用 nikto 工具测试 WAF 是否检测到 web 应用类型的攻击。
如果您遇到较旧的开关,macof 可以在 70 秒内溢出平均**内容可寻址内存**(**CAM**表)。由于遇到较旧的开关是很常见的,因此至少要了解该工具的使用方式。我们在 Kali Linux 发行版中提供了 macof 工具。在 Kali 机器中,导航到**应用程序****Kali Linux****压力测试****网络压力测试****macof**打开 macof 工具,如下图所示:
如果您遇到较旧的开关,macof 可以在 70 秒内溢出平均**内容可寻址内存**(**CAM**表)。由于遇到较旧的开关是很常见的,因此至少要了解该工具的使用方式。我们在 Kali Linux 发行版中提供了 macof 工具。在 Kali 机器中,导航到**应用****Kali Linux****压力测试****网络压力测试****macof**打开 macof 工具,如下图所示:
如果你得到了一个应用程序初始化错误,那么你必须下载正确的 Visual C++平台来为你的 OS 版本和可能的.NET 4 包下载。这是使用 Windows 的缺点之一,尤其是在开源工具方面。当然,在 UNIX 和 Linux 中,您可能会遇到与库依赖性和其他挑战相同的问题。更多信息,请参阅`README`文件。该命令使用散列验证定义文件是否已损坏。
如果你得到了一个应用初始化错误,那么你必须下载正确的 Visual C++平台来为你的 OS 版本和可能的.NET 4 包下载。这是使用 Windows 的缺点之一,尤其是在开源工具方面。当然,在 UNIX 和 Linux 中,您可能会遇到与库依赖性和其他挑战相同的问题。更多信息,请参阅`README`文件。该命令使用散列验证定义文件是否已损坏。
以下屏幕截图显示了运行命令时的初始结果示例:
...
...
@@ -98,11 +98,11 @@ ovaldi –m –a xml –x test.html
## 无凭证扫描
当我们在内部测试中使用漏洞扫描器时,第一次扫描将没有凭证,因此我们将研究 Kali Linux 中的工具来实现这一点。通过导航到**应用程序****Kali Linux****漏洞分析**位置,可以找到 Kali Linux 中的漏洞扫描程序。在这个位置,我们可以使用许多工具进行漏洞扫描。以下屏幕截图显示了一个示例:
当我们在内部测试中使用漏洞扫描器时,第一次扫描将没有凭证,因此我们将研究 Kali Linux 中的工具来实现这一点。通过导航到**应用****Kali Linux****漏洞分析**位置,可以找到 Kali Linux 中的漏洞扫描程序。在这个位置,我们可以使用许多工具进行漏洞扫描。以下屏幕截图显示了一个示例:
![Scanning without credentials](graphics/477-1_10_13.jpg)
在本章中,我们将确定用于攻击服务和服务器的方法。这样做的好处是,我们知道服务器必须让服务运行,更重要的是,让套接字处于侦听状态,准备好接受连接。此外,这意味着服务器坐在那里,等待我们攻击它。这对我们有好处,因为我们已经在[第 9 章](09.html"Chapter 9. Assessment of Web Servers and Web Applications")、*Web 服务器和 Web 应用程序评估*中介绍了这一点。我们将要看到的最常见的攻击向量是在 Web 服务器上运行的 Web 应用程序。我们不打算在这里再次讨论这一点;相反,我们将重点关注在我们遇到的服务器平台上可以攻击的其他东西。在本章中,我们将讨论以下主题:
在本章中,我们将确定用于攻击服务和服务器的方法。这样做的好处是,我们知道服务器必须让服务运行,更重要的是,让套接字处于侦听状态,准备好接受连接。此外,这意味着服务器坐在那里,等待我们攻击它。这对我们有好处,因为我们已经在[第 9 章](09.html"Chapter 9. Assessment of Web Servers and Web Applications")、*Web 服务器和 Web 应用评估*中介绍了这一点。我们将要看到的最常见的攻击向量是在 Web 服务器上运行的 Web 应用。我们不打算在这里再次讨论这一点;相反,我们将重点关注在我们遇到的服务器平台上可以攻击的其他东西。在本章中,我们将讨论以下主题:
使用诱饵概念,我们仍在试图诱骗客户来找我们,但我们不会只是等待他们来取某种形式的诱饵。相反,我们向客户发送某种形式的通信,然后等待,看看他们是否被诱骗而跟随我们的钩子。在这个场景中,我们有三种主要方法,它们是电子邮件、web 和 USB 媒体。这也是网络钓鱼和鱼叉式网络钓鱼中使用的方法。在每种方法中,我们都会向潜在的受害者发送一封电子邮件,看看他们是否会点击我们发送给他们的链接。如果他们真的点击了链接,我们会让他们来找我们,或者在他们的系统上运行应用程序,并利用这些来发动我们的攻击。由于我们正在虚拟笔测试环境中工作,因此我们可以控制攻击的客户端。因此,这是一个在我们的范围内进行试验的问题,看看什么有效,什么无效。如果允许我们在工作范围内进行客户端测试,我们可以尝试发送网络钓鱼电子邮件和其他社会工程方法,看看是否能够诱使员工落入我们的陷阱。
使用诱饵概念,我们仍在试图诱骗客户来找我们,但我们不会只是等待他们来取某种形式的诱饵。相反,我们向客户发送某种形式的通信,然后等待,看看他们是否被诱骗而跟随我们的钩子。在这个场景中,我们有三种主要方法,它们是电子邮件、web 和 USB 媒体。这也是网络钓鱼和鱼叉式网络钓鱼中使用的方法。在每种方法中,我们都会向潜在的受害者发送一封电子邮件,看看他们是否会点击我们发送给他们的链接。如果他们真的点击了链接,我们会让他们来找我们,或者在他们的系统上运行应用,并利用这些来发动我们的攻击。由于我们正在虚拟笔测试环境中工作,因此我们可以控制攻击的客户端。因此,这是一个在我们的范围内进行试验的问题,看看什么有效,什么无效。如果允许我们在工作范围内进行客户端测试,我们可以尝试发送网络钓鱼电子邮件和其他社会工程方法,看看是否能够诱使员工落入我们的陷阱。
这最好用一个例子来说明,所以我们现在就来做。我们需要 Kali Linux 机器和受害者机器。对于本书中的示例,我们将使用 Windows7 机器作为受害者机器。我们将使用的工具是 Dave Kennedy 开发的社会工程工具包;您可以从[下载 http://www.trustedsec.com](http://www.trustedsec.com) 。这是一个特殊的工具,有助于客户端攻击。我们将为第一个示例探索 java 攻击向量。