在本章中,我们将介绍创建机器来创建测试实验室架构基础的过程。我们将讨论以下主题:
- 制造机器
- 选择网络连接
- 选择范围组件
本章将为我们提供一个坚实的基础,我们将探讨如何构建环境来支持我们必须执行的测试类型。
既然我们已经计划并准备好了我们的测试工作,现在是时候看看机器的制造了。我们在第 3 章中简要介绍了这一点,规划了一个范围,但现在我们将重点为我们的 pen 测试实验室构建一个环境。构建测试架构的方法有很多,我们将按照下图构建实验室:
前面的图显示了一个为我们提供多层防御的架构;利用这一点作为我们今后的参考点,将使我们能够开展各种各样的测试技术。此外,我们可以按照测试所需的顺序添加机器并连接到体系结构中的虚拟交换机。该图为我们提供了模拟笔测试过程中可能遇到的几乎任何环境的能力。
注意堡垒主机;这是一个将作为我们的体系结构防火墙的盒子。我们几乎可以安装任何基于软件的防火墙,并在测试中使用它。需要注意的一点是,在大多数情况下,内部网络将使用网络地址转换(NAT),在正常的外部测试场景中,我们将无法将数据包路由到内部网络。要做到这一点,我们需要客户端交互,这将在我们通过笔测试的不同技术的过程中进行讨论。现在,我们已经有了所需的图表和信息,所以是时候构建它了!
正如我们在第三章、规划范围中所展示的,我们可以使用多种产品作为我们的虚拟化平台,您可以自由使用任何产品;因此,实验室设置的第一阶段可能与我们在本书中展示的不同。使用哪种解决方案并不重要;一旦机器建成,当你启动它们时,它们几乎都是一样的。
出于我们的目的,我们将使用 VMware Workstation 工具。在创建机器时,我们有三种选择。我们将在以下部分讨论这三种选择。
构建新机器已经涵盖,它为我们提供了从 ISO 映像引导的选择,正如我们在第 3 章、规划范围中所做的那样。或者,它为我们提供了选择,即使用安装介质,安装它,然后以与在专用机器上安装操作系统相同的方式完成安装过程。请注意,VMware Workstation 工具为我们提供了一个简单的安装向导,如果它能够识别您正在为机器创建的操作系统,那么它将在大多数情况下创建、构建和安装操作系统。
警告一句:当您创建虚拟机时,请确保您创建的机器具有所需的版本。也就是说,如果您使用的是最新版本,在编写本书时为 10,那么当您创建一台机器时,它将默认为 10 版。如果将其移动到此版本之前的平台,VM 将无法工作。这种情况发生在不止一次的场合,所以确保你在创建虚拟机时考虑到环境。
这是我们在第 2 章选择虚拟环境中简要介绍的另一个选项。我们研究了如何将物理机器转换为虚拟机器,即 P2V;因此,这里没有什么新内容。
到目前为止,我们还没有讨论克隆虚拟机的概念。这是一种用于构建环境的有价值的方法。它比我们将要讨论的下一个技术要复杂一点,即快照。对于克隆,我们有两种选择;我们可以创建链接到原始机器的链接克隆。通过选择链接的克隆,我们假设将始终能够访问原始计算机,因为启动虚拟机需要它。链接克隆的一个优点是占用更少的存储空间。另一个更常见的选择是创建一个完整的克隆;这是原始计算机当前状态的完整副本。由于它是完全独立的,因此需要更多的磁盘空间来存储。
克隆的优势和力量在于,一旦我们制造了一台用于测试实验室的机器,我们只需克隆它并对配置进行更改,而不必再构建另一台机器。我们现在就做。启动 VMware 工作站,一旦程序打开您选择的虚拟机,您可以使用我们在第 3 章、规划范围中创建的虚拟机,或者创建一个新的虚拟机,然后导航到VM****Manage。这将打开菜单,如以下屏幕截图所示:
显示菜单的屏幕(剪切的文本不重要)
在弹出的窗口中点击克隆,然后点击下一步。在克隆源选择窗口中,接受虚拟机当前状态的默认设置,点击下一步。这将弹出选择克隆类型的窗口;选择创建完整克隆点击下一步,如下图所示:
在下一个窗口中,是时候为克隆选择名称和存储位置了。这是创建克隆的另一种方法,然后将其存储在共享设备甚至可移动驱动器上。这些都是我们在创建机器时可能要考虑的选项。输入您选择的名称或接受默认名称,如果要将克隆存储在其他位置,请浏览到它。输入所需信息后,单击完成。
如果一切顺利,您的克隆操作应该在点击完成后开始,在短时间内,您应该会看到克隆操作完成的消息,如下图所示:
就这样!现在,您拥有了虚拟机的完整克隆,该克隆将独立于原始虚拟机运行。这是一个强大的方式来建立我们的实验室机器。它允许我们为笔测试实验室创建所需数量的机器。点击关闭,您克隆的虚拟机将在新窗口中打开。从这一点上,你可以启动虚拟的机器,或者做任何你想做的事情,就像使用原始机器一样。
我们要讨论的最后一个概念是快照。由于克隆可以创建整个机器,因此有时只创建机器的快照是有利的。快照与听起来一模一样;此时机器的快照。我们喜欢在开发过程中大量使用快照;这与工程中的概念是一致的,即你总是给自己留一条回到初始状态的路。这对于制造我们的机器是至关重要的。在编写任何可能导致问题的新代码、程序或任何内容之前,请确保在机器当前状态下拍摄快照,以便在出现问题时可以恢复到正常状态。这是一种我希望供应商在软件更新中使用的做法。
获得一个新补丁是非常令人沮丧的,当你安装它时,消息说一旦安装补丁,你就无法恢复到原始状态!这违反了所有工程和编程设计的最佳实践!我们总是需要找到一条回到原点的路。快照的过程最好用一个例子来解释。当我们构建自己的开源工具时,我们面临的挑战之一是为我们正在运行的软件所需的所有依赖项找到正确的版本。因此,在系统上安装或更新任何软件之前,我们必须先拍摄快照。这将使我们能够始终回到我们的原始状态。
在本节中,我们将介绍在构建环境时我们可以选择的网络。我们必须使用 VMware Workstation 工具的网络功能,并充分利用它为我们提供的功能。打开 VMware Workstation 软件并打开您选择的虚拟机。执行此操作时,您将看到作为配置一部分的网络适配器。稍后我们将讨论这个问题。导航至编辑虚拟机设置|网络适配器。这将打开适配器的配置窗口,如以下屏幕截图所示:
正如您在前面的屏幕截图中所看到的,我们可以在网络上进行许多设置。我们想做的是了解这些设置中的每一个都代表一个交换机,当您使用该设置创建网络适配器时,它相当于将该机器连接到交换机。一旦我们讨论了不同的选择以及它们的含义,我们将对此进行更仔细的研究。
当我们将网络适配器配置为使用桥接设置时,它将网络适配器连接到实际物理网络。这与将单独的机器连接到网络相同。VMware 将其表示为 VMware VMnet0 接口。这是可以改变的,但在大多数情况下,我们不需要这样做。我们还可以使用许多其他设置,但它们超出了范围,并且不是我们正在构建的内容所必需的。除非您需要从外部机器访问虚拟环境,否则我们通常不会配置桥接网络。
桥接设置的示例如下图所示:
桥接设置为我们提供了在网络上有自己位置的虚拟机;这意味着它不与主机共享网络连接。
在大多数情况下,NAT 是我们将使用最多的设置。当我们选择 NAT 设置时,我们与来宾共享主机网卡,并且没有自己的地址,但仍然能够访问互联网。为 NAT 保留的交换机是 VMnet8。值得一提的是,创建虚拟机时,默认设置为 NAT。由于 NAT 设置是体系结构中的专用网络设置,因此提供了 DHCP 服务器来根据需要分配地址。NAT 配置示例如下图所示:
在 NAT 配置中,主机系统具有连接到 NAT 网络的虚拟网络适配器。这使主机和虚拟机能够相互通信。该过程是当接收到 VMnet8 网络的数据时,外部网络识别每个虚拟网络机器的传入数据包,然后将它们发送到正确的目的地。
在正常配置下,无法从外部网络访问 NAT 机器。但是,可以对此进行更改并设置端口转发,以便外部机器可以启动连接并向连接到 NAT 设备的机器发送流量。出于我们的目的,我们宁愿保留 NAT 的默认设置,也不配置端口转发,因为我们不希望外部机器连接到内部机器,因为这是我们从外部位置测试的大多数网络的配置方式。尽管事实上我们没有使用这种功能,但它可能是您想要尝试的东西。建立虚拟测试实验室就是要进行实验,找到适合你的方法。因此,要访问端口转发配置,请打开 VMware Workstation 并导航到**编辑****虚拟网络编辑器……VMnet8NAT 设置……**添加。这将打开“端口转发设置”窗口,您可以在此处自定义其他设置,但在大多数情况下,默认设置对于我们的目的非常有效。以下屏幕截图显示了端口转发选项的示例:
这里需要添加的一个重要内容是,对于 VMware 中添加的所有交换机,主机的 IP 地址将为X.X.X.1,网关将为X.X.X.2,如果您使用的是 DHCP 服务器,则地址将从X.X.X.100开始。这些是默认的设置,但与大多数情况一样,您可以修改它以满足您的环境所需的设置。
正如我们在第 3 章、规划范围中提到的,安装 VMware 工作站时默认配置的仅主机交换机为 VMnet1。仅主机连接表示虚拟机无法访问互联网。交换机是隔离的,用于虚拟机和主机之间的通信,主机外部没有连接能力。实际上,我们有一个完全包含在主机中的隔离网络。这是我们在构建笔测试实验室时的另一个重要特性。使用隔离的专用网络,我们可以强制流量使用我们想要用于测试的路由。
在仅主机配置中,虚拟机和主机系统之间的网络连接由主机操作系统上可见的虚拟网络适配器提供。与 VMware 工作站提供的其他交换机一样,交换机有一个与之关联的 DHCP 服务器,该服务器为连接到网络的机器提供 IP 地址。下图显示了仅主机网络配置的示例:
这里需要提到几个注意事项。我们之前说过,仅主机网络是一个隔离的网络。好的,就像虚拟化的大多数事情一样,有一些方法可以改变这一点,使隔离的网络不保持完全隔离。同样,出于我们的目的,这不是我们将要探讨的问题,但我们只想简要介绍一些打破或至少削弱孤立的方法。您可以设置路由或代理将网络连接到外部网络,如果您使用的是 Windows Server 2003 或 Windows XP,则可以使用Internet 连接共享选项连接到外部网络。
到目前为止,我们查看了安装 VMware Workstation 软件时包含的三个交换机,它们为我们提供了桥接、NAT 和仅主机配置功能。然而,按照我们的计划构建我们的网络架构,只有这三个交换机限制了我们,不能提供我们所需要的。
是时候把所有的东西放在一起,开始构建我们的分层架构了。您可能还记得,我们不久前展示的体系结构是一个高级黑盒视图。我们现在有了以完整形式呈现体系结构的知识。下图显示了这方面的示例:
如上图所示,我们现在已经定义了开关,这就是定制的力量。我们可以使用前面介绍的技术按照我们的规范构建和配置这些交换机。接下来,我们将为交换机定义以下 IP 寻址方案:
- VMnet8:192.168.177.0/24
- VMnet1:10.1.0.0/24
- VMnet2:10.2.0.0/24
- VMnet3:10.3.0.0/24
- VMnet4:10.4.0.0/24
这些将贯穿全书。您可以使用自己的寻址方案,但是书中构建的机器将与您构建的机器不同。正如您可能已经注意到的,我们没有在前面的图表中列出 VMnet1,但是我们为它分配了一个 IP 地址。这是因为我们希望有一个专用于测试的交换机。我们将在下一节详细解释这一点。
我们之前已经介绍了如何定制网络交换机,但为了省去您必须返回并查找的麻烦;我们将对 VMnet1 交换机重复此处的步骤。我们将 VMnet8 交换机配置为第 3 章规划范围的一部分。打开 VMware 工作站并导航到编辑虚拟网络编辑器VMnet1。在子网 IP 框中,输入10.1.0.0。将其余设置保留为默认设置。您可以验证您的设置是否与以下屏幕截图中显示的设置匹配:
一旦验证了您的设置,点击应用和,然后点击确定。执行相同的步骤来配置其余的网络。对于 VMnet2 和 VMnet4,必须选择要使用 DHCP 服务器的框;默认情况下,VMnet1 会启用此功能,但其他交换机不会启用此功能。完成网络配置后,请验证您的设置是否与以下屏幕截图中显示的设置匹配,然后继续下一节:
显示设置的屏幕(剪切的文本不重要)
我们现在应该为我们想要实现的分层环境设置网络交换机和体系结构。我们将在我们创建的所有机器上配置至少两个网卡,这样我们就可以在平面网络上执行第一轮测试。这是因为如果我们无法在网络平坦且直接连接的情况下对其进行攻击,那么就没有理由对架构进行分层,然后重试。这一概念经常被忽视,而你在夺旗(CTF比赛中看到的网络都是扁平的。它们可能有多个网卡,以便您可以执行旋转(使用受损的机器到达下一个目标),但它们是扁平的,这并不代表真正的测试环境。此外,他们禁用了防火墙,或者启用了防火墙,但配置为允许流量。
将所有这些放在一起,我们将在所有机器上拥有一个网络适配器,该适配器连接到机器所在架构中的交换机,另一个适配器连接到 VMnet1 网络。因此,这将允许我们测试 VMnet1 交换机上的所有机器,一旦测试完成并成功,我们将从网络上的真正体系结构角度来研究它。为了防止虚拟环境中可能出现的任何数据包泄漏,第一次测试后的所有测试将包括禁用或删除连接到 VMnet1 交换机的网络适配器。因此,现在是时候开始通过选择组件来用机器填充我们的体系结构了!
在本节中,我们希望选择我们将在整个体系结构中使用的组件。主要的点是我们有一个网络设计图,所以现在我们要做的就是填充它。我们要在体系结构中放置的第一台也是最重要的一台机器是我们将用来执行攻击的机器。
对于我们选择作为攻击者的机器,有很多选择。这通常是基于测试人员对不同工具和更重要的操作系统的经验。构建多台攻击者计算机并自定义它们以在不同环境中工作是很常见的。您可以创建和构建自己的机器,但在本书中,我们将使用最流行的发行版之一,即 Kali Linux。您可能要做的另一件事是构建回溯 5R3 分发机器。的确,Kali Linux 是 Backtrack 发行版的延续,但是 Backtrack 5R3 中的一些工具已经不在 Kali 中了,比如 Gerix WiFi Cracker 和 Nessus。同样,这在很大程度上是个人偏好的问题。在本书中,我们将重点介绍 Kali 发行版作为我们选择的平台。
在第 3 章规划范围中,我们使用 Kali ISO 映像构建了一个虚拟机,这是可以使用的,但我们更愿意为我们的主要攻击者机器实际使用虚拟机,而不是实时启动映像。您仍然可以保留我们在第 3 章中创建的 ISO 映像,计划范围,但我们希望获得已采用 VMware VMDK 格式的实际发行版。这样做的一个优点是已经安装了 VMware 工具,这使我们能够在虚拟环境中更好地与操作系统集成。首先,我们需要从 Kali 站点下载虚拟机;您可以在下载 http://www.kali.org/downloads/# 。
对于想要制造自己的机器的人,有一份参考文件位于http://docs.kali.org/downloading/live-build-a-custom-kali-iso 可以帮助你完成这项任务。
下载虚拟机后,将其解压缩到您选择的位置,然后使用 VMware Workstation 将其打开。一旦打开它,我们要做的第一件事就是添加另一个网络适配器,因为虚拟机有一个连接到 NAT-VMnet8 接口的适配器,这为我们提供了到外部点的连接。然而,我们也希望我们的机器连接到 VMnet1 交换机,这样我们就可以在添加过滤器和保护层之前直接进行测试。
下面的屏幕截图显示了我们的 Kali 配置示例:
显示 Kali 配置示例的屏幕(裁剪的文本不重要)
正如前面的屏幕截图所示,我们的 Kali Linux 机器中现在有两个网卡:一个连接到 VMnet8 NAT 交换机,另一个连接到 VMnet1 纯主机交换机。这使我们可以直接访问这两个网络,而无需配置任何其他设置。如前所述,我们将使用 VMnet1 交换机进行测试,一旦测试完成,我们将把目标放在架构中所需的位置,然后在此位置上执行测试。
我们以前提到过,但值得重复;您必须在平面网络上攻击目标,并验证其是否有效。否则,安装过滤器只会浪费时间。
我们现在来看一个简单的例子。在 VMware 工作站中的 Kali 虚拟机中,单击打开此虚拟机的电源以启动虚拟机。机器加载后,点击其他登录。这将打开机器的登录页面。输入root作为用户名,输入toor作为密码。打开桌面后,导航至应用附件终端打开终端窗口。在窗口中,输入ifconfig eth1查看连接到交换机的接口的 IP 地址信息。
在我们做任何其他事情之前,我们将更新 Kali 发行版。这里需要注意的是:更新有时会出错,所以在我们执行更新之前,强烈建议我们拍下机器的快照。在 VMware Workstation 中,导航到VM****拍摄快照。在打开的窗口中,输入快照的名称,然后单击拍摄快照。
如前所述,在 VMware 中,主机将是子网的第一个 IP 地址,因此我们的主机为10.1.0.1。现在,我们将进行一个小实验。我们将使用流行的工具 Nmap 扫描主机。我们希望确保在主机上禁用防火墙。在终端窗口中,输入nmap -sS 10.1.0.1并扫描主机。扫描完成后,您将看到与以下屏幕截图中所示类似的结果:
正如我们所看到的,主机上有许多打开的端口,但现在我们想打开防火墙。打开防火墙后,再次执行相同的扫描。正如您将看到的,现在防火墙打开了,结果就不同了。这是许多做测试的人不理解的事情;这是 Windows 防火墙,我们过去认为它易于穿透,但正如我们的小实验刚刚显示的情况不再是这样。如果你在互联网上搜索并寻找如何穿透防火墙的指导,你会读到碎片扫描和其他一些方法。我们鼓励你自己尝试所有这些不同的技巧,而不是在这里一一介绍;我们将去找工具 Nmap 的创建者 Fyodor。他有一些高级扫描参考资料,其中一本实际上是一本书。因此,当我们环顾四周时,我们发现要穿透防火墙,建议使用自定义扫描。与您所读到的任何内容一样,这个过程是创建一个实验室环境,然后自己进行测试和验证。在 Kali 上的终端窗口中,输入nmap -sS -PE -PP -PS80,443 -PA3389 -PU40125 -A -T4 10.1.0.1。
这将使用报告要通过防火墙的多个附加参数进行扫描。我们不会在这里介绍这些选项中的每一个,但鼓励您阅读手册页并探索每一个选项的作用。此外,您可能希望运行 Wireshark 并查看扫描在数据包级别执行的操作。运行扫描后,是否成功?以下屏幕截图显示了扫描的示例输出:
正如前面的截图所示,从扫描中收集的信息确实不多。因此,声称这可以穿透防火墙是行不通的,至少对 Windows 防火墙是行不通的。这是我们作为测试人员必须理解的。如果环境配置良好,并且防火墙对进入(入站)和出口(出站)流量都有强大的规则,那么它可以成为一个强大的目标。这不是一件坏事;最后,我们都希望改善客户的安全状况。不幸的是,从安全的角度来看,我们遇到的大多数体系结构都存在弱点。虽然这对安全性不好,但对我们的测试来说却很好!
我们前面看到的架构的部分的示例如下图所示:
如上图所示,在我们的体系结构中,我们遇到的第一级防御是路由器。我们可以遇到许多不同的设备,如果我们有一个不可移动的实验室环境,我们可以使用实际的物理设备。我相信你们很多人都知道的一个信息来源是拍卖网站,比如 eBay,它可以帮助以合理的价格捡拾二手设备。我个人曾多次使用思科设备的另一个网站是http://www.routermall.com 。我喜欢这个网站的地方是,当你从他们那里购买设备时,你会得到电缆和 IOS 软件。正如我们之前所说,我们更关心的是建立一个笔测试实验室,我们可以随身携带我们的笔记本电脑,所以物理路由器不会为我们提供这种能力。因此,我们必须寻找解决方案,我们可以将其放入机器中,并为我们的体系结构模拟或执行路由器的功能。
虽然确实可以使用设备的包转发功能将任何机器变成路由设备,但这并不是我们希望通过路由设备实现的唯一目标。当您在测试中遇到外围设备时,该设备很可能具有某种形式的过滤功能。因此,我们希望我们选择的路由器组件能够执行某种形式的过滤。
我们想与您分享的一个解决方案是 Cisco 路由器仿真软件 Dynamips,最初由 Christophe Follet 于 2005 年编写,并一直维护到 2008 年。最初的 Dynamips 软件不再维护,但出于我们的目的,最后的版本将提供我们需要的所有功能。使用任何 Cisco 模拟器都有一个要求,那就是您必须拥有 Cisco IOS 版本才能访问和引导。我们将在下一节为那些没有能力获得 Cisco IOS 映像的用户提供替代解决方案。
从这一点开始,我们将使用Dynamips软件和然后是基于文本的前端,即Dynagen。对于那些想要基于 GUI 的界面以及最新版本的 Dynamips 的用户,您可以访问www.gns3.net并在那里获得所需的软件。此外,您可以获得大量关于该软件的资源和文档,它不仅提供给 Cisco 设备,还提供给 Juniper 设备。这是一个很好的参考,继续你的实验室开发,以模拟各种设备。该软件还有一个 Windows 安装程序包,您可以在 Windows 环境中运行模拟器。
下面的屏幕截图中显示了一个示例,该示例解释了关于 GNS3 工具的更多细节:
关于这一点的讨论已经够多了,让我们构建一个路由器吧!我们想使用 Ubuntu 作为我们的路由器仿真软件平台。您可以访问 Ubuntu 网站,从下载软件 http://www.ubuntu.com/download/desktop 。在撰写本书时,最新的稳定版本是 12.04,这就是我们将用于路由器平台的版本。64 位版本可能会有一些挑战;出于我们的目的,32 位或 64 位版本都可以工作。
下载 ISO 映像后,您将在 VMware Workstation 中创建一台新机器并装载 ISO 映像。我们在第三章中介绍了规划范围中的步骤,所以您应该熟悉这些步骤。如果没有,您可以参考本章了解步骤的确切顺序。VMware Workstation 很可能会识别 ISO 映像,并提供轻松安装。这是你可以接受或不接受的,取决于个人喜好。
创建计算机并从 ISO 映像启动后,您将按照安装提示将软件安装到虚拟机的硬盘驱动器中。在大多数情况下,您可以接受安装的默认设置,但可以根据需要进行更改。请记住,这是虚拟环境的优势之一。如果我们炸掉某个东西,我们可以创建另一个,或者正如我们所讨论的,如果我们拍了一个快照,我们可以恢复到那个。Ubuntu 的一大优点是,安装完成后,可以添加软件包。
当安装完成时,默认情况下,虚拟机将有一个网络适配器连接到 NAT 交换机,但正如我们设计的那样,我们知道我们的路由器上需要两个接口。这是为了提供下图所示的连接:
要用 Ubuntu 机器创建我们的架构,我们必须添加一个网络适配器并将其连接到 VMnet2 交换机。使用 VMware Workstation,您无需关闭虚拟机即可添加新适配器。在软件中,导航至视图|控制台视图以调出虚拟机的配置视图。点击编辑虚拟机设置添加网络适配器并连接到 VMnet2。以下屏幕截图显示了所需配置的示例:
现在我们已经为路由器机器设置了配置,我们需要获取一个 IOS 映像并将其复制到机器中。如前所述,如果您无法访问 IOS 映像,您将无法使用 Dynamicps 工具。在下一节中,我们将提供一个解决方案,该解决方案不需要访问 IOS 映像,并提供与我们所需相同的过滤功能。
Dynamips 软件可以从 Ubuntu 的软件库中获得;在 Ubuntu 机器中,点击屏幕左侧菜单栏上的终端图标,打开终端窗口。如果没有看到终端图标,可以点击Ubuntu 软件中心进行搜索。
在终端窗口中,输入sudo apt-get install dynamips。这将获取 Dynamips 软件并安装它。安装完成后,我们将为该工具安装前端应用。在终端窗口中输入sudo apt-get install dynagen。
要停止为每个命令键入sudo,请输入sudo –i。我们用来配置路由器的配置文件被复制到一个相当长的路径,我们现在将修复这个问题。我们将使用示例配置文件simple1.net。输入cp /usr/share/doc/dynagen/examples/sample_labs/simple1/simple1.net /opt/config.net。
现在我们已经复制了配置文件,让我们来看一看。输入more /opt/config.net。下一个屏幕截图显示了默认配置文件的示例:
我们将集中在两个方面进行配置。在路由器映像部分,我们必须指定系统上 IOS 映像的路径。第二个区域是路由器部分。在本例中,我们将为路由器使用名称R1,如您所见,路由器 R1 有一个串行接口,连接到 R2 的串行接口。这是一个两个路由器的示例配置,出于我们的目的,我们不需要这么多路由器。欢迎您探索不同的配置,但在本书中,我们将重点介绍一个路由器,因为这是我们在设计中确定的外围设备。
我们希望我们的 R1 路由器配置有两个网络接口;一个将连接到 VMnet8 NAT 交换机,另一个将连接到 VMnet2 交换机。因此,我们在 Ubuntu 机器上有两个网卡是以这种方式配置的,因此只需将接口的配置输入到config.net文件中即可。我们必须输入能够识别接口的配置,这就是所谓的 tap 接口,这超出了我们在此讨论的范围;但是,如果您想了解更多信息,请参考http://www.innervoice.in/blogs/2013/12/08/tap-interfaces-linux-bridge 。通过输入gedit /opt/config.net打开您的config.net文件。根据需要将路径更改为 IOS 映像文件的路径,然后在 R1 路由器部分,在当前串行接口的位置输入以下内容:
f0/0 = NIO_linux_eth:eth0
f1/0 = NIO_linux_eth:eth1
这将把快速以太网接口连接到 Ubuntu 机器的接口。您可能需要更改的另一个设置是 RAM 分配。默认值是 160MB,这有点低,所以我建议您将其增加到320。下一个屏幕截图显示了此步骤中的配置的示例:
注释掉路由器 R2 也是一个好主意,因为我们不使用它。我们现在已经准备好测试我们的配置。在终端窗口中,输入dynamips –H 7200。这将在端口 7200 上启动 Dynamicps 服务器。如果一切顺利,您将看到类似于以下屏幕截图所示的输出:
下一步是启动配置文件,该文件将与我们在机器上加载的 Cisco IOS 交互。我们在书中使用的示例 IOS 映像用于 7200 系列路由器,因此我们可以在其上配置数量的接口。然而,出于我们的目的,我们只需要两个快速以太网接口来执行我们的路由,更重要的是,当我们在架构的各个部分之间进行流量过滤时。
在另一个终端窗口中,输入dynagen /opt/config.net。这将读取我们创建的配置文件并加载 IOS 映像以供访问。希望您在这里不会遇到任何错误,但是如果您遇到了,那么是时候进行故障排除了。最常见的错误是路径输入错误。如果是路径错误,您将看到一条消息,说明找不到图像。下一个屏幕截图显示了您应该看到的示例:
此时,我们已准备好启动路由器 R1;您可以通过在 Dynagen 提示符中输入console R1命令来完成此。这将使您登录路由器,就像您通过控制台电缆连接一样。你应该看到另一扇窗户开着。这是对路由器的访问。按下回车键,将出现登录提示,如下一个屏幕截图所示:
从这里开始,就是使用路由器命令为我们的路由器配置两个接口的问题;在路由器提示下输入en,进入路由器的特权模式。进入特权模式后,输入show ip int brief调出路由器的接口配置。您将看到还没有接口配置,因此我们必须对其进行配置。下一个屏幕截图显示了该命令的输出示例:
我们现在要配置这些接口(f0/0 和 f1/0),因为它们当前未设置。我们通过终端选项的全局配置来实现这一点。要访问此项,请在路由器命令提示符下输入conf t。这将使您处于配置模式。进入int f0/0进入界面配置菜单,输入 IP 地址 192.168.177.10 255.255.255.0。这将为 f0/0 接口创建一个配置,将连接到我们的 VMnet8 NAT 交换机。要打开界面,请输入no shut命令。完成此操作后,我们将对下一个接口执行相同的操作。在提示窗口中,输入int f1/0进入 f1/0 界面的配置菜单。接下来,我们必须配置连接到 VMnet2 交换机的 IP 地址,因此输入 IP 地址10.2.0.10 255.255.255.0。在界面配置窗口中,输入no shut调出界面。我们现在应该已经配置了所有接口。要返回到主路由器提示,请按Ctrl+Z。通过输入show ip int brief验证您的配置。接下来,我们将通过输入ping 192.168.177.1来验证 VMnet8 交换机上是否有连接。下一个屏幕截图显示了已完成配置的示例:
在将某些东西连接到内部虚拟交换机之前,您将无法验证其他交换机。这是因为 VMnet2 交换机不是主机中的适配器,除非您在创建它时选择了该选项。接下来我们要做的是保存配置;这也是最重要的事情之一。为此,请输入write mem。对于阅读本文的读者,您可能知道另一种方法,即copy run start命令。
我们现在在 Ubuntu 机器上有一个完整的 Cisco 7200 路由器,我们可以在 IOS 内配置我们想要的任何东西,比如 IPsec 和其他东西。现在,我们将停止使用 Dynamips 工具,继续为那些想要解决方案而无需获得 Cisco IOS 映像的用户提供解决方案。在 dynagen 提示符中,输入stop R1以关闭路由器。
对于那些无法访问 Cisco IOS 映像的用户,我们可以在您想要使用的几乎任何 Linux 或 Unix 机器上实现我们的体系结构所需的功能。我们在第一个例子中使用了 Ubuntu 平台,这里我们将使用另一个。其目的是具备过滤功能,我们可以通过使用安装了 iptables 软件的操作系统来实现这一点。我们将使用 Debain 发行版来完成此任务。您可以从 Debian 官方网站www.Debian.org下载 Debian。下载映像后,需要创建虚拟机并运行安装过程。安装操作系统后,需要配置网络。一个已安装的网络适配器将位于 VMnet8 NAT 交换机上,第二个需要连接到 VMnet2 交换机。进行配置更改后,您的设置应与以下屏幕截图中显示的设置相匹配:
我们创建的两个虚拟交换机的配置为我们提供了一个 DHCP 服务器来分配 IP 地址,但这将作为一个路由器。最好为接口设置一个静态地址,因为这将允许我们在创建接口时有更多的细粒度过滤规则。此外,我们不必在每次启动机器时更改设置,因为地址不会像 DHCP 那样更改。
Debian 发行版使用一个配置文件来设置网卡启动后所需的参数。使用您选择的编辑器打开/etc/network/interfaces;我们想配置两个网络接口,eth0 和 eth1。下一个屏幕截图显示了已完成配置的示例:
我们可以配置与 Dynamips 中使用的相同的地址,但是如果将来某个时候我们想同时运行 Debian 和 Ubuntu 机器,我们将出现 IP 地址冲突。因此,为这种可能性进行规划并配置唯一地址始终是一个良好的设计决策。我们希望使用 IP 表的工具来执行过滤、引导 Debian 机器并登录。要验证是否安装了 iptables,请在终端窗口中输入iptables -h以显示该工具的使用情况。下一个屏幕截图显示了此命令的输出示例:
我们现在已经成功设置了 Debian 机器,下一步是配置 IP 表以支持我们需要的过滤。这是我们开始测试设备时要做的事情。
现在我们已经配置并设置了路由器,我们架构中的下一个组件是防火墙。与路由器选项一样,我们可以选择很多选项。首先,让我们看一下防火墙的网络体系结构。如下图所示:
如上图所示,我们的堡垒主机上有三个接口,作为我们的防火墙;这需要我们连接三个交换机。我们将要使用的防火墙是免费版本的Smoothwall防火墙。同样,这里的一个重要点是,您在体系结构中设置的防火墙有时由您计划的合同决定。因此,我们在这里的目的是提供一个防火墙,这样当我们针对我们在研究中发现的不同漏洞进行实践时,我们可以测试许多不同的配置。您可以从下载平滑墙防火墙的 ISO 映像 http://www.smoothwall.org/download/ 。
一旦下载了 ISO 映像,创建一个虚拟机器。我们希望这台机器有三个接口,为我们提供满足网络设计所需的连接。下一个屏幕截图显示了此配置的示例:
本机需要三张网卡,中的每一张都将连接到堡垒主机接口,具体如下:
- VMnet2-eth0-Red
- VMnet3-eth1-绿色
- VMnet4-eth2-橙
我们需要做的另一件事是改变硬盘类型。默认情况下,安装程序将使其成为 SCSI 硬盘,这会导致该工具出现问题。为了避免这种情况,我们将把设置改为 IDE。导航至编辑虚拟机设置硬盘删除。移除硬盘后,导航至编辑虚拟机设置硬盘下一步IDE下一步下一步完成。
启动机器时,安装包将启动。阅读不同步骤的说明,并接受安装过程的默认设置。接受半开的默认配置。此设置将安装谨慎的安全方法,也就是说,在大多数情况下,如果不明确定义,则不允许任何操作。
在网络配置类型中,我们希望更改配置以匹配所需的交换机设计,即绿色、橙色和红色。在网络配置窗口中,选择绿色+橙色+红色和,然后按进入。
您不能使用鼠标,因此需要使用箭头键和选项卡键在菜单中移动。
验证连接设置,如下一屏幕截图所示:
接下来我们需要设置的是卡片分配;选择此选项时,将探测我们创建的网络配置。因此,每次检测到网卡时,它都会将其分配给接口。接口的顺序将是红色、绿色,然后是橙色。因此我们需要按此顺序分配它们,因为它将分别匹配 eth0、eth1 和 eth2。
分配完所有卡后,接下来要做的就是设置 IP 地址。IP 地址的配置如下:
- 红色 DHCP
- 绿色-10.4.0.10
- 橙色-10.3.0.10
一旦分配了网卡,将提示您设置两个密码:一个用于远程访问,另一个用于根用户。我建议您使它们易于记忆,因为这仅适用于测试环境。我通常使用用户的名称后跟pw。因此,对于 root 用户,密码应该是rootpw。您可以自由设置任何您喜欢的密码。设置密码后,系统将重新启动。一旦它重新启动,您必须登录并验证这三个接口是否按照我们的预期设置。登录后,请确认已按照下一个屏幕截图所示配置接口:
首选方法是通过 web 浏览器从绿色界面访问配置。我们可以在 VMnet4 交换机上设置另一台机器,或者另一种方法是使用主机进行配置。为了具有此功能,我们必须将交换机连接到主机。在 VMware Workstation 中,导航到编辑虚拟网络编辑器VMnet4并选择将主机虚拟适配器连接到此网络。下一个屏幕截图显示了已完成配置的示例:
下一步是打开您选择的浏览器并输入https://10.4.0.10:441;这将打开 web 登录界面。输入管理员的用户名和您在安装过程中配置的密码。一旦您登录,您将进入防火墙的主菜单。导航至联网****入站,将显示为入站流量配置的规则。下一个屏幕截图中显示了一个示例:
前面的屏幕截图显示,默认情况下,Smoothwall 不允许任何启动的流量进入;这是架构应该开始的方式。然后,过程是添加组织希望通过策略允许的协议。出于我们的目的,当我们想要测试某个东西并将其放置在橙色界面中时,我们必须在这里放置一个规则。如果我们想进入内部网络或绿色接口,那么它将不允许您进行配置,除非您强制进行配置。这是因为从外部看,不允许连接到内部。通过使用这个平台,我们现在有了一个配置良好的堡垒主机,它在默认情况下是关闭的。接下来我们要看的是传出或传出的流量。点击发送调出配置。
下一个屏幕截图显示了此默认配置的示例:
默认的配置允许绿色界面上的任何机器访问大多数网络用户需要的任何服务。这是半开放式装置的动力;它允许我们在防火墙的内部接口上绑定所有需要的端口,然后在外部接口上没有打开的端口,但满足安全策略需要的端口除外。
现在,我们将在这里停止,因为我们已经介绍了作为堡垒主机的防火墙的主要配置,现在是进入另一个主题的时候了。我们鼓励您尝试防火墙,并在您认为必要时进行测试。测试它的一个好方法是打开您选择的黑客工具,并将目标设置为堡垒主机红色界面上的接口。
我们现在已经构建了我们的体系结构,所以现在是时候为我们的测试添加组件了。这在很大程度上取决于我们所遵循的测试方法的结果。这就是说,我们希望有许多不同的 web 服务器来进行测试和实践。在第 3 章规划范围中,我们从 OWASP 组下载并使用了破损的 web 应用虚拟机。因此,我们有一个优秀的 web 服务器。接下来,我们将下载另一个易受攻击的 web 服务器进行练习。我们想下载并使用 Rapid7 为我们提供的虚拟机 metasploitable。您可以通过以下链接下载虚拟机:
您必须注册才能下载应用。下载后,打开虚拟机并添加连接到 VMnet1 接口的网络适配器。与大多数虚拟机一样,默认情况下,网络适配器设置在 VMnet8 接口上,我们可以将其用于直接测试。每当我们想将 web 服务器移动到架构的另一个位置时,我们只需更改适配器所连接的交换机。此外,我们可以拍摄一个快照,并为要使用机器测试的每个位置创建一个快照;此外,我们可以克隆机器,并在我们的体系结构周围进行克隆。我们怎么做真的无关紧要。其目的是让机器测试我们的技能,然后在我们和目标之间设置障碍,并学习克服障碍的方法。
机器运行后,使用用户名msfadmin和密码msfadmin登录机器。登录后,记下 IP 地址,打开浏览器并连接到计算机上的 web 服务器。下一个屏幕截图显示了机器主页的示例:
如前一屏幕截图所示,metasploitable 虚拟机为我们提供了多个测试站点;我们有 Mutillidae,该死的易受攻击的 Web 应用,还有很多其他的。这将为我们提供多种技术在网络上进行测试。
就目前而言,元可编程机器与我们下载的虚拟机相结合就足够了。我们仍然需要在我们的网络架构中构建许多组件,我们将在本书后面的章节中介绍它们。
在本章中,我们已经检查了我们建立该范围所需的规划和准备工作。我们研究了创建机器的过程,以及在网络上放置机器的计划,该计划允许我们模拟许多不同的分层体系结构。
然后,我们开始讨论范围组件,并确定需要在周边安装一个能够执行过滤的路由设备。此外,我们还探索了可以运行我们软件的 Bastion 主机的选项。本节最后讨论了如何创建 web 服务器。为此,我们下载了 metasploitable 虚拟机。正如我们在本章中所讨论的,我们将在我们的产品系列中添加更多的组件,但现在,我们添加的组件足以向前推进。在下一章中,我们将介绍一些可供我们在执行专业测试时遵循的测试方法。




































