在 Nmap 中结合 TCP 和 UDP 扫描

NmapNmapBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何在 Nmap 中结合 TCP 和 UDP 扫描。本实验涵盖了对目标 IP 运行组合扫描、扫描特定端口、增加扫描的详细程度、保存组合结果、比较 TCP 和 UDP 输出,以及在 Xfce 终端中分析结果。你将使用诸如 nmap -sS -sU 之类的命令并搭配不同选项来执行各种扫描任务。

请注意,在实际场景中,你应该仅在获得明确许可的情况下扫描网络和主机。对于本实验,你可以使用 192.168.1.1,如有需要,也可以用你的 LabEx VM 的 IP 进行替换。

使用 nmap -sS -sU 192.168.1.1 运行组合扫描

在本步骤中,你将学习如何使用 Nmap 执行组合的 TCP SYN(隐蔽)扫描和 UDP 扫描。这种类型的扫描对于识别目标主机上运行的 TCP 和 UDP 服务很有用。

在开始之前,让我们简要解释一下命令中使用的标志:

  • -sS:此标志告诉 Nmap 执行 TCP SYN 扫描,也称为隐蔽扫描。之所以称为“隐蔽”,是因为它不会完成完整的 TCP 握手,从而降低被目标记录的可能性。
  • -sU:此标志告诉 Nmap 执行 UDP 扫描。由于 UDP 是无连接协议,UDP 扫描通常比 TCP 扫描慢且可靠性低。
  • 192.168.1.1:这是你要扫描的目标 IP 地址。注意:在实际场景中,你应该仅扫描获得明确许可的网络和主机。对于本实验,我们假设 192.168.1.1 是你测试环境中的有效目标。如果你在此地址没有主机,可以用你的 LabEx VM 的 IP 地址(通常是 127.0.0.1localhost)进行替换。

现在,让我们执行组合扫描。打开你的 Xfce 终端并输入以下命令:

sudo nmap -sS -sU 192.168.1.1

系统将提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。

输出将显示目标主机上 TCP 和 UDP 协议的开放、关闭或被过滤的端口。可能需要几分钟才能完成,尤其是 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.00020s latency).
Not shown: 998 closed tcp ports (reset)
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http

Nmap scan report for 192.168.1.1
Host is up (0.00020s latency).
Not shown: 996 closed udp ports (reset)
PORT      STATE         SERVICE
53/udp    open|filtered domain
67/udp    open|filtered dhcps
137/udp   open|filtered netbios-ns

Nmap done: 1 IP address (1 host up) scanned in 5.00 seconds

在此示例中,Nmap 发现 TCP 端口 22 和 80 开放,UDP 端口 53、67 和 137 开放或被过滤。open|filtered 状态表示由于网络条件或防火墙规则,Nmap 无法确定端口是开放还是被过滤。

使用 nmap -sS -sU -p 22,53 127.0.0.1 扫描特定端口

在上一步中,你对目标主机执行了组合的 TCP 和 UDP 扫描。现在,你将学习如何使用 Nmap 扫描特定端口。当你想将扫描重点放在特定服务或漏洞上时,这很有用。

Nmap 中的 -p 选项允许你指定要扫描的端口。你可以指定单个端口、端口范围或用逗号分隔的端口列表。

在本步骤中,你将扫描本地主机(127.0.0.1)上的 22 号端口(SSH)和 53 号端口(DNS)。

打开你的 Xfce 终端并输入以下命令:

sudo nmap -sS -sU -p 22,53 127.0.0.1

同样,系统会提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。

此命令告诉 Nmap 对本地主机的 22 号和 53 号端口执行 TCP SYN 扫描和 UDP 扫描。

示例输出(实际输出可能会有所不同):

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.000027s latency).

PORT   STATE SERVICE
22/tcp open  ssh

Nmap scan report for localhost (127.0.0.1)
Host is up (0.000027s latency).

PORT   STATE         SERVICE
53/udp open|filtered domain

Nmap done: 1 IP address (1 host up) scanned in 1.50 seconds

