Skip to content

Latest commit

 

History

History
464 lines (268 loc) · 30.4 KB

File metadata and controls

464 lines (268 loc) · 30.4 KB

二、配置测试实验室

在本章中,我们将介绍如何为渗透测试设置实验室环境。在生产环境中尝试之前,许多测试都应该首先在这个受限的实验室环境中进行。请记住,在实时环境中工作时,必须获得书面许可,在网络上执行渗透测试的任何阶段时,必须遵守所有当地法律。在您开始之前,最好让律师审查任何合同和约定细节,以避免在执行期间或之后出现任何问题。一些保险公司还为渗透测试人员提供意外损坏的保险。

为了避免因渗透测试而遇到法律问题和不必要的支出,强烈建议您构建一个测试环境,无论是物理环境还是虚拟环境,以便熟悉测试及其结果,并了解测试对硬件、软件和带宽的影响,因为这些测试中的许多都会破坏设备和组织。

我们将详细介绍以下主题:

  • 在 VM 中设置 Windows 环境
  • 安装易受攻击的服务器
  • 在 Kali Linux 中安装其他工具
  • Kali Linux 中的网络服务
  • 额外的实验室和资源

技术要求

物理的还是虚拟的?

决定是否建立物理或虚拟实验室(或两者的组合)取决于您的预算和可用资源。渗透测试可能会变得非常昂贵,这取决于所使用的工具,特别是如果选择商业工具,但考虑到 Kali Linux 中以及 GitHub 和 GitLab 上提供的许多可用的开源工具,渗透测试并不一定要昂贵。

作为一名专业渗透测试人员,我使用两台物理机器。一种是配备 1 TB 硬盘驱动器、16 GB DDR4 RAM、i7 处理器和 NVIDIA GeForce GTX 1050 图形卡的笔记本电脑,配备三个虚拟机,包括主操作系统(Kali Linux 2018.2)。第二台机器是一台较旧的塔式工作站,具有 2 TB 驱动器、24 GB DDR3 RAM 和一个 Intel Xeon 3500 处理器,该处理器带有带多个虚拟机的板载图形卡,包括用作虚拟实验室环境一部分的虚拟机。

在创建实验室环境时,了解每个操作系统(包括主机和所有虚拟机)所需的最小资源和推荐资源至关重要。虽然许多基于 Linux 的操作系统只需要 2 GB 的 RAM,但明智的选择是分配比指定的推荐 RAM 更多的内存,以使您的工具能够在没有滞后或内存不足错误的情况下运行。不过,这一切都取决于你手头的可用预算或资源。

在 VM 中设置 Windows 环境

对于 Windows 环境测试实验室,我选择安装 Microsoft Windows 10,因为它目前是 Microsoft 的最新版本。许多使用较新 PC 和笔记本电脑的用户可能已经在运行 Windows 10,但出于测试目的,也应将 Windows 10 安装为虚拟机,从而保持主机操作系统不变。这也推荐给使用旧版本 Windows 的读者以及 Mac 和 Linux 用户,以便他们能够在实验室环境中使用最新版本的 Windows 作为渗透测试的一部分。在现实世界中,随着对 Windows 7 的支持的结束,我们将看到越来越少的 Windows 7 计算机(使这些系统变得非常脆弱),尽管也会有一些忠实的用户还不愿意升级。

对于此安装,我们将使用 Windows 10 企业版的评估副本,可从 Microsoft 网站直接下载。您可以访问下载您的 Windows 10 Enterprise 评估副本 https://www.microsoft.com/en-us/evalcenter/evaluate-windows-10-enterprise 。请记住,除非您拥有或购买了许可证,否则此版本有 90 天的评估期。

一旦进入下载页面,您应该注意到有两个可用版本,ISO 和长期服务分公司LSTB)。选择 ISO–Enterprise 并单击 Continue。

填写评估表详细信息,然后单击“继续”。请记住输入的详细信息,因为在安装过程中,您需要稍后通过电话或短信进行身份验证。

选择您的平台(32 位或 64 位)以及您的语言,然后单击下载继续。

您现在可以开始创建 Windows 10 虚拟机。VirtualBox 或 VMware 可用于此目的,但在本例中,我将使用 VirtualBox。

