Nmap学习3 - 主机发现

主机发现

现在您对 Nmap 是什么以及它的基本命令有了基本的了解,我们可以进一步挖掘并开始讨论 Nmap 主机发现选项。当您开始为客户工作并看到一个新网络时,您要做的第一件事是将网络中的设备(或 IP)列表减少为仅包含对进一步调查感兴趣的设备的列表.

很高兴,我们有 Nmap Host Discovery 来帮助我们解决这个问题。在本文中,我们将介绍所有 Nmap Host Discovery 选项,并解释每个选项的作用。

命令解释
nmap -sL列表扫描
nmap -sn无端口扫描
nmap -Pn无 ping
nmap -PSTCP SYN
nmap -PATCP ACK ping
nmap -PUUDP ping
nmap -PYSCTP 初始化 ping
nmap -PE; -PP; -PMICMP ping 类型
nmap -POIP 协议 ping
nmap -PRARP ping
nmap --disable-arp-ping没有 ARP 或 ND ping
nmap --traceroute跟踪主机路径

列表扫描 (-sL)

列表扫描列出网络的每个主机,而不向主机本身发送任何数据包。我发现此命令并非一直有效,具体取决于您运行它的设置类型。

>nmap -sL 192.168.31.130-140
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-17 23:27 ?D1ú±ê×?ê±??
Nmap scan report for 192.168.31.130 (192.168.31.130)
Nmap scan report for 192.168.31.131 (192.168.31.131)
Nmap scan report for 192.168.31.132 (192.168.31.132)
Nmap scan report for 192.168.31.133 (192.168.31.133)
Nmap scan report for 192.168.31.134 (192.168.31.134)
Nmap scan report for 192.168.31.135 (192.168.31.135)
Nmap scan report for 192.168.31.136 (192.168.31.136)
Nmap scan report for 192.168.31.137 (192.168.31.137)
Nmap scan report for 192.168.31.138 (192.168.31.138)
Nmap scan report for 192.168.31.139 (192.168.31.139)
Nmap scan report for 192.168.31.140 (192.168.31.140)
Nmap done: 11 IP addresses (0 hosts up) scanned in 0.43 seconds

无端口扫描 (-sn)

这个选项告诉 Nmap 在主机发现之后不要进行端口扫描,并且只打印出响应主机发现探测的可用主机。这通常称为“ ping 扫描”,但您也可以请求运行 traceroute 和 NSE 主机脚本。默认情况下,这比列表扫描更具侵入性,并且通常可以用于相同的目的。它允许对目标网络进行轻度侦察,而不会引起太多关注。对于攻击者来说,知道有多少主机启动比通过列表扫描每个 IP 和主机名提供的列表更有价值。

>nmap -sn baidu.com
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-25 10:18 ?D1ú±ê×?ê±??
Nmap scan report for baidu.com (220.181.38.148)
Host is up (0.056s latency).
Other addresses for baidu.com (not scanned): 220.181.38.251
Nmap done: 1 IP address (1 host up) scanned in 0.92 seconds

Nmap -sn 选项禁用端口扫描,只启用主机发现阶段,这使得 Nmap 执行 ping scan或 ping sweep。 根据权限,Nmap 默认使用不同的技术:发送 TCP SYN 数据包到端口 443,发送 TCP ACK 数据包到端口 80,以及 ICMP 回显和时间戳请求
如果作为特权用户执行。 如果运行 Nmap 的用户无法发送原始数据包,它会通过 connect() 系统调用向端口 80 和 443 发送一个 SYN 数据包。 当以特权用户身份扫描本地以太网网络时,也会启用 ARP/Neighbor Discovery。 MAC 地址和供应商是从 ARP/邻居发现阶段发送的 ARP 请求中识别出来的。

无 Ping 扫描 (-Pn)

no ping 扫描会跳过完整的 Nmap 发现过程。如果 Nmap 发现目标 IP 已启动,则直接开始运行它的默认端口扫描(最常用的 1000 次)。

>nmap -sn -Pn baidu.com
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-25 09:37 ?D1ú±ê×?ê±??
Nmap scan report for baidu.com (220.181.38.148)
Host is up.
Other addresses for baidu.com (not scanned): 220.181.38.251
Nmap done: 1 IP address (1 host up) scanned in 0.36 seconds

