介绍
在本实验中,你将学习如何在 Nmap 扫描中随机化目标主机顺序。随机化扫描顺序有助于规避基本的入侵检测系统 (IDS) 并使你的扫描结果更难以预测。
你将首先执行标准的 Nmap 扫描,以建立基准。然后,你将使用 --randomize-hosts 选项,打乱 Nmap 扫描目标 IP 地址的顺序,包括子网和特定范围。你还会学习如何增加扫描的详细程度以及将结果保存到文件中,以便后续分析。通过比较输出结果,你将理解主机随机化的影响。
执行标准 Nmap 扫描
在本步骤中,你将使用 Nmap 执行基本的网络扫描,以识别 127.0.0.1/24 子网内的活动主机。这是网络侦察和了解网络上存在设备的基本技术。
在开始之前,让我们简要讨论一下 Nmap 和子网扫描是什么:
- Nmap (网络映射器): 一个免费且开源的网络发现和安全审计工具。它通过发送数据包并分析响应来发现计算机网络上的主机和服务。
- 子网: IP 网络的逻辑子划分。
/24表示法 (CIDR 表示法) 指示子网掩码,在本例中为255.255.255.0。这意味着前三个八位字节 (127.0.0) 定义网络,最后一个八位字节 (0-255) 定义该网络内的主机地址。 - 子网扫描: 扫描子网内所有可能的 IP 地址以识别活动主机的过程。
现在,让我们执行扫描。打开你的 Xfce 终端。你的默认目录是 ~/project。
执行以下命令:
sudo nmap 127.0.0.1/24
系统会提示你输入密码。由于 labex 用户在没有密码的情况下拥有 sudo 权限,只需按下 Enter 键即可。
该命令指示 Nmap 扫描从 127.0.0.1 到 127.0.0.255 的所有 IP 地址。Nmap 将向每个 IP 地址发送各种探测,以确定主机是否处于活动状态。
输出将显示你发现的主机及其状态(例如,“主机已启动”)。如果 Nmap 能够确定,它还可能会显示这些主机上的开放端口。
示例输出(实际输出将根据你的网络设置而异,但你应该看到 127.0.0.1 以及可能的其他主机):
Starting Nmap <version> ( https://nmap.org ) at <date>
Nmap scan report for localhost (127.0.0.1)
Host is up (<latency>s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
2121/tcp open ccproxy-ftp
2222/tcp open EtherNetIP-1
3001/tcp open nessus
8080/tcp open http-proxy
Nmap done: 256 IP addresses (1 host up) scanned in <time> seconds
此输出表明发现 127.0.0.1 处于活动状态,并且其上有多个端口处于开放状态,包括 22 (SSH)、2121 (FTP)、2222 (EtherNet/IP-1)、3001 (Nessus) 和 8080 (HTTP-proxy)。
随机化子网主机扫描顺序
在本步骤中,你将通过随机化 Nmap 扫描 127.0.0.1/24 子网内主机的顺序来增强你的网络扫描。此技术有助于规避基本的入侵检测系统 (IDS) 并使扫描结果更难以预测。
默认情况下,Nmap 以顺序扫描主机。网络监控工具可以轻松检测到这种顺序。--randomize-hosts 选项会在扫描之前随机打乱目标 IP 地址的顺序,使其更难以识别扫描。
要随机化主机顺序,请在你的 Xfce 终端中执行以下命令:
sudo nmap --randomize-hosts 127.0.0.1/24
与之前一样,系统会提示你输入密码。由于 labex 用户在没有密码的情况下拥有 sudo 权限,只需按下 Enter 键即可。
此命令将扫描与上一步相同的子网 (127.0.0.1/24),但扫描 IP 地址的顺序将被随机化。
输出将类似于之前的扫描,显示发现的主机及其状态。但是,如果发现多个主机,主机列表的顺序可能会不同。在这个特定的实验环境中,你可能只看到 127.0.0.1 作为主要活动主机,但内部扫描过程仍然会尝试随机化子网中所有 256 个 IP 地址的顺序。
示例输出(实际输出将根据你的网络而异):
Starting Nmap <version> ( https://nmap.org ) at <date>
Nmap scan report for localhost (127.0.0.1)
Host is up (<latency>s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
2121/tcp open ccproxy-ftp
2222/tcp open EtherNetIP-1
3001/tcp open nessus
8080/tcp open http-proxy
Nmap done: 256 IP addresses (1 host up) scanned in <time> seconds
虽然单个活动主机的最终输出可能看起来相同,但子网中 256 个 IP 地址的内部扫描过程已被随机化。
随机化特定范围主机扫描顺序
在本步骤中,你将专注于扫描特定范围的 IP 地址(127.0.0.1 到 127.0.0.10),并随机化扫描这些主机的顺序。当你想针对网络的较小子集进行扫描,同时保持一定程度的隐蔽性时,此方法非常有用。
--randomize-hosts 选项,正如你在上一步看到的,会随机打乱目标 IP 地址的顺序。这次,你将把它应用于特定范围,而不是整个子网。
要随机化 127.0.0.1-10 范围内的主机顺序,请在你的 Xfce 终端中执行以下命令:
sudo nmap --randomize-hosts 127.0.0.1-10
系统会提示你输入密码。由于 labex 用户在没有密码的情况下拥有 sudo 权限,只需按下 Enter 键即可。
该命令指示 Nmap 扫描从 127.0.0.1 到 127.0.0.10 的 IP 地址,但顺序是随机的。
输出将显示该范围内发现的主机及其状态。每次运行命令时,主机列表的顺序都会随机化。
示例输出(实际输出将根据你的网络而异):
Starting Nmap <version> ( https://nmap.org ) at <date>
Nmap scan report for localhost (127.0.0.1)
Host is up (<latency>s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
2121/tcp open ccproxy-ftp
2222/tcp open EtherNetIP-1
3001/tcp open nessus
8080/tcp open http-proxy
Nmap done: 10 IP addresses (1 host up) scanned in <time> seconds
在此示例中,Nmap 以随机顺序扫描了从 127.0.0.1 到 127.0.0.10 的 IP 地址,并发现 127.0.0.1 处于活动状态。
增加详细级别并保存扫描结果到文件
在本步骤中,你将学习如何增加 Nmap 扫描的详细程度并保存扫描结果到文件。这对于后续分析、报告或与先前扫描结果进行比较至关重要。你将继续在执行这些操作的同时随机化主机扫描顺序。
Nmap 中的 -v 选项会提高详细程度,提供有关扫描过程的更多详细信息。-oN 选项指定“正常”输出,它易于人类阅读,并且适合使用简单的工具进行解析。
要增加详细程度并将随机化主机扫描的结果保存到名为 random_scan.txt 的文件中,请在你的 Xfce 终端中执行以下命令:
sudo nmap -v --randomize-hosts -oN random_scan.txt 127.0.0.1/24
系统会提示你输入密码。由于 labex 用户在没有密码的情况下拥有 sudo 权限,只需按下 Enter 键即可。
该命令指示 Nmap 扫描 127.0.0.1/24 子网,随机化主机顺序,提供详细输出,并将输出以“正常”格式保存到当前目录 (~/project) 下名为 random_scan.txt 的文件中。
终端中的输出现在将包含有关扫描过程的详细信息,例如发送的探测、扫描的端口以及某些决策的原因。
示例详细输出(实际输出将根据你的网络而异):
Starting Nmap <version> ( https://nmap.org ) at <date>
Initiating Ping Scan at <time>
Scanning 256 hosts [2 ports/host]
Completed Ping Scan at <time>, <time>s elapsed (256 total hosts)
Initiating Parallel DNS resolution of 256 hosts. at <time>
Completed Parallel DNS resolution of 256 hosts. at <time>, <time>s elapsed
Initiating SYN Stealth Scan at <time>
Scanning 256 hosts [1000 ports/host]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 2121/tcp on 127.0.0.1
Discovered open port 2222/tcp on 127.0.0.1
Discovered open port 3001/tcp on 127.0.0.1
Discovered open port 8080/tcp on 127.0.0.1
Completed SYN Stealth Scan at <time>, <time>s elapsed (256 total hosts)
Nmap scan report for localhost (127.0.0.1)
Host is up (<latency>s latency).
PORT STATE SERVICE
22/tcp open ssh
2121/tcp open ccproxy-ftp
2222/tcp open EtherNetIP-1
3001/tcp open nessus
8080/tcp open http-proxy
Nmap done: 256 IP addresses (1 host up) scanned in <time> seconds
扫描完成后,你可以使用 cat 命令查看 random_scan.txt 文件的内容:
cat random_scan.txt
random_scan.txt 文件现在包含扫描期间显示在屏幕上的相同信息。你现在可以使用此文件进行进一步分析或报告。
总结
在本实验中,你探索了 Nmap 的网络扫描和主机发现能力,重点是随机化目标选择。
你首先使用 nmap 127.0.0.1/24 执行标准子网扫描,以识别活动主机及其开放服务。这建立了理解 Nmap 默认行为的基线。
接下来,你学习了如何使用 --randomize-hosts 选项随机化 Nmap 扫描目标的顺序,将其应用于子网 (127.0.0.1/24) 和特定 IP 范围 (127.0.0.1-10)。这演示了如何使你的扫描结果不那么可预测。
最后,你通过增加详细程度 (-v) 来获得更详细的输出,并使用 -oN 选项将结果保存到文件 (random_scan.txt) 中。这突出了控制和记录 Nmap 扫描以供后续分析的实用技巧。
你现在已经掌握了执行 Nmap 扫描、随机化主机顺序、增加详细程度以及保存扫描结果的基本技能,这些技能对于网络侦察和安全审计至关重要。



