域名与 Whois 枚举

网络安全Beginner
立即练习

简介

信息收集是任何安全评估中至关重要的第一步。在直接与目标服务器交互之前,安全专业人员会进行「被动侦察」,以收集公开可用的信息。

被动侦察之所以重要,是因为它能让你在目标基础设施上留下任何明显信号之前,先建立起背景认知。优秀的从业者如果能通过公开记录回答诸如「谁拥有该域名」、「涉及哪家注册商」以及「哪些域名服务器控制着命名空间」等基础问题,就不会贸然开始发送数据包。

被动侦察最基础的技术之一是 Whois 枚举。Whois 是一种广泛使用的互联网记录列表,用于识别域名的所有者以及如何与他们取得联系。互联网名称与数字地址分配机构(ICANN)对域名注册和所有权进行监管,并要求注册商维护这些公开记录。

在本实验中,你将学习如何使用 Linux 命令行查询 Whois 数据库。你将收集关于目标域名的基础情报,提取管理联系信息,并识别负责路由目标流量的权威域名服务器。

执行 Whois 查询

在这一步中,你将学习如何针对目标域名执行基本的 Whois 查询。我们将使用 ubuntu.com 作为本次教学练习的目标。

Linux 中的 whois 命令是一个查询 Whois 目录服务的客户端工具。它能检索有关域名注册的信息,包括注册商、创建和过期日期,以及拥有该域名的组织。

Whois 数据并非运行系统的直接映射,但它揭示了所有权和管理关系。这对于确定范围、归因以及了解哪些外部提供商可能属于目标足迹的一部分非常有用。

为了记录我们的发现,我们将使用输出重定向操作符 (>)。该操作符会将原本应打印到屏幕上的命令输出保存到文件中。

确保你处于默认工作目录 (~/project)。运行以下命令对 ubuntu.com 执行 Whois 查询,并将完整输出保存到名为 whois_full.txt 的文件中:

whois ubuntu.com > whois_full.txt

由于我们重定向了输出,屏幕上不会显示任何内容。要验证命令是否成功执行并查看文件的前几行,请使用 head 命令:

head -n 15 whois_full.txt

你应该会看到类似以下的输出,显示了初始注册详情:

   Domain Name: UBUNTU.COM
   Registry Domain ID: 121365156_DOMAIN_COM-VRSN
   Registrar WHOIS Server: whois.markmonitor.com
   Registrar URL: http://www.markmonitor.com
   Updated Date: 2024-04-27T10:28:21Z
   Creation Date: 2004-05-29T18:38:39Z
   Registry Expiry Date: 2026-05-29T18:38:39Z
   Registrar: MarkMonitor Inc.
   Registrar IANA ID: 292
   Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
   Registrar Abuse Contact Phone: +1.2086851750
   Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
   Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
   Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
   Name Server: NS1.CANONICAL.COM

这些原始数据包含大量信息,但手动阅读可能会让人不知所措。在接下来的步骤中,我们将学习如何过滤此文件以获取特定情报。

提取管理联系人

在这一步中,你将学习如何从我们收集的原始 Whois 数据中提取特定的联系信息。

在侦察过程中,识别管理和技术联系人非常有价值。这些电子邮件地址和电话号码可以提供对目标组织结构的洞察,并经常在评估的后期阶段(如社会工程学或识别关键人员)中使用。

即使现代隐私规则隐藏了个人详细信息,剩余的注册商和滥用投诉联系人仍然能告诉你关于该域名如何管理以及由哪些方负责的信息。

为了提取这些信息,我们将使用 grep 命令。grep 是 Linux 中一个强大的文本搜索工具,用于打印匹配特定模式的行。我们将对 grep 使用 -i 标志以忽略大小写,这意味着它将匹配「Email」、「email」或「EMAIL」。

运行以下命令在 whois_full.txt 文件中搜索单词「email」,并将结果保存到名为 contacts.txt 的新文件中:

grep -i "email" whois_full.txt > contacts.txt

现在,让我们使用 cat 命令查看 contacts.txt 文件的内容,该命令会读取文件并将全部内容输出到屏幕上:

cat contacts.txt

你的输出应该类似于这样,显示与域名关联的联系邮箱:

   Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
Registrant Email: Select Request Email Form at https://domains.markmonitor.com/whois/ubuntu.com
Tech Email: Select Request Email Form at https://domains.markmonitor.com/whois/ubuntu.com
...

注意:由于 GDPR 等现代隐私法规,许多注册商现在会从公开的 Whois 记录中屏蔽个人电子邮件地址。然而,你通常仍然可以找到滥用投诉邮箱或通用的管理地址,这些仍然是有用的情报片段。

识别目标域名服务器

在最后一步中,你将提取目标域名的权威域名服务器。

域名服务器是域名系统 (DNS) 的基础部分。它们就像互联网的目录,将人类可读的域名(如 ubuntu.com)转换为计算机用于通信的 IP 地址。识别目标的域名服务器可以告诉你哪家公司托管了他们的 DNS 基础设施。这可以揭示他们是内部管理自己的服务器,还是使用第三方云提供商(如 AWS、Cloudflare 或特定的注册商)。

这在战略上很有用,因为 DNS 提供商往往会成为攻击面的一部分。它们可能会暴露传输设置、配置错误,或提供关于目标如何运营其外部服务的线索。

我们将再次使用 grep 命令来过滤我们原始的 Whois 数据。这一次,我们要查找的是「Name Server」这一术语。

运行以下命令从 whois_full.txt 中提取域名服务器记录,并将其保存到名为 nameservers.txt 的文件中:

grep -i "Name Server" whois_full.txt > nameservers.txt

使用 cat 命令查看提取出的域名服务器:

cat nameservers.txt

你应该会看到类似以下的输出:

   Name Server: NS1.CANONICAL.COM
   Name Server: NS2.CANONICAL.COM
   Name Server: NS3.CANONICAL.COM
Name Server: ns1.canonical.com
Name Server: ns3.canonical.com
Name Server: ns2.canonical.com

在此示例中,域名服务器指向 CANONICAL.COM。Canonical 是开发和维护 Ubuntu 的公司。这告诉我们 Canonical 管理着自己的 DNS 基础设施,而不是依赖第三方服务,这是一条非常有价值的技术情报。

总结

恭喜!你已成功完成了「域名与 Whois 枚举」实验。

在本实验中,你学习了如何使用原生的 Linux 命令行工具进行被动侦察。你使用了 whois 命令查询公共域名注册数据库,并利用输出重定向 (>) 保存了你的发现。此外,你还练习了使用 grep 命令解析大量文本,成功提取了诸如管理联系邮箱和权威域名服务器等特定的、可操作的情报。

这些基础技能对于在开始任何主动扫描或参与之前绘制目标的外部足迹至关重要。