介绍
在本实验中,你将学习如何使用 Nmap 进行 TCP FIN 扫描。你将从对目标 IP 执行基本的 FIN 扫描开始,然后扫描特定端口,增加扫描的详细程度,并保存结果。此外,你将把 FIN 扫描与 TCP 扫描进行比较,并在 Xfce 终端中分析开放端口。FIN 扫描会向目标主机发送一个 FIN 数据包,这有助于绕过某些防火墙或入侵检测系统。
使用 nmap -sF 192.168.1.1 运行 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 个关闭的端口,以保持输出简洁。
使用 nmap -sF -p 22,80 127.0.0.1 扫描特定端口
在上一步中,你学习了如何执行基本的 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 -v -sF 192.168.1.1 添加详细信息
在这一步中,你将学习如何增加 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 -sF -oN fin.txt 127.0.0.1 保存 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
现在你可以使用此文件进行进一步的分析或报告。
在 Xfce 终端中比较 FIN 扫描与 TCP 扫描
在这一步中,你将比较 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 无法确定它是开放还是关闭。
在 Xfce 终端中分析开放端口
在这一步中,你将分析在前几次扫描中识别出的开放端口,以了解目标系统上运行的服务。这涉及解释 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 数据包,这有助于绕过某些防火墙或入侵检测系统。



