简介
在本实验中,你将学习如何使用 Nmap 进行 TCP ACK 扫描。本实验涵盖了 ACK 扫描的各个方面,包括运行基本的 ACK 扫描、扫描特定端口范围、增加扫描的详细程度、保存扫描结果、分析被过滤的端口,以及在 Xfce 终端中将 ACK 扫描与 SYN 扫描进行比较。通过向目标主机发送 TCP ACK 数据包并分析响应,以确定端口是被过滤还是未被过滤,你将了解 ACK 扫描的工作原理。
在本实验中,你将学习如何使用 Nmap 进行 TCP ACK 扫描。本实验涵盖了 ACK 扫描的各个方面,包括运行基本的 ACK 扫描、扫描特定端口范围、增加扫描的详细程度、保存扫描结果、分析被过滤的端口,以及在 Xfce 终端中将 ACK 扫描与 SYN 扫描进行比较。通过向目标主机发送 TCP ACK 数据包并分析响应,以确定端口是被过滤还是未被过滤,你将了解 ACK 扫描的工作原理。
在本步骤中,你将学习如何使用 Nmap 执行 ACK 扫描。ACK 扫描是一种 TCP 扫描类型,它向目标主机发送 TCP ACK 数据包。与其他扫描类型不同,ACK 扫描不会建立完整的 TCP 连接。相反,它通过分析响应(或无响应情况)来确定端口是被过滤还是未被过滤。
了解 ACK 扫描基础
执行 ACK 扫描
打开 Xfce 终端:如果尚未打开,请从桌面环境启动 Xfce 终端。
执行 ACK 扫描命令:在终端中,输入以下命令并按回车键:
nmap -sA 192.168.1.1
nmap
:Nmap 命令行扫描器。-sA
:指定 ACK 扫描类型。192.168.1.1
:目标 IP 地址。将其替换为你要扫描的实际 IP 地址。如果你在虚拟环境中运行此命令,你可能想要扫描你的网关或网络上的另一台机器。如果你没有另一台机器,你可以扫描你的本地主机 IP 地址 127.0.0.1
。nmap -sA 127.0.0.1
分析结果:Nmap 将显示扫描结果。查找标记为“未被过滤”或“被过滤”的端口。
示例输出(可能因目标而异):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 127.0.0.1
Host is up (0.00020s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp unfiltered ssh
80/tcp unfiltered http
111/tcp unfiltered rpcbind
631/tcp unfiltered ipp
...
Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds
在此示例中,端口 22、80、111 和 631 是未被过滤的,这意味着发送到这些端口的 ACK 数据包可能会收到 RST 响应。
重要注意事项:
在本步骤中,你将通过扫描特定端口范围来扩展对 ACK 扫描的了解。这对于将调查范围缩小到最常用的端口或感兴趣的端口很有用。
了解端口范围
端口范围指定了要扫描的一组端口,而不是扫描所有 65535 个端口。这可以显著减少扫描时间并集中你的分析。常见的端口范围包括:
1-1024
:知名端口,通常由系统服务使用。1-100
:用于快速检查的较小范围。80、443、8080
:感兴趣的特定端口(HTTP、HTTPS、备用 HTTP)。使用 Nmap 扫描端口范围
打开 Xfce 终端:如果尚未打开,请从桌面环境启动 Xfce 终端。
执行带有端口范围的 ACK 扫描命令:在终端中,输入以下命令并按回车键:
nmap -sA -p 1-100 127.0.0.1
nmap
:Nmap 命令行扫描器。-sA
:指定 ACK 扫描类型。-p 1-100
:指定要扫描的端口范围(端口 1 到 100)。127.0.0.1
:目标 IP 地址(在这种情况下是本地主机)。分析结果:Nmap 将显示扫描结果,仅关注指定范围内(1-100)的端口。
示例输出(可能因目标而异):
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.00018s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
21/tcp unfiltered ftp
22/tcp unfiltered ssh
25/tcp unfiltered smtp
53/tcp unfiltered domain
80/tcp unfiltered http
Nmap done: 1 IP address (1 host up) scanned in 0.85 seconds
此输出显示了本地主机上端口 21、22、25、53 和 80 的状态。它们全部未被过滤。
扫描端口范围的好处:
在本步骤中,你将学习如何增加 Nmap 扫描的详细程度。详细程度会提供有关扫描过程的更详细信息,这有助于故障排除或更深入地理解扫描结果。
了解详细程度级别
Nmap 提供不同级别的详细程度,由 -v
选项控制。使用一次 -v
会增加详细程度级别,多次使用(例如 -vv
)会进一步增加详细程度。更高的详细程度级别会提供更详细的输出。
在 ACK 扫描中增加详细程度
打开 Xfce 终端:如果尚未打开,请从桌面环境启动 Xfce 终端。
执行带有详细程度的 ACK 扫描命令:在终端中,输入以下命令并按回车键:
nmap -v -sA 192.168.1.1
nmap
:Nmap 命令行扫描器。-v
:启用详细输出。-sA
:指定 ACK 扫描类型。192.168.1.1
:目标 IP 地址。将其替换为你要扫描的实际 IP 地址。如果你在虚拟环境中运行此命令,你可能想要扫描你的网关或网络上的另一台机器。如果你没有另一台机器,你可以扫描你的本地主机 IP 地址 127.0.0.1
。nmap -v -sA 127.0.0.1
分析结果:Nmap 将显示带有更详细信息的扫描结果。你将看到有关扫描过程的更多输出,例如正在发送的探测和正在接收的响应。
示例输出(可能因目标而异):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Initiating Ping Scan at 10:10
Scanning 127.0.0.1 [4 ports]
Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
Initiating ACK Scan at 10:10
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 80/tcp on 127.0.0.1
Discovered open port 111/tcp on 127.0.0.1
Discovered open port 631/tcp on 127.0.0.1
Completed ACK Scan at 10:10, 0.15s elapsed (1000 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp unfiltered ssh
80/tcp unfiltered http
111/tcp unfiltered rpcbind
631/tcp unfiltered ipp
...
Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds
详细输出显示了扫描的不同阶段,包括 Ping 扫描和 ACK 扫描,以及发现的端口。
详细程度的好处:
在本步骤中,你将学习如何将 Nmap ACK 扫描的结果保存到文件中。这对于后续的分析、报告或与其他扫描结果进行比较很有用。
了解 Nmap 输出选项
Nmap 提供了几种以不同格式保存扫描结果的选项。-oN
选项以“正常”的人类可读格式保存结果。其他选项包括用于 XML 格式的 -oX
和用于脚本小子格式(可读性较差)的 -oS
。
将 ACK 扫描结果保存到文件
打开 Xfce 终端:如果尚未打开,请从桌面环境启动 Xfce 终端。
执行带有输出到文件的 ACK 扫描命令:在终端中,输入以下命令并按回车键:
nmap -sA -oN ack.txt 127.0.0.1
nmap
:Nmap 命令行扫描器。-sA
:指定 ACK 扫描类型。-oN ack.txt
:指定输出应以正常格式保存到名为 ack.txt
的文件中。该文件将保存在你当前的目录(~/project
)中。127.0.0.1
:目标 IP 地址(在这种情况下是本地主机)。验证文件创建:扫描完成后,验证 ~/project
目录中是否已创建 ack.txt
文件。你可以使用 ls
命令列出目录中的文件:
ls ~/project
你应该在文件列表中看到 ack.txt
。
查看文件内容:你可以使用 cat
命令或像 nano
这样的文本编辑器查看 ack.txt
文件的内容:
cat ~/project/ack.txt
或者
nano ~/project/ack.txt
文件将包含以人类可读格式的 Nmap 扫描结果。
ack.txt
的示例内容(可能因目标而异):
## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp unfiltered ssh
80/tcp unfiltered http
111/tcp unfiltered rpcbind
631/tcp unfiltered ipp
...
## Nmap done at Fri Oct 27 10:15:01 2023 -- 1 IP address (1 host up) scanned in 0.85 seconds
保存扫描结果的好处:
在本步骤中,你将学习如何分析在 Nmap ACK 扫描期间识别出的被过滤端口。理解端口被过滤的原因对于评估网络安全性和识别潜在漏洞至关重要。
了解被过滤的端口
在 Nmap 中,“被过滤”的端口意味着 Nmap 无法确定该端口是开放还是关闭,因为数据包过滤阻止了 Nmap 的探测到达该端口。这通常是由于防火墙规则阻止了 Nmap 用于扫描的特定类型的流量。使用 ACK 扫描时,被过滤的端口通常表明存在防火墙或其他网络设备正在阻止 ACK 数据包。
分析 ACK 扫描中的被过滤端口
打开 Xfce 终端:如果尚未打开,请从桌面环境启动 Xfce 终端。
查看 ack.txt
文件:在上一步中,你将 ACK 扫描结果保存到了 ack.txt
文件中。使用 cat
命令或 nano
查看文件内容:
cat ~/project/ack.txt
或者
nano ~/project/ack.txt
识别被过滤的端口:在输出中查找表明端口处于“被过滤”状态的行。例如:
PORT STATE SERVICE
21/tcp filtered ftp
23/tcp filtered telnet
这表明端口 21(FTP)和 23(Telnet)被过滤。
调查过滤的原因:端口被过滤这一事实表明防火墙或其他网络设备正在阻止发送到这些端口的 ACK 数据包。为了进一步调查,你可以考虑以下几点:
127.0.0.1
,你可以检查本地防火墙规则。然而,在实验环境中,你可能无法访问以修改防火墙规则。示例分析:
如果你看到像 21(FTP)、23(Telnet)和 80(HTTP)这样的常用端口被过滤,很可能防火墙被配置为阻止对这些端口的未经请求的传入连接。这是一种常见的安全措施,用于防止对目标机器上运行的服务进行未经授权的访问。
重要注意事项:
在本步骤中,你将把 Nmap ACK 扫描的结果与 SYN 扫描的结果进行比较。这种比较将帮助你理解这些扫描类型之间的差异,以及它们如何用于收集有关目标的不同信息。
了解 ACK 和 SYN 扫描
-sA
):向目标发送 TCP ACK 数据包。它主要用于映射防火墙规则集。如果一个端口未被过滤,通常意味着防火墙允许 ACK 数据包通过。如果一个端口被过滤,则意味着防火墙可能正在阻止 ACK 数据包。ACK 扫描无法确定端口是开放还是关闭。-sS
):向目标发送 TCP SYN 数据包。它比完整的 TCP 连接扫描更隐蔽,因为它不会完成 TCP 握手。如果收到 SYN/ACK 数据包,则该端口被视为开放。如果收到 RST 数据包,则该端口被视为关闭。执行 SYN 扫描
打开 Xfce 终端:如果尚未打开,请从桌面环境启动 Xfce 终端。
执行 SYN 扫描命令:在终端中,输入以下命令并按回车键:
nmap -sS 127.0.0.1
nmap
:Nmap 命令行扫描器。-sS
:指定 SYN 扫描类型。127.0.0.1
:目标 IP 地址(在这种情况下是本地主机)。执行带有输出到文件的 SYN 扫描命令:在终端中,输入以下命令并按回车键:
nmap -sS -oN syn.txt 127.0.0.1
nmap
:Nmap 命令行扫描器。-sS
:指定 SYN 扫描类型。-oN syn.txt
:指定输出应以正常格式保存到名为 syn.txt
的文件中。该文件将保存在你当前的目录(~/project
)中。127.0.0.1
:目标 IP 地址(在这种情况下是本地主机)。比较结果
查看 SYN 扫描结果:SYN 扫描完成后,在终端中查看结果。你应该会看到开放、关闭和被过滤端口的列表。
查看文件内容:你可以使用 cat
命令或像 nano
这样的文本编辑器查看 syn.txt
文件的内容:
cat ~/project/syn.txt
或者
nano ~/project/syn.txt
文件将包含以人类可读格式的 Nmap 扫描结果。
与 ACK 扫描结果进行比较:将 SYN 扫描结果与你在前面步骤中获得的 ACK 扫描结果(无论是来自终端输出还是 ack.txt
文件)进行比较。
分析差异:
示例比较:
假设 ACK 扫描显示端口 80(HTTP)被过滤,而 SYN 扫描显示端口 80 是开放的。这表明防火墙可能正在阻止到端口 80 的 ACK 数据包,但允许 SYN 数据包。这是 Web 服务器的典型配置,其中允许传入的 SYN 数据包建立连接,但阻止未经请求的 ACK 数据包。
关键要点:
在本实验中,你将学习使用 Nmap 进行 TCP ACK 扫描。你将首先使用命令 nmap -sA <目标 IP>
执行基本的 ACK 扫描,了解 ACK 数据包的工作原理,以及如何根据响应确定端口是被过滤还是未被过滤。你还将学习扫描特定的端口范围,增加扫描的详细程度,并将结果保存到文件中。此外,你将在 Xfce 终端中分析被过滤的端口,并将 ACK 扫描与 SYN 扫描进行比较。