Skip to content

Latest commit

 

History

History
745 lines (412 loc) · 43.5 KB

File metadata and controls

745 lines (412 loc) · 43.5 KB

六、主动收集信息

主动信息收集可用于在渗透测试的侦察阶段提供非常有用的结果。通过这种主动方法,渗透测试仪直接连接到实际目标,以收集开源智能OSIT无法提供的具体细节。使用主动信息收集,渗透测试人员能够创建目标的非常详细的概要文件,收集操作系统类型和正在运行的服务等信息。此信息有助于研究和识别与目标相关的漏洞,从而缩小选择针对目标的特定攻击的范围。

在本章中,我们将重点关注直接与目标公司接触,以收集有关它的具体细节,从而帮助我们分析任何正在运行的服务。了解如何进行主动侦察将为我们在开发阶段提供重要帮助。在信息收集阶段,您将能够识别漏洞,并确定合适的漏洞,以侵入系统和网络。您还可以从网络设备和系统检索敏感信息。

在本章中,我们将介绍以下主题:

  • 了解主动信息收集
  • DNS 查询
  • 扫描
  • Nmap
  • Hping3
  • SMB、LDAP 枚举和空会话
  • 网络足迹和目击者列举
  • Metasploit 辅助模块

技术要求

本章的技术要求如下:

了解主动信息收集

主动信息收集使用直接方法与目标接触;它实际上涉及到在我们的机器和目标网络和系统之间建立连接。通过执行主动信息收集,我们能够收集特定和详细的数据,如实时主机、运行的服务和应用程序版本、网络文件共享以及用户帐户信息。

执行主动信息收集确实存在被检测的风险。

确定实时主机将使我们了解在线设备的数量。以脱机设备为目标是没有意义的,因为它将没有响应。了解目标上的操作系统和运行的服务有助于我们了解该设备在网络中的角色以及它向其客户端提供的资源。

例如,如果我们要在活动信息收集期间在目标系统上找到大量文件共享,这可能意味着目标可能是一个文件服务器,其共享驱动器上有大量重要数据。在执行主动信息收集时,攻击者机器(在我们的例子中,是基于 Kali Linux 的机器)向潜在的受害者发送特殊查询,希望受害者机器通过提供某种机密信息(如网络共享和服务版本)来响应。

现在,您已经更好地了解了什么是主动信息收集,让我们在下面的部分深入了解它的实践。

DNS 查询

作为未来的网络安全专业人员,了解各种应用程序和网络协议的用途非常重要。在本节中,我们将重点介绍一个特定的协议:域名系统DNS

让我们从进一步了解 DNS 的作用以及作为渗透测试人员如何获取信息开始。

什么是 DNS?为什么我们在网络上需要它?

DNS 就像一个包含姓名、地址和电话号码的电话簿。DNS 用于网络,包括组织的内部网络和 internet 上的外部网络。DNS 协议用于将主机名(域名)解析为 IP 地址。

在 DNS 之前,每台计算机都包含一个位于C:\Windows\System32\drivers\etc目录中的hosts文件。该文件需要经常更新,以确保用户能够通过指定其主机名或域名访问各种网站或服务器。如果hosts文件不存在,用户需要指定他们想要访问的服务器的 IP 地址。

网络上的所有设备都有一个指定的 IP 地址。记住您要访问的每个服务器或网站的所有 IP 地址将是相当困难的。如果hosts文件不包含新服务器和网站的最新记录,用户将难以到达目的地。

以下屏幕截图显示 Windows 操作系统的hosts文件中的当前条目:

Windows 主机文件记录

DNS 帮助我们避免依赖hosts文件。许多流行的互联网公司,如思科、谷歌和 Cloudflare,都建立了公共 DNS 服务器,其中包含互联网上几乎所有域名的记录。为了进一步阐述,让我们使用一个简单的示例来帮助您了解 DNS 是如何工作的。

假设您想访问一个网站,如www.example.com

  1. 当计算机或设备需要将主机名解析为 IP 地址时,它会向其 DNS 服务器发送 DNS 查询消息,如以下屏幕截图中的步骤 1所示。

  2. DNS 服务器将检查其记录,并通过 DNS 回复向客户端计算机提供域的 IP 地址进行响应,如以下屏幕截图中的步骤 2所示。

  3. 最后,客户端接收 IP 地址并在其自身和www.example.com域之间建立会话,如以下屏幕截图所示:

DNS 事务

互联网上有许多公共 DNS 服务器;有些是恶意的,捕获您的 DNS 信息并将您重定向到有害的网站和域。因此,我建议在您的所有网络设备和计算机上使用受信任的 DNS 提供商,以提高您的在线安全性。以下是 internet 上一些流行的 DNS 服务器:

此外,DNS 服务器不仅将主机名解析为 IP 地址,还包含用于各种解析类型的各种记录。

以下是不同的记录类型:

DNS 记录类型

A记录类型的一个示例是将www.example.com的主机名映射到 IPv4 地址93.184.216.34;相同主机名的AAAA记录将包含 IPv6 地址2606:2800:220:1:248:1893:25c8:1946,以此类推。

