介绍
在本实验中,你将学习如何使用 Nmap 的 dns-brute 脚本枚举 DNS 记录。目标是发现与目标 IP 地址相关联的有效主机名和子域名,从而揭示有关目标网络基础设施的有价值信息。
你将针对目标 IP 执行 dns-brute 脚本,扫描 DNS 端口,添加详细输出的详细程度,将结果保存到文件中,在 Xfce 终端中查看 DNS 记录,并将结果与 UDP 扫描进行比较。这种实践经验将为你提供使用 Nmap 进行 DNS 枚举的实用技能。
在本实验中,你将学习如何使用 Nmap 的 dns-brute 脚本枚举 DNS 记录。目标是发现与目标 IP 地址相关联的有效主机名和子域名,从而揭示有关目标网络基础设施的有价值信息。
你将针对目标 IP 执行 dns-brute 脚本,扫描 DNS 端口,添加详细输出的详细程度,将结果保存到文件中,在 Xfce 终端中查看 DNS 记录,并将结果与 UDP 扫描进行比较。这种实践经验将为你提供使用 Nmap 进行 DNS 枚举的实用技能。
在这一步中,我们将使用 Nmap 的 dns-brute 脚本对目标 IP 地址执行 DNS 枚举。DNS 枚举是通过查询 DNS 服务器来发现给定域名的有效主机名和子域名的过程。这可以揭示有关目标网络基础设施的有价值信息。
dns-brute 脚本的工作方式是尝试针对目标的 DNS 服务器解析大量常见子域名列表。如果子域名存在,DNS 服务器将返回一个 IP 地址,表明该子域名是有效的。
首先,让我们了解一下我们将使用的命令:
nmap:这是我们正在使用的网络映射工具。--script dns-brute:这告诉 Nmap 使用 dns-brute 脚本。192.168.1.1:这是目标 IP 地址。将其替换为你要扫描的实际 IP 地址。现在,让我们执行该命令。打开你的 Xfce 终端并输入以下命令:
nmap --script dns-brute 192.168.1.1
注意:将 192.168.1.1 替换为你要扫描的目标的实际 IP 地址。如果你没有特定的目标,可以使用本地 IP 地址,如 127.0.0.1(localhost),但你可能不会得到任何有趣的结果。
输出将显示 Nmap 尝试解析各种子域名。如果找到任何子域名,它们将与相应的 IP 地址一起显示。
示例输出(你看到的输出将取决于目标):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
NSE: Starting dns-brute scan
NSE: DNS Brute-force hostnames: 216.58.216.142
google.com A 216.58.216.142
www.google.com A 216.58.216.142
mail.google.com A 216.58.216.142
NSE: Finished dns-brute scan
Nmap done: 1 IP address (1 host up) scanned in 5.00 seconds
此输出表明 dns-brute 脚本找到了与 IP 地址 216.58.216.142 相关联的子域名 google.com、www.google.com 和 mail.google.com。
在这一步中,我们将重点使用 Nmap 和 dns-brute 脚本扫描 DNS 端口(端口 53)。通过指定端口,我们可以将 DNS 枚举工作目标对准标准 DNS 端口,这通常会更高效。
让我们来分析一下这个命令:
nmap:网络扫描工具。--script dns-brute:指定用于 DNS 枚举的 dns-brute 脚本。-p 53:此选项告诉 Nmap 仅扫描端口 53,这是 DNS 的标准端口。127.0.0.1:这是目标 IP 地址。在这种情况下,我们使用 127.0.0.1,它指的是本地机器(localhost)。现在,打开你的 Xfce 终端并执行以下命令:
nmap --script dns-brute -p 53 127.0.0.1
此命令将专门针对本地主机上的端口 53 运行 dns-brute 脚本。由于 127.0.0.1 通常不会托管有许多记录的 DNS 服务器,结果可能会有限。然而,这演示了如何针对特定端口进行 DNS 枚举。
示例输出(你看到的输出可能会有所不同):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
PORT STATE SERVICE
53/tcp open domain
| dns-brute:
|_ records-from-AXFR: No zone transfer allowed.
Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds
在这个示例中,Nmap 显示端口 53 是开放的并且正在运行 domain 服务(DNS)。dns-brute 脚本尝试进行区域传输(AXFR)但被拒绝。这是防止未经授权访问 DNS 记录的常见安全措施。
在这一步中,我们将为 Nmap 命令添加详细输出。详细输出会增加 Nmap 在扫描过程中显示的信息量,这有助于理解 Nmap 正在做什么以及排查任何问题。
Nmap 中的 -v 选项启用详细模式。使用一次 -v 会增加详细程度。你可以使用 -vv 获得更详细的输出。
让我们看看我们将使用的命令:
nmap:网络扫描工具。-v:启用详细模式,提供更详细的输出。--script dns-brute:指定用于 DNS 枚举的 dns-brute 脚本。192.168.1.1:目标 IP 地址。记得将其替换为你要扫描的实际 IP 地址。现在,打开你的 Xfce 终端并输入以下命令:
nmap -v --script dns-brute 192.168.1.1
注意:将 192.168.1.1 替换为你要扫描的目标的实际 IP 地址。
输出将比前几步更详细。你会看到有关扫描进度、正在运行的脚本以及出现的任何错误或警告的信息。
示例输出(你看到的输出将取决于目标和网络状况):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Starting dns-brute scan
NSE: Loaded 1795 records from /usr/share/nmap/nselib/data/dns-brute.lst
massdns: warning: id 4255 (inbound): query timed out
massdns: warning: id 4256 (inbound): query timed out
massdns: warning: id 4257 (inbound): query timed out
massdns: warning: id 4258 (inbound): query timed out
massdns: warning: id 4259 (inbound): query timed out
NSE: DNS Brute-force hostnames: 192.168.1.1
Nmap scan report for 192.168.1.1
Host is up (0.0020s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
22/tcp open ssh
NSE: Finished dns-brute scan
Nmap done: 1 IP address (1 host up) scanned in 10.00 seconds
详细输出显示了有关 dns-brute 脚本操作的更多详细信息,包括加载的记录数以及扫描过程中遇到的任何警告。这有助于诊断问题或理解脚本的行为。
在这一步中,我们将学习如何将 Nmap 扫描的结果保存到文件中。这对于后续分析或报告目的很有用。Nmap 提供了几种以不同格式保存输出的选项。在这里,我们将使用普通输出格式(-oN)。
让我们来分析一下这个命令:
nmap:网络扫描工具。--script dns-brute:指定用于 DNS 枚举的 dns-brute 脚本。-oN dns.txt:此选项告诉 Nmap 将输出以普通格式保存到名为 dns.txt 的文件中。该文件将保存在你当前的目录(~/project)中。127.0.0.1:目标 IP 地址。在这种情况下,我们使用 127.0.0.1,它指的是本地机器(localhost)。现在,打开你的 Xfce 终端并执行以下命令:
nmap --script dns-brute -oN dns.txt 127.0.0.1
扫描完成后,将在你的 ~/project 目录中创建一个名为 dns.txt 的文件。此文件将包含以人类可读格式的 Nmap 输出。
要验证文件是否已创建并包含扫描结果,你可以使用 cat 命令来显示文件的内容:
cat dns.txt
示例输出(你看到的输出可能会有所不同):
## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
PORT STATE SERVICE
53/tcp open domain
| dns-brute:
|_ records-from-AXFR: No zone transfer allowed.
## Nmap done at Fri Oct 27 10:15:02 2023 -- 1 IP address (1 host up) scanned in 2.50 seconds
此输出显示了 dns.txt 文件的内容,其中包括本地主机的 Nmap 扫描报告。
在这一步中,我们将查看在前几步中识别出的 DNS 记录。我们将使用 cat 命令来查看我们之前创建的 dns.txt 文件的内容。这将使我们能够检查 dns-brute 脚本的输出,并了解发现了哪些信息。
打开你的 Xfce 终端并输入以下命令:
cat dns.txt
此命令将在你的终端中显示 dns.txt 文件的内容。
输出将类似于此(确切的输出将取决于目标和 DNS 枚举的结果):
## Nmap 7.80 scan initiated Fri Oct 27 10:20:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
PORT STATE SERVICE
53/tcp open domain
| dns-brute:
|_ records-from-AXFR: No zone transfer allowed.
## Nmap done at Fri Oct 27 10:20:02 2023 -- 1 IP address (1 host up) scanned in 2.50 seconds
让我们分析一下输出:
Nmap scan report for localhost (127.0.0.1):这表明扫描是在本地机器上执行的。PORT STATE SERVICE:此部分显示目标上开放的端口。53/tcp open domain:这表明端口 53(标准 DNS 端口)是开放的,并运行着域名服务。dns-brute:此部分显示 dns-brute 脚本的结果。records-from-AXFR: No zone transfer allowed.:这表明目标不允许区域传输,这是一种防止未经授权访问 DNS 信息的安全措施。在这个示例中,由于不允许区域传输,dns-brute 脚本没有找到任何特定的 DNS 记录。但是,如果目标允许区域传输,或者 dns-brute 脚本找到了任何其他 DNS 记录,它们将列在这一部分中。
通过查看 dns-brute 脚本的输出,你可以获得有关目标 DNS 配置的有价值信息,并识别潜在的漏洞。
在这一步中,我们将对 DNS 端口(53)执行 UDP 扫描,并将结果与我们之前执行的 TCP 扫描进行比较。了解 TCP 和 UDP 扫描之间的差异对于全面的网络侦察至关重要。
DNS 通常使用 TCP 和 UDP 两种协议。UDP 一般用于标准的 DNS 查询,而 TCP 则用于区域传输或当响应大小超过 UDP 限制时。
要对端口 53 执行 UDP 扫描,请在你的 Xfce 终端中使用以下 Nmap 命令:
nmap -sU -p 53 127.0.0.1
让我们来分析一下这个命令:
nmap:网络扫描工具。-sU:指定 UDP 扫描。-p 53:指定端口 53(DNS)。127.0.0.1:目标 IP 地址(localhost)。执行该命令并观察输出。它可能如下所示:
Starting Nmap 7.80 ( https://nmap.org ) at Fri Oct 27 10:25:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
PORT STATE SERVICE
53/udp open|filtered domain
Nmap done: 1 IP address (1 host up) scanned in 3.50 seconds
现在,让我们将此输出与我们之前执行的 TCP 扫描(使用 --script dns-brute -p 53 127.0.0.1)进行比较。你可以参考你在第 2 步中看到的输出,或者重新运行 TCP 扫描:
nmap -sT -p 53 127.0.0.1
(注意:-sT 指定 TCP 连接扫描,如果未指定扫描类型,这是默认设置。)
TCP 扫描的输出可能如下所示:
Starting Nmap 7.80 ( https://nmap.org ) at Fri Oct 27 10:26:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
PORT STATE SERVICE
53/tcp open domain
Nmap done: 1 IP address (1 host up) scanned in 0.50 seconds
需要注意的关键差异:
open|filtered,而 TCP 扫描显示 open。open|filtered 意味着由于 UDP 的特性,Nmap 无法确定端口是开放还是被过滤。UDP 是无连接的,所以 Nmap 不会像 TCP 那样收到明确的“连接被拒绝”消息。总之,比较 TCP 和 UDP 扫描可以更全面地了解目标的网络服务。虽然由于其可靠性,TCP 通常更受青睐,但 UDP 扫描可以揭示仅通过 TCP 可能无法发现的服务。
在这个实验中,我们使用 Nmap 的 dns-brute 脚本探索了 DNS 枚举。我们学习了如何通过查询 DNS 服务器来发现给定域名的有效主机名和子域名。该实验展示了如何执行 nmap --script dns-brute <target_ip> 命令来识别与目标 IP 地址相关联的子域名。
此外,该实验强调了正确指定目标 IP 地址以及解释输出以识别发现的子域名及其相应 IP 地址的重要性。我们还提到了使用详细模式并将输出保存到文件以供后续查看。