我一直想知道是否有可能找到连接到特定 LAN 的所有节点的 IP 地址,而无需为您的 NIC 分配 IP 地址。考虑到某些节点位于不同的 IP 子网上。
我知道有诸如angeripscanner、nmap、arp-scan等工具,但它们都需要一个分配给你的网卡的IP地址,然后才能使用。
我在想是否有办法依次使用 libpcap 或其他工具来伪造 ARP 请求帧并使 LAN 内的所有节点都响应广播地址(以便您可以嗅探它)或我的 NIC 所在的端口连接到。
我一直想知道是否有可能找到连接到特定 LAN 的所有节点的 IP 地址,而无需为您的 NIC 分配 IP 地址。考虑到某些节点位于不同的 IP 子网上。
我知道有诸如angeripscanner、nmap、arp-scan等工具,但它们都需要一个分配给你的网卡的IP地址,然后才能使用。
我在想是否有办法依次使用 libpcap 或其他工具来伪造 ARP 请求帧并使 LAN 内的所有节点都响应广播地址(以便您可以嗅探它)或我的 NIC 所在的端口连接到。
我在想是否有办法依次使用 libpcap 或其他工具来伪造 ARP 请求帧并使 LAN 内的所有节点都响应广播地址(以便您可以嗅探它)或我的 NIC 所在的端口连接到。
它不必那么复杂。
只要您的交换机不使用类似于Dynamic ARP Inspection 的功能,检测地址的简单方法就是使用arping...您可以在大多数 linux 发行版中找到它(尽管 CLI 选项有时会因arping您的构建而异) .
[mpenning@home ~]$ sudo arping -c 2 -S 0.0.0.0 -D -i eth0 172.16.100.40
ARPING 172.16.100.40
60 bytes from 00:ae:de:ad:be:ef (172.16.100.40): index=0 time=3.513 msec
60 bytes from 00:ae:de:ad:be:ef (172.16.100.40): index=1 time=2.778 msec
您可以编写一个脚本来循环访问任意数量的地址;通常,使用wireshark 嗅探并查看该vlan 中可以使用哪些子网是一个好主意(即通过查看ARP 请求中的源地址)。
如果您正在运行动态 ARP 检测 (DAI),则只要 DAI 检查 IP 地址有效性,您就无法检测到这样的地址……我在运行此配置的 Cisco 2960 上对此进行了测试:
ip arp inspection vlan 100
ip arp inspection validate src-mac dst-mac ip
当我arping如上图使用时,交换机注意到0.0.0.0ARP帧中的源IP地址无效,并丢弃了它:
Jun 1 04:05:29.561 CDT: %SW_DAI-4-INVALID_ARP: 1 Invalid ARPs (Req) on Gi0/1,
vlan 100.([0024.1bde.add7/0.0.0.0/0000.0000.0000/172.16.100.40/04:05:28 CDT
Mon Jun 1 2015])
你的想法很不错。使用 libpcap 捕获所有 arp 广播并了解所有活动节点的 MAC 和 IP 地址将起作用。
我在我们网络中的一个盒子上执行此操作以编译所有节点的列表并具有可搜索的 arp 表。它侦听 vlan 中继,并且在大多数 VLAN 中没有 IP 地址。这是我在一个下午开发的 perl 中的一个小守护进程。
马里奥,你提到:
考虑到某些节点位于不同的 IP 子网上。
不幸的是,您无法在没有 IP 地址的情况下遍历子网。arping 将完全按照您的要求执行,但仅在单个子网/VLAN 上除外。如果您想扫描下一个网络,则需要更改“扫描”PC 所在的 VLAN,然后重新运行 arping。
如果您有大量 VLAN 并且上述解决方案太耗时,您可以:
执行这两件事中的任何一件都可以让您扫描所有子网,而无需将 PC/服务器从 VLAN 移动到 VLAN。