此选项完全跳过主机发现阶段。通常,Nmap 使用此阶段来确定活动机器以进行更重的扫描并衡量网络的速度。默认情况下,Nmap 只对被发现的主机执行大量探测,例如端口扫描、版本检测或操作系统检测。禁用主机发现-Pn会导致 Nmap 尝试针对 每个请求的扫描功能指定的目标 IP 地址。因此,如果在命令行中指定了 /16 大小的网络,则会扫描所有 65,536 个 IP 地址。与列表扫描一样,会跳过正确的主机发现,但 Nmap 不会停止并打印目标列表,而是继续执行请求的功能,就好像每个目标 IP 都处于活动状态一样。使用默认时序参数,这可能会导致扫描速度变慢。要跳过主机发现和端口扫描,同时仍允许 NSE 运行,请同时使用这两个选项 -Pn -sn。

对于本地以太网上的机器,仍然会执行 ARP 扫描(除非 指定–disable-arp-ping或–send-ip指定),因为 Nmap 需要 MAC 地址来进一步扫描目标主机。

TCP SYN(-PS port list)

此扫描选项发送一个带有 SYN 标志的空 TCP 数据包。它默认为端口 80。SYN 标志告诉远程系统您正在尝试连接到它。如果端口看起来是打开的,目标主机将通过 SYN/ACK TCP 包进行响应,开始三次 TCP 握手的第二步。

>nmap -sn -PS baidu.com
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-25 09:28 ?D1ú±ê×?ê±??
Nmap scan report for baidu.com (220.181.38.251)
Host is up (0.030s latency).
Other addresses for baidu.com (not scanned): 220.181.38.148
Nmap done: 1 IP address (1 host up) scanned in 0.71 seconds

此选项发送一个设置了 SYN 标志的空 TCP 数据包。默认目标端口为 80(可在编译时通过更改DEFAULT_TCP_PROBE_PORT_SPEC 中nmap.h)。 可以将备用端口指定为参数。语法与除了不允许使用-p端口类型说明符之外 的语法相同 。T:例子是 -PS22和 -PS22-25,80,113,1050,35000。-PS请注意,端口列表和端口列表之间不能有空格。如果指定了多个探针,它们将被并行发送。

SYN 标志向远程系统建议您尝试建立连接。通常目标端口将被关闭,并返回一个 RST(重置)数据包。如果端口恰好打开,目标将进行 TCP 三次握手的第二步 通过使用 SYN/ACK TCP 数据包进行响应。然后,运行 Nmap 的机器通过 RST 响应而不是发送 ACK 数据包来断开新生连接,这将完成三次握手并建立完整连接。RST 数据包是由运行 Nmap 的机器的内核发送的,以响应意外的 SYN/ACK,而不是 Nmap 本身。

Nmap 不关心端口是打开还是关闭。前面讨论的 RST 或 SYN/ACK 响应告诉 Nmap 主机可用且响应。

在 Unix 机器上,只有特权用户 root 通常能够发送和接收原始 TCP 数据包。 对于非特权用户,会自动采用解决方法 从而connect针对每个目标端口启动系统调用。这具有向目标主机发送 SYN 数据包以尝试建立连接的效果。如果connect返回快速成功或 ECONNREFUSED 失败,则底层 TCP 堆栈必须已收到 SYN/ACK 或 RST,并且主机被标记为可用。如果连接尝试一直挂起直到达到超时,则主机被标记为关闭。

>nmap -sn -PS22,80,3306 baidu.com
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-26 10:16 ?D1ú±ê×?ê±??
Nmap scan report for baidu.com (220.181.38.148)
Host is up (0.13s latency).
Other addresses for baidu.com (not scanned): 220.181.38.251
Nmap done: 1 IP address (1 host up) scanned in 0.85 seconds

TCP 确认 ping (-PA )

TCP ACK ping和刚才讨论的SYN ping相当类似。 也许您已经猜到了,区别就是设置TCP的ACK标志位而不是SYN标志位。 ACK报文表示确认一个建立连接的尝试,但该连接尚未完全建立。 所以远程主机应该总是回应一个RST报文, 因为它们并没有发出过连接请求到运行Nmap的机器,如果它们正在运行的话。

-PA选项使用和SYN探测相同的默认端口(80),也可以 用相同的格式指定目标端口列表。如果非特权用户尝试该功能, 或者指定的是IPv6目标,前面说过的connect()方法将被使用。 这个方法并不完美,因为它实际上发送的是SYN报文,而不是ACK报文。

