简介
在本实验中,你将学习如何使用 Nmap 执行 UDP 扫描。你将首先使用 -sU
选项对目标 IP 地址执行基本的 UDP 扫描。然后,你将扫描特定的 UDP 端口,组合 UDP 和 TCP 扫描,并添加版本检测。最后,你将在 Xfce 终端中查看 UDP 扫描结果,并在 Xfce 文本编辑器中比较输出。
在本实验中,你将学习如何使用 Nmap 执行 UDP 扫描。你将首先使用 -sU
选项对目标 IP 地址执行基本的 UDP 扫描。然后,你将扫描特定的 UDP 端口,组合 UDP 和 TCP 扫描,并添加版本检测。最后,你将在 Xfce 终端中查看 UDP 扫描结果,并在 Xfce 文本编辑器中比较输出。
在本步骤中,我们将使用 Nmap 执行基本的 UDP 扫描。UDP(用户数据报协议)是一种无连接协议,这意味着与 TCP 不同,在发送数据之前无需进行握手来建立连接。这使得 UDP 扫描与 TCP 扫描有所不同。Nmap 的 -sU
选项用于启动 UDP 扫描。
在开始之前,需要了解 UDP 扫描可能不如 TCP 扫描可靠。由于 UDP 是无连接的,即使端口开放,Nmap 也可能无法始终从该端口收到响应。防火墙和网络状况也会影响 UDP 扫描的准确性。
让我们使用以下命令扫描目标 IP 地址 192.168.1.1
:
sudo nmap -sU 192.168.1.1
此命令告诉 Nmap 对 IP 地址 192.168.1.1
执行 UDP 扫描(-sU
)。你需要使用 sudo
,因为 UDP 扫描通常需要提升权限才能发送原始数据包。
运行该命令后,你将看到类似于以下的输出:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.0010s latency).
Not shown: 997 closed udp ports
PORT STATE SERVICE
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
5353/udp open|filtered zeroconf
Nmap done: 1 IP address (1 host up) scanned in 5.23 seconds
输出解释:
Starting Nmap...
:显示 Nmap 版本和扫描开始时间。Nmap scan report for 192.168.1.1
:指示目标 IP 地址。Host is up
:确认目标主机可达。Not shown: 997 closed udp ports
:表示 Nmap 未显示 997 个关闭的 UDP 端口。默认情况下,Nmap 仅显示开放、开放 | 过滤或过滤的端口。PORT STATE SERVICE
:列出端口号、其状态以及在该端口上运行的服务(如果已知)。
open
:表示 Nmap 从该端口收到了响应,表明有服务在该端口监听。open|filtered
:表示该端口要么开放要么被过滤。Nmap 无法确定其处于哪种状态。这通常意味着防火墙正在阻止 Nmap 的探测。filtered
:表示防火墙正在阻止 Nmap 的探测,并且 Nmap 无法确定该端口是开放还是关闭。Nmap done
:显示扫描完成时间和扫描的 IP 地址数量。重要注意事项:
192.168.1.1
替换为你要扫描的目标的实际 IP 地址。在本步骤中,我们将把 UDP 扫描聚焦在特定端口上。当你想要检查目标机器上是否运行着特定服务,而又不想扫描所有 UDP 端口(这可能很耗时)时,这会很有用。我们将扫描本地主机(127.0.0.1)上的 53 号端口(DNS)和 123 号端口(NTP)。
Nmap 中的 -p
选项允许你指定想要扫描的端口。你可以提供单个端口、端口范围(例如 1 - 100
)或用逗号分隔的端口列表(例如 21,22,80
)。
要扫描 127.0.0.1 上的 UDP 端口 53 和 123,请使用以下命令:
sudo nmap -sU -p 53,123 127.0.0.1
此命令告诉 Nmap 对 IP 地址 127.0.0.1
(本地主机)的 53 和 123 号端口(-p 53,123
)执行 UDP 扫描(-sU
)。同样,UDP 扫描通常需要使用 sudo
。
运行该命令后,你可能会看到类似于以下的输出:
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.000047s latency).
PORT STATE SERVICE
53/udp open|filtered domain
123/udp closed ntp
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
输出解释:
Nmap scan report for localhost (127.0.0.1)
:表示目标是本地主机。PORT STATE SERVICE
:列出端口号、其状态以及在该端口上运行的服务(如果已知)。
53/udp open|filtered domain
:53 号端口(DNS)要么开放要么被过滤。这意味着由于潜在的防火墙规则或网络状况,Nmap 无法确定该端口是否开放。123/udp closed ntp
:123 号端口(NTP)是关闭的。这意味着没有服务在该端口监听。关键要点:
-p
选项允许你针对特定端口,使扫描更高效。在本步骤中,我们将在单个 Nmap 命令中组合 UDP 和 TCP 扫描。这使我们能够更全面地了解目标机器上运行的服务,因为有些服务使用 UDP,而有些服务使用 TCP。
Nmap 的 -sT
选项执行 TCP 连接扫描。这是 TCP 扫描的最基本形式,Nmap 会尝试与目标端口建立完整的 TCP 连接。它通常很可靠,但很容易被检测到。
要对 192.168.1.1
执行 UDP 扫描和 TCP 连接扫描,请使用以下命令:
sudo nmap -sU -sT 192.168.1.1
此命令告诉 Nmap 对 IP 地址 192.168.1.1
执行 UDP 扫描(-sU
)和 TCP 连接扫描(-sT
)。通常需要使用 sudo
,特别是对于扫描的 UDP 部分。
运行该命令后,你将看到包含 UDP 和 TCP 扫描结果的输出。输出可能如下所示:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for 192.168.1.1
Host is up (0.0010s latency).
Not shown: 997 closed udp ports
PORT STATE SERVICE
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
5353/udp open|filtered zeroconf
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 7.23 seconds
输出解释:
组合 UDP 和 TCP 扫描的好处:
重要注意事项:
组合扫描类型可能会增加扫描时间。如果你需要更快的结果,可以考虑针对特定端口进行扫描。
在本步骤中,我们将在 UDP 扫描中添加版本检测。版本检测使 Nmap 能够尝试确定在开放端口上运行的应用程序名称和版本号。这可以提供有关潜在漏洞的有价值信息。
Nmap 中的 -sV
选项启用版本检测。当与用于 UDP 扫描的 -sU
结合使用时,它变为 -sUV
。Nmap 将向开放的 UDP 端口发送探测,以尝试识别服务及其版本。
要对 192.168.1.1
执行带有版本检测的 UDP 扫描,请使用以下命令:
sudo nmap -sUV 192.168.1.1
此命令告诉 Nmap 对 IP 地址 192.168.1.1
执行 UDP 扫描(-sU
)和版本检测(-sV
)。组合选项是 -sUV
。和以前一样,UDP 扫描通常需要使用 sudo
。
运行该命令后,你可能会看到类似于以下的输出:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00088s latency).
Not shown: 997 closed udp ports
PORT STATE SERVICE VERSION
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
5353/udp open|filtered zeroconf Apple Bonjour
Service Info: OS: Apple embedded
Nmap done: 1 IP address (1 host up) scanned in 12.54 seconds
输出解释:
VERSION
列,它显示检测到的服务版本(如果可用)。5353/udp open|filtered zeroconf Apple Bonjour
:Nmap 将在端口 5353 上运行的服务识别为 Apple Bonjour。Service Info: OS: Apple embedded
:Nmap 还会尝试根据服务信息确定操作系统。关键要点:
-sV
选项(或与 UDP 扫描结合使用时的 -sUV
)启用版本检测。重要注意事项:
在本步骤中,我们将专注于在 Xfce 终端中直接查看和分析 UDP 扫描结果。虽然 Nmap 会直接将输出提供给终端,但有时将输出保存到文件中以便于查看和分析会很有帮助。我们将使用终端命令来过滤和查看扫描中特定于 UDP 的部分。
首先,让我们运行一次 UDP 扫描并将输出保存到文件中。这将使我们能够更轻松地处理结果。我们将使用 -oN
选项以“正常”格式保存输出。
sudo nmap -sUV 192.168.1.1 -oN udp_scan_results.txt
此命令对 192.168.1.1
执行带有版本检测的 UDP 扫描,并将输出保存到当前目录(~/project
)中名为 udp_scan_results.txt
的文件中。
现在我们已将结果保存到文件中,便可以使用终端命令来查看和过滤特定于 UDP 的信息。
要查看文件的全部内容,可以使用 cat
命令:
cat udp_scan_results.txt
这将在终端中显示整个 Nmap 扫描报告。不过,我们主要感兴趣的是 UDP 结果。我们可以使用 grep
命令来过滤输出,只显示包含“udp”的行。
grep "udp" udp_scan_results.txt
此命令将在 udp_scan_results.txt
文件中搜索包含字符串“udp”的行,并在终端中显示这些行。输出将向你展示开放或被过滤的 UDP 端口,以及 Nmap 能够检测到的任何版本信息。
示例输出:
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
5353/udp open|filtered zeroconf Apple Bonjour
你还可以使用 less
命令逐页查看文件:
less udp_scan_results.txt
在 less
中,你可以通过输入 /udp
并按 Enter 键来搜索“udp”。按 n
键跳转到下一个匹配项。按 q
键退出 less
。
通过使用这些简单的终端命令,你可以有效地查看和分析 Nmap 生成的 UDP 扫描结果。这使你能够快速识别开放的 UDP 端口以及任何相关的服务信息。
在本步骤中,我们将使用 Xfce 文本编辑器来比较不同 Nmap 扫描的输出。这对于识别开放端口、服务或版本随时间的变化,或者比较不同选项扫描的结果很有用。
首先,假设你已经执行了两次 Nmap 扫描,并将输出保存到了不同的文件中。例如,你可能运行了一次基本的 UDP 扫描和一次带有版本检测的 UDP 扫描,分别将结果保存到了 udp_scan_basic.txt
和 udp_scan_version.txt
中。如果你没有这些文件,可以使用以下命令创建它们:
sudo nmap -sU 192.168.1.1 -oN udp_scan_basic.txt
sudo nmap -sUV 192.168.1.1 -oN udp_scan_version.txt
现在,我们将使用 xfce4-terminal
命令打开 Xfce 文本编辑器(mousepad
)并加载这两个文件进行比较。
mousepad udp_scan_basic.txt udp_scan_version.txt
此命令将打开两个 mousepad
实例,每个实例显示一个 Nmap 输出文件。
比较输出:
udp_scan_basic.txt
):此文件将包含基本 UDP 扫描的结果,显示开放或被过滤的 UDP 端口。udp_scan_version.txt
):此文件将包含带有版本检测的 UDP 扫描的结果。除了开放或被过滤的 UDP 端口外,它还可能显示检测到的服务版本。示例比较:
udp_scan_basic.txt
可能显示:137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
5353/udp open|filtered zeroconf
udp_scan_version.txt
可能显示:137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
5353/udp open|filtered zeroconf Apple Bonjour
Service Info: OS: Apple embedded
在这个示例中,版本检测扫描能够将在端口 5353 上运行的服务识别为“Apple Bonjour”并提供操作系统信息,而基本扫描中没有这些信息。
通过在 Xfce 文本编辑器中比较输出,你可以更好地理解扫描之间的差异以及不同 Nmap 选项提供的额外信息。这对于识别潜在漏洞和规划进一步行动可能很有价值。
在本实验中,参与者学习了如何使用 Nmap 执行 UDP 扫描。他们首先使用 -sU
选项对 IP 192.168.1.1
进行基本的 UDP 扫描,了解到 UDP 是无连接的,并且扫描可能不如 TCP 扫描可靠。他们还扫描了特定的 UDP 端口,组合了 UDP 和 TCP 扫描,添加了版本检测,并在 Xfce 终端和文本编辑器中查看和比较了结果。