简介
在本实验中,你将学习如何在 Nmap 中执行 TCP 空扫描。本实验涵盖了空扫描的各个方面,包括在特定 IP 地址上运行基本的空扫描、扫描定义的端口范围、增加扫描的详细程度、保存扫描结果、将空扫描与 SYN 扫描进行比较,以及在 Xfce 终端中查看结果。
空扫描是将所有 TCP 标志都设置为零,它可以帮助确定端口状态,但由于某些防火墙或系统会丢弃无标志的数据包,所以空扫描并不总是可靠的。通过一系列 Nmap 命令,你将获得不同空扫描操作的实践经验。
在本实验中,你将学习如何在 Nmap 中执行 TCP 空扫描。本实验涵盖了空扫描的各个方面,包括在特定 IP 地址上运行基本的空扫描、扫描定义的端口范围、增加扫描的详细程度、保存扫描结果、将空扫描与 SYN 扫描进行比较,以及在 Xfce 终端中查看结果。
空扫描是将所有 TCP 标志都设置为零,它可以帮助确定端口状态,但由于某些防火墙或系统会丢弃无标志的数据包,所以空扫描并不总是可靠的。通过一系列 Nmap 命令,你将获得不同空扫描操作的实践经验。
在这一步中,我们将使用 Nmap 执行一次空扫描。空扫描是一种 TCP 扫描类型,其中所有 TCP 标志都被设置为零。这意味着在 TCP 报头中没有设置任何标志(SYN、ACK、RST、FIN、URG、PSH)。对空扫描的响应可以帮助确定端口的状态。
以下是对空扫描工作原理的简要概述:
需要注意的是,空扫描并不总是可靠的,因为一些防火墙或系统可能会丢弃未设置标志的数据包。
让我们针对 IP 地址 192.168.1.1
运行一次空扫描。打开你的 Xfce 终端并执行以下命令:
sudo nmap -sN 192.168.1.1
此命令告诉 Nmap 针对目标 IP 地址 192.168.1.1
执行一次空扫描(-sN
)。你需要 sudo
权限才能运行 Nmap。
输出将显示目标机器上端口的状态。由于空扫描通常无法提供明确的答案,你可能会看到端口被列为 open|filtered
或 closed
。
示例输出(实际输出将因目标而异):
Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.00028s 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 无法确定这些端口是开放的还是关闭的。
在这一步中,我们将通过指定要扫描的端口范围来扩展空扫描的使用。这使我们能够将扫描重点放在特定的感兴趣端口上,而不是扫描所有 1000 个默认端口。我们将扫描本地主机(127.0.0.1)上的 1 到 100 号端口。
Nmap 中的 -p
选项允许你指定端口范围。语法是 -p <起始端口>-<结束端口>
。在我们的例子中,我们将使用 -p 1-100
来扫描 1 到 100 号端口。
打开你的 Xfce 终端并执行以下命令:
sudo nmap -sN -p 1-100 127.0.0.1
此命令告诉 Nmap 对本地主机(127.0.0.1
)的 1 到 100 号端口(-p 1-100
)执行空扫描(-sN
)。请记住,你需要 sudo
权限才能运行 Nmap。
输出将显示目标机器上 1 到 100 号端口的状态。与之前的空扫描一样,结果可能不明确,你可能会看到端口被列为 open|filtered
或 closed
。
示例输出(实际输出会有所不同):
Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000090s latency).
Not shown: 99 filtered ports
PORT STATE SERVICE
7/tcp closed echo
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
在这个例子中,7 号端口(echo)被报告为关闭,其他 99 个端口被过滤。这表明目标主机对 7 号端口用 RST 数据包进行了响应,而其他端口要么没有响应,要么其响应被防火墙阻止。
在这一步中,我们将为空扫描添加详细程度。Nmap 中的详细程度会提供有关扫描过程的更详细信息,这有助于理解 Nmap 在做什么以及排查任何问题。
Nmap 中的 -v
选项会增加详细程度级别。你可以多次使用 -v
(例如 -vv
)来进一步增加详细程度。在这一步中,我们将使用单个 -v
。
打开你的 Xfce 终端并执行以下命令:
sudo nmap -v -sN 192.168.1.1
此命令告诉 Nmap 针对目标 IP 地址 192.168.1.1
执行空扫描(-sN
),并增加详细程度(-v
)。你需要 sudo
权限才能运行 Nmap。
输出将比之前的空扫描更详细。你会看到有关扫描进度、正在扫描的端口以及出现的任何错误或警告的信息。
示例输出(实际输出会因目标而异):
Starting Nmap 7.80 ( https://nmap.org )
NSE: Loaded 0 scripts for scanning.
Initiating Null scan for 192.168.1.1
Scanning 192.168.1.1 [1000 ports]
Completed Null scan for 192.168.1.1
Nmap scan report for 192.168.1.1
Host is up (0.00028s 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
注意输出中额外的行,例如“NSE: Loaded 0 scripts for scanning.”、“Initiating Null scan for 192.168.1.1”、“Scanning 192.168.1.1 [1000 ports]”和“Completed Null scan for 192.168.1.1”。这些行提供了对扫描过程的更多洞察。
在这一步中,我们将把空扫描的结果保存到一个文件中。这对于后续分析或记录你的发现很有用。Nmap 提供了几种以不同格式保存扫描结果的选项。我们将使用 -oN
选项,它会以普通的、人类可读的格式保存结果。
-oN
选项以文件名作为参数。在我们的例子中,我们将把结果保存到 ~/project
目录下一个名为 null.txt
的文件中。
打开你的 Xfce 终端并执行以下命令:
sudo nmap -sN -oN null.txt 127.0.0.1
此命令告诉 Nmap 对本地主机(127.0.0.1
)执行空扫描(-sN
),并将结果以普通格式(-oN
)保存到 null.txt
文件中。你需要 sudo
权限才能运行 Nmap。
扫描完成后,你可以使用 cat
命令或像 nano
这样的文本编辑器来查看 null.txt
文件的内容。
cat null.txt
示例输出(实际输出会有所不同):
## Nmap 7.80 scan initiated Mon Oct 26 14:35:00 2020
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000090s latency).
All 1000 scanned ports on localhost (127.0.0.1) are filtered
## Nmap done at Mon Oct 26 14:35:03 2020 -- 1 IP address (1 host up) scanned in 3.21 seconds
你也可以使用 nano
打开该文件:
nano null.txt
这将在 nano
文本编辑器中打开 null.txt
文件,让你查看和编辑内容。
在这一步中,我们将比较空扫描和 SYN 扫描的结果。这将帮助你理解这两种扫描类型之间的差异,以及它们如何用于收集有关目标的不同信息。
SYN 扫描(也称为半开放扫描)是一种更隐蔽的扫描,它不会完成 TCP 握手。它向目标发送一个 SYN 数据包,如果目标用 SYN/ACK 响应,则表明该端口是开放的。然后 Nmap 发送一个 RST 数据包来关闭连接。
另一方面,空扫描发送一个未设置标志的 TCP 数据包。根据目标的操作系统和防火墙配置,目标的响应可以指示端口是开放、关闭还是被过滤。
首先,让我们对本地主机(127.0.0.1
)执行 SYN 扫描,并将结果保存到一个名为 syn.txt
的文件中。
打开你的 Xfce 终端并执行以下命令:
sudo nmap -sS -oN syn.txt 127.0.0.1
此命令告诉 Nmap 对本地主机(127.0.0.1
)执行 SYN 扫描(-sS
),并将结果以普通格式(-oN
)保存到 syn.txt
文件中。你需要 sudo
权限才能运行 Nmap。
现在,让我们将 null.txt
(我们在上一步中创建的)的内容与 syn.txt
的内容进行比较。你可以使用 diff
命令来比较这两个文件:
diff null.txt syn.txt
diff
命令将显示两个文件之间的差异。你也可以使用像 nano
这样的文本编辑器来打开这两个文件并并排比较它们。
nano null.txt syn.txt
检查两次扫描的输出。你可能会注意到,SYN 扫描比空扫描更有可能识别开放端口,特别是如果目标系统配置为丢弃未设置标志的数据包。空扫描通常用于尝试绕过防火墙或入侵检测系统,但它们并不总是可靠的。
关键区别在于,SYN 扫描试图建立连接,而空扫描发送一个未设置标志的数据包,依靠目标的响应来推断端口状态。
在这一步中,我们将查看在前几步中执行的空扫描和 SYN 扫描的结果。这包括检查输出文件(null.txt
和 syn.txt
)并解读其中包含的信息。
打开你的 Xfce 终端,使用 cat
命令或 nano
编辑器来查看这两个文件的内容。
cat null.txt
cat syn.txt
或者,使用 nano
:
nano null.txt
nano syn.txt
查看结果时,请考虑以下几点:
例如,null.txt
可能显示所有端口都被过滤:
## Nmap 7.80 scan initiated Mon Oct 26 14:35:00 2020
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000090s latency).
All 1000 scanned ports on localhost (127.0.0.1) are filtered
## Nmap done at Mon Oct 26 14:35:03 2020 -- 1 IP address (1 host up) scanned in 3.21 seconds
而 syn.txt
可能显示一些端口为开放:
## Nmap 7.80 scan initiated Mon Oct 26 14:36:00 2020
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000090s latency).
PORT STATE SERVICE
22/tcp open ssh
25/tcp closed smtp
80/tcp open http
111/tcp open rpcbind
...
## Nmap done at Mon Oct 26 14:36:03 2020 -- 1 IP address (1 host up) scanned in 3.21 seconds
通过比较不同扫描类型的结果,你可以更全面地了解目标系统的安全态势。请记住,结果的准确性可能会受到各种因素的影响,例如防火墙、入侵检测系统和目标的操作系统配置。
在本实验中,参与者学习了如何使用 Nmap 执行 TCP 空扫描。他们首先使用命令 sudo nmap -sN 192.168.1.1
对 IP 地址 192.168.1.1 运行空扫描,了解到空扫描会将所有 TCP 标志设置为零,并且响应可以帮助确定端口状态。他们还学习了扫描 127.0.0.1 上的特定端口范围(1 - 100),增加扫描的详细程度,将结果保存到文件中,将空扫描与 SYN 扫描进行比较,以及在 Xfce 终端中查看结果。需要注意的是,由于一些防火墙或系统会丢弃未设置标志的数据包,空扫描并不总是可靠的。