当前位置: 首页 > article >正文

ARP欺骗攻击详细介绍

文章目录

  • 一、ARP协议
    • 1. ARP 协议的工作原理
    • 2. ARP消息格式
      • 2.1 ARP 请求格式 (ARP Request)
      • 2.2 ARP 响应格式 (ARP Reply)
  • 二、ARP欺骗
    • 1. ARP 欺骗的工作原理
    • 2.ARP 欺骗的应用场景
    • 3. ARP 欺骗的攻击流程
    • 4. ARP 欺骗的常见工具
    • 5. ARP 欺骗的示例
      • 查看缓存表
      • 开启IP转发
      • 攻击者使用 arpspoof 执行 ARP 欺骗:
    • 6. ARP欺骗攻击的检测与防御
      • 6.1 ARP欺骗的检测方法
      • 6.2 ARP欺骗的防御措施

一、ARP协议

ARP 协议(Address Resolution Protocol)是一个在局域网内用于将网络层的 IP 地址映射到数据链路层的 MAC 地址的协议。它的主要作用是在一个局域网(LAN)中,让设备能够相互通信时,通过 IP 地址来找到目标设备的硬件地址(MAC 地址)。

1. ARP 协议的工作原理

  1. 网络层到数据链路层的映射

    • 在局域网中,每个设备都有一个唯一的 MAC 地址,这个地址由网络接口卡(NIC)分配。
    • 每个设备也有一个 IP 地址,用于在网络层进行通信。
    • 当一个设备需要与另一个设备通信时,它通常知道目标设备的 IP 地址,但不知道目标设备的 MAC 地址。ARP 协议就是用来解决这一问题的。
  2. ARP 请求
    当设备(源设备)需要向网络中的某个 IP 地址发送数据时,如果它不知道该 IP 地址对应的 MAC 地址,它会发送一个 ARP 请求。ARP 请求是广播的方式发送到网络中的所有设备。ARP 请求的格式如下:

    • 目标 IP 地址:请求设备的 IP 地址。
    • 目标 MAC 地址:通常是全 0,表示请求中没有指定 MAC 地址。
    • 源 IP 地址:请求发起者的 IP 地址。
    • 源 MAC 地址:请求发起者的 MAC 地址。

    例如,设备 A 想要与设备 B 通信,设备 A 知道设备 B 的 IP 地址,但不知道其 MAC 地址。设备 A 会发送一个 ARP 请求,询问 “IP 地址为 192.168.1.2 的设备的 MAC 地址是什么?”

  3. ARP 响应
    网络中拥有目标 IP 地址的设备(在这个例子中是设备 B)会接收到 ARP 请求,并检查请求中的目标 IP 地址是否匹配。如果匹配,设备 B 会发送一个 ARP 响应消息,告知请求者其 MAC 地址。ARP 响应是单播的,只会发送给发出请求的设备。ARP 响应的格式如下:

    • 目标 IP 地址:响应目标的 IP 地址。
    • 目标 MAC 地址:响应目标的 MAC 地址(设备 B 的 MAC 地址)。
    • 源 IP 地址:响应发起者的 IP 地址(设备 B 的 IP 地址)。
    • 源 MAC 地址:响应发起者的 MAC 地址(设备 B 的 MAC 地址)。
  4. 更新 ARP 缓存
    设备 A 收到 ARP 响应后,会将设备 B 的 IP 地址和 MAC 地址映射关系存储在 ARP 缓存中。这个映射关系将会在一定时间内保持,以便后续的通信可以直接使用 MAC 地址而不需要再次发送 ARP 请求。

  5. 数据发送
    现在,设备 A 就可以根据 ARP 响应中获得的设备 B 的 MAC 地址,直接将数据包发送到设备 B 的 MAC 地址。

2. ARP消息格式

2.1 ARP 请求格式 (ARP Request)

