在 Nmap 中随机化目标

NmapNmapBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将探索如何在 Nmap 扫描中随机化目标主机顺序。我们将首先对 192.168.1.0/24 执行标准子网扫描,以识别活动主机。

然后,我们将使用 --randomize-hosts 选项来打乱 Nmap 扫描目标 IP 地址的顺序,包括子网(192.168.1.0/24)和特定范围(192.168.1.1 - 10)。我们还将使用 -v 标志增加详细程度,并将随机化扫描结果保存到名为 random.txt 的文件中。最后,我们将在 Xfce 终端中比较输出,以观察随机化的效果。

使用 Nmap 对 192.168.1.0/24 子网进行常规扫描

在本步骤中,我们将使用 Nmap 执行基本网络扫描,以识别 192.168.1.0/24 子网内的活动主机。这是网络侦察以及了解网络中存在的设备的一项基本技术。

在开始之前,让我们简要讨论一下什么是 Nmap 和子网扫描:

  • Nmap(网络映射器):一款用于网络发现和安全审计的免费开源实用工具。它通过发送数据包并分析响应来发现计算机网络上的主机和服务。
  • 子网:IP 网络的逻辑细分。/24 表示法(无类别域间路由表示法)表示子网掩码,在这种情况下是 255.255.255.0。这意味着前三个八位组(192.168.1)定义网络,最后一个八位组(0 - 255)定义该网络内的主机地址。
  • 子网扫描:扫描子网内所有可能的 IP 地址以识别活动主机的过程。

现在,让我们进行扫描。在 LabEx VM 中打开你的 Xfce 终端。请记住,你的默认目录是 ~/project

执行以下命令:

sudo nmap 192.168.1.0/24

系统将提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。

此命令告诉 Nmap 扫描从 192.168.1.0 到 192.168.1.255 的所有 IP 地址。Nmap 将向每个 IP 地址发送各种探测,以确定主机是否活动。

输出将显示已发现的主机列表及其状态(例如,“主机已启动”)。如果 Nmap 能够确定,它还可能显示这些主机上开放的端口。

示例输出(实际输出将根据你的网络而有所不同):

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.00020s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh

Nmap scan report for 192.168.1.100
Host is up (0.00030s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
80/tcp  open  http

Nmap done: 256 IP addresses (2 hosts up) scanned in 5.00 seconds

此输出表明发现了两个活动主机:192.168.1.1 和 192.168.1.100。它还显示 192.168.1.1 上的端口 22(SSH)开放,192.168.1.100 上的端口 80(HTTP)开放。

使用 nmap --randomize-hosts 192.168.1.0/24 随机化主机顺序

在本步骤中,我们将通过随机化 Nmap 扫描 192.168.1.0/24 子网内主机的顺序来增强网络扫描。此技术有助于规避基本的入侵检测系统(IDS)并使扫描更难以预测。

默认情况下,Nmap 按顺序扫描主机。这很容易被网络监控工具检测到。--randomize-hosts 选项会在扫描前打乱目标 IP 地址的顺序,从而更难识别该扫描。

要随机化主机顺序,请在你的 Xfce 终端中执行以下命令:

sudo nmap --randomize-hosts 192.168.1.0/24

和之前一样,系统会提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。

此命令将扫描与上一步相同的子网(192.168.1.0/24),但扫描 IP 地址的顺序将是随机的。

输出将与之前的扫描类似,显示已发现的主机及其状态。然而,列出主机的顺序可能会有所不同。

示例输出(实际输出将根据你的网络而有所不同):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for 192.168.1.100
Host is up (0.00030s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
80/tcp  open  http

Nmap scan report for 192.168.1.1
Host is up (0.00020s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh

Nmap done: 256 IP addresses (2 hosts up) scanned in 5.10 seconds

请注意,输出中主机(192.168.1.100 和 192.168.1.1)的顺序可能与之前的扫描不同。这是由于 --randomize-hosts 选项的作用。

使用 nmap --randomize-hosts 192.168.1.1-10 随机化扫描范围

在本步骤中,我们将专注于扫描特定范围的 IP 地址(192.168.1.1 至 192.168.1.10),并随机化扫描这些主机的顺序。当你想要针对网络中的较小子集进行扫描并仍保持一定程度的隐蔽性时,这很有用。

如我们在上一步中所见,--randomize-hosts 选项会打乱目标 IP 地址的顺序。这次,我们将把它应用于特定范围而非整个子网。

要在 192.168.1.1 - 10 范围内随机化主机顺序,请在你的 Xfce 终端中执行以下命令:

sudo nmap --randomize-hosts 192.168.1.1-10

系统会提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。

此命令告诉 Nmap 扫描从 192.168.1.1 到 192.168.1.10 的 IP 地址,但顺序是随机的。

输出将显示该范围内已发现的主机列表及其状态。每次运行命令时,列出主机的顺序都会是随机的。

示例输出(实际输出将根据你的网络而有所不同):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for 192.168.1.5
Host is up (0.00025s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh

Nmap scan report for 192.168.1.1
Host is up (0.00020s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
80/tcp  open  http

Nmap done: 10 IP addresses (2 hosts up) scanned in 2.00 seconds

在此示例中,Nmap 以随机顺序扫描了从 192.168.1.1 到 192.168.1.10 的 IP 地址,并发现了两个活动主机:192.168.1.5 和 192.168.1.1。显示的端口仅为示例,在你的环境中可能会有所不同。

使用 nmap -v --randomize-hosts 192.168.1.0/24 添加详细输出

在本步骤中,我们将在随机化主机顺序的同时,为 Nmap 扫描添加详细输出。详细输出会提供有关扫描过程的更多详细信息,这有助于故障排查或理解 Nmap 的行为。

Nmap 中的 -v 选项会增加详细程度。使用一次它会比默认输出提供更多信息。使用两次(-vv)则会提供更多细节。

要添加详细输出并随机化主机顺序,请在你的 Xfce 终端中执行以下命令:

sudo nmap -v --randomize-hosts 192.168.1.0/24

系统会提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。

此命令将扫描 192.168.1.0/24 子网,随机化主机顺序,并提供更详细的输出。

现在,输出将包括有关扫描过程的详细信息,例如正在发送的探测、正在扫描的端口以及某些决策的原因。

示例输出(实际输出将根据你的网络而有所不同):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Initiating Ping Scan at 10:15
Scanning 256 hosts [2 ports/host]
Completed Ping Scan at 10:15, 0.72s elapsed (256 total hosts)
Initiating Parallel DNS resolution of 256 hosts. at 10:15
Completed Parallel DNS resolution of 256 hosts. at 10:15, 1.81s elapsed
Initiating SYN Stealth Scan at 10:15
Scanning 256 hosts [1000 ports/host]
Discovered open port 22/tcp on 192.168.1.1
Discovered open port 80/tcp on 192.168.1.100
Completed SYN Stealth Scan at 10:16, 3.21s elapsed (256 total hosts)
Nmap scan report for 192.168.1.1
Host is up (0.00020s latency).
PORT   STATE SERVICE
22/tcp open  ssh

Nmap scan report for 192.168.1.100
Host is up (0.00030s latency).
PORT   STATE SERVICE
80/tcp open  http

Nmap done: 256 IP addresses (2 hosts up) scanned in 5.74 seconds

现在,输出展示了有关扫描过程的更多信息,例如 Ping 扫描和 DNS 解析的时间。这有助于理解 Nmap 的工作方式以及排查任何问题。

使用 nmap --randomize-hosts -oN random.txt 192.168.1.0/24 保存结果

在本步骤中,我们将学习如何将 Nmap 扫描的结果保存到文件中。这对于后续的分析、报告或与之前的扫描进行比较至关重要。我们将在保存输出的同时继续随机化主机顺序。

Nmap 提供了几种保存扫描结果的选项,每种选项都有不同的格式。-oN 选项指定“正常”输出,这种输出是人类可读的,适合用简单工具进行解析。

要将随机化主机扫描的结果保存到名为 random.txt 的文件中,请在你的 Xfce 终端中执行以下命令:

sudo nmap --randomize-hosts -oN random.txt 192.168.1.0/24

系统会提示你输入密码。由于 labex 用户具有无密码的 sudo 权限,只需按 Enter 即可。

此命令告诉 Nmap 扫描 192.168.1.0/24 子网,随机化主机顺序,并将输出以“正常”格式保存到当前目录(~/project)中名为 random.txt 的文件。

扫描完成后,你可以使用 cat 命令或像 nano 这样的文本编辑器查看 random.txt 文件的内容。

cat random.txt

示例输出(实际输出将根据你的网络而有所不同):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00020s latency).
PORT   STATE SERVICE
22/tcp open  ssh

Nmap scan report for 192.168.1.100
Host is up (0.00030s latency).
PORT   STATE SERVICE
80/tcp open  http

Nmap done: 256 IP addresses (2 hosts up) scanned in 5.00 seconds

random.txt 文件现在包含了扫描期间屏幕上显示的相同信息。你现在可以使用此文件进行进一步的分析或报告。

在 Xfce 终端中比较输出

在本步骤中,我们将比较在前面步骤中执行的不同 Nmap 扫描的输出。这将帮助我们理解我们使用的各种选项的效果,例如主机随机化和详细程度。

首先,让我们回顾一下我们执行的命令:

  1. sudo nmap 192.168.1.0/24(正常扫描)
  2. sudo nmap --randomize-hosts 192.168.1.0/24(随机化主机)
  3. sudo nmap --randomize-hosts 192.168.1.1 - 10(随机化范围)
  4. sudo nmap -v --randomize-hosts 192.168.1.0/24(详细,随机化主机)
  5. sudo nmap --randomize-hosts -oN random.txt 192.168.1.0/24(随机化主机,保存到文件)

要比较输出,你可以使用几种方法:

  • 在终端中直接比较:你可以通过终端历史记录向上滚动来比较前四个命令的输出。注意扫描主机的顺序差异(如果有的话)以及详细扫描提供的详细程度。

  • 将正常扫描与保存的文件进行比较:你可以再次运行第一个命令,并将其输出与我们在上一步中创建的 random.txt 文件的内容进行比较。

    sudo nmap 192.168.1.0/24
    cat random.txt

    观察到输出应该相似,但由于在创建 random.txt 时使用了 --randomize-hosts 选项,扫描的主机顺序可能不同。

  • 使用 diff 命令(可选):为了进行更详细的比较,你可以将正常扫描的输出保存到一个文件(例如 normal.txt),然后使用 diff 命令比较这两个文件。

    sudo nmap -oN normal.txt 192.168.1.0/24
    diff normal.txt random.txt

    diff 命令将突出显示两个文件之间的任何差异。如果唯一的差异是主机的顺序,输出将显示添加和删除的行,但内容将是相同的。

通过比较输出,你应该能够观察到以下几点:

  • --randomize-hosts 选项会改变 Nmap 扫描主机的顺序。
  • -v 选项提供有关扫描过程的更多详细信息。
  • -oN 选项将扫描结果以人类可读的格式保存到文件中。

本次实验到此结束。你已经学习了如何执行基本的 Nmap 扫描、随机化主机顺序、增加详细程度以及将结果保存到文件中。这些是网络侦察和安全审计的基本技能。

总结

在本次实验中,我们探索了 Nmap 在网络扫描和主机发现方面的功能。我们首先使用 nmap 192.168.1.0/24 执行了一次标准的子网扫描,以识别指定网络范围内的活动主机。这一基础步骤展示了 Nmap 如何探测 IP 地址以确定主机的可用性。

随后,我们学习了使用 --randomize-hosts 选项随机化 Nmap 扫描目标的顺序,并将其应用于子网(192.168.1.0/24)和特定的 IP 范围(192.168.1.1 - 10)。我们还通过增加详细程度(-v)来增强扫描,并将结果保存到文件(random.txt)以供后续比较,突出了控制和记录 Nmap 扫描的实用技术。