在此示例中,Nmap 发现 TCP 端口 22(SSH)开放,UDP 端口 53(DNS)开放或被过滤。open|filtered 状态表示由于网络条件或防火墙规则,Nmap 无法确定端口是开放还是被过滤。由于我们正在扫描本地主机,服务很可能正在运行,但防火墙可能会干扰扫描。

通过指定要扫描的端口,你可以显著减少扫描时间,并将重点放在你感兴趣的服务上。

使用 nmap -v -sS -sU 192.168.1.1 增加详细程度

在本步骤中,你将学习如何增加 Nmap 扫描的详细程度。详细程度会提供有关扫描过程的更详细信息,这有助于故障排除或理解 Nmap 的行为。

Nmap 中的 -v 选项会增加详细程度级别。你可以多次使用它(例如 -vv)以获得更详细的输出。

让我们对你在第一步中执行的组合 TCP SYN 和 UDP 扫描增加详细程度。打开你的 Xfce 终端并输入以下命令:

sudo nmap -v -sS -sU 192.168.1.1

系统将提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。

此命令将执行与之前相同的组合扫描,但详细程度增加。

示例输出(实际输出将因目标主机和详细程度级别而异):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 0 scripts for scanning.
Initiating SYN Stealth Scan at 10:10
Scanning 192.168.1.1 [1000 ports]
Completed SYN Stealth Scan at 10:10, 0.00s elapsed (1000 total ports)
Initiating UDP Scan at 10:10
Scanning 192.168.1.1 [1000 ports]
Completed UDP Scan at 10:10, 5.00s elapsed (1000 total ports)
Nmap scan report for 192.168.1.1
Host is up (0.00020s latency).
Not shown: 998 closed tcp ports (reset)
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http

Nmap scan report for 192.168.1.1
Host is up (0.00020s latency).
Not shown: 996 closed udp ports (reset)
PORT      STATE         SERVICE
53/udp    open|filtered domain
67/udp    open|filtered dhcps
137/udp   open|filtered netbios-ns

Nmap done: 1 IP address (1 host up) scanned in 5.00 seconds

请注意,输出现在包括有关扫描启动、正在扫描的端口数量以及每个扫描阶段所花费时间的信息。这有助于监控扫描进度并识别任何潜在问题。

使用 nmap -sS -sU -oN tcpudp.txt 127.0.0.1 保存组合扫描结果

在本步骤中,你将学习如何将 Nmap 扫描结果保存到文件中。这对于后续分析、报告或与之前的扫描进行比较很有用。

Nmap 提供了多种以不同格式保存扫描结果的选项。-oN 选项以“普通”的人类可读格式保存结果。

在本步骤中,你将把对本地主机(127.0.0.1)进行的组合 TCP SYN 和 UDP 扫描结果保存到你 ~/project 目录下一个名为 tcpudp.txt 的文件中。

打开你的 Xfce 终端并输入以下命令:

sudo nmap -sS -sU -oN tcpudp.txt 127.0.0.1

系统会提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。

此命令将执行组合扫描并将结果保存到 tcpudp.txt 文件中。

扫描完成后,你可以使用 cat 命令查看文件内容:

cat tcpudp.txt

示例输出(实际输出可能会有所不同):

## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023 as: nmap -sS -sU -oN tcpudp.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000027s latency).
PORT   STATE SERVICE
22/tcp open  ssh

Nmap scan report for localhost (127.0.0.1)
Host is up (0.000027s latency).

PORT   STATE         SERVICE
53/udp open|filtered domain

## Nmap done at Fri Oct 27 10:15:01 2023 -- 1 IP address (1 host up) scanned in 1.50 seconds

输出以人类可读格式显示扫描结果,包括开放端口及其相关服务。该文件还包括有关 Nmap 版本、扫描启动时间和扫描持续时间的信息。

现在你可以使用此文件进行进一步分析或报告。

在 Xfce 终端中比较 TCP 和 UDP 输出

在本步骤中,你将比较 TCP 和 UDP 扫描的结果,以了解在每个协议上运行的服务之间的差异。你将使用 grep 命令来过滤上一步中创建的 tcpudp.txt 文件的输出,并观察其中的差异。

首先,让我们使用 cat 命令显示 tcpudp.txt 文件的内容:

cat tcpudp.txt