打开 VirtualBox 并单击左上角的新图标。为您的虚拟机指定一个名称,并根据以前下载的版本选择适当的版本(32 位或 64 位)。单击“下一步”继续。

将可用 RAM 分配给 VM。推荐的内存是 2GB,但我分配的内存刚刚超过 6GB,因为我的机器上有 24GB 的 RAM。记住要考虑主机使用情况,以及其他虚拟机(如 Kali Linux),它们可能同时运行:

通过单击“立即创建虚拟硬盘”,然后单击“创建”,添加新的虚拟硬盘。

对于硬盘文件类型,选择VirtualBox 磁盘映像VDI)并单击下一步。

选择“物理磁盘上的存储”下的“动态分配”选项。此选项通过仅在物理磁盘上使用空间来节省硬盘空间,而不是在磁盘上创建可能不使用的固定大小空间。单击“下一步”继续。

在选择虚拟磁盘的大小时,考虑推荐的 HDD 空间,以及您可能希望在 VM 中安装的应用的空间(例如 Meta Sasple)。在本例中,我分配了 64 GB 的硬盘空间。单击“创建”继续:

此时,我们必须将 ISO 映像指向 VM。在 VirtualBox 管理器中,单击新创建的 Windows 10 VM 实例,然后单击开始箭头。在“选择启动磁盘”框中,单击文件夹图标并浏览下载的 Windows 10 评估副本。单击开始继续:

这将带我们进入 Windows 安装启动屏幕。输入设置的相关信息,然后单击“下一步”继续。

单击“立即安装”开始安装过程。

接受 Microsoft 的许可条款,然后单击“下一步”继续。选择“自定义安装”选项,然后单击“新建”,然后单击“应用”以格式化 VM 硬盘:

格式化后,确保选择了先前指定大小的分区,然后单击“下一步”按钮继续:

安装过程将开始,并需要一些时间才能完成。同时,在上看一看其他一些关于渗透测试的伟大作品 https://www.packtpub.com/tech/Penetration-Testing

安装完成后(如以下屏幕截图所示),允许操作系统自动重新启动。

在继续安装之前,系统将提示您选择语言和键盘布局,然后在选择隐私设置之前,系统将提示您输入工作或学生电子邮件。

要设置安全登录,请单击设置 PIN。您可能首先需要通过电话或短信验证您的身份。验证完成后,您将能够设置 pin。请务必记住此 PIN(至少六位数字),因为您需要使用 PIN 登录。

安装完成后,您现在可以配置网络并安装应用。在屏幕右下角,您应该看到评估副本的详细信息:

如果需要快速将 VM 恢复到工作状态,您可能需要保存机器状态。

安装易受攻击的服务器

在本节中,我们将安装一个易受攻击的虚拟机作为目标虚拟机。这一目标将在本书的几个章节中使用,当我们解释特定主题时。我们之所以选择在机器中设置易受攻击的服务器,而不是使用 internet 上可用的易受攻击的服务器,是因为我们不希望您违反任何法律。我们应该强调,在没有书面许可的情况下,您不应该测试其他服务器。安装另一台虚拟机的另一个目的是以可控的方式提高您的技能。这样,当攻击不起作用时,很容易修复问题并了解目标机器中发生的情况。

在一些国家,即使对你没有的机器进行端口扫描也可能被视为犯罪行为。此外,如果使用虚拟机的操作系统出现问题,我们可以轻松修复它。

在以下部分中,我们将把 Metasploitable 2 和 Metasploitable 3 虚拟机设置为易受攻击的服务器。Metasploitable 2 较旧,但更易于安装和配置。Metasploitable 3 是较新的,因此已更新以反映更新的漏洞,但安装有点不同,对于新用户有时会有问题。出于这个原因,我们为读者提供了 Metasploitable 2 和 3 的选项,尽管我们建议在您有可用资源的情况下尝试两者。

在 VM 中设置 Metasploitable 2

我们将要使用的易受攻击的虚拟机是 Metasploitable 2。Rapid7 著名的 H.D.摩尔创造了这个脆弱的系统。

除了 Metasploitable 2 之外,还有其他故意易受攻击的系统可用于渗透测试学习过程,如以下站点所示:https://www.vulnhub.com

Metasploitable 2 在操作系统、网络和 web 应用层中存在许多漏洞。