**nslookup**实用程序是验证 DNS 信息的非常有用的工具。nslookup可以执行各种任务,例如解析给定域的每种类型的 DNS 记录,并且能够查询特定的 DNS 服务器。

DNS 枚举是为特定组织的域探测特定 DNS 记录的技术。换句话说,我们向 DNS 服务器询问目标组织的 IP 地址和服务器名称。此外,我们尝试执行 DNS 区域传输。DNS 区域传输将允许将区域文件从主 DNS 服务器复制到另一个 DNS 服务器,如辅助 DNS 服务器。

但是,DNS 服务器管理员有时会忘记应用安全控制,以防止将区域文件复制到未经授权的服务器。成功的 DNS 区域传输可使渗透测试人员获得公司网络布局。在最坏情况下(即,对于目标组织),组织可能无法在其 DNS 服务器上分离内部和外部名称空间。此类错误配置可能导致有人出于恶意目的获取此类信息。

在以下练习中,我们将尝试提取给定域的各种 DNS 记录:

  • DNS 枚举
  • DNS 区域传输
  • 使用host实用程序执行 DNS 分析
  • 使用凶猛进行 DNS 查询

让我们一起来看看 DNS 和 Kali Linux 吧!

使用 dnsenum 执行 DNS 枚举和区域传输

dnsenum 是一个非常简单易用的工具,用于枚举和解析给定目标的 DNS 信息。此外,它还能够使用名称服务器详细信息自动执行 DNS 区域传输:

  1. 打开新的终端窗口,执行dnsenum命令。出现帮助菜单,提供各种操作员/参数及其使用的详细说明。

  2. 使用dnsenum zonetransfer.me命令对zonetransfer.me域进行 DNS 枚举,如下图所示:

德纳姆

dnsenum 将尝试获取给定域的所有服务器和主机名。我们能够获得名称服务器、邮件服务器(用于电子邮件交换)以及找到的每个服务器和主机名的 IP 地址。

  1. dnsenum 将通过查询枚举过程中找到的特定名称服务器来尝试执行 DNS 区域传输,如以下屏幕截图所示:

DNS 区域传输

