Nmap主机发现
Nmap主机发现
用户可以通过使用列表扫描(
-sL)或者 通过关闭ping (-P0)跳过ping的步骤,也可以使用多个端口把TCP SYN/ACK,UDP和ICMP 任意组合起来玩一玩。这些探测的目的是获得响应以显示某个IP地址是否是活动的(正在被某主机或者网络设备使用)。
-P*选项(用于选择 ping的类型)可以被结合使用。 您可以通过使用不同的TCP端口/标志位和ICMP码发送许多探测报文来增加穿透防守严密的防火墙的机会。
1 | -sL(List Scan):仅仅列出指定网络上的每台主机, 不发送任何报文到目标主机。默认情况下,对主机进行反向域名解析以获取各个域名。 |
1 | -sn (No port scan):扫描存活主机,不进一步扫描端口。 |
nmap -sn 192.168.179.0/24-P0 (无ping) Disabling host discovery (跳过主机扫描),但不是打印一个目标列表, 而是继续执行所要求的功能,就好像每个IP都是活动的。1
-PS <port list> (TCP SYN Ping)TCP SYN 探测。1
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
与SYN探测包类似,但设置了TCP ACK标志。ACK包看起来像是在确认一个已建立的TCP连接上的数据,但实际上并没有这样的连接。远程主机会回应一个RST(重置)包,这就表示该主机的存在。
同时使用SYN和ACK探测包(-PS和-PA)可以最大化绕过无状态和有状态防火墙的成功几率。这样可以提高至少有一个探测包能够成功的机会。
1 |
-PU
如果UDP包到达一个关闭的端口,目标主机会返回一个 ICMP “port unreachable”(端口不可达)消息,表示主机是在线的且可达。
防火墙绕过:当网络配置仅屏蔽TCP流量而允许UDP流量通过时,这种扫描方式特别有效。
许多家庭或中小型路由器和防火墙默认阻止TCP流量,但允许UDP流量通过,这使得UDP Ping 扫描可以发现那些TCP流量被阻止但仍然在线的主机。
1 |
-PY
通过发送 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
-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 |
|
nmap -sn -v 192.168.179.0/24
1 |
|
nmap -sn -R 192.168.179.0/24
`-R` 选项会强制进行反向 DNS 解析,显示主机名。