你应该会看到本地主机(127.0.0.1)的 TCP 和 UDP 组合扫描结果。

现在,让我们过滤输出,只显示 TCP 扫描结果。使用 grep 命令搜索包含“tcp”的行:

grep "tcp" tcpudp.txt

示例输出:

22/tcp open  ssh

这显示了本地主机上开放的 TCP 端口。在这个例子中,端口 22(SSH)是开放的。

接下来,让我们过滤输出,只显示 UDP 扫描结果。使用 grep 命令搜索包含“udp”的行:

grep "udp" tcpudp.txt

示例输出:

53/udp open|filtered domain

这显示了本地主机上开放或被过滤的 UDP 端口。在这个例子中,端口 53(域名系统)是开放或被过滤的。

通过比较 TCP 和 UDP 的输出,你可以看到每个协议上运行着哪些服务。TCP 通常用于诸如 SSH 之类的可靠的、面向连接的服务,而 UDP 通常用于诸如 DNS(域名系统)之类的无连接服务。UDP 的“open|filtered”状态表示由于 UDP 协议的性质,Nmap 无法确定该端口是开放还是被过滤。

总之,通过使用 grep 过滤 TCP 和 UDP 组合扫描的输出,你可以轻松识别每个协议上运行的服务,并更好地了解目标主机上可用的网络服务。

在 Xfce 终端中分析结果

在本步骤中,你将分析 Nmap 扫描结果,以识别潜在漏洞并了解目标系统上运行的服务。你将利用前几步收集到的信息,对目标的安全态势得出结论。

让我们先回顾一下 tcpudp.txt 文件的内容,该文件包含了本地主机(127.0.0.1)的 TCP 和 UDP 组合扫描结果:

cat tcpudp.txt

根据输出,你可以识别出以下几点:

  • 开放端口:扫描显示目标系统上哪些端口是开放的。开放端口表明有服务正在积极监听连接。
  • 服务:Nmap 会尝试识别每个开放端口上运行的服务。这些信息可用于了解每个端口的用途以及与这些服务相关的潜在漏洞。
  • TCP 与 UDP:扫描区分了 TCP 和 UDP 服务。TCP 是面向连接的,通常用于可靠的数据传输,而 UDP 是无连接的,常用于更快但不太可靠的通信。
  • 被过滤端口:对于 UDP 扫描,Nmap 可能会将端口报告为“开放 | 被过滤”。这意味着由于 UDP 不需要握手来建立连接,Nmap 无法确定该端口是开放还是被过滤。

现在,让我们更详细地分析结果。

在前几步中,你扫描了本地主机(127.0.0.1),发现端口 22/tcp(SSH)和 53/udp(域名系统)是开放或被过滤的。

  • 端口 22(SSH):SSH 是一种用于远程管理和文件传输的安全 shell 协议。如果 SSH 正在运行,务必确保使用强密码或基于密钥的认证进行安全配置,以防止未经授权的访问。
  • 端口 53(域名系统):端口 53 通常用于 DNS(域名系统)服务。如果此端口开放,则表明系统可能正在运行 DNS 服务器。DNS 服务器可能容易受到各种攻击,如 DNS 欺骗和缓存中毒,因此务必使其保持更新到最新的安全补丁。

要进一步分析结果,你可以使用 Nmap 的脚本引擎(NSE)来执行更深入的漏洞扫描。不过,这超出了本实验的范围。

总之,通过分析 Nmap 扫描结果,你可以深入了解目标系统上运行的服务,并识别出需要解决的潜在漏洞。请记住,在扫描任何网络或系统之前,始终要获得适当的授权。

总结

在本实验中,你学会了使用 Nmap 组合 TCP 和 UDP 扫描。你使用命令 nmap -sS -sU 在目标 IP 上执行了组合扫描,其中 -sS 执行 TCP SYN 扫描,-sU 执行 UDP 扫描。你还学会了扫描特定端口、增加扫描的详细程度,并将组合结果保存到文件中。

此外,你还被要求在 Xfce 终端中比较和分析 TCP 和 UDP 的输出。请记住,在实际场景中,只有在获得明确许可的情况下才能扫描网络和主机。