执行基本的 Nmap UDP 扫描
在这一步中,我们将使用 Nmap 扫描你在上一步中设置的 UDP 服务器。这个过程至关重要,因为它将帮助你了解 Nmap 如何识别开放的 UDP 端口以及运行在这些端口上的服务。在这一步结束时,你将更好地掌握如何使用 Nmap 进行 UDP 扫描,这是网络安全领域的一项基本技能。
理解 Nmap UDP 扫描
Nmap 是 Network Mapper 的缩写,是一款著名的免费开源工具,用于网络发现和安全审计。在扫描 UDP 端口时,Nmap 的工作方式与 TCP 端口扫描有所不同。
UDP,即用户数据报协议,是一种无连接协议。与 TCP 在数据传输前建立连接不同,UDP 只是直接发送数据,无需先建立连接。这意味着用于 TCP 端口的传统基于连接的扫描方法对 UDP 不起作用。
当 Nmap 扫描 UDP 端口时,它会向目标端口发送空的 UDP 数据包,然后等待响应。如果端口关闭,目标系统通常会返回一个 ICMP“端口不可达”消息。然而,如果端口是开放的,情况就会变得复杂一些。可能根本没有响应,这使得很难判断端口是否真的开放。或者,如果端口上运行的 UDP 服务识别出数据包格式,它可能会发送响应。
需要注意的是,UDP 扫描通常比 TCP 扫描慢且可靠性低。这是因为 UDP 不像 TCP 那样具有内置的错误检查和重传机制。
执行 UDP 扫描
-
首先,打开一个新的终端窗口。确保保持运行 UDP 服务器的前一个终端窗口处于打开状态。这很重要,因为我们将扫描该终端中当前正在运行的 UDP 服务器。
-
接下来,我们需要导航到项目目录。在新终端中,运行以下命令:
cd /home/labex/project
此命令将当前工作目录更改为项目目录,我们所有相关的文件和配置都位于该目录中。
- 现在,是时候运行 Nmap UDP 扫描了。我们将扫描本地主机(127.0.0.1)的 9999 端口。运行以下命令:
sudo nmap -sU -p 9999 127.0.0.1 > /home/labex/project/udp_scan_results.txt
让我们分解这个命令,了解每个部分的作用:
sudo
:用于以提升的权限运行命令。UDP 扫描需要这些提升的权限,因为它涉及在底层网络层发送数据包。
nmap
:这是我们使用的扫描工具,是网络发现和安全审计操作的核心。
-sU
:此选项告诉 Nmap 执行 UDP 扫描。
-p 9999
:此选项指定我们只扫描 9999 端口。
127.0.0.1
:这是目标 IP 地址。在这种情况下,它是本地主机,意味着我们正在扫描自己的机器。
> /home/labex/project/udp_scan_results.txt
:这部分将 Nmap 扫描的输出重定向到项目目录中名为 udp_scan_results.txt
的文件。这样,我们以后可以查看扫描结果。
- 扫描完成后,我们可以查看结果。运行以下命令:
cat /home/labex/project/udp_scan_results.txt
你应该会看到类似于以下的输出:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-15 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000054s latency).
PORT STATE SERVICE
9999/udp open|filtered unknown
Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds
理解扫描结果
让我们仔细查看扫描结果,了解它们的含义。
open|filtered
状态表示 Nmap 没有收到 ICMP“端口不可达”消息。对此有几种可能的解释:
- 端口是开放的,并且 UDP 服务按预期运行。
- 端口可能被防火墙过滤。防火墙可能会阻止 ICMP“端口不可达”消息或 UDP 流量本身。
- 由于某些原因,目标系统可能没有发送 ICMP“端口不可达”消息。
在我们的例子中,由于我们自己设置了 UDP 服务器,我们知道端口是开放的。unknown
服务标签意味着 Nmap 根据其服务指纹识别无法确定该端口上运行的是什么服务。
如前所述,UDP 扫描不如 TCP 扫描那么确定。这就是为什么 Nmap 通常会为 UDP 端口显示 open|filtered
状态,使得准确确定 UDP 端口的状态更具挑战性。