介绍
在本实验中,目标是优化 Nmap 中的扫描时间和性能。你将学习各种增强 Nmap 扫描的技术,包括使用 -T4 的快速模板进行快速网络扫描、增加并行度、设置延迟、跟踪进度、测试隐蔽性以及在 Xfce 终端中比较时间。这些步骤将帮助你理解如何在 Nmap 扫描中平衡速度和准确性。
使用 nmap -T4 192.168.1.0/24的快速模板
在本步骤中,我们将使用 Nmap 的快速模板选项对网络进行快速扫描。-T4 选项用于指定一个在速度和准确性之间取得平衡的计时模板。它比默认模板更快,但在某些情况下可能准确性稍低。
在开始之前,让我们先了解一下什么是计时模板。Nmap 使用计时模板来控制对目标进行扫描的激进程度。这些模板会影响诸如探测之间的延迟、重试次数和超时值等参数。-T 选项允许你选择一个预定义的模板,范围从 -T0(偏执模式)到 -T5(疯狂模式)。数字越大,表示扫描越激进。
-T4 模板对于大多数网络来说是一个不错的折衷选择。它比默认模板(-T3)更快,但仍避免了过于激进,以免导致数据包丢失或触发入侵检测系统。
现在,让我们进行扫描。我们将使用 nmap -T4 192.168.1.0/24 命令来扫描 192.168.1.0/24 网络。
在 LabEx 虚拟机中打开终端。确保你在 ~/project 目录中。
执行以下命令:
sudo nmap -T4 192.168.1.0/24
此命令告诉 Nmap 使用 -T4 计时模板扫描 192.168.1.0/24 范围内的所有 IP 地址。/24 指定子网掩码为 255.255.255.0,这意味着 Nmap 将扫描 256 个 IP 地址(从 192.168.1.0 到 192.168.1.255)。
输出将显示扫描结果,包括每个主机上开放的端口和运行的服务。由于 192.168.1.0/24 网络可能是你的本地网络,结果将根据连接到该网络的设备而有所不同。
示例输出(将根据你的网络而有所不同):
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.00028s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http
Nmap scan report for 192.168.1.100
Host is up (0.00031s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 256 IP addresses (2 hosts up) scanned in 5.23 seconds
此输出显示 Nmap 扫描了 256 个 IP 地址,并发现了两个活跃主机:192.168.1.1 和 192.168.1.100。主机 192.168.1.1 开放了端口 80(http),主机 192.168.1.100 开放了端口 22(ssh)。扫描大约花费了 5.23 秒。
使用 nmap --min-parallelism 20 127.0.0.1 增加并行度
在本步骤中,我们将使用 --min-parallelism 选项来增加 Nmap 扫描的并行度。此选项允许你指定 Nmap 并行发送的最小探测数。增加并行度可以显著加快扫描速度,特别是在具有许多主机或端口的网络上。
默认情况下,Nmap 会根据网络条件动态调整并行度。但是,你可以使用 --min-parallelism 来确保 Nmap 始终同时发送至少一定数量的探测。
让我们了解一下在 Nmap 环境中并行度的含义。当 Nmap 扫描目标时,它会向不同的端口或主机发送探测。通过并行度,Nmap 可以同时发送多个探测,而不是在发送下一个探测之前等待每个探测的响应。这可以大大减少整体扫描时间。
现在,让我们进行一次增加并行度的扫描。我们将使用 nmap --min-parallelism 20 127.0.0.1 命令以最小并行度 20 扫描本地主机(127.0.0.1)。
在 LabEx 虚拟机中打开终端。确保你在 ~/project 目录中。
执行以下命令:
sudo nmap --min-parallelism 20 127.0.0.1
此命令告诉 Nmap 扫描 127.0.0.1,并尝试保持至少 20 个探测并行进行。请注意,Nmap 仍可能根据网络条件动态调整并行度,但它会尝试保持在指定的最小值之上。
输出将显示扫描结果,包括本地主机上开放的端口和运行的服务。
示例输出(将根据你的系统而有所不同):
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).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
631/tcp open ipp
9000/tcp open cslistener
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
此输出显示 Nmap 扫描了本地主机(127.0.0.1)并发现了三个开放端口:22(ssh)、631(ipp)和 9000(cslistener)。由于增加了并行度,扫描相对较快地完成。实际节省的时间将取决于网络条件和被扫描的目标。
使用 nmap --scan-delay 500ms 192.168.1.1 设置延迟
在本步骤中,我们将使用 Nmap 中的 --scan-delay 选项设置探测之间的延迟。此选项允许你指定 Nmap 在发送每个探测之间应等待的时间量。增加扫描延迟对于避免被入侵检测系统(IDS)检测到或扫描对网络流量敏感的主机可能很有用。
默认情况下,Nmap 会根据网络条件自动调整扫描延迟。但是,你可以使用 --scan-delay 手动设置特定的延迟。延迟以毫秒(ms)或秒(s)为单位指定。
让我们了解一下为什么你可能想要使用扫描延迟。非常快速的扫描可能会使目标主机不堪重负或触发安全警报。添加延迟会使扫描的攻击性降低,不太可能被注意到。当扫描生产系统或网络时,这一点尤其重要,因为在这些环境中你希望将扫描的影响降至最低。
现在,让我们进行一次指定延迟的扫描。我们将使用 nmap --scan-delay 500ms 192.168.1.1 命令以每个探测之间延迟 500 毫秒的方式扫描主机 192.168.1.1。
在 LabEx 虚拟机中打开终端。确保你在 ~/project 目录中。
执行以下命令:
sudo nmap --scan-delay 500ms 192.168.1.1
此命令告诉 Nmap 扫描 192.168.1.1,并在发送每个探测之间等待 500 毫秒。与没有延迟的扫描相比,这将显著减慢扫描速度。
输出将显示扫描结果,包括在 192.168.1.1 上运行的开放端口和服务。
示例输出(将根据你的网络而有所不同):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00031s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 5.50 seconds
此输出显示 Nmap 扫描了 192.168.1.1 并发现端口 80(http)开放。请注意,与没有 --scan-delay 选项的扫描相比,此次扫描花费的时间更长(5.50 秒)。确切时间将根据目标和网络条件而有所不同。
使用 nmap -v --stats-every 5s 192.168.1.0/24跟踪进度
在本步骤中,我们将学习如何使用 -v(详细模式)和 --stats-every 选项来跟踪 Nmap 扫描的进度。这些选项提供有关扫描进度的实时反馈,这对于长时间运行的扫描特别有用。
-v 选项会增加 Nmap 输出的详细程度。使用 -v 时,Nmap 将显示有关扫描的更多信息,包括正在发送的探测、接收到的响应以及每个主机的状态。你可以使用 -vv 获得更详细的输出。
--stats-every 选项允许你指定 Nmap 应多久打印一次有关扫描进度的统计信息。该值以秒(s)、分钟(m)或小时(h)为单位指定。例如,--stats-every 5s 将每 5 秒打印一次统计信息。
让我们了解一下为什么跟踪进度很重要。在扫描大型网络时,Nmap 扫描可能会花费大量时间。如果没有进度信息,很难知道扫描进行到了什么程度以及是否有进展。-v 和 --stats-every 选项提供了有关扫描状态的宝贵见解。
现在,让我们进行一次带有进度跟踪的扫描。我们将使用 nmap -v --stats-every 5s 192.168.1.0/24 命令扫描 192.168.1.0/24 网络,并每 5 秒打印一次统计信息。
在 LabEx 虚拟机中打开终端。确保你在 ~/project 目录中。
执行以下命令:
sudo nmap -v --stats-every 5s 192.168.1.0/24
此命令告诉 Nmap 扫描 192.168.1.0/24 范围内的所有 IP 地址,显示详细输出,并每 5 秒打印一次统计信息。
输出将显示扫描的进度,包括已扫描的主机数量、处于活动状态的主机数量以及估计剩余时间。
示例输出(将根据你的网络而有所不同):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Initiating Ping Scan at 10:20
Scanning 256 hosts [2 ports/host]
Completed Ping Scan at 10:20, 0.23s elapsed (256 total hosts)
Initiating Parallel DNS resolution of 256 hosts. at 10:20
Completed Parallel DNS resolution of 256 hosts. at 10:20, 1.42s elapsed
Initiating SYN Stealth Scan at 10:20
Scanning 256 hosts [1000 ports/host]
5s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
10s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
15s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
20s elapsed; 1 hosts completed (0.04/s). 1 hosts up.
Nmap scan report for 192.168.1.1
Host is up (0.00029s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http
25s elapsed; 1 hosts completed (0.04/s). 1 hosts up.
Nmap scan report for 192.168.1.100
Host is up (0.00032s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
30s elapsed; 2 hosts completed (0.07/s). 2 hosts up.
Nmap done: 256 IP addresses (2 hosts up) scanned in 32.50 seconds
此输出每 5 秒显示一次扫描进度。你可以看到已完成的主机数量、扫描速率(主机/秒)以及处于活动状态的主机数量。扫描还会在发现开放端口时进行报告。
使用 nmap -T1 127.0.0.1 测试隐蔽性
在本步骤中,我们将探索如何使用 Nmap 的 -T1 计时模板执行隐蔽扫描。隐蔽扫描旨在将被入侵检测系统(IDS)或防火墙检测到的可能性降至最低。
-T1 选项被称为“偷偷摸摸”的计时模板。它比默认模板慢,旨在不那么引人注目。它通过增加探测之间的延迟来实现这一点,这减少了目标系统上的负载,并使扫描不太可能被标记为恶意行为。
需要明白的是,没有扫描是真正不可见的。即使使用隐蔽技术,也始终存在被检测到的风险。然而,使用 -T1 选项可以显著降低这种风险。
现在,让我们使用 -T1 计时模板对本地主机(127.0.0.1)进行隐蔽扫描。
在 LabEx 虚拟机中打开你的终端。确保你在 ~/project 目录中。
执行以下命令:
sudo nmap -T1 127.0.0.1
此命令告诉 Nmap 使用 -T1 计时模板扫描本地主机(127.0.0.1)。因为我们正在扫描本地主机,即使使用较慢的计时模板,扫描也应该相对较快完成。
输出将显示扫描结果,包括本地主机上开放的端口和运行的服务。
示例输出(可能因你的系统配置而异):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
631/tcp open ipp
9000/tcp open cslistener
Nmap done: 1 IP address (1 host up) scanned in 10.50 seconds
此输出表明 Nmap 扫描了本地主机并发现三个开放端口:22(ssh)、631(ipp)和 9000(cslistener)。扫描大约花费了 10.50 秒。请注意,与使用像 -T4 这样更快的计时模板相比,扫描时间可能会更长。
在 Xfce 终端中比较扫描时间
在本步骤中,我们将比较使用不同计时模板的 Nmap 扫描的执行时间。我们将使用 Xfce 终端运行扫描,并观察每次扫描完成所需的时间。这将帮助你了解计时模板对扫描速度的影响。
我们将比较 -T1(偷偷摸摸模式)和 -T4(快速模式)计时模板。为此,我们将扫描本地主机(127.0.0.1)。
在 LabEx 虚拟机中打开你的终端。确保你在 ~/project 目录中。
首先,让我们使用 -T1 计时模板运行一次扫描。我们将使用 time 命令来测量执行时间。
执行以下命令:
time sudo nmap -T1 127.0.0.1
time 命令将执行 Nmap 扫描,然后显示完成扫描所需的时间。请注意 time 命令报告的“实际”时间。这代表了总共经过的时间。
示例输出(时间会有所不同):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 11:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
631/tcp open ipp
9000/tcp open cslistener
Nmap done: 1 IP address (1 host up) scanned in 10.50 seconds
real 0m10.552s
user 0m0.103s
sys 0m0.032s
在这个例子中,“实际”时间是 0 分 10.552 秒。
现在,让我们使用 -T4 计时模板运行相同的扫描。
执行以下命令:
time sudo nmap -T4 127.0.0.1
同样,请注意 time 命令报告的“实际”时间。
示例输出(时间会有所不同):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 11:01 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
631/tcp open ipp
9000/tcp open cslistener
Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds
real 0m1.285s
user 0m0.098s
sys 0m0.029s
在这个例子中,“实际”时间是 0 分 1.285 秒。
比较两次扫描的“实际”时间。你应该会观察到,使用 -T4 计时模板的扫描比使用 -T1 计时模板的扫描完成得快得多。这展示了速度与隐蔽性之间的权衡。-T1 较慢但更隐蔽,而 -T4 较快但可能更容易被察觉。
总结
在本实验中,参与者学会了优化 Nmap 扫描时间和性能。他们使用 -T4 选项对 192.168.1.0/24 网络进行快速且平衡的扫描,了解到较高的 -T 值意味着更激进的扫描。他们还通过 --min-parallelism 20 增加了并行度,使用 --scan-delay 500ms 设置了扫描延迟,通过 -v --stats-every 5s 跟踪进度,使用 -T1 测试了隐蔽扫描,并在 Xfce 终端中比较了扫描时间。



