Nmap主机发现

用户可以通过使用列表扫描(-sL)或者 通过关闭ping (-P0)跳过ping的步骤,也可以使用多个端口把TCP SYN/ACK,UDP和ICMP 任意组合起来玩一玩。这些探测的目的是获得响应以显示某个IP地址是否是活动的(正在被某主机或者网络设备使用)。

-P*选项(用于选择 ping的类型)可以被结合使用。 您可以通过使用不同的TCP端口/标志位和ICMP码发送许多探测报文来增加穿透防守严密的防火墙的机会。

1
-sL(List Scan):仅仅列出指定网络上的每台主机, 不发送任何报文到目标主机。默认情况下,对主机进行反向域名解析以获取各个域名。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-sn (No port scan):扫描存活主机,不进一步扫描端口。

默认行为(普通用户与特权用户的区别)
默认探测(特权用户):
当以 特权用户(如 root 或管理员权限)运行 Nmap 时,默认主机发现探测包括以下几种:
ICMP 回显请求(类似于“ping”)。
TCP SYN 探测,针对端口 443(通常用于 HTTPS)。
TCP ACK 探测,针对端口 80(通常用于 HTTP)。
ICMP 时间戳请求。

普通用户的行为:
如果以 普通用户(非 root)运行 Nmap:
只会使用 connect() 系统调用 发送 TCP SYN 探测 到端口 80 和 443。
不会发送 ICMP 探测,因为普通用户无法使用原始套接字。

如果使用了 -P* 选项,将 覆盖默认探测,允许根据网络条件进行更灵活的主机发现。
-PE:ICMP 回显请求。
-PS:TCP SYN 探测。
-PA:TCP ACK 探测。
-PP:ICMP 时间戳请求。
-PU:UDP 探测。
  1. nmap -sn 192.168.179.0/24
    
    1

    -P0 (无ping) Disabling host discovery (跳过主机扫描),但不是打印一个目标列表, 而是继续执行所要求的功能,就好像每个IP都是活动的。
    1

    -PS <port list> (TCP SYN Ping)TCP SYN 探测。

The SYN flag suggests to the remote system that you are attempting to establish a connection. Normally the destination port will be closed, and a RST (reset) packet sent back. If the port happens to be open, the target will take the second step of a TCP three-way-handshake by responding with a SYN/ACK TCP packet. The machine running Nmap then tears down the nascent connection by responding with a RST rather than sending an ACK packet which would complete the three-way-handshake and establish a full connection. The RST packet is sent by the kernel of the machine running Nmap in response to the unexpected SYN/ACK, not by Nmap itself.

Nmap does not care whether the port is open or closed. Either the RST or SYN/ACK response discussed previously tell Nmap that the host is available and responsive.

1

-PA (TCP ACK Ping)TCP ACK 探测。
与SYN探测包类似,但设置了TCP ACK标志。ACK包看起来像是在确认一个已建立的TCP连接上的数据,但实际上并没有这样的连接。远程主机会回应一个RST(重置)包,这就表示该主机的存在。

同时使用SYN和ACK探测包(-PS和-PA)可以最大化绕过无状态和有状态防火墙的成功几率。这样可以提高至少有一个探测包能够成功的机会。

1

-PU (UDP Ping)

如果UDP包到达一个关闭的端口,目标主机会返回一个 ICMP “port unreachable”(端口不可达)消息,表示主机是在线的且可达。

防火墙绕过:当网络配置仅屏蔽TCP流量而允许UDP流量通过时,这种扫描方式特别有效。
许多家庭或中小型路由器和防火墙默认阻止TCP流量,但允许UDP流量通过,这使得UDP Ping 扫描可以发现那些TCP流量被阻止但仍然在线的主机。

1

-PY (SCTP INIT Ping)
通过发送 SCTP(Stream Control Transmission Protocol) 的 INIT 报文来进行主机发现。
SCTP 是一种面向连接的传输协议,常用于电信网络中,支持多宿主和多流,尤其在 VoIP 和 移动通信 中广泛使用。使用 -PY 可以探测主机是否对 SCTP 连接请求做出响应

1

-PE; -PP; -PM (ICMP Ping Types)