与前面的代码片段一样,dnsenum 工具能够成功地从nsztml.digi.ninja名称服务器中提取/复制主区域记录。利用所发现的信息,渗透测试人员将更好地了解目标组织的(zonetransfer.me内部和外部网络设备。

对敏感信息(如我们发现的)的访问可能会导致目标组织中成功的网络入侵。

接下来,我们将尝试使用本机 Linux 工具执行 DNS 分析。

使用主机实用程序执行 DNS 分析

host实用程序是 Linux 操作系统固有的,可以帮助我们获取有关目标域的各种 DNS 信息:

  1. 在 Kali Linux 上打开新终端,执行host zonetransfer.me命令;host工具将尝试获取域的 DNS 记录,例如AMX记录:

使用主机检索 DNS 记录

  1. 使用host -t ns zonetransfer.me命令通过获取域的名称服务器来尝试枚举。-t运算符允许您指定 DNS 记录:

名称服务器记录

  1. 现在我们已经获得了域的名称服务器,让我们使用到目前为止收集的信息。让我们尝试通过使用host -l zonetransfer.me nsztml.digi.ninja命令查询域的名称服务器来执行 DNS 区域传输,如以下屏幕截图所示:

与主机的 DNS 区域传输

请确保查询给定域的所有名称服务器有时,一台服务器可能配置错误,即使其他服务器是安全的。

现在您已经具备了执行 DNS 枚举和区域传输的技能,让我们尝试使用 DNS 发现子域。

用 dnsmap 寻找子域

dnsmap的工作原理与我们在前面示例中看到的工具略有不同。dnsmap 试图通过查询 Kali Linux 操作系统上的内置单词列表来枚举组织域名的子域。一旦找到子域,dnsmap 将尝试解析 IP 地址。

使用dnsmap microsoft.com命令,我们可以找到组织的子域及其对应的 IP 地址:

dnsmap 结果

如前一节所述,发现组织的子域可以导致在域中查找隐藏的敏感门户和目录。

正如您可能已经注意到的,到目前为止,我们使用的每个工具都会给我们提供更多的细节。在下一节中,我们将使用更具攻击性的工具来帮助我们提取有关目标域的更多详细信息。

使用凶猛的 DNS 查询

凶猛被认为是一种半轻量级 DNS 查询工具。它对给定目标域的 IP 空间和主机名执行广泛的查找。要使用凶猛,我们可以执行fierce -dns example.com命令,如下截图所示:

激烈的 DNS 询问

Feare 将尝试获取给定域的所有 DNS 记录,并发现具有相应 IP 地址的任何子域。此工具可能需要一些时间来完成查询,因为它实现了对目标域的深入分析。

我们现在已经完成了本节中的练习。接下来,我们将直接与目标接触,使用各种扫描技术收集更具体的细节。

扫描

让我们把信息收集阶段比以前做得更进一步。在本节中,我们将对目标执行各种扫描类型。这些措施包括:

  • 平扫
  • 操作系统和服务版本检测
  • 扫描已禁用 ICMP 的主机设备
  • 进行隐形扫描
  • 使用 Nmap 扫描 UDP 端口
  • 使用 Nmap 执行规避扫描技术

扫描的目标是识别网络上的活动主机,确定系统上的开放端口和关闭端口,识别目标上正在运行的服务,并创建目标网络基础设施的网络图。在网络扫描阶段获得的信息是创建目标组织概要文件的关键。

在许多国家,未经允许扫描目标是非法的。因此,我们将在实验室内扫描设备。

在一个数据包中,有许多类型的 TCP 标志在网络上两个或多个主机之间的通信期间使用。作为渗透测试人员,我们可以在执行网络扫描时利用 TCP/IP 堆栈中的某些漏洞。换句话说,我们将向目标发送精心编制的标志,以确定其端口状态、操作系统、正在运行的服务及其版本;我们还需要确定防火墙是否监视入站或出站流量,等等。

以下 TCP 标志位于数据包内:

  • URG:(加急表示该数据包需要立即处理
  • PSH:(推送)立即发送缓冲数据
  • FIN:(完成表示不再发送传输
  • ACK:(确认确认收到消息
  • RST:(重置重置网络连接)
  • SYN:(同步)用于初始化主机设备之间的连接

通过使用 Wireshark(www.Wireshark.org等工具,您可以观察网络上数据包中的每个细节。

以下片段是设置了ACK标志的网络数据包的捕获:

启用 ACK 标志的数据包

此外,通过观察数据包中的详细信息,您可以看到源和目标 MAC 地址、IP 地址、端口和其他重要特征。Wireshark 被认为是网络和网络安全专业人员中最好的网络协议分析器和嗅探器之一。

现在我们了解了扫描的重要性,让我们了解一下业界最流行的扫描工具之一,Nmap。

Nmap

Nmap 是免费的,是 Windows 和 Linux 平台上最强大的网络扫描工具之一。Nmap 可以在许多方面帮助网络管理员和网络安全专业人员。

Nmap 功能包括以下内容:

  • 创建网络资源清册
  • 检查活动主机
  • 确定操作系统
  • 确定正在运行的服务及其版本
  • 识别主机上的漏洞
  • 探测嗅探器
  • 确定网络上是否存在防火墙

首先,我们将介绍 Nmap 的基础知识,然后逐步介绍高级扫描技术。作为渗透测试人员,我们必须确保我们拥有一个工具库,以帮助我们高效地执行工作。然而,作为专业人员,我们还必须确保我们非常熟悉并知道如何使用我们可用的每一种工具。

因此,我们将首先对目标进行基本扫描:

  1. 让我们首先打开一个新的终端并使用以下语法:nmap <target IP or hostname>
  2. 我们将扫描一个网站,该网站已给予我们执行扫描的法律许可。让我们使用nmap scanme.nmap.org命令:

Nmap 扫描 1

通过对目标或网络执行常规扫描,Nmap 检查目标上 1000 个最常用的 TCP/IP 端口。

  1. 通过观察输出,Nmap 能够识别打开的端口,确定打开的端口是 TCP 还是 UDP,识别应用层协议,并找到目标的 IP 地址(IPv4 和 IPv6)。

识别目标上打开的端口就像发现系统中打开的门,识别服务可以帮助我们缩小搜索和利用漏洞的范围。

要对 IPv6 地址执行扫描,您可以包括-6操作符,如:nmap -6 2600:3c01::f03c:91ff:fel8:bb2f所示。

Nmap 没那么难吧?让我们在接下来的章节中用 NMAP 做更多的步骤。

使用 Nmap 执行 ping 扫描

有时,您可能需要在渗透测试期间识别网络上的所有活动主机。Nmap 能够跨多个目标执行 ping 扫描,无论是指定范围还是整个子网。使用-sn操作员将允许您仅对目标执行 ping 扫描:

使用 Nmap 进行 Ping 扫描

在前面的代码片段中,Nmap 只显示了它认为在网段上是活动的主机,并且能够查找每个主机的 MAC 地址以确定供应商。

  • 如果要执行范围扫描,可以使用以下语法:nmap start ip addr - end ip addr
  • 如果要扫描网络上的特定 IP 设备,请使用以下语法:nmap host1 host2 host3
  • Nmap 还支持使用以下语法扫描文本文件中列出的主机:nmap –iL file.txt

现在,让我们进一步了解如何在下一节中使用 Nmap。

使用 Nmap 获取操作系统和服务版本

到目前为止,我们已经能够收集目标的基本细节。我们可以使用 Nmap 帮助用户确定目标上任何正在运行的应用程序的操作系统、操作系统版本和服务版本。

使用-A操作员将启动主动扫描,-O将评测操作系统,-sV将识别服务版本。

执行攻击性扫描可能会被入侵检测系统/入侵预防系统IDS/IPS或防火墙设备标记。要警惕这一点,因为渗透测试的很大一部分是尽可能保持沉默,以避免被发现。

使用 Metasploitable VM 上的nmap -A -O -sV target命令作为目标系统,我们将能够获得关于目标的更有意义的信息。

正如您在下面的代码段中所看到的,对于每个打开的端口,Nmap 已经识别了在该端口上运行的特定服务,并且我们还能够检索应用程序服务版本的详细信息:

操作系统和服务版本

再向下滚动输出,我们可以看到,通过使用-O参数,Nmap 能够确定操作系统的类型:

检测内核版本

在这一点上,我们对我们的目标——Metasploitable VM 有了更好的了解。我们知道当前正在运行的所有开放端口、服务和服务版本,以及操作系统。

Nmap 太棒了,不是吗?让我们学习如何使用 Nmap 扫描禁用 ICMP 的设备。

扫描禁用 ICMP 的主机设备

当 Nmap 即将在主机上执行扫描时,它会向主机发送一个 ping 数据包,以确定目标是否处于活动状态。如果目标没有响应,Nmap 将不会尝试执行扫描。但是,系统管理和网络安全专业人员通常会禁用服务器上的互联网控制消息协议ICMP响应。不接收来自目标的 ICMP 回显回复将表明目标设备已关闭/脱机;然而,这种技术基本上是欺骗新手黑客,使其认为主机根本不可用。在 Nmap 扫描期间使用–Pn操作符将跳过主机发现阶段,并将目标视为在线。

以下是一个例子:

nmap -Pn 10.10.10.100

在渗透测试期间,如果您无法在网络上发现活动主机,请不要过度担心,因为网络安全专业人员倾向于对其终端设备和网络应用安全控制。Nmap 可以检测隐藏的系统,绕过防火墙和网络嗅探器来检测主机上的安全漏洞。

执行扫描时,目标很可能知道攻击者或渗透测试人员正在进行端口扫描。在下一节中,我们将描述如何使用 Nmap 执行隐藏扫描。

使用 Nmap 执行隐藏扫描

默认情况下,Nmap 在找到的任何打开的 TCP 端口上建立TCP 三方握手。建立握手后,交换消息。以下代码段显示了握手过程,主机 A希望与主机 B进行通信:

TCP 三次握手

在渗透测试期间,我们需要在网络上保持尽可能的隐蔽性。这造成了实际黑客试图破坏系统/网络而不被组织的安全控制和系统捕获的效果。通过与目标设备建立 TCP 三方握手,我们让目标了解我们自己。

因此,我们将使用 Nmap 执行隐形扫描(半开放)。隐形扫描不会与目标建立完整的 TCP 握手:

  1. 如果目标计算机上的某个端口处于打开状态,则攻击者通过向目标计算机上的某个特定端口发送 TCP SYN 数据包来欺骗目标计算机。
  2. TCP SYN/ACK 数据包返回给攻击者的计算机。
  3. 最后,攻击者发送 TCP RST 数据包以重置目标上的连接状态:

隐形扫描

在我们的练习中,我们将使用 Nmap 的隐形扫描探测 Metasploitable VM 上的端口80。使用-sS操作符指示隐形扫描,并使用-p操作符扫描(探测)特定端口,我们可以在 Kali Linux 机器上执行nmap -sS -p 80 10.10.10.100命令:

使用 Nmap 的隐形扫描

使用 Wireshark,我们能够看到 Kali Linux 机器和目标之间的数据包流。数据包编号 18 表示[SYN]数据包被发送到 Metasploitable VM,数据包编号 19 表示[SYN,ACK]数据包被返回到 Kali Linux 机器,最后,数据包编号 20 表示我们的 Kali Linux 机器发送[RST]数据包来重置连接:

在 Wireshark 中检测到隐形扫描

最终的结果是,我们能够成功地探测目标系统上的给定端口,并且没有在我们的机器和目标之间建立网络会话。

有许多服务和协议使用 UDP 作为首选传输方法。默认情况下,UDP 应用程序不响应典型的端口扫描。无论何时使用 Nmap 执行网络/端口扫描,默认情况下扫描引擎都会搜索打开的 TCP 端口;这意味着 UDP 端口通常会在结果中丢失。在下一节中,我们将了解如何执行 UDP 端口扫描。

使用 Nmap 扫描 UDP 端口

有许多应用层协议使用用户数据报协议UDP)作为其首选传输协议。使用-sU操作符将指示需要在给定目标上执行 UDP 端口扫描。使用以下命令,我们可以完成此任务:

nmap -sU target

我们现在已经掌握了在目标设备或网络上执行 UDP 扫描的技能。在下一节中,我们将了解使用 Nmap 规避安全设备和检测。

基于 Nmap 的规避检测

每当数据包从一个设备发送到另一个设备时,源 IP 地址都包含在数据包的报头中。这是 TCP/IP 堆栈的默认行为;所有地址详细信息必须包含在需要穿越网络的所有数据包中。在对目标执行网络扫描时,源 IP 地址包含在机器 Kali Linux 发送给目标的所有数据包中。

Nmap 能够使用诱饵欺骗目标,使其相信网络扫描来自多个源,而不是单个源 IP 地址。-D操作符后面是随机 IP 地址,这是诱饵。假设我们要扫描一个 IP 地址10.10.10.100,并设置三个诱饵:10.10.10.1410.10.10.1510.10.10.19。我们可以使用以下命令:

nmap -sS 10.10.10.100 –D 10.10.10.14, 10.10.10.15, 10.10.10.19

通过观察以下 Wireshark 捕获,我们可以看到在目标端口扫描期间使用了包含源 IP 地址和诱饵 IP 地址的数据包:

Wireshark 中的诱饵检测

但是,RST 数据包是从实际的源地址发送的。此外,我们还可以使用其他操作符,如--spoof-mac来欺骗源 MAC 地址。

在下一节中,我们将学习如何在使用 Nmap 执行网络扫描时规避防火墙检测。

使用 Nmap 规避防火墙

在您作为网络安全专业人员、渗透测试人员或道德黑客的职业生涯中,您经常会遇到在其网络基础设施上安装了某种防火墙设备或软件的组织,无论是小型、中型还是大型企业。

防火墙可以阻止网络扫描,并为我们渗透测试人员带来挑战。以下是可在 Nmap 中用于规避防火墙的各种操作员:

Nmap 的防火墙规避运营商

此外,我们可以向目标发送带有特定标志的自定义探测并分析响应。

在以下部分中,我们将了解如何确定网络上是否存在有状态防火墙。

检查有状态防火墙

在检查有状态防火墙时,我们可以向启用 ACK 标志的目标发送探测。如果目标没有提供响应,则表明存在防火墙:

有状态防火墙存在

但是,如果返回的数据包设置了 RST 标志,则表明目标系统上没有防火墙:

有状态防火墙不存在

我们可以使用 Nmap 上的–sA操作符对目标执行确认扫描。让我们在 Metasploitable VM 上执行扫描,以确定端口80是否打开,以及系统是否存在防火墙:

  1. 使用nmap -sA -p 80 <target>命令:

使用 Nmap 进行 ACK 扫描

  1. 我们能够在目标上识别端口80已打开且未过滤(无防火墙)。此外,通过观察数据包,我们发现 RST 数据包返回到我们的 Kali Linux(攻击者)机器:

Wireshark 中显示的端口扫描

每当您在目标上运行扫描时,结果显示filtered,这意味着存在防火墙,并且防火墙正在积极监控端口,如以下屏幕截图所示:

使用 Nmap 检测已筛选的端口

此外,以下操作员可用于确定系统上是否存在防火墙:

| 操作员 | 说明 | | -sX | 执行圣诞节扫描。URG、FIN 和 PSH 标志均已设置。 | | -sF | 执行 FIN 扫描。仅设置 FIN 标志。 | | -sN | 执行空扫描。没有设置任何标志。 |

附加 Nmap 运算符

Nmap 将解释响应,并确定目标上的端口是否已筛选。

完成本节之后,您现在可以使用 Nmap 分析目标。在下一节中,我们将了解Nmap 脚本引擎NSE)。

NSE 脚本

NSE 是 Nmap 中最强大的功能之一。它允许用户创建并自动编写脚本,以便在目标设备上执行自定义扫描。通过使用各种 Nmap 脚本执行扫描,您可以快速检测目标是否易受已知漏洞、恶意软件、打开的后门等攻击。

以下是 NSE 脚本的主要类别:

NSE 类别

要执行整个类别的脚本,我们可以使用--script category命令。以下代码段是在 Nmap 扫描期间使用vuln类脚本的示例:

使用 NSE 发现漏洞

运行一整套脚本可能并不总是适合各种情况。如果您正在执行扫描以搜索包含特定漏洞的系统,例如vsFTPd 2.3.4 backdoor(CVE-2011-2523),您可以使用以下命令:

nmap --script ftp-proftpd-backdoor target

每个 NSE 脚本都本地存储在 Kali Linux 的/usr/share/nmap/scripts目录中。但是,您应该熟悉使用 NSE 脚本,因为这将帮助您节省时间并更快地找到有关目标的特定信息。为了帮助您进一步理解 NSE 脚本,请访问 NSE 官方文档网站https://nmap.org/nsedoc/ 。存储库包含每个可用 NSE 脚本的详细描述。

在完成了关于 Nmap 和 NSE 的本节之后,现在让我们了解一下 Zenmap,Nmap 的 GUI 版本。

Zenmap

Zenmap 是 Nmap 的图形用户界面GUI版本),支持多种平台,如 Windows、Linux 和 macOS。Zenmap 的创建面向初学者,因为它比 Nmap 的传统命令行界面更易于使用。要在您的系统上下载 Zenmap,请访问https://nmap.org/zenmap/

下面显示了 Zenmap 接口。它的使用非常简单:只需输入目标并选择要执行的扫描类型。根据您选择的扫描类型,将在命令字段中设置必要的 Nmap 运算符。

为了演示,让我们通过观察以下步骤对 Metasploitable VM 执行快速扫描:

  1. 输入目标的 IP 地址。
  2. 从配置文件菜单中选择快速扫描选项。
  3. 单击扫描开始,如以下屏幕截图所示:

Zenmap 接口

扫描完成后,单击每个选项卡以获取有关目标的更多详细信息。如果要对整个网络执行扫描,则“拓扑”选项卡将帮助您创建目标网络的网络图。

通过执行以下步骤,可以在 Zenmap 上创建自定义扫描配置文件:

  1. 要创建新的扫描配置文件,请单击配置文件|新建配置文件或命令。
  2. 配置文件编辑器将打开,为您提供在 Nmap 中扫描可用的所有选项,如以下屏幕截图所示:

Zenmap 配置文件编辑器

请务必访问每个选项卡并熟悉各种可用选项,因为它们在将来会很有用。

正如您所看到的,Zenmap 非常易于使用且用户友好。在下一节中,我们将了解 Hping3,另一种执行扫描的工具。

Hping3

Hping3 是一个命令行工具,允许用户分析网络上的 TCP/IP 消息。此外,Hping3 允许使用组装网络数据包,这有助于渗透测试人员执行设备和服务发现以及攻击行为,例如拒绝服务拒绝服务攻击。

Hping3 是一种可以执行以下任务的工具:

  • 网络上的主机发现
  • 对主机设备进行指纹识别以确定服务
  • 嗅探网络流量
  • 泛洪数据包(DoS)
  • 文件传输

如前一节所述,有许多服务器和设备禁用了 ICMP 响应作为安全预防措施。我们可以使用 Hping3 探测目标系统上的端口,以强制将 ICMP 响应返回到攻击者机器。

要开始使用 Hping3,让我们使用以下步骤在端口80上执行端口扫描:

  1. 我们使用ping实用程序向 Windows 服务器计算机发送四条 ICMP 回显请求消息(启用防火墙和禁用 ICMP):

敲打目标

  1. 我们的攻击者机器(Kali Linux)没有收到来自目标的任何响应。新手黑客会假设目标处于离线状态,可能会继续前进。但是,使用 Hping3 通过发送 SYN 数据包来探测特定端口将迫使目标暴露自己。使用hping3 -S target ip addr -p port -c 2语法,我们得到以下响应:

使用 Hping3 进行端口扫描

通过查看我们的结果,我们可以看到我们已经收到了目标公司的成功响应。这意味着10.10.10.14设备处于在线状态,并且端口80处于打开状态。

-S运算符表示发送 SYN 数据包,-p允许您指定目的端口号,-c指定要发送的数据包数。

  1. 此外,我们可以通过在目标设备上的一系列网络端口上执行端口扫描来进一步执行此步骤。使用hping3 -8 20-1000 -S 10.10.10.14命令,我们能够在目标上的20-1000范围内的端口上执行 SYN 扫描。以下代码段表示我们的目标上的端口80135139445902912已打开:

使用 Hping3 进行隐形扫描

使用 Hping3 时,可以组合更多的运算符;请务必使用终端上的hping3 -h命令查看帮助菜单。

既然您熟悉使用 HPGI3 作为扫描仪,让我们深入研究目标设备上的枚举。

SMB、LDAP 枚举和空会话

在本节中,我们将了解如何使用各种应用程序协议来帮助我们从目标系统中提取敏感数据和记录。

SMBmap 和 SMBclient

SMBmap是一款流行且易于使用的工具,用于帮助我们发现设备上的任何 SMB 共享,并检测发现的任何共享的权限:

  1. 使用smbmap -H target语法,我们可以尝试执行端口扫描,查找 SMB 服务使用的端口;在我们的目标中,它是445并且是开放的:

中小企业股份

  1. SMBmap 将尝试在攻击者计算机和端口445上的目标之间建立会话,以枚举任何共享驱动器和文件夹。在我们的目标(Metasploitable)上,有一个tmp文件夹,它给我们读写权限。
  2. 使用smbmap -H 10.10.10.100 -r tmp命令,我们将能够列出指定目录的内容。在我们的示例中,我们列出了tmp文件夹的内容,如以下屏幕截图所示:

SMBmap 枚举

SMBmap 是枚举目标设备上 SMB 共享的优秀工具;然而,在你的武器库中有另一个工具总是好的。其他工具包括 SMBlookup、SMBclient 和 Nmap。

有关 SMBmap 的更多信息,请访问:https://tools.kali.org/information-gathering/smbmap

SMBclient是另一个方便的工具,其工作方式与 SMBmap 类似。要枚举目标上的 SMB 服务,我们可以使用smbclient -L //target命令:

SMB 客户端枚举

SMBclient 将尝试提取目标设备上的任何共享,如前一屏幕截图所示。有关 SMBclient 的更多信息,请访问:https://www.samba.org/samba/docs/current/man-html/smbclient.1.html

完成本节之后,您已经掌握了使用 SMBmap 和 SMBclient 在目标上执行 SMB 枚举的技能。在下一节中,我们将简要讨论另一种流行的 SMB 枚举工具 Enum4linux。

Enum4linux

Enum4linux是一种枚举工具,能够从 Windows 和 Linux 操作系统中检测和提取数据,包括网络上的SambaSMB主机。Enum4linux 能够发现以下内容:

  • 目标上的密码策略
  • 远程目标的操作系统
  • 设备上的共享(驱动器和文件夹)
  • 域和组成员资格
  • 用户列表

要扫描目标,请使用以下命令:enum4linux target。该工具将执行它可以执行的所有检查和枚举。刚开始的时候,输出可能有点让人不知所措:一定要仔细检查细节,因为它们将包含关于目标的有意义的信息。

Enum4linux 有时非常方便,可以在网络上执行扫描以发现任何共享资源。在下一节中,我们将深入研究 Windows 网络上的 LDAP 枚举。

LDAP 枚举

轻量级目录访问协议LDAP用于查询数据库或目录类型的服务。一个常见的例子是,公司环境中有一台管理整个组织的用户帐户的Active DirectoryAD服务器)。终端设备(如桌面计算机)需要在用户每次尝试登录到该桌面计算机时查询 AD 服务器。

LDAP 默认使用端口389;但是,数据包是以明文形式通过网络发送的。此外,使用LDAPSLDAP 安全)可以确保默认情况下客户端和 LDAP 服务器之间发送的信息是加密的;LDAPS 默认使用端口636。我们可以使用 Nmap 扫描端口为389636打开的网络上的设备。

