在 Gobuster 的 DNS 扫描结果中显示 IP 地址

Beginner
立即练习

引言

Gobuster 是一个强大的工具,用于暴力破解 URI(目录和文件)、DNS 子域、Amazon S3 存储桶等。在网络安全和渗透测试的场景下,发现子域是侦察阶段的关键一步。了解与这些子域关联的 IP 地址可以为组织的网络基础设施提供宝贵的见解,帮助识别潜在的攻击向量或配置错误。

本实验将指导你使用 Gobuster 进行 DNS 子域枚举。具体来说,你将学习如何利用一个特定的标志来显示发现的子域及其对应的 IP 地址,从而更有效地绘制目标基础设施的地图。

运行基础的 gobuster dns 扫描

在本步骤中,你将使用 Gobuster 执行基础的 DNS 子域扫描。这将展示 DNS 扫描的默认输出,通常只列出发现的子域,而不包含其对应的 IP 地址。我们将使用 example.com 作为目标域,并使用一个通用的单词列表(wordlist)进行扫描。

首先,请确保 Gobuster 已安装。如果未安装,你可以使用 sudo apt install gobuster 进行安装。

现在,在你的终端中执行以下命令:

gobuster dns -d example.com -w /usr/share/wordlists/dirb/common.txt -q
  • gobuster dns: 指定我们要执行 DNS 子域扫描。
  • -d example.com: 将 example.com 设置为目标域。
  • -w /usr/share/wordlists/dirb/common.txt: 指定用于暴力破解子域的单词列表。这是一个在许多 Linux 发行版中都可用的常用单词列表。
  • -q: 抑制横幅和进度输出,只显示结果。

你将看到为 example.com 找到的子域列表。请注意,这里只显示了子域名称。

Found: www.example.com
Found: mail.example.com
Found: ftp.example.com
Found: blog.example.com
Found: dev.example.com

使用 -i 标志重新运行扫描

在本步骤中,你将重新运行 Gobuster DNS 扫描,但这次会包含 -i 标志。-i 标志指示 Gobuster 显示与每个发现的子域关联的 IP 地址。这对于更全面地了解目标的基础设施至关重要。

在你的终端中执行以下命令:

gobuster dns -d example.com -w /usr/share/wordlists/dirb/common.txt -i -q

与之前的命令相比,唯一的区别是添加了 -i 标志。

仔细观察输出。你现在应该会看到每个发现的子域旁边都列出了 IP 地址。

Found: www.example.com (93.184.216.34)
Found: mail.example.com (93.184.216.34)
Found: ftp.example.com (93.184.216.34)
Found: blog.example.com (93.184.216.34)
Found: dev.example.com (93.184.216.34)

这里显示的 IP 地址是 example.com 的,通常为了演示目的,它会指向所有子域的单个 IP。在实际场景中,你可能会看到不同子域有不同的 IP 地址,这表明它们指向不同的服务器或服务。

比较带与不带 -i 标志的输出

在本步骤中,你将直观地比较前两个 Gobuster 命令的输出。这次比较将突出 -i 标志在侦察过程中带来的显著差异。

回顾步骤 1(不带 -i)的输出:

Found: www.example.com
Found: mail.example.com
Found: ftp.example.com
Found: blog.example.com
Found: dev.example.com

以及步骤 2(带 -i)的输出:

Found: www.example.com (93.184.216.34)
Found: mail.example.com (93.184.216.34)
Found: ftp.example.com (93.184.216.34)
Found: blog.example.com (93.184.216.34)
Found: dev.example.com (93.184.216.34)

关键区别在于使用 -i 标志时,每个子域旁边都出现了 (IP_ADDRESS)。这些额外的信息对于理解底层基础设施至关重要。没有 IP 地址,你只知道子域的名称。有了 IP 地址,你就知道这些子域解析到哪里,这可以指向特定的服务器、云服务或网络的不同部分。

这次比较展示了一个简单的标志如何显著增强你的侦察工作的实用性。

