简介
在本实验中,你将学习如何使用 Nmap 进行 TCP FIN 扫描。你将从对目标 IP 执行基本的 FIN 扫描开始,然后扫描特定端口,增加扫描的详细程度,并保存结果。此外,你将把 FIN 扫描与 TCP 扫描进行比较,并在 Xfce 终端中分析开放端口。FIN 扫描会向目标主机发送一个 FIN 数据包,这有助于绕过某些防火墙或入侵检测系统。
在本实验中,你将学习如何使用 Nmap 进行 TCP FIN 扫描。你将从对目标 IP 执行基本的 FIN 扫描开始,然后扫描特定端口,增加扫描的详细程度,并保存结果。此外,你将把 FIN 扫描与 TCP 扫描进行比较,并在 Xfce 终端中分析开放端口。FIN 扫描会向目标主机发送一个 FIN 数据包,这有助于绕过某些防火墙或入侵检测系统。
在这一步中,你将学习如何使用 Nmap 执行 FIN 扫描。FIN 扫描是一种 TCP 扫描类型,它向目标主机发送一个 FIN(完成)数据包。与尝试建立连接的 SYN 扫描不同,FIN 扫描只是简单地发送一个 FIN 数据包并观察响应。这对于绕过某些防火墙或入侵检测系统可能很有用。
在我们开始之前,让我们先明确一下什么是 FIN 数据包。在 TCP 通信中,FIN 标志表示连接的结束。当主机发送一个 FIN 数据包时,它本质上是在说:“我已完成发送数据。”
现在,让我们执行 FIN 扫描。打开你的 Xfce 终端。
执行以下命令:
sudo nmap -sF 192.168.1.1
-sF
:此选项告诉 Nmap 执行 FIN 扫描。192.168.1.1
:这是目标 IP 地址。如果不同,请将其替换为你要扫描的机器的实际 IP 地址。你可能需要调整 IP 地址 192.168.1.1
,以匹配从你的 LabEx VM 可访问的目标机器的 IP 地址。如果你没有特定的目标,可以使用你的网关或本地网络上的其他设备的 IP 地址。如果你不确定,可以尝试使用 127.0.0.1
(localhost)扫描你自己的机器。
输出将显示目标机器上每个端口的状态。开放端口通常不会对 FIN 数据包做出响应,而关闭端口将用 RST(重置)数据包进行响应。被过滤的端口可能根本不响应,这使得难以确定它们的状态。
示例输出(实际输出将根据目标而有所不同):
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.00043s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp filtered ssh
Nmap done: 1 IP address (1 host up) scanned in 2.18 seconds
在此示例中,端口 22(SSH)显示为被过滤。这意味着由于防火墙规则或其他网络条件,Nmap 无法确定该端口是开放还是关闭。“Not shown: 999 closed ports”这一行表示 Nmap 没有显示 999 个关闭的端口,以保持输出简洁。
在上一步中,你学习了如何执行基本的 FIN 扫描。现在,你将学习如何在 FIN 扫描期间针对特定端口进行扫描。当你想将扫描重点放在可能在特定端口上运行的服务上时,这很有用,比如 SSH(端口 22)和 HTTP(端口 80)。
指定端口可以显著减少扫描时间,并使结果更具相关性。你无需扫描所有 65535 个端口,而是可以专注于最有可能感兴趣的端口。
打开你的 Xfce 终端。
执行以下命令:
sudo nmap -sF -p 22,80 127.0.0.1
-sF
:此选项告诉 Nmap 执行 FIN 扫描。-p 22,80
:此选项指定你要扫描端口 22 和 80。你可以指定单个端口、端口范围(例如 1 - 100
)或用逗号分隔的端口列表。127.0.0.1
:这是目标 IP 地址,在这种情况下是你自己的机器(localhost)。输出将显示你机器上端口 22 和 80 的状态。
示例输出:
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 filtered ssh
80/tcp filtered http
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
在此示例中,端口 22 和 80 都显示为被过滤。这意味着 Nmap 无法确定这些端口是开放还是关闭。这是 FIN 扫描常见的结果,尤其是在存在防火墙的情况下。
在这一步中,你将学习如何增加 Nmap FIN 扫描的详细程度。详细程度会提供有关扫描过程的更详细信息,这有助于故障排除或理解扫描结果。
Nmap 中的 -v
选项会增加详细程度级别。你可以多次使用它(例如 -vv
)以获得更详细的输出。
打开你的 Xfce 终端。
执行以下命令:
sudo nmap -v -sF 192.168.1.1
-v
:此选项增加详细程度级别。-sF
:此选项告诉 Nmap 执行 FIN 扫描。192.168.1.1
:这是目标 IP 地址。如有需要,请记得将其替换为有效的 IP 地址。现在输出将包含有关扫描的更多信息,例如发送和接收的数据包、某些决策的原因以及整体进度。
示例输出(实际输出将根据目标和网络条件而有所不同):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 0 scripts for scanning.
Initiating Ping Scan at 10:10
Scanning 192.168.1.1 [2 ports]
Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
Initiating FIN Scan at 10:10
Scanning 192.168.1.1 [1000 ports]
Completed FIN Scan at 10:10, 2.12s elapsed (1000 total ports)
Nmap scan report for 192.168.1.1
Host is up (0.00038s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp filtered ssh
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 2.18 seconds
Raw packets sent: 1001 (44.044KB) | Rcvd: 1 (44B)
请注意所提供的额外信息,例如 NSE 脚本加载、ping 扫描和 FIN 扫描的启动及完成时间,以及发送和接收的数据包数量。在排查网络问题或分析扫描结果时,这种详细程度可能非常宝贵。
在这一步中,你将学习如何将 Nmap FIN 扫描的结果保存到文件中。这对于后续的分析、报告或与其他扫描结果进行比较很有用。
Nmap 提供了多种以不同格式保存扫描结果的选项。-oN
选项以“普通”的人类可读格式保存结果。
打开你的 Xfce 终端。
执行以下命令:
sudo nmap -sF -oN fin.txt 127.0.0.1
-sF
:此选项告诉 Nmap 执行 FIN 扫描。-oN fin.txt
:此选项指定你要将结果以普通格式保存到名为 fin.txt
的文件中。该文件将保存在你当前的目录(~/project
)中。127.0.0.1
:这是目标 IP 地址,在这种情况下是你自己的机器(localhost)。扫描完成后,你可以使用像 nano
这样的文本编辑器打开 fin.txt
文件来查看保存的结果。
nano fin.txt
该文件将包含扫描期间在屏幕上显示的相同信息,但格式更结构化。
fin.txt
的示例内容:
## Nmap 7.80 scan initiated Tue Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000027s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp filtered ssh
## Nmap done at Tue Oct 27 10:15:02 2023 -- 1 IP address (1 host up) scanned in 1.89 seconds
现在你可以使用此文件进行进一步的分析或报告。
在这一步中,你将比较 FIN 扫描和 TCP 连接扫描的结果。这种比较将突出这些扫描在识别开放端口方面的差异,以及防火墙可能如何不同地对待它们。
TCP 连接扫描(-sT
)会与目标建立完整的 TCP 连接,这使其更可靠,但也更容易被检测到。另一方面,FIN 扫描(-sF
)会发送一个 FIN 数据包,防火墙记录该数据包的可能性较小,但可能并不总是能提供准确的结果。
打开你的 Xfce 终端。
首先,对本地主机(127.0.0.1)执行 TCP 连接扫描:
sudo nmap -sT 127.0.0.1
此命令将尝试与你本地机器上的每个端口建立完整的 TCP 连接。
接下来,对同一目标执行 FIN 扫描:
sudo nmap -sF 127.0.0.1
现在,比较两次扫描的结果。你可能会注意到 TCP 连接扫描识别出的开放端口比 FIN 扫描更多。这是因为一些防火墙或系统可能会阻止或忽略 FIN 数据包,从而导致结果不准确。
TCP 连接扫描的示例输出:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000026s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
631/tcp open ipp
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
FIN 扫描的示例输出:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:21 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000026s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp filtered ssh
Nmap done: 1 IP address (1 host up) scanned in 1.89 seconds
在这个示例中,TCP 连接扫描显示端口 22、631 和 3306 为开放,而 FIN 扫描仅显示端口 22 为被过滤状态。这展示了不同的扫描类型如何产生不同的结果,以及为什么在进行网络侦察时使用多种技术很重要。“被过滤”状态意味着防火墙、过滤器或其他网络障碍正在阻止该端口,使 Nmap 无法确定它是开放还是关闭。
在这一步中,你将分析在前几次扫描中识别出的开放端口,以了解目标系统上运行的服务。这涉及解释 Nmap 输出并研究每个开放端口的用途。
打开你的 Xfce 终端。
假设你在上一步中执行了 TCP 连接扫描(sudo nmap -sT 127.0.0.1
)并获得了以下输出:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000026s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
631/tcp open ipp
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
此输出表明你的本地机器上端口 22、631 和 3306 是开放的。现在,让我们分析这些端口中的每一个:
端口 22(ssh):此端口通常用于 SSH(安全外壳协议),这是一种用于远程登录和命令执行的安全协议。如果此端口开放,则意味着你的机器上正在运行 SSH 服务器,允许你远程连接到它。
端口 631(ipp):此端口用于 IPP(互联网打印协议),这是一种用于通过网络进行打印的协议。如果此端口开放,则意味着你的机器上正在运行打印服务,允许你远程打印文档。
端口 3306(mysql):此端口是 MySQL(一种流行的开源关系数据库管理系统)的默认端口。如果此端口开放,则意味着你的机器上正在运行 MySQL 服务器,允许你访问和管理数据库。
要进一步调查这些服务,你可以使用其他工具,如 netstat
或 ss
来检查哪些进程正在监听这些端口。例如,要检查监听端口 22 的进程,你可以使用以下命令:
sudo netstat -tulnp | grep :22
此命令将显示监听端口 22 的进程 ID(PID)和进程名称。
示例输出:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
此输出表明 sshd
进程(SSH 守护进程)正在监听端口 22。
通过分析开放端口及其上运行的服务,你可以深入了解目标系统的安全态势并识别潜在的漏洞。
在本实验中,你学会了使用 Nmap 进行 TCP FIN 扫描。你首先使用命令 nmap -sF
加上目标 IP 进行了基本的 FIN 扫描。你还学会了扫描特定端口、增加扫描的详细程度以及将结果保存到文件中。此外,你在 Xfce 终端中比较了 FIN 扫描和 TCP 扫描,并分析了开放端口。FIN 扫描会向目标主机发送一个 FIN 数据包,这有助于绕过某些防火墙或入侵检测系统。