在 Nmap 中执行 TCP Xmas 扫描

NmapBeginner
立即练习

介绍

在本实验中,你将学习如何使用 Nmap 执行 TCP Xmas 扫描。本实验涵盖了 Xmas 扫描的各个方面,包括对目标 IP 运行基本扫描、扫描特定端口、增加扫描的详细程度、保存扫描结果、将 Xmas 扫描与 FIN 扫描进行比较,以及在 Xfce 终端中分析结果。通过在 TCP 报头中设置 FIN、PSH 和 URG 标志来识别目标系统上开放或被过滤的端口,你将了解 Xmas 扫描的工作原理。

使用 nmap -sX 192.168.1.1 运行 Xmas 扫描

在这一步中,我们将使用 Nmap 执行一次 Xmas 扫描。Xmas 扫描是一种端口扫描类型,它会在 TCP 报头中设置 FIN、PSH 和 URG 标志。这种扫描类型被称为“Xmas”,是因为设置的标志类似于圣诞树。它对于识别目标系统上开放或被过滤的端口很有用。

在开始之前,让我们先了解一下这些标志的含义:

  • FIN(结束):表示连接的结束。
  • PSH(推送):告诉接收系统将缓冲的数据推送给应用程序。
  • URG(紧急):表示紧急指针字段有效,并指向应紧急处理的数据。

当主机接收到一个 Xmas 扫描数据包时,如果端口是关闭的,它应该用一个 RST(重置)数据包进行响应。如果端口是开放的,主机应该丢弃该数据包而不进行响应。然而,有些系统可能不会正确响应,这有助于识别操作系统或防火墙规则。

现在,让我们针对目标 IP 地址 192.168.1.1 运行 Xmas 扫描。打开你的 Xfce 终端并执行以下命令:

sudo nmap -sX 192.168.1.1

此命令告诉 Nmap 对目标 IP 地址 192.168.1.1 执行 Xmas 扫描(-sX)。你需要 sudo 权限才能运行此命令。

扫描完成后,Nmap 将显示结果。输出将显示根据目标系统的响应(或无响应)哪些端口被视为开放、关闭或被过滤。

示例输出(实际输出将因目标系统而异):

Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.0012s latency).
All 1000 scanned ports on 192.168.1.1 are filtered

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

在这个示例中,所有 1000 个被扫描的端口都被报告为被过滤。这意味着 Nmap 无法确定这些端口是开放还是关闭,因为目标系统可能正在阻止或过滤扫描数据包。

使用 nmap -sX -p 22,80 127.0.0.1 扫描特定端口

在这一步中,我们将把 Xmas 扫描聚焦在特定端口上。当你想要快速检查目标机器上运行的特定服务的状态,而不是扫描所有端口时,这会很有用。我们将扫描本地主机(127.0.0.1)上的 22 号端口(SSH)和 80 号端口(HTTP)。

Nmap 中的 -p 选项允许你指定要扫描的端口。你可以提供单个端口、端口范围(例如 1 - 100)或用逗号分隔的端口列表(例如 22,80,443)。

要使用 Xmas 扫描来扫描 22 和 80 号端口,打开你的 Xfce 终端并执行以下命令:

sudo nmap -sX -p 22,80 127.0.0.1

此命令告诉 Nmap 对目标 IP 地址 127.0.0.1(本地主机)的 22 和 80 号端口(-p 22,80)执行 Xmas 扫描(-sX)。你需要 sudo 权限才能运行此命令。

扫描完成后,Nmap 将显示指定端口的结果。输出将指示端口是开放、关闭还是被过滤。

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

Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000029s latency).

PORT   STATE    SERVICE
22/tcp filtered ssh
80/tcp filtered http

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

在这个示例中,22 和 80 号端口都被报告为被过滤。这意味着 Nmap 无法确定这些端口是开放还是关闭,可能是由于本地主机上的防火墙规则或其他网络配置。

使用 nmap -v -sX 192.168.1.1 添加详细信息

在这一步中,我们将为 Xmas 扫描添加详细输出。Nmap 中的详细输出意味着在扫描过程中增加显示的信息量。这有助于理解 Nmap 在做什么以及排查可能出现的任何问题。

Nmap 中的 -v 选项会增加详细程度。你可以使用 -v 获得正常的详细程度,或者使用 -vv 获得更详细的输出。

要运行带有详细输出的 Xmas 扫描,打开你的 Xfce 终端并执行以下命令:

sudo nmap -v -sX 192.168.1.1

此命令告诉 Nmap 对目标 IP 地址 192.168.1.1 执行 Xmas 扫描(-sX)并启用详细输出(-v)。你需要 sudo 权限才能运行此命令。

现在输出将包含有关扫描过程的更多信息,例如正在扫描的端口、正在发送的数据包以及收到的任何响应。

示例输出(实际输出将因目标系统和网络配置而异):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
NSE: Loaded 0 scripts for scanning.
Initiating Xmas Scan at 10:00
Scanning 192.168.1.1 [1000 ports]
Completed Xmas Scan at 10:00, 0.00s elapsed (1000 total ports)
Nmap scan report for 192.168.1.1
Host is up (0.0012s latency).
All 1000 scanned ports on 192.168.1.1 are filtered

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

详细输出提供了有关扫描进度的更多详细信息,包括开始和结束时间、扫描的端口数量以及遇到的任何错误或警告。

使用 nmap -sX -oN xmas.txt 127.0.0.1 保存 Xmas 扫描结果

在这一步中,我们将学习如何将 Xmas 扫描的结果保存到文件中。这对于后续分析或记录你的发现很有用。Nmap 提供了几种以不同格式保存扫描结果的选项。-oN 选项以“正常”的人类可读格式保存结果。

