别再只当脚本小子了!用Wireshark亲手分析一次ARP Spoof攻击的完整数据流

发布时间:2026/6/3 20:00:50

别再只当脚本小子了!用Wireshark亲手分析一次ARP Spoof攻击的完整数据流 从数据包视角拆解ARP欺骗一次完整的流量分析实战当你发现网络突然变慢或者敏感信息莫名其妙泄露时有没有想过可能是ARP欺骗在作祟作为局域网中最经典的中间人攻击手段ARP欺骗往往被初学者视为简单的脚本工具但真正理解其底层流量特征的安全工程师才能建立起有效的防御体系。今天我们就用Wireshark亲手解剖一次完整的ARP Spoof攻击数据流看看攻击者究竟如何悄无声息地劫持你的网络会话。1. 实验环境搭建与攻击原理在开始抓包前我们需要先理解ARP协议的工作机制。ARPAddress Resolution Protocol本质是一个局域网内的电话簿负责将IP地址解析为MAC地址。正常情况下当主机A需要与主机B通信时会广播ARP请求询问谁的IP是B的地址只有B会回应自己的MAC地址。而ARP欺骗的核心就是伪造这个应答过程。搭建实验环境时我通常建议使用三台虚拟机攻击机Kali Linux192.168.1.100靶机Windows 10192.168.1.101网关模拟路由器的Linux主机192.168.1.1关键工具链配置# Kali上安装必要工具 sudo apt update sudo apt install -y dsniff wireshark # 启用IP转发让被劫持的流量还能正常路由 echo 1 /proc/sys/net/ipv4/ip_forwardARP欺骗攻击的执行命令非常简单arpspoof -i eth0 -t 192.168.1.101 192.168.1.1这行命令背后实际发生了两件事持续向靶机192.168.1.101发送伪造的ARP响应声称网关192.168.1.1的MAC地址是攻击机的MAC同时向网关发送伪造的ARP响应声称靶机的MAC地址也是攻击机的MAC2. Wireshark抓包与ARP流量特征分析启动Wireshark捕获eth0网卡流量后我们重点关注ARP协议类型的数据包。正常情况下一个健康的局域网中ARP流量应该非常稀疏主要呈现以下特征ARP请求是广播帧Destination: ff:ff:ff:ff:ff:ffARP响应是单播帧每个IP对应的MAC地址在ARP缓存中会保持2-10分钟取决于系统配置但当ARP欺骗发生时流量模式会出现明显异常攻击阶段的可疑特征流量特征正常情况ARP欺骗时ARP响应频率低频高频每秒1-5个ARP响应类型请求后响应无请求直接响应源MAC地址真实设备MAC攻击者MAC目标IP一致性请求与响应匹配响应包可能包含无关IP在Wireshark中我们可以用以下过滤表达式快速定位可疑流量arp.opcode 0x0002 !(arp.src.proto_ipv4192.168.1.1 arp.src.hw_mac00:11:22:33:44:55)这个过滤器会捕获所有ARP响应包opcode 0x0002并排除掉真实网关假设其MAC为00:11:22:33:44:55发送的合法响应。3. 关键数据包逐帧解析打开捕获的pcap文件按时间顺序观察几个关键帧Frame 1: 靶机发送的正常ARP请求No. Time Source Destination Protocol Info 1 0.000000 192.168.1.101 ff:ff:ff:ff:ff:ff ARP Who has 192.168.1.1? Tell 192.168.1.101Frame 2: 网关回应的合法ARP响应No. Time Source Destination Protocol Info 2 0.000042 192.168.1.1 00:11:22:33:44:55 ARP 192.168.1.1 is at 00:11:22:33:44:55Frame 3: 攻击机发送的伪造ARP响应未经请求No. Time Source Destination Protocol Info 3 1.023456 192.168.1.1 00:11:22:33:44:66 ARP 192.168.1.1 is at aa:bb:cc:dd:ee:ff这里最关键的异常点是攻击机aa:bb:cc:dd:ee:ff冒充网关IP192.168.1.1该响应未经任何请求直接发送Gratuitous ARP响应目标MAC是靶机的真实MAC00:11:22:33:44:664. TCP会话劫持的流量证据ARP欺骗成功后所有靶机的外网流量都会流经攻击机。在Wireshark中可以看到靶机与网关之间的TCP三次握手靶机192.168.1.101→ 攻击机aa:bb:cc:dd:ee:ff攻击机aa:bb:cc:dd:ee:ff→ 真实网关00:11:22:33:44:55数据传输阶段的MAC地址异常本应直接发给网关的包目标MAC却始终是攻击机的MAC攻击机会修改源MAC后转发给网关形成完整的中间人链路通过Conversations统计视图Statistics → Conversations → TCP tab可以清晰看到所有流量都经过攻击机中转Address AAddress BPacketsBytes192.168.1.101192.168.1.10012001.2MB192.168.1.100192.168.1.111801.1MB5. 防御策略与检测方案理解了攻击原理后我们可以部署多层次的防御措施网络层防护启用交换机的动态ARP检测DAI功能配置静态ARP绑定适用于设备较少的环境Switch(config)# ip arp inspection vlan 1 Switch(config)# ip arp inspection validate src-mac dst-mac ip主机层防护Windows系统启用ARP缓存保护netsh interface ipv4 set interface ID arpfilterenableLinux系统配置ARP静态条目arp -s 192.168.1.1 00:11:22:33:44:55检测方案对比检测方法实现复杂度有效性适用场景ARPwatch监控低中小型网络流量镜像分析高高关键业务网络交换机DAI中高企业级网络终端安全软件低中移动办公环境在实际项目中我发现结合NetFlow/sFlow流量分析和终端ARP监控是最有效的组合方案。曾经在一次安全评估中通过以下Python脚本检测到内网的ARP欺骗行为from scapy.all import sniff, ARP def detect_arp_spoof(pkt): if pkt[ARP].op 2: # ARP响应 real_mac get_real_mac(pkt[ARP].psrc) if real_mac and real_mac ! pkt[ARP].hwsrc: print(f[!] ARP Spoof detected: {pkt[ARP].psrc} is at {pkt[ARP].hwsrc} (should be {real_mac})) sniff(prndetect_arp_spoof, filterarp, store0)6. 进阶分析SSL剥离攻击的关联证据更高级的攻击者会在ARP欺骗基础上实施SSL剥离迫使受害者使用HTTP协议。在流量中表现为大量302重定向响应HTTPS链接被替换为HTTP注入的JavaScript代码片段这类攻击的检测要点包括监控80端口的异常流量突增检查HTTP响应头中的Content-Length不匹配分析DOM修改行为可通过Selenium自动化检测在防御方案上除了常规的HSTS预加载列表我还建议在内部网络部署透明HTTPS代理确保所有流量强制加密。这个方案在金融行业客户中实施后成功阻断了多起内部ARP欺骗攻击。

相关新闻