有关 Metasploi 表 2 中包含的漏洞的信息,请访问 Rapid7 网站https://community.rapid7.com/docs/DOC-1875

要在 VirtualBox 中安装 Metasploitable 2,可以执行以下步骤:

  1. 下载 Metasploitable 2 文件 http://sourceforge.net/projects/metasploitable/files/Metasploitable2/
  2. 解压缩 Metasploitable 2 ZIP 文件。提取过程成功完成后,您将发现五个文件:
Metasploitable.nvram 
Metasploitable.vmdk 
Metasploitable.vmsd 
Metasploitable.vmx 
Metasploitable.vmxf 
  1. 在 VirtualBox 中创建新的虚拟机。将名称设置为Metasploitable2,操作系统设置为Linux,版本设置为Ubuntu
  2. 将存储器设置为1024MB
  3. 在虚拟硬盘设置中,选择使用现有硬盘。选择我们在上一步中已经提取的Metasploitable文件。
  4. 将网络设置更改为仅主机适配器,以确保只能从主机和 Kali Linux 虚拟机访问此服务器。Kali Linux 虚拟机的网络设置也应设置为仅用于 pen 测试本地 VM 的主机适配器。
  5. 启动Metasploitable2虚拟机。引导过程完成后,您可以使用以下凭据登录Metasploitable2控制台:
    • 用户名:msfadmin
    • 密码:msfadmin

以下是成功登录后的 Metasploitable 2 控制台:

在虚拟机中设置 Metasploitable 3

Metasploitable 3 由 Rapid7 于 2016 年发布,是最新的更新版本,其漏洞比其前身多。但是,Metasploitable 3 不能作为可下载的虚拟机使用,但需要几个组件,这些组件必须安装和配置,需要用户自己构建虚拟机。

在本例中,我将在 Windows10 主机上构建 Metasploitable 3 虚拟机。为此,我们首先需要下载以下内容:

  • VirtualBox 或 VMware(VirtualBox 用户报告了 5.2 版的问题,但使用 5.1.14 版时效果良好,可在 VirtualBox 页面上找到)
  • 包装工
  • 流浪汉

安装封隔器

Hashicorp 的 Packer 用于轻松构建自动化图像,如 Metasploi 表 3。访问https://www.packer.io/downloads.html 下载适用于您操作系统的 Packer 版本。在本例中,我下载了 Windows 64 位版本:

下载后,提取文件的内容。应该有一个文件,在本例中为packer.exe

从那里,创建一个你喜欢的文件夹,并命名为 packer。我已将其放置在系统的C:驱动器上:

此时,您需要添加此文件夹的路径,以便在命令提示符下调用 Packer 应用。只需编辑环境变量并将其粘贴到packer.exe的路径中即可。

转到控制面板并单击高级系统设置:

在“系统属性”窗口的“高级”选项卡下,单击环境变量:

您应该看到 admin 用户变量下的路径条目。在“系统变量”框中,还应输入路径变量,并输入C:\Program Files (x86)\Common Files\Oracle|Java\javapath:..

点击Edit按钮继续:

在编辑环境变量中,点击右上角的新建按钮,从主窗口的列表中选择C:\packer。点击 OK。

要测试更改是否成功,请启动命令提示符并键入packer。如果全部成功,则应返回用法参数和可用命令:

安置流浪汉

Vagrant 也是由 Hashicorp 开发的,它是开源的,用于简化虚拟环境中的工作流和配置。访问https://www.vagrantup.com/downloads.html 下载 Windows 版本。

一旦安装了相关的下载程序(在本例中为 Windows),请安装 Vagrant。

假设您已经安装了 VirtualBox,请从位于的 GitHub 存储库下载 Metasploitable 3 源文件 https://github.com/rapid7/metasploitable3

下载源文件后,将文件解压缩到您选择的位置。在 Windows 10 中启动 PowerShell,更改目录,直到找到包含已下载 Metasploitable 文件的文件夹,然后输入./build_win2008命令。

这应该足以让您开始构建 Metasploit3 服务器。对于初学者来说,这是一个非常复杂的构建,但绝对值得一试。

预建 Metasploit 3