要将 Xmas 扫描的结果保存到名为 xmas.txt 的文件中,打开你的 Xfce 终端并执行以下命令:

sudo nmap -sX -oN xmas.txt 127.0.0.1

此命令告诉 Nmap 对目标 IP 地址 127.0.0.1(本地主机)执行 Xmas 扫描(-sX),并将结果以正常格式(-oN)保存到文件 xmas.txt 中。该文件将在你当前的目录(即 ~/project)中创建。你需要 sudo 权限才能运行此命令。

扫描完成后,你可以使用 cat 命令或像 nano 这样的文本编辑器查看 xmas.txt 文件的内容。

cat xmas.txt

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

## Nmap 7.80 scan initiated Tue Oct 27 10:00:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000029s latency).
All 1000 scanned ports on localhost (127.0.0.1) are filtered

## Nmap done at Tue Oct 27 10:00:00 2023 -- 1 IP address (1 host up) scanned in 0.12 seconds

或者,你可以使用 nano 打开并查看该文件:

nano xmas.txt

这将在 nano 文本编辑器中打开 xmas.txt 文件,使你能够检查扫描结果。记得通过按 Ctrl+X,然后按 Y 确认保存,最后按 Enter 来保存并退出 nano

在 Xfce 终端中比较 Xmas 扫描与 FIN 扫描

在这一步中,我们将比较 Xmas 扫描和 FIN 扫描的结果。Xmas 扫描和 FIN 扫描都是隐身扫描的类型,可用于识别目标系统上的开放端口。它们通过向目标发送精心构造的 TCP 数据包并分析响应来工作。

首先,让我们在本地主机(127.0.0.1)上运行 FIN 扫描:

sudo nmap -sF 127.0.0.1

此命令告诉 Nmap 对目标 IP 地址 127.0.0.1 执行 FIN 扫描(-sF)。你需要 sudo 权限才能运行此命令。

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000029s latency).
All 1000 scanned ports on localhost (127.0.0.1) are filtered

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

现在,让我们将此输出与我们之前执行的 Xmas 扫描的输出进行比较。你可以在终端历史记录中向上滚动以找到之前的 Xmas 扫描输出,或者你可以重新运行 Xmas 扫描:

sudo nmap -sX 127.0.0.1

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:01 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000029s latency).
All 1000 scanned ports on localhost (127.0.0.1) are filtered

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

观察这两个扫描结果之间的异同。在许多情况下,结果将是相同的,显示所有端口都被过滤。这是因为许多现代防火墙和操作系统都配置为丢弃或忽略这些类型的数据包。

为了进一步比较,你可以将 FIN 扫描结果保存到文件中,类似于我们对 Xmas 扫描所做的:

sudo nmap -sF -oN fin.txt 127.0.0.1

然后,你可以使用 diff 命令来比较这两个文件:

diff xmas.txt fin.txt

此命令将向你显示 xmas.txtfin.txt 文件之间的任何差异。如果扫描产生了相同的结果,diff 命令将不会输出任何内容。

在 Xfce 终端中分析结果

在这一步中,我们将分析我们执行的 Nmap 扫描结果。理解 Nmap 扫描的输出对于识别潜在漏洞和安全风险至关重要。

让我们从检查包含 Xmas 扫描结果的 xmas.txt 文件开始。你可以使用 cat 命令或像 nano 这样的文本编辑器查看此文件的内容:

cat xmas.txt

或者

nano xmas.txt

输出通常会包括以下信息:

  • Nmap 版本:用于扫描的 Nmap 版本。
  • 扫描开始时间:扫描开始的日期和时间。
  • 目标信息:目标系统的 IP 地址或主机名。
  • 主机状态:目标主机是开启还是关闭。
  • 端口状态:每个扫描端口的状态(例如,开放、关闭、被过滤)。
  • 扫描完成时间:扫描完成的日期和时间。

在 Xmas 和 FIN 扫描的情况下,你通常会看到所有端口都被报告为“被过滤”。这意味着 Nmap 无法确定端口是开放还是关闭,因为目标系统没有以允许 Nmap 做出明确判断的方式响应扫描数据包。这是扫描受防火墙或入侵检测系统(IDS)保护的系统时的常见结果。

如果你看到端口被报告为“开放”或“关闭”,则表明目标系统以可预测的方式响应了扫描数据包。然而,需要注意的是,Xmas 和 FIN 扫描可能不可靠,结果可能并不总是准确的。

为了更准确地了解目标系统的开放端口,你可能需要使用其他类型的 Nmap 扫描,例如 TCP 连接扫描(-sT)或 SYN 扫描(-sS)。这些扫描更可靠,但也可能更容易被防火墙和 IDS 检测到。

总之,分析 Nmap 扫描结果需要仔细检查输出以识别潜在漏洞和安全风险。了解不同类型的 Nmap 扫描以及每种扫描类型的局限性很重要。通过结合不同的扫描技术并仔细分析结果,你可以更全面地了解目标系统的安全态势。

总结

在这个实验中,参与者学习使用 Nmap 执行 TCP Xmas 扫描。他们首先使用 nmap -sX 命令在目标 IP(192.168.1.1)上运行基本的 Xmas 扫描,了解到该命令会在 TCP 报头中设置 FIN、PSH 和 URG 标志以识别开放或被过滤的端口。他们还学习扫描特定端口、增加扫描的详细程度以及将结果保存到文件中。此外,他们将 Xmas 扫描与 FIN 扫描进行比较,并在 Xfce 终端中分析结果。