+------------------------+------------------------+
| Field                  | Length                 | Description                         |
+------------------------+------------------------+-------------------------------------+
| Hardware Type          | 2 bytes                | 0x0001 (Ethernet)                   |
+------------------------+------------------------+-------------------------------------+
| Protocol Type          | 2 bytes                | 0x0800 (IPv4)                       |
+------------------------+------------------------+-------------------------------------+
| Hardware Address Length| 1 byte                 | 6 (Ethernet MAC 地址长度)           |
+------------------------+------------------------+-------------------------------------+
| Protocol Address Length| 1 byte                 | 4 (IPv4 地址长度)                  |
+------------------------+------------------------+-------------------------------------+
| Operation              | 2 bytes                | 0x0001 (ARP 请求)                  |
+------------------------+------------------------+-------------------------------------+
| Sender MAC Address     | 6 bytes                | 发送设备的 MAC 地址                |
+------------------------+------------------------+-------------------------------------+
| Sender IP Address      | 4 bytes                | 发送设备的 IP 地址                 |
+------------------------+------------------------+-------------------------------------+
| Target MAC Address     | 6 bytes                | 目标 MAC 地址(通常全 0)         |
+------------------------+------------------------+-------------------------------------+
| Target IP Address      | 4 bytes                | 目标 IP 地址                       |
+------------------------+------------------------+-------------------------------------+

2.2 ARP 响应格式 (ARP Reply)

+------------------------+------------------------+
| Field                  | Length                 | Description                         |
+------------------------+------------------------+-------------------------------------+
| Hardware Type          | 2 bytes                | 0x0001 (Ethernet)                   |
+------------------------+------------------------+-------------------------------------+
| Protocol Type          | 2 bytes                | 0x0800 (IPv4)                       |
+------------------------+------------------------+-------------------------------------+
| Hardware Address Length| 1 byte                 | 6 (Ethernet MAC 地址长度)           |
+------------------------+------------------------+-------------------------------------+
| Protocol Address Length| 1 byte                 | 4 (IPv4 地址长度)                  |
+------------------------+------------------------+-------------------------------------+
| Operation              | 2 bytes                | 0x0002 (ARP 响应)                  |
+------------------------+------------------------+-------------------------------------+
| Sender MAC Address     | 6 bytes                | 目标设备的 MAC 地址                |
+------------------------+------------------------+-------------------------------------+
| Sender IP Address      | 4 bytes                | 目标设备的 IP 地址                 |
+------------------------+------------------------+-------------------------------------+
| Target MAC Address     | 6 bytes                | 发送设备的 MAC 地址                |
+------------------------+------------------------+-------------------------------------+
| Target IP Address      | 4 bytes                | 发送设备的 IP 地址                 |
+------------------------+------------------------+-------------------------------------+

各字段的解释

  • Hardware Type (硬件类型):与 ARP 请求相同,0x0001 代表 Ethernet。
  • Protocol Type (协议类型):与 ARP 请求相同,0x0800 代表 IPv4。
  • Hardware Address Length (硬件地址长度):与 ARP 请求相同,Ethernet 地址为 6 字节。
  • Protocol Address Length (协议地址长度):与 ARP 请求相同,IPv4 地址为 4 字节。
  • Operation (操作类型)0x0002 表示 ARP 响应。
  • Sender MAC Address (发送者 MAC 地址):目标设备的 MAC 地址(回应设备提供的 MAC 地址)。
  • Sender IP Address (发送者 IP 地址):目标设备的 IP 地址(回应设备的 IP 地址)。
  • Target MAC Address (目标 MAC 地址):发送设备的 MAC 地址(请求者的 MAC 地址)。
  • Target IP Address (目标 IP 地址):发送设备的 IP 地址(请求者的 IP 地址)。

二、ARP欺骗

ARP 欺骗(ARP Spoofing)是一种局域网中的网络攻击技术。攻击者通过伪造虚假的 ARP 响应包,将自己的 MAC 地址伪装成目标设备的 MAC 地址,导致其他设备错误地更新其 ARP 缓存,从而将通信数据流重定向到攻击者或中断通信。


1. ARP 欺骗的工作原理

  1. ARP 缓存的弱点

    • ARP 协议本身没有验证机制。
    • 设备通常会无条件接受收到的 ARP 响应包,并更新 ARP 缓存,即使是未请求的 ARP 响应(这被称为 无请求 ARP)。
  2. 欺骗过程

    • 攻击者向局域网内的设备发送伪造的 ARP 响应包。
    • 在这些 ARP 响应包中,攻击者将其 MAC 地址与目标设备(如网关或通信方)的 IP 地址绑定。
    • 局域网内的设备接收到伪造的 ARP 响应后,更新其 ARP 缓存,将目标 IP 地址错误地映射到攻击者的 MAC 地址。
  3. 结果

    • 受害者的通信流量被重定向到攻击者。
    • 攻击者可以选择:
      • 拦截数据:攻击者作为中间人(MITM,Man-In-The-Middle)查看和修改通信内容。
      • 断开连接:攻击者不转发流量,导致受害者无法与目标设备通信。