对于那些难以构建自己的 Metasploitable 3 服务器的用户,可以在的 GitHub 上找到并下载预构建版本 https://github.com/brimstone/metasploitable3/releases

此版本的 Metasploitable 3 由 Brimstone(Matt Robinson)创建,可作为.ova文件(Metasploitable 3-0.1.4.ova)下载,仅 211MB。下载后,可以在 VirtualBox 中通过单击 file 和 Import Appliance 打开.ova 文件。如果可用,您可能希望将预设 RAM 量更改为大于 1 GB 的值。

尽管安装过程很长,但安装程序会自动完成所有操作,并最终为您提供 Metasploitable 3 Windows 2008 server 的完整版本:

另一个完全配置的预构建 Metasploitable 3 服务器也可以在此处下载:https://mega.nz/#!XQXEABQ!frdh5DgZE-tSb_1ajPwLZrV4EZuj1lsS3WlWoLPvBjI

在 VM 中设置 BadStore

与今天的技术相比,BadStore ISO 是古老的;然而,与 Metasploitable 3 不同,它的安装和使用非常简单。知识和资源非常有限的读者可以使用此 ISO 映像作为起点,因为它包含众所周知的漏洞,并且大小也低于 15 MB。

在撰写本书时,BadStore ISO 图像在官方商店中不再可用,但有几个著名的链接可以使用。正如在的 GitHub 文章中所述 https://github.com/jivoi/junk/blob/master/coursera_software-security/w3/project-2/info ,BadStore ISO 可在此下载:https://d396qusza40orc.cloudfront.net/softwaresec/virtual_machine/BadStore_212.iso

还应下载 BadStore ISO 手册,因为它包含有关操作系统中 IP 连接和漏洞的基本信息。

从前面的链接下载文件后,打开 VirtualBox 并单击 file 和 New。输入屏幕截图中显示的详细信息。完成后单击“下一步”:

BadStore 使用很少的内存。可以使用默认分配,但我已经分配了 640MB 的 RAM。单击“下一步”继续:

完成以下步骤:

  • 单击立即创建虚拟硬盘,然后单击创建按钮
  • 选择VirtualBox 磁盘映像VDI作为硬盘文件类型,点击下一步
  • 在提示选择物理存储选项时选择“动态分配”,然后单击“下一步”
  • 对于文件位置和大小,将默认文件大小保留为 4 GB,因为 BadStore 也需要很少的磁盘空间

在启动 BadStore 虚拟机之前,请单击 Oracle 虚拟机 VirtualBox 管理器中的设置按钮。单击左侧窗格中的网络类别,将适配器设置更改为桥接适配器,然后单击确定。这将使 VM 能够通过 DHCP 接收 IP 地址(如果在您的网络上启用了该地址),从而简化后续步骤中的连接过程:

在 Oracle VM VirtualBox 管理器中,单击 BadStore 条目并单击开始按钮:

当提示选择启动盘时,单击打开文件夹图标并浏览到之前下载的BadStore.iso文件。单击开始运行虚拟机。

加载 BadStore 后,按 Enter 键激活控制台:

回车后,输入ifconfig命令,按回车查看您的界面配置。请注意,在下面的屏幕截图中,eth0界面中,IP 地址(inet addr设置为192.168.3.136。在您的机器上,根据您使用的 IP 方案,它应该是不同的。请注意此 IP,因为需要通过浏览器连接到 BadStore VM:

打开您选择的浏览器,在地址栏中输入 BadStore VM 的 IP 地址,然后输入以下语法:cgi-bin/badstore.cgi

在本例中,我在浏览器的地址栏中输入了以下 URL 以访问 BadStore VM:http://192.168.3.136/cgi-bin/badstore.cgi

输入 BadStore VM 的 IP 并附加前面的路径后,按 enter 键,您将看到 BadStore 前端,如此屏幕截图所示:

As mentioned earlier, the BadStore VM is nothing short of ancient, as reflected by the design of the interface; however, for beginners it contains a variety of common vulnerabilities that can be easily found and exploited with tools from Kali Linux covered in the following chapters.

Another similar and easy to set up VM that you can try is the Damn Vulnerable Linux (DVL) ISO. It can be downloaded from: https://sourceforge.net/projects/virtualhacking/files/os/dvl/DVL_1.5_Infectious_Disease.iso/download.

Installing additional tools in Kali Linux

Prior to or during a penetration test, it may be necessary to include other tools that are not commonly available with Kali Linux. The art of penetration testing has a great many individuals constantly creating tools that you can include. As a result, it may be necessary to install these tools in your Kali Linux setup. In other circumstances, it is generally a good idea to ensure that your tools are up to date prior to starting any penetration test.

When including additional penetration testing tools, it is advised to look within the Kali Linux repository first. If the package is available there, you can use the package and install it using the commands detailed next. Another option, if the tool is not available from the repository, is that the creator will often have a download option either on their website or through the software sharing and aggregation site https://github.com/.

While there are a number of tools available outside the Kali Linux repository, you should not rely on those as it is easy to add them to your Kali Linux installation. Also, many of the packages that are not in the repository have dependencies on other software and may cause stability issues.

There are several package management tools that can be used to help you manage the software package in your system, such as dpkg, apt, and aptitude. Kali Linux comes with dpkg and apt installed by default.

If you want to find out more about the apt and dpkg commands, you can look at the following references: https://help.ubuntu.com/community/AptGet/Howto/ and http://www.debian.org/doc/manuals/debian-reference/ch02.en.html.

In this section, we will briefly discuss the apt command in a practical way that is related to the software package installation process.

To search for a package name in the repository, you can use the following command:

    apt-cache search <package_name>

This command will display the entire software package that has the name package_name. To search for a specific package, use the following command:

    apt-cache search <package_name>

If you have located the package but want more detailed information, use the following command:

    apt-cache show <package_name>

To install a new package or to update an existing package, use the apt-get command. The following is the command:

    apt-get install <package_name>

If the package is not available in the repository, you can search for and download it from the developer's site or through www.github.com. Be sure to only include software from trusted sources. For developers who require a Debian package format (the package will have the file extension .deb), you can utilize the dpkg command. For other packages, you will often find that they are compressed using a compression program such as 7-Zip and will often have the extension .zip or .tar.

Network services in Kali Linux

There are several network services available in Kali Linux; in this section, we will describe only some of them: the HTTP, MySQL, and SSH services. You can find the other services by navigating to Kali Linux | System Services.

HTTP

If your penetration testing works, you may want to have a web server for various reasons, such as to serve malicious web application scripts. In Kali Linux, there is already an Apache web server installed; you just need to start the service.

The following are the steps that are required to activate your HTTP server in Kali Linux:

  1. 要启动 Apache HTTP 服务,请打开命令行终端并键入以下命令以启动 Apache 服务器:
   service apache2 start
  1. 之后,您可以浏览到127.0.0.1的网页;它将显示它的工作原理!默认情况下的页面:

To stop the Apache HTTP service, perform the following steps:

  1. 打开命令行终端并键入以下命令以停止 Apache 服务器:
    service apache2 stop

Remember that the previous command will not survive boot up. After bootup, you need to give the command again. Fortunately, there is a way to start the Apache HTTP service automatically after the Kali Linux boots up by providing the update-rc.d apache2 defaults command.

  1. 该命令将添加启动时要启动的apache2服务。

MySQL

The second service that we will discuss is MySQL. It is a relational database system. MySQL is often used with the PHP programming language and an Apache web server to create a dynamic, web-based application. For the penetration testing process, you can use MySQL to store your penetration testing results, for example, the vulnerability information and network mapping result. Of course, you need to use the application to store those results.

To start the MySQL service in Kali Linux, you can perform the following steps:

  1. 在终端窗口中,键入以下内容:
    service mysql start
  1. 要测试 MySQL 是否已经启动,可以使用 MySQL 客户端连接到服务器。我们定义登录 MySQL 服务器的用户名(root和密码:
    mysql -u root

The system will respond with the following:

    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or g.
    Your MySQL connection id is 39
    Server version: 5.5.44-1 (Debian)
    Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.

    Type ''help;'' or ''h'' for help. Type ''c'' to clear the current input statement.
    mysql>

  1. 在这个 MySQL 提示之后,您可以提供任何 SQL 命令。要退出 MySQL,只需键入quit

By default, for security reasons, the MySQL service in Kali Linux can be accessed only from a local machine. You can change this configuration by editing the bind-address stanza in the MySQL configuration file located in /etc/mysql/my.cnf. We don't recommend that you change this behavior unless you want your MySQL to be accessed from elsewhere.

To stop the MySQL service, you can perform the following steps:

  1. 在终端窗口中,键入以下内容:
    service mysql stop
  1. 要在 Kali Linux 启动后自动启动 MySQL 服务,可以发出以下命令:
    update-rc.d mysql defaults

This command will make the MySQL service start after the boot up.

SSH

对于下一个服务,我们将研究安全 ShellSSH)。SSH 可用于安全地登录到远程计算机;除此之外,SSH 还有其他几种用途,例如在机器之间安全地传输文件、在远程机器中执行命令以及 X11 会话转发。

要在 Kali Linux 中管理 SSH 服务,请执行以下步骤:

  1. 要从命令行启动 SSHD 服务,请键入以下命令:
    service ssh start
  1. 要测试 SSH,您可以使用 SSH 客户端(如 Putty)()从另一台服务器登录到 Kali Linux 服务器 http://www.chiark.greenend.org.uk/~sgtatham/putty/),如果您使用的是 Microsoft Windows 操作系统。
  2. 要停止 SSHD 服务,请在命令行中键入以下命令:
    service ssh stop
  1. 要在 Kali Linux 启动后自动启动 SSH 服务,可以发出以下命令:
    update-rc.d ssh defaults

此命令将添加要在启动时启动的 SSH 服务。

额外的实验室和资源

虽然我们主要关注的是 Windows 10、Metasploitable 2 和 Metasploitable 3,但还有其他几个类似的项目用于探索漏洞和测试您的技能。经验丰富的安全专家和渗透测试人员可能还记得一个叫做 BadStore 的小型易受攻击的 web 服务器。此易受攻击的服务器不超过 15 MB(是的,MB),并且包含从跨站点脚本到 SQL 注入的多个漏洞。虽然官方网站不再提供直接下载,但它仍然可以在网上找到。

https://www.vulnhub.com/ 正是其领域所表明的:漏洞项目的中心。网站上列出了几个易受攻击的虚拟机供下载,可用于练习和捕获旗帜CTF)场景和比赛,包括该死的易受攻击的 Linux、Kioptrix 等。

对于那些有兴趣在封闭环境中练习技能或学习的人,也有几个网站:

  • Hack this siteHack this site.org也有很多挑战(左下角),为初学者和程序员提供任务。这些挑战是免费的,但需要注册:

  • 地狱般的黑客:与黑客这个网站一样,地狱般的黑客(https://www.hellboundhackers.org/ 还免费提供许多挑战,包括笔试挑战。访问这些挑战还需要注册:

总结

在本章中,我们将介绍如何为渗透测试创建一个实验室环境。如前所述,您的实验室设置将完全取决于可用的资源,如 CPU、RAM 和 HDD 空间。尝试尽可能多的不同操作系统是个好主意,包括 Windows、Linux、Mac、Android,甚至 ARM 操作系统(可在上找到)https://www.vulnhub.com/ )能够在受控环境中获得一些经验,在那里您可以合法地进行测试。

如果使用 Metasploitable 服务器,我们建议初学者(包括时间有限的专业人士)使用 Metasploitable 2 操作系统,因为 Metasploitable 3 操作系统的设置非常复杂,可以为特定的主机操作系统构建构建。

资源有限的用户还可以使用较小的易受攻击的操作系统,如 BadStore 和 DVL,它们与 Metasploitable 2 一样,是以 ISO 格式提供的预构建服务器,只需少量安装即可安装。

建议您的实验室至少有一个 Windows 和一个 Linux 操作系统用于测试和学习。接下来,我们将研究可用于渗透测试的各种方法。

问题

让我们根据你从本章学到的知识来回答一些问题:

  1. 哪两种虚拟化平台可用于创建和托管虚拟机?
  2. .vmdk代表什么?
  3. Metasploi 表 2 的默认登录凭据是什么?
  4. 如果从头开始构建 Metasploitable 3 服务器,还需要其他哪些软件?
  5. 在 Kali Linux 中,安装新软件包或更新现有软件包所使用的命令是什么?
  6. 使用什么命令启动 MySQL 服务?
  7. 使用什么命令启动 SSH 服务?

进一步阅读