ICMP Echo Request (-PE)
功能:Nmap 发送 ICMP Type 8(Echo Request,回显请求)包,目标主机若在线且不被防火墙阻止,则会返回 ICMP Type 0(Echo Reply,回显回复)。
适用场景:这种方式常见于网络中用于判断主机是否在线。然而,许多防火墙和路由器会屏蔽 ICMP Echo 请求,因此在互联网上的有效性较差。但对于内部网络的管理员来说,这是一种有效且快速的主机发现方法。
命令示例:
nmap -PE 192.168.1.0/24
此命令会发送 ICMP Echo 请求到 192.168.1.0/24 网络,探测哪些主机在线。

ICMP Timestamp Request (-PP)
功能:发送 ICMP Type 13(Timestamp Request,时间戳请求)包。此类型请求的目标是获取目标主机的当前时间。收到响应(ICMP Type 14,Timestamp Reply,时间戳回复)表示目标主机在线。
适用场景:如果防火墙阻止了 Echo 请求包,但未阻止时间戳请求包,可以使用此选项进行主机发现。
nmap -PP 192.168.1.0/24
通过时间戳请求来发现目标主机。

ICMP Address Mask Request (-PM)
通过地址掩码请求来发现目标主机
发送 ICMP Type 17(Address Mask Request,地址掩码请求)包,目标主机会返回 ICMP Type 18(Address Mask Reply,地址掩码回复)。通过该请求,目标主机透露其子网掩码信息。接收到回复意味着主机在线。

nmap -PE -PP -PM 192.168.1.0/24

1

-PO (IP Protocol Ping)
-PO 选项通过发送 IP 数据包,数据包的 IP 头部指定一个特定的协议编号。例如,ICMP 协议编号是 1,TCP 协议编号是 6,UDP 协议编号是 17。目标主机如果支持该协议并能响应,就会返回一个相应的响应包,或者发送 ICMP 协议不可达消息(即目标主机不支持该协议)

默认协议:如果未指定协议列表,默认会发送以下协议的数据包:
ICMP(协议号 1)
IGMP(协议号 2)
IP-in-IP(协议号 4)

其他:
TCP:协议编号为 6
UDP:协议编号为 17
SCTP:协议编号为 132

nmap -PO 1,6,17 -v 192.168.1.0/24

1

–disable-arp-ping (No ARP or ND Ping)

对于 IPv4 网络,Nmap 会自动发送 ARP 请求,查询本地网络上的在线主机。由于 ARP 是链路层协议,能有效绕过大多数防火墙,因此在局域网中,ARP 扫描非常高效且可靠。

禁用 ARP 扫描:如果网络使用了 代理 ARP(即路由器伪装成任何在线主机的响应),或者有特殊需要避免 ARP 扫描时,可以通过 Nmap 的 –disable-arp-ping 选项禁用 ARP 探测。

1

–discovery-ignore-rst 忽略 RST 响应

防火墙伪造 RST:但在某些网络环境中,特别是防火墙或路由器(NAT网络地址转换)上,可能会对不允许的目标端口或 IP 地址发送伪造的 TCP RST 包。这样一来,Nmap 可能误判目标主机为在线,尽管该主机实际上并不存在。

Nmap 会更加依赖其他更可靠的主机发现方法(如 ICMP 或 SYN 扫描),从而提高扫描的准确性。

1

–traceroute (Trace path to host)

了解目标的网络环境。
类似于使用独立的 traceroute 命令来跟踪数据包经过的各个路由节点(即中间的路由器、交换机等)。
当你使用 –traceroute 时,Nmap 会在扫描目标主机的同时,向每个中间路由器发送一系列的 TTL(Time-to-Live)增量数据包,以便确定从源主机到目标主机之间的路径。
每当一个路由器收到 TTL 为 1 的数据包时,它会返回一个 ICMP 超时信息(TTL expired),Nmap 会根据返回的响应来识别经过的路由器。
然后,Nmap 增加 TTL 值,重复这一过程,直到到达目标主机或超过设定的最大跳数(默认为 30 跳)。

可能会被防火墙过滤:许多防火墙和入侵检测系统(IDS)可能会对 ICMP 或 TTL 操作进行限制或过滤,导致无法完成 traceroute。
增加扫描时间:执行 –traceroute 时需要额外的时间来计算路径,因此可能会比普通的扫描命令花费更多时间。

扫描整个子网并跟踪路径:
nmap –traceroute 192.168.1.0/24

1
2
3

**启用详细输出:**

nmap -sn -v 192.168.179.0/24

1
2
3
4
5

`-v` 选项会提供更详细的扫描信息。

**添加主机名解析:**

nmap -sn -R 192.168.179.0/24


`-R` 选项会强制进行反向 DNS 解析,显示主机名。