2.ARP 欺骗的应用场景

  1. 中间人攻击(MITM)

    • 攻击者将自己伪装成网关设备,拦截目标主机与网关之间的通信。
    • 例如,目标主机的默认网关为 192.168.1.1,攻击者伪造 ARP 响应,将 192.168.1.1 的 MAC 地址改为攻击者的 MAC 地址。
  2. 会话劫持

    • 攻击者拦截通信数据包,提取敏感信息(如登录凭据、会话令牌等)。
  3. DNS 欺骗

    • 在拦截流量后,攻击者可以修改 DNS 请求,将目标主机指向恶意服务器。
  4. 拒绝服务攻击(DoS)

    • 攻击者通过 ARP 欺骗使流量中断,导致设备无法正常通信。

3. ARP 欺骗的攻击流程

  1. 网络扫描

    • 使用工具(如 nmaparp-scan)扫描局域网,获取 IP 地址和 MAC 地址对应关系。
  2. 发送伪造 ARP 包

    • 攻击者伪造 ARP 响应包,将目标设备(如网关)的 IP 地址与攻击者的 MAC 地址绑定。
    • 使用工具(如 arpspoofettercap)发送这些伪造包。
  3. 拦截数据流量

    • 数据流量被定向到攻击者设备,攻击者可以选择:
      • 查看数据包内容。
      • 修改数据并将其转发。
      • 丢弃数据,导致通信中断。

4. ARP 欺骗的常见工具

  1. arpspoof

    • 工具套件:dsniff
    • 功能:发送伪造的 ARP 响应包以实现欺骗。
  2. ettercap

    • 集成了 ARP 欺骗功能,可以实现中间人攻击并拦截通信数据。
  3. Cain & Abel(Windows):

    • 提供图形化界面,支持 ARP 欺骗和数据包捕获。
  4. Wireshark

    • 虽然不是攻击工具,但可用来监控和分析 ARP 流量,检测异常行为。
  5. BetterCAP

    • 强大的中间人攻击工具,支持多种协议的欺骗,包括 ARP。

5. ARP 欺骗的示例

查看缓存表

arp -a

开启IP转发

进行ARP欺骗之前必须要开启IP转发,否则当欺骗成功之后,目标主机会断网,这样就会被对方察觉。攻击者输入以下指令开启IP转发:

echo 1 > /proc/sys/net/ipv4/ip_forward

检查 IP 转发是否启用
可以通过以下命令检查 IP 转发的状态:

cat /proc/sys/net/ipv4/ip_forward

如果输出为 1,表示已启用 IP 转发。
如果输出为 0,表示未启用。

攻击者使用 arpspoof 执行 ARP 欺骗:

# 欺骗目标主机,让其认为攻击者是网关
arpspoof -i eth0 -t 192.168.1.100 192.168.1.1

# 欺骗网关,让其认为攻击者是目标主机
arpspoof -i eth0 -t 192.168.1.1 192.168.1.100

# 使用tcpdump工具捕获目标主机的流量
tcpdump host 192.168.1.100

6. ARP欺骗攻击的检测与防御

6.1 ARP欺骗的检测方法

  1. 手动检测 ARP 表

    • 目标:检查是否存在异常的 IP-MAC 映射。
    • 方法
      1. 使用命令查看本机的 ARP 表:
        arp -a
        
      2. 对比网络设备的实际 MAC 地址,检查是否有 IP 地址对应多个不同的 MAC 地址。
      3. 发现异常时,可能表明存在ARP欺骗攻击。
  2. 使用检测工具

    • 工具推荐
      1. arpwatch:监控局域网中的 ARP 流量,检测 MAC 地址的变化。
        sudo apt install arpwatch
        sudo arpwatch -i eth0
        
      2. XArp:专门用于检测ARP欺骗的图形化工具,能够提供直观的报告。
      3. Wireshark
        • 通过设置显示过滤器 arp,捕获 ARP 包,分析是否存在异常。
        • 异常特征:大量的 ARP 响应(无请求的 ARP 包)。
  3. 检测中间人攻击

    • 如果怀疑通信被劫持,可以通过以下方法检测是否存在中间人攻击:
      1. 比较设备的 ARP 表是否频繁变化。
      2. 使用 ping 命令测试延迟,异常的延迟可能是因为数据被转发。
  4. 监控网络流量

    • 目标:捕获可疑的 ARP 包或异常的流量模式。
    • 方法
      • 使用 tcpdump 过滤 ARP 流量:
        sudo tcpdump -i eth0 arp
        
      • 使用 Wireshark,设置过滤器为 arp,检查是否存在重复的 ARP 响应或伪造的 MAC 地址。

