简介
在本实验中,你将学习如何使用 Nmap 执行空闲扫描。本实验将引导你完成使用 ping 扫描(nmap -sn
)在网络上识别僵尸主机的过程。这一初始步骤有助于发现活跃主机,这对于为空闲扫描选择合适的僵尸主机至关重要。
然后,本实验将演示如何使用已识别的僵尸主机对目标执行空闲扫描(nmap -sI
)。你将探索增加详细程度(-v
)、针对特定端口(-p
)以及将扫描结果保存到文件(-oN
)的选项。最后,你将在 Xfce 终端中分析空闲扫描的结果。
在本实验中,你将学习如何使用 Nmap 执行空闲扫描。本实验将引导你完成使用 ping 扫描(nmap -sn
)在网络上识别僵尸主机的过程。这一初始步骤有助于发现活跃主机,这对于为空闲扫描选择合适的僵尸主机至关重要。
然后,本实验将演示如何使用已识别的僵尸主机对目标执行空闲扫描(nmap -sI
)。你将探索增加详细程度(-v
)、针对特定端口(-p
)以及将扫描结果保存到文件(-oN
)的选项。最后,你将在 Xfce 终端中分析空闲扫描的结果。
在这一步中,我们将使用 nmap
来发现网络 192.168.1.0/24 上的活跃主机。这是网络扫描和侦察中的一个基本步骤。nmap
中的 -sn
选项执行 ping 扫描,这意味着它只尝试确定主机是否在线,而不进行端口扫描。这对于快速识别网络上的活跃主机很有用。
在开始之前,让我们了解一下这个命令:
nmap
:网络映射工具。-sn
:此选项告诉 Nmap 仅执行 ping 扫描(主机发现)。它禁用端口扫描。192.168.1.0/24
:这是用 CIDR 表示法的目标网络。/24
表示 IP 地址的前 24 位是固定的,最后 8 位可以变化,这给我们提供了 256 个 IP 地址的范围(192.168.1.1 到 192.168.1.254,不包括网络地址和广播地址)。现在,让我们执行这个命令。打开你的 Xfce 终端并输入以下内容:
sudo nmap -sn 192.168.1.0/24
系统会提示你输入密码。由于 labex
用户具有无密码的 sudo
权限,只需按 Enter
即可。
输出将显示网络上在线的主机。可能看起来像这样:
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.00023s latency).
Nmap scan report for 192.168.1.2
Host is up (0.00031s latency).
Nmap scan report for 192.168.1.100
Host is up (0.00045s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.50 seconds
此输出表明 192.168.1.1
、192.168.1.2
和 192.168.1.100
在网络上是在线的。在你的环境中,在线的具体 IP 地址可能会有所不同。在接下来的步骤中,我们将使用 192.168.1.2
作为僵尸主机,并使用 192.188.1.1
作为目标。
在这一步中,我们将使用 nmap
执行空闲扫描。空闲扫描是一种高级扫描技术,它允许你在不暴露自己 IP 地址的情况下扫描目标。它通过利用一个“僵尸”主机来进行扫描转发。
其工作原理如下:
192.168.1.2
确定为一个潜在的僵尸主机。现在,让我们执行空闲扫描命令。打开你的 Xfce 终端并输入以下内容:
sudo nmap -sI 192.168.1.2 192.168.1.1
以下是该命令的分解:
nmap
:网络映射工具。-sI 192.168.1.2
:此选项指定空闲扫描并将 192.168.1.2
设置为僵尸主机。192.168.1.1
:这是我们要扫描的目标主机。系统会提示你输入密码。由于 labex
用户具有无密码的 sudo
权限,只需按 Enter
即可。
输出将显示通过空闲扫描确定的目标主机(192.168.1.1
)上开放的端口。结果可能如下所示:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Idle scan using zombie 192.168.1.2 (192.168.1.2:80); Class: Incremental
Nmap scan report for 192.168.1.1
Host is up (0.00029s latency).
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 15.23 seconds
此输出表明在目标主机 192.188.1.1
上,端口 22(SSH)和 80(HTTP)是开放的。请注意,具体开放的端口可能因目标系统的配置而异。
在这一步中,我们将为上一步的空闲扫描命令增加详细程度。nmap
中的详细程度选项会提供有关扫描过程的更详细信息,这有助于理解正在发生的事情并排查任何问题。
-v
选项会增加详细程度级别。你可以多次使用它(例如,-vv
或 -vvv
)以获得更详细的输出。对于本实验,我们将使用单个 -v
。
让我们执行带详细程度的命令。打开你的 Xfce 终端并输入以下内容:
sudo nmap -v -sI 192.168.1.2 192.168.1.1
以下是该命令的分解:
nmap
:网络映射工具。-v
:此选项增加详细程度级别。-sI 192.168.1.2
:此选项指定空闲扫描并将 192.168.1.2
设置为僵尸主机。192.168.1.1
:这是我们要扫描的目标主机。系统会提示你输入密码。由于 labex
用户具有无密码的 sudo
权限,只需按 Enter
即可。
输出将比上一次空闲扫描更详细。它将显示正在发送的数据包的信息、僵尸主机的 IP ID 值以及端口状态确定背后的推理。输出可能如下所示(确切输出会有所不同):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 0 scripts for scanning.
Initiating Idle scan for 192.168.1.1
Scanning 192.168.1.1 [1000 ports]
Idle scan using zombie 192.168.1.2 (192.168.1.2:80); Class: Incremental
Sending TCP SYN to 192.168.1.1:22
Got SYN-ACK from 192.168.1.1:22
PORT STATE SERVICE
22/tcp open ssh
Sending TCP SYN to 192.168.1.1:80
Got SYN-ACK from 192.168.1.1:80
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 16.54 seconds
详细的输出提供了对扫描过程的洞察,使得更容易理解空闲扫描的工作原理并诊断任何潜在问题。
在这一步中,我们将把空闲扫描聚焦在一个特定端口上。当你想要快速检查某个特定服务的状态而不扫描所有端口时,这会很有用。我们将扫描目标主机上的端口 80(HTTP)。
nmap
中的 -p
选项允许你指定想要扫描的端口。你可以指定单个端口、端口范围(例如,1 - 100
)或用逗号分隔的端口列表(例如,22,80,443
)。在这种情况下,我们将只扫描端口 80。
让我们使用空闲扫描技术执行扫描端口 80 的命令。打开你的 Xfce 终端并输入以下内容:
sudo nmap -sI 192.168.1.2 -p 80 192.168.1.1
以下是该命令的分解:
nmap
:网络映射工具。-sI 192.168.1.2
:此选项指定空闲扫描并将 192.168.1.2
设置为僵尸主机。-p 80
:此选项指定我们只想扫描端口 80。192.168.1.1
:这是我们要扫描的目标主机。系统会提示你输入密码。由于 labex
用户具有无密码的 sudo
权限,只需按 Enter
即可。
输出将显示目标主机(192.168.1.1
)上的端口 80 是开放还是关闭。结果可能如下所示:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Idle scan using zombie 192.168.1.2 (192.168.1.2:80); Class: Incremental
Nmap scan report for 192.168.1.1
Host is up (0.00031s latency).
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 14.87 seconds
此输出表明在目标主机 192.168.1.1
上端口 80(HTTP)是开放的。如果端口是关闭的,输出将显示 closed
而不是 open
。
在这一步中,我们将把空闲扫描的结果保存到一个文件中。这对于后续分析或报告目的很有用。我们将使用 -oN
选项以“正常”格式将结果保存到名为 idle.txt
的文件中。
-oN
选项告诉 nmap
以人类可读的格式保存输出,这种格式易于阅读和理解。还有其他输出格式可用(例如,-oX
用于 XML,-oG
用于可用于 Grep 的输出),但对于本实验,我们将使用正常格式。
让我们执行将空闲扫描结果保存到文件的命令。打开你的 Xfce 终端并输入以下内容:
sudo nmap -sI 192.168.1.2 -oN idle.txt 192.168.1.1
以下是该命令的分解:
nmap
:网络映射工具。-sI 192.168.1.2
:此选项指定空闲扫描并将 192.168.1.2
设置为僵尸主机。-oN idle.txt
:此选项告诉 nmap
以正常格式将输出保存到名为 idle.txt
的文件中。192.168.1.1
:这是我们要扫描的目标主机。系统会提示你输入密码。由于 labex
用户具有无密码的 sudo
权限,只需按 Enter
即可。
扫描完成后,结果将保存到你当前目录(~/project
)中名为 idle.txt
的文件中。你在终端中不会看到任何输出,因为输出已被重定向到该文件。
要验证文件是否已创建并包含扫描结果,你可以使用 cat
命令显示文件内容:
cat idle.txt
输出将显示扫描结果,类似于你在前面步骤中看到的,但现在它已保存在文件中。输出可能如下所示:
## Nmap 7.80 scan initiated Fri Oct 27 10:20:00 2023 as: nmap -sI 192.168.1.2 -oN idle.txt 192.168.1.1
Idle scan using zombie 192.168.1.2 (192.168.1.2:80); Class: Incremental
Nmap scan report for 192.168.1.1
Host is up (0.00031s latency).
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
## Nmap done at Fri Oct 27 10:20:15 2023 -- 1 IP address (1 host up) scanned in 15.00 seconds
现在你已将空闲扫描结果保存到文件中以供进一步分析。
在这一步中,我们将分析上一步中保存到 idle.txt
文件的空闲扫描结果。我们将使用 grep
命令从文件中提取特定信息,并讨论如何解读结果。
首先,让我们使用 cat
命令显示 idle.txt
文件的内容,以唤起我们对扫描结果的记忆。打开你的 Xfce 终端并输入以下内容:
cat idle.txt
你应该会看到 nmap
扫描的输出,包括有关目标主机的信息以及扫描端口的状态。
现在,让我们使用 grep
来查找特定信息。例如,要找出哪些端口是开放的,我们可以使用 grep
搜索包含单词“open”的行:
grep "open" idle.txt
此命令将显示 idle.txt
文件中所有包含单词“open”的行。输出可能如下所示:
80/tcp open http
这告诉我们目标主机上的端口 80(HTTP)是开放的。
你还可以使用 grep
来查找目标主机的 IP 地址:
grep "Nmap scan report for" idle.txt
此命令将显示包含目标主机 IP 地址的行:
Nmap scan report for 192.168.1.1
解读结果:
空闲扫描结果提供了有关目标主机开放端口的信息。此信息可用于识别主机上运行的潜在漏洞或服务。
nmap
无法确定该端口是开放还是关闭,因为防火墙阻止了连接。通过分析开放端口,你可以深入了解目标主机上运行的服务,并可能识别出可被利用的漏洞。请记住,空闲扫描是一种隐蔽的技术,但并非万无一失。如果网络管理员正在监控网络流量,他们仍可能检测到扫描。
至此,关于使用 nmap
进行空闲扫描的实验结束。你已经学会了如何识别僵尸主机、执行空闲扫描、增加详细程度、扫描特定端口、将结果保存到文件以及在 Xfce 终端中分析结果。
在本实验中,我们首先使用 nmap -sn 192.168.1.0/24
来识别 192.168.1.0/24 网络上的活动主机。这种 ping 扫描使我们能够快速发现活动主机,例如 192.168.1.1、192.168.1.2 和 192.168.1.100,这些主机对于后续的扫描活动至关重要。然后,我们准备以 192.168.1.2 作为僵尸主机、192.168.1.1 作为目标执行空闲扫描。