识别与每个子域关联的 IP 地址

在本步骤中,你将专门识别并记录上一步发现的子域所关联的 IP 地址。虽然 example.com 可能为所有子域显示相同的 IP,但在实际场景中,此步骤将涉及识别可能不同的 IP 地址。

从步骤 2 命令的输出中:

Found: www.example.com (93.184.216.34)
Found: mail.example.com (93.184.216.34)
Found: ftp.example.com (93.184.216.34)
Found: blog.example.com (93.184.216.34)
Found: dev.example.com (93.184.216.34)

你可以看到,对于 example.com,所有列出的子域都解析到 IP 地址 93.184.216.34

在实际的侦察场景中,如果你扫描的是其他域,你可能会发现:

  • sub1.target.com 解析到 192.168.1.10
  • sub2.target.com 解析到 192.168.1.11
  • cdn.target.com 解析到 203.0.113.50(一个 CDN IP)
  • admin.target.com 解析到 10.0.0.5(一个内部 IP,如果暴露)

识别这些不同的 IP 地址有助于:

  • 服务器指纹识别 (Server Fingerprinting):不同的 IP 可能表明不同的服务器、操作系统或 Web 服务器软件。
  • 云服务识别 (Cloud Service Identification):属于已知云提供商(AWS, Azure, GCP)的 IP 可以揭示特定云服务的用法。
  • 网络分段 (Network Segmentation):不同的 IP 地址范围可能暗示组织内部不同的网络段或部门。

此步骤强调了不仅要找到子域,还要理解它们的网络位置的重要性。

理解这如何帮助进行基础设施映射

在最后一步中,你将理解在 DNS 扫描结果中显示 IP 地址的更广泛含义,特别是它如何帮助侦察过程中的基础设施映射。

基础设施映射是创建目标网络和系统的详细图表或理解的过程。当你结合子域枚举和 IP 地址解析时,你会获得几个优势:

  1. 识别托管提供商 (Hosting Providers):不同的 IP 地址范围通常属于不同的托管提供商(例如,AWS, Google Cloud, DigitalOcean)。了解这一点可以帮助你理解组织基础设施的不同部分托管在哪里。
  2. 发现隐藏服务 (Hidden Services):有时,子域可能指向内部的或不太为人所知的服务,这些服务没有从主网站直接链接。解析它们的 IP 地址可以揭示它们是否在同一服务器、不同服务器,甚至不同的网络段上。
  3. 精确定位攻击面 (Attack Surfaces):如果多个子域解析到同一个 IP,这可能表明一个服务器托管了多个服务,从而可能整合了攻击向量。反之,不同的 IP 地址则表明服务是分布式的,每个服务都有其潜在的漏洞。
  4. 绕过 WAFs/CDNs:如果主域位于 Web 应用程序防火墙 (WAF) 或内容分发网络 (CDN) 之后,找到解析到源 IP(实际服务器 IP)的子域可以让你绕过 WAF/CDN 并直接与服务器交互。
  5. 网络分段分析 (Network Segmentation Analysis):不同的 IP 地址块可能表明组织内部不同的部门、地理位置或网络段。这有助于理解目标的内部网络结构。

通过在 Gobuster 中使用 -i 标志,你将一个简单的子域列表转化为有价值的基础设施情报,显著增强了你的侦察能力。这些信息对于规划后续的渗透测试步骤至关重要,例如端口扫描、漏洞分析和定向攻击。

总结

在本实验中,你学会了如何有效地使用 Gobuster 进行 DNS 子域枚举,更重要的是,如何显示每个已发现子域关联的 IP 地址。你首先执行了基本的 Gobuster DNS 扫描,观察了其默认输出,然后使用 -i 标志重新运行扫描以包含 IP 地址。通过对比,你理解了这个标志所带来的关键区别。最后,你探讨了识别这些 IP 地址如何对于全面基础设施映射和网络安全侦察至关重要。这项技能对于深入了解目标的网络环境和识别潜在的攻击面非常有价值。