提供SYN和ACK两种ping探测的原因是使通过防火墙的机会尽可能大。 许多管理员会配置他们的路由器或者其它简单的防火墙来封锁SYN报文,除非 连接目标是那些公开的服务器像公司网站或者邮件服务器。 这可以阻止其它进入组织的连接,同时也允许用户访问互联网。 这种无状态的方法几乎不占用防火墙/路由器的资源,因而被硬件和软件过滤器 广泛支持。Linux Netfilter/iptables 防火墙软件提供方便的 --syn选项来实现这种无状态的方法。 当这样的无状态防火墙规则存在时,发送到关闭目标端口的SYN ping探测 (-PS) 很可能被封锁。这种情况下,ACK探测格外有闪光点,因为它正好利用了 这样的规则。

另外一种常用的防火墙用有状态的规则来封锁非预期的报文。 这一特性已开始只存在于高端防火墙,但是这些年类它越来越普遍了。 Linux Netfilter/iptables 通过 --state选项支持这一特性,它根据连接状态把报文 进行分类。SYN探测更有可能用于这样的系统,由于没头没脑的ACK报文 通常会被识别成伪造的而丢弃。解决这个两难的方法是通过即指定 -PS又指定-PA来即发送SYN又发送ACK。

>nmap -sn -PA baidu.com
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-25 09:27 ?D1ú±ê×?ê±??
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 2.66 seconds

UDP ping (-PU)

Ping 扫描用于确定主机是否在响应。 UDP ping 扫描的优点是能够检测到后面的系统,具有严格 TCP 过滤但暴露 UDP 的防火墙。
这个秘籍描述了如何使用 Nmap 及其相关选项执行 UDP ping 扫描。

nmap -sn -PU baidu.com
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-26 10:17 ?D1ú±ê×?ê±??
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 2.68 seconds

-sn 选项告诉 Nmap 跳过端口扫描阶段并只有执行主机发现,-PU 告诉 Nmap 使用 UDP ping 扫描。 UDP ping扫描工作如下:

  1. Nmap向目标端口发送一个空的UDP数据包。
  2. 如果主机在线,它应该返回一个ICMP端口不可达错误。
  3. 如果主机离线,可能会返回各种ICMP错误信息。

探查时不响应空 UDP 数据包的开放端口会产生误报。 这些服务将简单地忽略 UDP 数据包,主机将错误地标记为离线。 因此,必须尝试选择关闭的端口作为目标以获得更好的结果。

SCTP 初始化 ping (-PY)

SCTP 数据包可用于通过发送 SCTP INIT 来确定主机是否在线,数据包并寻找 ABORT 或 INIT ACK 响应。 Nmap 实现了一个有效的名为 SCTP INIT ping 扫描的技术。

>nmap -sn -PY baidu.com --tr
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-30 10:26 ?D1ú±ê×?ê±??
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 2.72 seconds

ICMP ping 类型 (-PE; -PP; -PM)

要发出 ICMP 回显请求

>nmap -sn -PE baidu.com
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-30 10:31 ?D1ú±ê×?ê±??
Nmap scan report for baidu.com (220.181.38.251)
Host is up (0.039s latency).
Other addresses for baidu.com (not scanned): 220.181.38.148
Nmap done: 1 IP address (1 host up) scanned in 0.76 seconds

-sn -PE 选项告诉 Nmap 向 scanme 发送一个 ICMP 回显请求包。 如果我们收到 ICMP echo 回复,我们可以确定主机在线。

ICMP ping 扫描支持多种 ICMP 消息类型。 即使远程 ICMP流量通常被阻止,在本地网络中通常是允许的。
ICMP 已经存在了很长时间,远程 ICMP 数据包通常被系统管理员阻止。 但是,它仍然是一种有用的 ping 技术
监控本地网络。

ICMP 类型
其他 ICMP 消息可用于主机发现,Nmap 支持 ICMP时间戳回复 (-PP) 和地址标记回复 (-PM) 消息。 这些变体可以
绕过配置错误的防火墙,它只会阻止 ICMP 回显请求:

>nmap -sn -PP baidu.com
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-30 10:36 ?D1ú±ê×?ê±??
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 2.75 seconds

>nmap -sn -PM baidu.com
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-30 10:36 ?D1ú±ê×?ê±??
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 2.69 seconds

