使用 Nmap 执行主机发现

NmapNmapBeginner
立即练习

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

简介

在本实验中,目标是学习如何使用 Nmap 进行主机发现。本实验涵盖了用于主机发现的各种 Nmap 命令,包括使用 -sn 选项在 192.168.1.0/24 网络上运行 ping 扫描以禁用端口扫描、使用 TCP SYN ping 和 ACK ping 以及组合不同的 ping。它还展示了如何在 Xfce 终端中查看活动主机。此外,它演示了在禁用端口扫描的同时对本地主机地址执行 ping 扫描。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/syn_scan("SYN Scan") nmap/NmapGroup -.-> nmap/firewall_evasion("Firewall Evasion Techniques") subgraph Lab Skills nmap/port_scanning -.-> lab-530184{{"使用 Nmap 执行主机发现"}} nmap/host_discovery -.-> lab-530184{{"使用 Nmap 执行主机发现"}} nmap/target_specification -.-> lab-530184{{"使用 Nmap 执行主机发现"}} nmap/syn_scan -.-> lab-530184{{"使用 Nmap 执行主机发现"}} nmap/firewall_evasion -.-> lab-530184{{"使用 Nmap 执行主机发现"}} end

使用 nmap -sn 192.168.1.0/24 运行 ping 扫描

在这一步中,我们将使用 Nmap 执行 ping 扫描。ping 扫描,也称为主机发现扫描,是一种确定网络上哪些主机处于活动状态(在线)的基本技术。Nmap 会向指定范围内的每个 IP 地址发送各种探测,并分析响应以识别活动主机。Nmap 中的 -sn 选项会禁用端口扫描,使其比完整扫描更快且侵入性更小。

192.168.1.0/24 是一种表示网络的 CIDR 表示法。/24 表示 IP 地址的前 24 位是固定的,用于定义网络,其余 8 位用于该网络内的主机地址。这相当于从 192.168.1.1192.168.1.254 的一系列 IP 地址。

要在 192.168.1.0/24 网络上执行 ping 扫描,请在终端中执行以下命令:

sudo nmap -sn 192.168.1.0/24

此命令告诉 Nmap 对 192.168.1.0/24 网络中的所有 IP 地址执行 ping 扫描。需要使用 sudo,因为 Nmap 通常需要提升的权限才能发送某些类型的网络数据包。

输出将列出响应 Nmap 探测的主机的 IP 地址,表明它们正在运行。输出将类似于以下内容(具体的 IP 地址和主机名会因你的网络而异):

Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.00043s latency).
Nmap scan report for 192.168.1.10
Host is up (0.0023s latency).
Nmap scan report for 192.168.1.20
Host is up (0.0019s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.54 seconds

此输出表明 Nmap 扫描了 256 个 IP 地址(整个 192.168.1.0/24 网络)并发现 3 个主机处于活动状态。

使用 nmap -sn 127.0.0.1 禁用端口扫描

在这一步中,我们将使用 Nmap 对本地主机地址(127.0.0.1)执行 ping 扫描,同时禁用端口扫描。这里的主要目的是演示如何使用 -sn 选项专门执行主机发现,而不发起完整的端口扫描。当你只想检查主机是否存活,并避免潜在的高负载或耗时的端口扫描时,这很有用。

127.0.0.1 是回环地址,也称为本地主机。它始终指当前机器。ping 本地主机是验证网络接口是否正常运行的快速方法。

要在不进行端口扫描的情况下对本地主机执行 ping 扫描,请在终端中执行以下命令:

sudo nmap -sn 127.0.0.1

此命令告诉 Nmap 对 127.0.0.1 地址执行 ping 扫描。-sn 选项确保 Nmap 仅执行主机发现,而不尝试扫描任何端口。虽然在这种情况下,对于本地主机可能并非严格需要,但通常 Nmap 需要 sudo 权限才能发送原始数据包。

输出将指示主机是否存活。它应该类似于以下内容:

Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000070s latency).
Nmap done: 1 IP address (1 host up) scanned in 0.00 seconds

此输出确认本地主机(127.0.0.1)正在运行。如 -sn 选项所指定,Nmap 仅执行了 ping 扫描,并未扫描任何端口。

使用 nmap -PS 192.168.1.1 进行 TCP SYN ping 扫描

在这一步中,我们将使用 Nmap 对特定主机(192.168.1.1)执行 TCP SYN ping 扫描。TCP SYN ping 会向目标主机发送一个 TCP SYN 数据包。如果主机处于活动状态并在指定端口(或默认情况下的任何端口)上监听,它将用 SYN/ACK 数据包进行响应。然后 Nmap 通过发送 RST 数据包来重置连接。这种技术通常比 ICMP ping 更可靠,因为许多防火墙会阻止 ICMP 流量,但允许 TCP 流量。

Nmap 中的 -PS 选项指定我们要使用 TCP SYN ping。默认情况下,Nmap 将 SYN 数据包发送到端口 80。你也可以指定不同的端口或端口列表进行探测。

要对 192.168.1.1 执行 TCP SYN ping 扫描,请在终端中执行以下命令:

sudo nmap -PS 192.168.1.1

此命令告诉 Nmap 向主机 192.168.1.1 的端口 80 发送一个 TCP SYN 数据包。需要使用 sudo,因为 Nmap 需要提升的权限来构建和发送原始 TCP 数据包。

输出将指示主机是否处于活动状态并在端口 80 上监听。如果主机处于活动状态,输出将类似于以下内容:

Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.0012s latency).
PORT   STATE    SERVICE
80/tcp filtered http

Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

