LJones910109/ARP-Spookfing-Detection-Lab
GitHub: LJones910109/ARP-Spookfing-Detection-Lab
该项目模拟 ARP 欺骗中间人攻击环境,提供从 Wireshark 流量分析、入侵指标识别到 Snort 规则部署的完整检测演练。
Stars: 0 | Forks: 0
# ARP 欺骗与 MITM 检测实验室
**工具:** Kali Linux · arpspoof · Wireshark
**技术:** ARP 缓存中毒 · MITM 攻击 · 二层流量分析
**环境:** VMware Fusion 家庭实验室
**难度:** 中级
## 目标
使用 ARP 缓存中毒模拟中间人攻击,在 Wireshark 中捕获恶意流量,并识别出 SOC 分析师在真实网络环境中检测此攻击时会使用的入侵指标。
## 实验室环境
|角色 |主机 |IP 地址 |MAC 地址 |
|--------|---------------------|--------------|-----------------|
|攻击者 |Kali Linux |172.16.148.132|00:0c:29:e7:7f:95|
|受害者 |Metasploitable2 |172.16.148.133|00:50:56:f3:92:0d|
|网关 |VMware 虚拟路由器 |172.16.148.2 |— |
**网络:** 172.16.148.0/24 · 接口:eth0
## 背景
### 什么是 ARP 欺骗?
ARP(地址解析协议)运行在 OSI 模型的第 2 层,负责将本地网络上的 IP 地址映射到 MAC 地址。ARP 没有内置身份验证机制——任何主机都可以发送未经请求的 ARP 回复,声称任何 IP 地址属于其 MAC 地址。
攻击者利用这一点,向受害者和网关同时发送**无偿 ARP 回复**,告诉它们攻击者的 MAC 地址对应的是对方的 IP。这会毒化双方的 ARP 缓存,使所有流量都经过攻击者路由——这是一个典型的**中间人**位置。
### 为什么这对 SOC 分析师很重要
ARP 欺骗是一种基础的 MITM 技术,可用于:
- 拦截明文凭证(FTP、Telnet、HTTP)
- 实施 SSL 剥离攻击
- 为 DNS 欺骗等进一步攻击做准备
- 进行内部网络侦察
在网络层面的检测依赖于识别本实验演示的流量模式。
## 攻击方法
### 第 1 步 — 启用 IP 转发
要成为真正的 MITM,攻击者必须转发受害者和网关之间的流量,而不是丢弃它们(这会导致拒绝服务并引起受害者的警觉)。
```
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
```
这会指示 Kali 内核转发发往其他主机的数据包,而不是将其丢弃。
### 第 2 步 — 启动 Wireshark 捕获
在 **eth0** 接口上启动 Wireshark,并应用 `arp` 显示过滤器以隔离 ARP 流量。
```
Filter: arp
```
### 第 3 步 — 发起 ARP 毒化(双向)
需要同时运行两个 `arpspoof` 实例来毒化双向流量:
**终端 1 — 毒化受害者(告诉 Metasploitable2 Kali 就是网关):**
```
sudo arpspoof -i eth0 -t 172.16.148.133 172.16.148.2
```
**终端 2 — 毒化网关(告诉路由器 Kali 就是受害者):**
```
sudo arpspoof -i eth0 -t 172.16.148.2 172.16.148.133
```
这两个命令以大约 1 秒的间隔向目标泛洪发送未经请求的 ARP 回复,不断覆盖合法的 ARP 缓存条目。
## Wireshark 分析
### IOC #1 — 未经请求的 ARP 回复 (Opcode 2)
正常的 ARP 遵循请求/回复模式:主机广播请求,目标进行回复。在 ARP 欺骗攻击中,攻击者发送**未经请求的回复 (Opcode 2)** 且没有先前的请求——这是一个重大的危险信号。
**数据包解析 (Frame 194):**
```
Address Resolution Protocol (reply)
Hardware type: Ethernet (1)
Protocol type: IPv4 (0x0800)
Opcode: reply (2) ← Unsolicited reply, no request preceded this
Sender MAC address: 00:0c:29:e7:7f:95 ← Kali's MAC (the attacker)
Sender IP address: 172.16.148.2 ← Gateway's IP (Kali is LYING)
Target MAC address: 00:00:00:00:00:00
Target IP address: 172.16.148.133 ← Metasploitable2 (the victim)
```
攻击者的 MAC (`00:0c:29:e7:7f:95`) 被宣告为网关 IP (`172.16.148.2`) 的所有者。受害者将更新其 ARP 缓存,并将所有发往网关的流量发送给 Kali。
### IOC #2 — 高频 ARP 流量
正常的 ARP 频率很低——主机仅在需要解析新 IP 时发送请求。在此次攻击中,10 分钟内捕获了 **335+ 个 ARP 数据包**,且全部来自同一个 MAC 地址。来自单一主机的这种 ARP 回复量是异常的,如果 SIEM 中配置了 ARP 速率阈值规则,将会触发告警。
**观察到的流量模式:**
- 所有数据包均源自 `VMware_e7:7f:95` (Kali)
- 交替的目的地:广播地址和 `VMware_f3:92:0d` (网关)
- 间隔:每个方向大约每 2 秒一次
### IOC #3 — 重复 IP 地址检测
Wireshark 内置的 ARP 分析自动标记了该攻击:
```
[Duplicate IP address detected for 172.16.148.2 (00:0c:29:e7:7f:95)]
[Frame showing earlier use of IP address: 193]
[Seconds since earlier frame seen: 1]
```
当 Wireshark 发现同一个 IP 地址被两个不同的 MAC 地址声明时,就会触发此警报。网关 IP `172.16.148.2` 最初合法地关联到路由器的 MAC,随后突然被 Kali 的 MAC 声明——前后仅相差 1 秒。这是 ARP 中毒最清晰的单项指标。
## 入侵指标 汇总
|IOC |描述 |正常行为 |
|-------------------------------------|--------------------------------------------|-----------------------------------------|
|未经请求的 ARP 回复 (Opcode 2) |没有前置请求发送的 ARP 回复 |回复仅跟随请求发生 |
|检测到重复 IP |同一个 IP 映射到两个不同的 MAC |在局域网中,一个 IP = 一个 MAC |
|来自单一主机的高 ARP 流量 |几分钟内来自同一个 MAC 的 300+ 个 ARP 数据包|ARP 流量稀疏且断断续续 |
|网关 IP 被非网关 MAC 声称|攻击者的 MAC 宣告了路由器的 IP |只有路由器才会宣告网关 IP|
## 检测规则
以下 Snort 规则可检测未经请求的 ARP 回复——此攻击的核心特征:
```
alert arp any any -> any any (
msg:"ARP Spoofing - Unsolicited ARP Reply Detected";
arp.opcode:2;
sid:9000001;
rev:1;
)
```
**注意:** 对于生产环境,应将此规则与速率阈值(例如,同一个源在 5 秒内产生超过 10 个 ARP 回复)结合使用,并与已知的 MAC 到 IP 映射表进行交叉比对,以减少误报。
## 防御性对策
|控制 |描述 |
|------------------------------|--------------------------------------------------------------------------------------------------------|
|动态 ARP 检测 |托管交换机可以根据 DHCP 侦听绑定表验证 ARP 数据包,并丢弃欺骗性回复|
|静态 ARP 条目 |手动为关键主机(网关、DNS)配置无法被覆盖的永久 ARP 条目 |
|网络分段 |VLAN 可以限制爆炸半径——ARP 欺骗被限制在本地广播域内 |
|ARP 监控 / SIEM 告警|XArp、Snort 或 Zeek 等工具可以实时对 ARP 异常发出警报 |
|加密协议 |即使成功处于 MITM 位置,TLS/SSH 也能防止凭证拦截 |
## 关键要点
- ARP 欺骗是一种**二层攻击**,不需要凭证——只需网络访问权限
- 该攻击对受害者是**隐秘的**——被入侵的主机上不会生成任何错误或警报
- Wireshark 的重复 IP 检测在实时捕获期间提供了直观的即时指标
- SOC 分析师应关注来自**单一 MAC 的高频 ARP 回复**和**IP 到 MAC 的冲突**作为主要检测信号
- 必须启用 IP 转发才能实现真正的 MITM;如果不启用,该攻击会导致拒绝服务
## 使用的工具
|工具 |用途 |
|-----------------------|---------------------------------------------------|
|arpspoof (dsniff 套件)|生成 ARP 中毒流量 |
|Wireshark 4.6.4 |捕获并分析 ARP 数据包 |
|ip route / ip addr |网络侦察和接口识别|
*本实验在隔离的 VMware Fusion 家庭实验室环境中进行。所有目标均为故意设置了漏洞的虚拟机。未影响任何生产系统。*
标签:ARP欺骗, MITM攻击, 网络安全, 隐私保护