我们可以使用一个名为 JXplorer(的工具 http://jxplorer.org 执行 LDAP 枚举。该工具不是在 Kali Linux 中本机安装的;因此,我们需要从 GitHub 存储库下载并运行它。

要开始 LDAP 枚举,让我们使用以下步骤:

  1. 使用以下命令下载并执行该工具:
git clone https://github.com/pegacat/jxplorer.git cd jxplorer chmod +x jxplorer.sh ./jxplorer.sh
  1. 成功执行./jxplorer.sh脚本后,用户界面将打开。单击连接图标(位于文件下)以插入目标的详细信息:

JXplorer 接口

在我们的实验室中,我们有一台 Windows Server 计算机,具有以下配置:

  • 已安装 Active Directory 域服务
  • 已安装 Active Directory 轻型目录服务
  • 域名:pentestlab.local
  • 创建的用户帐户:bob(属于域管理员用户组)

假设通过在渗透测试期间使用数据包嗅探工具(如 Wireshark),您能够在用户尝试向 AD 服务器进行身份验证时捕获用户凭据,您可以在前面屏幕截图的安全字段中使用这些用户帐户。

使用管理员用户帐户将提供必要的特权来提取 JXplorer 中的信息;您将能够从 Active Directory 服务器枚举敏感信息,如以下屏幕截图所示:

使用 JXplorer 的 LDAP 枚举

您将能够从攻击者的计算机上查看整个目录,并提取敏感信息。如果服务仅使用 LDAP,这将是一个挑战,因为用户凭据将被隐藏。

完成此练习后,让我们在下一节中使用rpcclient工具执行空会话攻击。

空会话

在空会话中,攻击者可以使用空帐户登录到目标。空帐户是实际上不存在的帐户。这怎么可能?有些系统容易受到匿名登录的攻击。一旦用户能够匿名登录,空用户就能够检索存储在目标上的敏感信息。

我们可以使用rpcclient -U "" 10.10.10.100命令尝试从 Kali Linux 机器(攻击者)对目标 Metasploitable 执行空会话枚举,如以下屏幕截图所示:

空会话攻击

使用srvinfo命令,目标将向我们返回其操作系统类型。要查看查询命令的完整列表,可以使用rpcclient --help命令。此外,您还可以访问https://www.samba.org/samba/docs/current/man-html/rpcclient.1.html

请记住,并非所有机器都容易受到此类攻击,但在渗透测试期间仍然值得执行。在下一节中,我们将讨论通过嘈杂的身份验证控件进行的用户枚举。

通过嘈杂的身份验证控件进行用户枚举

枚举是黑客或渗透测试人员试图执行暴力攻击以猜测或确认目标系统上的有效用户的技术。一个简单的例子是恶意用户或渗透测试人员对电子邮件门户执行密码猜测或暴力攻击。

下面是一个典型登录门户的示例。以下屏幕截图中显示的凭据是一个示例,不是真实的凭据:

攻击者可以尝试各种可能的用户名和密码组合,直到找到有效用户。然而,这种攻击被认为是嘈杂的,而不是隐蔽的(安静的)。作为一个比较,假设你正在玩一个在线第一人称射击游戏,你的任务是入侵敌人的基地并在不通知守卫的情况下偷走奖杯。如果你不够小心,发出任何响亮的声音,卫兵将被警告,任务将失败。在这个类比中,警卫是安全控制,传感器是防火墙、IDS/IP 和反恶意软件保护。因此,这种技术在网络上并不安静;但是,如果安全控件在您获得访问权限之前不执行锁定操作,此方法仍然可以让您访问系统。

很多时候,当用户在登录门户上输入错误的用户名时,会返回一条错误消息,通常说明输入了错误的用户名。这清楚地告诉攻击者数据库中不存在提供的用户名。此外,如果输入的密码不正确,系统通常会返回一条消息,说明为用户名输入的密码不正确。因此,从攻击者的角度来看,系统告诉我们数据库中存在用户名,但我们没有为其提供正确的密码。

现在,当用户名或密码不正确时,Web 开发人员和安全专业人员会提供通用响应,并显示类似的消息:用户名/密码不正确。此消息没有确切说明哪个值正确或不正确。

现在,您已经更好地了解了嘈杂的身份验证控件,让我们在下一节中尝试执行 web 枚举。

网络足迹和目击者列举

目击者是一种允许渗透测试人员在不离开终端的情况下捕获网站截图的工具。该工具在后台完成所有工作。想象一下,必须直观地分析多个网站,打开虚拟网络计算VNC)服务器,并使用远程桌面协议RDPs)。这可能是一项耗时的任务。目击者拍摄屏幕截图,离线存储,并提供 HTML 报告:

  1. 首先,您需要使用git clone https://github.com/FortyNorthSecurity/EyeWitness.git从其 GitHub 存储库下载 EyeWitness。
  2. 下载完成后,访问root/EyeWitness/setup目录并使用以下命令序列运行setup.sh脚本:

目击者设置屏幕

  1. 设置过程完成后,使用cd ..命令将一个目录转到root/EyeWitness目录。要截屏单个网站,请使用以下命令:
./EyeWitness.py --web --single example.com 

您可以在 Metasploitable 或 OWASP BWA 虚拟机上的一个 web 应用程序上尝试此工具。

EyeWitness 允许您使用操作符指定各种协议,例如:--web--rdp--vnc--all-protocols

  1. 任务完成后,目击者将指出其是否成功捕获目标的屏幕截图,并向您提供脱机报告的位置,如以下屏幕截图所示:

目击者报告向导

  1. 打开 HTML 报告时,左侧列包含有关 web 请求的信息,而右侧列包含屏幕截图:

目击者报告

当同时分析多个服务和网站时,此工具非常方便。

有关目击者的更多信息,请参见https://tools.kali.org/information-gathering/eyewitness

现在您已经完成了本节,可以使用目击者工具执行 web 枚举。

Metasploit 辅助模块

Metasploit 是 Rapid7 创建的一个开发框架(www.Rapid7.com。Metasploit 包含许多用于渗透测试的特性和功能。有许多模块,如漏洞利用、有效负载、编码器和辅助模块。辅助模块包含端口扫描器、网络嗅探器、模糊器等,以便于渗透测试的信息收集阶段:

  1. 要访问 Metasploit 接口,请打开新的终端并执行以下命令:
service postgresql start msfconsole
  1. 一旦用户界面加载,show auxiliary命令将提供 Metasploit 内所有辅助模块的列表。让我们用一个简单的例子来演示如何使用模块:假设您想对目标执行隐形(SYN)扫描。您可以从选择模块开始。

  2. 使用use auxiliary/scanner/portscan/syn命令。

  3. 使用show options命令检查说明和要求。

  4. 该模块要求配置远程主机;使用set RHOSTS target命令。

  5. 要执行模块,请使用run命令。

  6. 下面的屏幕截图演示了在我们的 Windows Server 机器(10.10.10.14上)上进行的隐形扫描,底部提供的结果表明发现多个端口打开:

  1. 此外,要在 Metasploit 中搜索模块,使用search keyword语法非常有用,因为框架中有许多不同的模块,学习它们可能非常具有挑战性和压倒性。

在本书的后面几章中,我们将更深入地探讨在实验室中使用 Metasploit 在目标设备上执行攻击。

总结

在本章中,我们介绍了使用各种工具发现重要服务器、子域和 IP 地址的各种 DNS 查询技术,并且由于目标 DNS 服务器上的错误配置,我们能够成功地从 DNS 服务器提取区域文件(区域传输)。

然后,我们使用 Nmap 执行各种类型的端口扫描,以确定端口状态、正在运行的服务及其版本以及目标的操作系统;我们还获得了目标上是否有防火墙的指示。最后,为了结束本章,我们执行 SMB 和 LDAP 枚举以收集网络设备上的用户共享和目录记录。

现在您已经完成了本章,您将能够在易受攻击的 DNS 服务器上成功执行 DNS 区域传输;分析系统以发现其操作系统、运行的服务和安全漏洞;在执行网络扫描时逃避检测;并在目标上执行 LDAP 和系统枚举。您还获得了一次直观地分析多个网站的技能。我希望本章对您学习渗透测试有帮助。

第 7 章与漏洞扫描器的合作中,我们将介绍使用漏洞扫描器查找目标上的安全弱点和缺陷的重要性。

问题

以下是基于本章所述主题的一些问题:

  1. 使用 DNS 的主要目的是什么?
  2. DNS 区域传输是什么意思?
  3. 什么工具允许我们对目标系统执行扫描并确定其运行的服务和操作系统?
  4. 在扫描过程中,使用什么方法规避防火墙?
  5. 什么工具可以用来枚举 Active Directory?

进一步阅读