str*_*ika 27
您对所讨论的 LAN 了解多少?我假设您只是插入电缆或连接到 wifi 什么都不知道。
-sP
某些主机不响应 ping 的情况要多得多(查看文档)。只有当您的网络设置和路由正确时,nmap 才起作用,这一点很重要。一些(大多数?)系统管理员不喜欢上面的一些方法,所以请确保它被允许(例如它是你的网络)。另请注意,您自己的防火墙可以阻止其中一些方法(甚至使用 DHCP 获取 IP),因此请先检查您的规则。
地图
以下是如何使用 nmap进行基本的主机发现。正如我所说,当您尝试此操作时,您的网络配置应该是正确的。假设您是 192.168.0.50,您位于 /24 子网上。你的 MAC 地址是允许连接的东西,等等。我喜欢运行 wireshark 来看看我在做什么。
首先我喜欢尝试列表扫描,它只尝试解析 DNS 中指定 IP 地址的 PTR 记录。它不会向主机发送任何内容,因此无法保证它确实已连接或已打开,但很有可能。这种模式显然需要一个愿意与您交谈的 DNS 服务器。
nmap -vvv -sn -sL 192.168.1.0/16
Run Code Online (Sandbox Code Playgroud)
这可能什么也找不到,或者它可能会告诉您每个 IP 都已启动。
然后我通常去进行ARP扫描。它发送 ARP 请求(您"Who has <target IP>? Tell <your IP>"
在wireshark 中看到它们)。这是非常可靠的,因为没有人过滤或伪造 ARP。主要缺点是它仅适用于您的子网。
nmap -vvv -sn -PR 192.168.1.0/24
Run Code Online (Sandbox Code Playgroud)
如果您想扫描路由器或防火墙后面的内容,请使用 SYN 和 ACK 扫描。SYN 启动 TCP 连接,您将收到 RST 或 SYNACK 作为响应。无论哪种方式,主机都已启动。如果有防火墙,您可能会禁止 ICMP 通信或类似的情况。大多数情况下,如果防火墙过滤了您的数据包,您将一无所获。某些类型的防火墙仅过滤 TCP SYN 数据包,并让所有其他 TCP 数据包通过。这就是 ACK 扫描有用的原因。如果主机已启动,您将收到 RST 作为响应。由于您不知道什么防火墙到位,请尝试两者。
nmap -vvv -sn -PS 10.1.2.0/24
nmap -vvv -sn -PA 10.1.2.0/24
Run Code Online (Sandbox Code Playgroud)
那么当然你可以使用基于 ICMP 的扫描和 -PE -PP -PM。
另一个有趣的方法是带有不存在的协议号的 -PO。通常防火墙只考虑 TCP 和 UDP,没有人测试当你尝试一些未知协议时会发生什么。如果主机已启动,您将无法访问 ICMP 协议。
nmap -vvv -sn -PO160 10.1.2.0/24
Run Code Online (Sandbox Code Playgroud)
您还可以告诉 nmap 跳过主机发现 (-Pn) 并在每个主机上执行端口扫描。这非常慢,但您可能会发现主机发现由于某种原因而遗漏的其他主机。
我喜欢ip neigh
IpRoute2 附带的命令。
ip neigh
192.168.1.1 dev eth0 lladdr 00:1d:7e:f8:21:66 REACHABLE
Run Code Online (Sandbox Code Playgroud)
但是,我认为它仅适用于arp
-able 节点。