此输出表明 Nmap 向 192.168.1.1 发送了一个 TCP SYN 数据包并收到了响应,表明主机处于活动状态。端口 80 的 filtered 状态意味着防火墙可能正在阻止连接,但主机仍被视为处于活动状态,因为它对初始 SYN 探测做出了响应。如果主机处于关闭状态或无法访问,输出将表明主机已关闭。

使用 nmap -PA 192.168.1.1 执行 ACK ping 扫描

在这一步中,我们将使用 Nmap 对特定主机(192.168.1.1)执行 ACK ping 扫描。ACK ping 会向目标主机发送一个 TCP ACK 数据包。与尝试建立连接的 SYN ping 不同,ACK ping 发送的数据包看起来像是已建立连接的一部分。防火墙处理传入 ACK 数据包的规则通常与 SYN 数据包不同,这使得 ACK ping 对于绕过某些防火墙配置很有用。

Nmap 中的 -PA 选项指定我们要使用 TCP ACK ping。默认情况下,Nmap 将 ACK 数据包发送到端口 80。你也可以指定不同的端口或端口列表进行探测。

要对 192.168.1.1 执行 TCP ACK ping 扫描,请在终端中执行以下命令:

sudo nmap -PA 192.168.1.1

此命令告诉 Nmap 向主机 192.168.1.1 的端口 80 发送一个 TCP ACK 数据包。需要使用 sudo,因为 Nmap 需要提升的权限来构建和发送原始 TCP 数据包。

输出将指示主机是否处于活动状态。如果主机处于活动状态,输出将类似于以下内容:

Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.0011s latency).
PORT   STATE    SERVICE
80/tcp unfiltered http

Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds

此输出表明 Nmap 向 192.168.1.1 发送了一个 TCP ACK 数据包并收到了响应,表明主机处于活动状态。端口 80 的 unfiltered 状态意味着 Nmap 能够发送 ACK 数据包并收到响应,而没有受到防火墙的干扰。如果主机处于关闭状态或无法访问,输出将表明主机已关闭。

使用 nmap -PS -PA 192.168.1.0/24 组合 ping 扫描

在这一步中,我们将使用 Nmap 组合 TCP SYN 和 ACK ping 扫描,以发现 192.168.1.0/24 网络上的活动主机。组合不同类型的 ping 扫描可以提高主机发现的可靠性,因为由于防火墙规则或网络配置,某些主机可能对一种类型的 ping 做出响应,而对另一种类型的 ping 不做响应。

通过同时使用 -PS-PA 选项,Nmap 将向指定网络中的每个主机发送 TCP SYN 和 TCP ACK 数据包。这增加了检测活动主机的机会,尤其是在具有严格防火墙的环境中。

要对 192.168.1.0/24 网络执行组合的 TCP SYN 和 ACK ping 扫描,请在终端中执行以下命令:

sudo nmap -PS -PA 192.168.1.0/24

此命令告诉 Nmap 向 192.168.1.0/24 网络中的每个主机的端口 80 发送 TCP SYN 和 TCP ACK 数据包。需要使用 sudo,因为 Nmap 需要提升的权限来构建和发送原始 TCP 数据包。

输出将列出在网络上找到的活动主机。输出将类似于以下内容(实际输出将取决于你的网络上存在的主机):

Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.0010s latency).
Nmap scan report for 192.168.1.2
Host is up (0.0015s latency).
Nmap scan report for 192.168.1.10
Host is up (0.0012s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.56 seconds

此输出表明 Nmap 扫描了 192.168.1.0/24 网络并找到了三个活动主机:192.168.1.1192.168.1.2192.168.1.10

在 Xfce 终端中查看活动主机

在这一步中,我们将回顾我们在 Xfce 终端中执行的命令,以识别我们使用 Nmap 发现的活动主机。Xfce 终端会保留你运行过的命令历史记录,这对于回顾你的工作和验证扫描结果很有用。

要在 Xfce 终端中查看命令历史记录,你可以使用 history 命令。此命令将显示你之前执行的命令的编号列表。

在 Xfce 中打开一个新的终端窗口(如果你还没有打开的话)。然后,输入以下命令并按回车键:

history

这将显示你最近的命令列表。滚动浏览列表,找到你在前面步骤中使用的 Nmap 命令,特别是使用 -sn-PS-PA 执行 ping 扫描的命令。

例如,你应该会看到类似这样的命令:

sudo nmap -sn 192.168.1.0/24
sudo nmap -sn 127.0.0.1
sudo nmap -PS 192.168.1.1
sudo nmap -PA 192.168.1.1
sudo nmap -PS -PA 192.168.1.0/24

通过回顾这些命令及其输出(你应该在前面的步骤中已经记录下来),你可以确认在网络上发现的活动主机。history 命令是一个有用的工具,可用于审核你的工作并确保你在本实验中正确执行了各个步骤。

注意:history 命令的确切输出将取决于你在终端会话中运行的命令。

总结

在本实验中,参与者学习使用 Nmap 进行主机发现。他们首先使用 -sn 选项对 192.168.1.0/24 网络执行 ping 扫描,以禁用端口扫描,这样速度更快且干扰性更小。使用 sudo 命令来提供发送网络数据包所需的提升权限。他们还学习在禁用端口扫描的同时对本地主机地址 127.0.0.1 执行 ping 扫描。此外,他们探索了不同类型的 ping 扫描,例如使用 -PS 的 TCP SYN ping、使用 -PA 的 ACK ping 以及使用 -PS -PA 的组合 ping,并在 Xfce 终端中查看活动主机。