IP 协议 ping (-PO)

Nmap 支持一种有趣的扫描技术,称为 IP 协议 ping 扫描。它尝试通过使用IP数据包发送数据包来确定主机是否在线使用不同的协议。

>nmap -sn -PO baidu.com
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-30 10:38 ?D1ú±ê×?ê±??
Nmap scan report for baidu.com (220.181.38.148)
Host is up (0.032s latency).
Other addresses for baidu.com (not scanned): 220.181.38.251
Nmap done: 1 IP address (1 host up) scanned in 0.69 seconds

-sn -PO 选项告诉 Nmap 对 scanme 执行 IP 协议 ping 扫描。默认情况下,此技术将使用 IGMP、IP-in-IP 和 ICMP 协议来尝试判断主机是否在线。

IP 协议 ping 扫描是一种有趣的技术,可以通过一些配置Nmap 选项。 让我们回顾一下如何更改使用的协议,添加额外的随机数据,以及支持的协议。

设置备用 IP 协议
还可以通过在 -PO 选项之后列出要使用的 IP 协议来设置它们。 例如,使用 ICMP(协议号 1)、IGMP(协议号 2)和 UDP (协议号 17)协议,可以使用以下命令:

>nmap -sn -PO1,2,17 baidu.com
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-30 10:47 ?D1ú±ê×?ê±??
Nmap scan report for baidu.com (220.181.38.251)
Host is up (0.037s latency).
Other addresses for baidu.com (not scanned): 220.181.38.148
Nmap done: 1 IP address (1 host up) scanned in 0.73 seconds

支持的 IP 协议及其有效负载,使用时设置其所有协议头的协议如下:
• TCP:协议号 6
• UDP:协议号 17
• ICMP:协议号 1
• IGMP:协议号 2
• IP-in-IP:协议号 4
• SCTP:协议号 132
对于任何其他 IP 协议,将发送仅包含 IP 标头的数据包。

ARP ping (-PR)

ARP ping 扫描是检测 LAN 网络中主机的最有效方法。 这使它们成为扫描本地以太网时的首选技术,而 Nmap
即使指定了其他 ping 选项,也会使用它。 另一个有趣的优点是 Nmap 使用它的算法来优化这种扫描技术。

>nmap -sn -PR baidu.com
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-30 15:11 ?D1ú±ê×?ê±??
Nmap scan report for baidu.com (220.181.38.251)
Host is up (0.036s latency).
Other addresses for baidu.com (not scanned): 220.181.38.148
Nmap done: 1 IP address (1 host up) scanned in 0.74 seconds

-sn -PR 选项使 Nmap 启动 ARP ping 扫描。 ARP ping扫描工作以一种非常简单的方式:

  1. 向目标发送 ARP 请求。
  2. 如果主机以 ARP 回复响应,则它在线。

Nmap 每次扫描私有地址时,都不可避免地需要进行一次 ARP 请求。因为我们在发送任何探测之前需要目标目的地。 由于 ARP 回复表明主机在线,此步骤后无需进行进一步测试。

没有 ARP 或 ND ping (–disable-arp-ping)

使用 Nmap 扫描本地网络,其中 nmap 每次扫描都会发送一个 ARP 数据包。 如果要扫描外部网络; --disable-arp-ping 参数可以禁止。

>nmap --disable-arp-ping 192.168.31.142
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-30 15:27 ?D1ú±ê×?ê±??
Nmap scan report for 192.168.31.142
Host is up (0.00096s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
3306/tcp open  mysql
MAC Address: 00:0C:29:83:79:73 (VMware)

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

跟踪主机路径 (–traceroute)

Ping 扫描允许包括目标的跟踪路由信息。 使用 Nmap --traceroute 选项跟踪从扫描机器到目标主机的路由

>nmap --traceroute baidu.com
Starting Nmap 7.91 ( https://nmap.org ) at 2022-01-30 15:36 ?D1ú±ê×?ê±??
Nmap scan report for baidu.com (220.181.38.148)
Host is up (0.032s latency).
Other addresses for baidu.com (not scanned): 220.181.38.251
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

TRACEROUTE (using port 80/tcp)
HOP RTT      ADDRESS
1   4.00 ms  10.201.63.254
2   ... 16
17  34.00 ms 220.181.38.148

Nmap done: 1 IP address (1 host up) scanned in 16.80 seconds
  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值