我希望 nmap 向主机发送 ICMP 时间戳请求。为了实现这一点,我使用命令:
nmap -PP“ip 地址”
但是nmap生成的请求中没有ICMP请求,只有TCP SYN数据包。
主机实际上在我的子网中。如果我将“ip addr”设置为其他子网中的某个不存在的主机,我会观察到 ICMP 时间戳请求。
所以看来 nmap 仅在特殊条件下才发送 ICMP 时间戳请求。
这些条件是什么?是否可以强制 nmap 向任何主机发送 ICMP 时间戳请求(也许通过一些附加标志)?
据我所知,还有其他可以使用的实用程序,例如 nping、hping3,但我想首先澄清一下 nmap 的选项。
谢谢。
答案1
从手动的:
这些
-P*
选项(选择 ping 类型)可以组合。您可以通过使用不同的 TCP 端口/标志和 ICMP 代码发送多种探测类型来增加穿透严格防火墙的几率。另请注意-P*
默认情况下,即使您指定了其他选项,ARP/邻居发现也会针对本地以太网上的目标完成,因为它几乎总是更快、更有效。
默认情况下,完成的默认主机发现
-sn
由 ICMP 回显请求、端口 443 的 TCP SYN、端口 80 的 TCP ACK 以及 ICMP 时间戳请求组成。当由非特权用户执行时,仅将 SYN 数据包发送(使用调用connect
)到目标上的端口 80 和 443。当特权用户尝试扫描本地以太网上的目标时,除非--send-ip
指定,否则将使用 ARP 请求。该-sn
选项可以与任何发现探测类型(-P*
选项)结合使用,以获得更大的灵活性。
从这两部分我们可以猜测,要强制使用 ICMP 时间戳,应该使用这个(如果 ARP 缓存中没有这样的地址,操作系统仍将执行 ARP 请求!):
nmap --send-ip -PP lan.ip.addr.ess
发行仅有的这样的 ICMP 时间戳并且不进行反向 DNS 查找或端口扫描:
nmap --send-ip -n -sn -PP lan.ip.addr.ess