6.2 ARP欺骗的防御措施

  1. 静态 ARP 表
  • 原理:将关键设备(如网关、服务器)的 IP-MAC 绑定关系手动写入 ARP 表,避免被篡改。
  • 设置方法
    sudo arp -s <目标IP> <目标MAC地址>
    
    • 例如,将网关 IP 192.168.1.1 绑定到其 MAC 地址:
      sudo arp -s 192.168.1.1 00:11:22:33:44:55
      
  • 优点:有效防止ARP欺骗。
  • 缺点:不适用于设备较多或网络环境频繁变化的场景。

2. 启用 ARP 绑定功能

  • 原理:通过交换机或路由器启用 IP-MAC 绑定,防止伪造的 ARP 包更新设备的 ARP 缓存。
  • 配置示例(以华为交换机为例):
    [Switch] arp static 192.168.1.1 00:11:22:33:44:55 vlan 1
    

3. 动态 ARP 检测(DAI)

  • 原理:交换机通过检查 DHCP snooping 数据库或管理员配置的绑定表,验证 ARP 请求和响应的合法性。
  • 优势:适合大型网络的自动化防护。
  • 实现方法(需支持 DAI 的交换机):
    1. 开启 DHCP snooping 功能。
    2. 启用动态 ARP 检测,拒绝不合法的 ARP 包。

4. 启用安全协议

  • 原理:使用加密协议保护数据,即使流量被拦截也无法直接读取或修改。
  • 常见安全协议
    • 使用 HTTPS 代替 HTTP。
    • 使用 SSH 代替 Telnet。
    • 使用 VPN(虚拟专用网络)加密敏感流量。

5. 网络隔离

  • 原理:通过 VLAN(虚拟局域网)将设备隔离,限制广播域范围,从而降低 ARP 欺骗的影响。
  • 实现方法
    • 配置交换机上的 VLAN,将不同的设备分配到不同的 VLAN。

6. 检测和防御工具

  • arpwatch
    • 实时监控 ARP 缓存的变化,记录 MAC 地址和 IP 的绑定变化日志。
  • Anti-ARP(Windows):
    • 检测和防止 ARP 攻击的专用软件。
  • BetterCAP
    • 一方面可用于模拟攻击,另一方面也可用来检测异常。

7. 禁用不必要的服务

  • 如果局域网中某些设备无需相互通信,可以通过防火墙规则阻止其广播 ARP 包。

8. 升级到 IPv6

  • IPv6 使用邻居发现协议(NDP)代替 ARP,并提供了更多安全特性,如 NDP 安全扩展(SEND),可以显著降低欺骗风险。

http://www.kler.cn/a/397261.html

相关文章:

  • 【征稿倒计时!华南理工大学主办 | IEEE出版 | EI检索稳定】2024智能机器人与自动控制国际学术会议 (IRAC 2024)
  • 【ict基础软件赛道】真题-50%openGauss
  • MySQL:表设计
  • 【MySQL】SQL语言
  • CSP-X2024山东小学组T2:消灭怪兽
  • World of Warcraft [WeakAuras]Barney Raid Kit - Collapsing Star Indicator
  • 鸿蒙网络编程系列47-仓颉版UDP客户端
  • 变分自编码器(VAE, Variational Autoencoder)
  • 【PYTORCH】使用MTCNN和InceptionResnetV1简单进行人脸检测和相似度匹配
  • docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled
  • 中心扩展算法
  • 使用 Grafana api 查询 Datasource 数据
  • 小程序如何完成订阅
  • 每天五分钟机器学习:支持向量机算法数学基础之核函数
  • Centos 9 安装 PostgreSQL 16 并支持远程访问
  • 编程初学者的第一个 Rust 系统
  • java模拟键盘实现selenium上下左右键 table中的左右滚动条实现滚动
  • NVR录像机汇聚管理EasyNVR多品牌NVR管理工具视频汇聚技术在智慧安防监控中的应用与优势
  • Docker 命令大全
  • 力扣 LeetCode 541. 反转字符串II(Day4:字符串)
  • Vue3 模板语法
  • C#调用方法时获取方法名、类名、命名空间
  • Spring-boot 后端java配置接口返回jsp页面
  • leetcode100:相同的树
  • 前端面试笔试(三)
  • MySQL:表设计