【IoT漏洞分析】FragAttack系列WiFi漏洞分析
字数 2594 2025-08-09 23:12:43

FragAttack系列WiFi漏洞分析教学文档

0x00 漏洞概述

FragAttack(Fragmentation and Aggregation Attacks)是一系列影响WiFi协议的漏洞,由安全研究员Mathy Vanhoef发现。这些漏洞主要分为三类:

  1. 802.11协议设计漏洞(3个)
  2. 802.11协议栈实现漏洞(9个)
  3. WiFi应用层漏洞

本教学重点分析3个关键的802.11协议设计漏洞:

  1. A-MSDU帧注入攻击(CVE-2020-24588)
  2. 混合密钥攻击(CVE-2020-24587)
  3. 分片缓存攻击(CVE-2020-24586)

0x01 基础知识

1. 802.11协议基础

  • AP(接入点):提供WiFi信号的设备(如路由器)
  • STA(工作站):连接到AP的设备(如手机)
  • 信道:区分频段的定义(国内使用1-13信道,2.4GHz)

2. 关键概念

Multi-Channel MitM(多信道中间人攻击)

攻击条件

  • 2个无线网卡
  • 攻击者在目标AP与STA信号范围内

攻击流程

  1. 一个网卡搭建伪AP(与STA同信道)
  2. 另一个网卡连接目标AP(转发流量)
  3. 使用Deauth攻击迫使STA连接伪AP

聚合帧(A-MSDU)

  • 将多个802.11帧聚合到一个帧中复用头部
  • 通过QoS Control字段的flag标志位识别
  • 子帧结构包含Destination、Source和Length字段

分片帧(Fragment)

  • 将大帧分为多个小帧传输
  • 通过FC字段标志位识别是否为最后一分片
  • 同一序列的分片具有相同Sequence number和递增的Fragment number

0x02 A-MSDU帧注入攻击(CVE-2020-24588)

攻击条件

  • 近场攻击
  • 客户端需请求攻击者服务器

攻击效果

  • 在不接入AP网络的情况下注入任意TCP/IP帧

攻击原理

  1. 攻击者作为中间人转发流量
  2. 修改802.11头部的A-MSDU flag(明文部分)
  3. 利用可控的Response构造恶意A-MSDU子帧

详细攻击流程

  1. 建立Multi-Channel MitM环境
  2. 社工STA访问攻击者服务器资源(如图片)
  3. 服务器构造特殊Response:
    • 第一个子帧:利用LLC/SNAP字段修复格式
    • 第二个子帧:构造合法注入内容
  4. 攻击者拦截数据帧,设置A-MSDU flag为1
  5. STA解密后丢弃第一个子帧,处理第二个子帧

技术要点

  • 802.11头部A-MSDU flag不受保护
  • 需要控制部分数据段内容(通过社工)
  • 第一个子帧会被丢弃,重点构造第二个子帧

0x03 混合密钥攻击(CVE-2020-24587)

攻击条件

  • 近场攻击
  • 客户端需请求攻击者服务器

攻击效果

  • 泄露分片帧的明文内容

攻击原理

  • AP不验证分片是否使用同一密钥解密
  • 混合使用不同密钥解密的分片组合

详细攻击流程

  1. 建立Multi-Channel MitM环境
  2. 社工STA请求大资源(如图片/JS文件)
  3. STA发送分片帧(序列号s1,分片号n/n+1,密钥k)
  4. 攻击者转发Frag0,丢弃Frag1
  5. STA与AP重新握手(密钥更新为m)
  6. 攻击者捕获新分片(Frag1),修改序列号为s1
  7. AP组合Frag0(密钥k解密)和Frag1(密钥m解密)
  8. 数据包发送至攻击者服务器导致信息泄露

技术要点

  • 利用分片重组不验证密钥一致性的漏洞
  • 需要触发密钥重新协商
  • 依赖分片帧传输大文件场景

0x04 分片缓存攻击(CVE-2020-24586)

攻击条件

  • 近场攻击
  • 已知AP WiFi密码

攻击效果

  • 泄露分片帧的明文内容

攻击原理

  • AP会缓存解密的分片,即使STA断开连接
  • 攻击者预先发送部分分片

详细攻击流程

  1. 攻击者伪装STA连接AP(需知道密码)
  2. 请求大资源,仅发送第一个分片(Frag0)
  3. AP解密Frag0并缓存
  4. 攻击者断开连接
  5. STA正常连接AP
  6. 攻击者捕获STA的分片(Frag1),修改序列号
  7. AP组合缓存的Frag0和STA的Frag1
  8. 数据包发送至攻击者服务器导致信息泄露

技术要点

  • 需要知道AP密码
  • 利用AP的分片缓存机制
  • 比混合密钥攻击更稳定(不依赖密钥更新)

0x05 防御建议

  1. 及时更新:应用厂商发布的补丁
  2. 禁用A-MSDU:在设备配置中关闭A-MSDU功能
  3. 实施SPP:启用A-MSDU帧认证(Subframe Protection)
  4. 分片验证:确保分片使用相同密钥解密
  5. 清除缓存:STA断开后清除相关分片缓存

0x06 实验环境搭建

硬件要求

  • 3070芯片系列无线网卡(用于攻击)
  • 2张无线网卡(用于Multi-Channel MitM)

软件工具

  • Wireshark(抓包分析)
  • fragattacks工具集(https://github.com/vanhoefm/fragattacks)
  • Hostapd(搭建AP)

0x07 漏洞验证步骤

A-MSDU注入攻击验证

  1. 设置伪AP与转发环境
  2. 诱导STA访问攻击者HTTP服务器
  3. 构造恶意A-MSDU响应
  4. 修改802.11头部标志位
  5. 验证注入的TCP/IP包是否被执行

混合密钥攻击验证

  1. 建立MitM环境
  2. 诱导STA请求大文件
  3. 拦截并修改分片序列
  4. 触发密钥重协商
  5. 验证信息泄露

分片缓存攻击验证

  1. 以合法STA身份连接AP
  2. 发送部分分片后断开
  3. 捕获正常STA的分片
  4. 修改序列号重放
  5. 验证信息泄露

0x08 参考资源

  1. 研究论文:https://papers.mathyvanhoef.com/usenix2021.pdf
  2. 官方说明:https://www.fragattacks.com
  3. PoC工具:https://github.com/vanhoefm/fragattacks
  4. 802.11协议详解:https://inet.omnetpp.org/docs/showcases/wireless/aggregation/doc/index.html

0x09 总结

FragAttack系列漏洞揭示了802.11协议在设计上的深层次问题,特别是帧聚合和分片机制的安全缺陷。这些漏洞影响几乎所有的WiFi设备,攻击者可以在不知道WiFi密码的情况下实施攻击。安全研究人员和厂商应重视这些协议级漏洞,推动更安全的无线通信标准实施。

FragAttack系列WiFi漏洞分析教学文档 0x00 漏洞概述 FragAttack(Fragmentation and Aggregation Attacks)是一系列影响WiFi协议的漏洞,由安全研究员Mathy Vanhoef发现。这些漏洞主要分为三类: 802.11协议设计漏洞 (3个) 802.11协议栈实现漏洞 (9个) WiFi应用层漏洞 本教学重点分析3个关键的802.11协议设计漏洞: A-MSDU帧注入攻击(CVE-2020-24588) 混合密钥攻击(CVE-2020-24587) 分片缓存攻击(CVE-2020-24586) 0x01 基础知识 1. 802.11协议基础 AP (接入点):提供WiFi信号的设备(如路由器) STA (工作站):连接到AP的设备(如手机) 信道 :区分频段的定义(国内使用1-13信道,2.4GHz) 2. 关键概念 Multi-Channel MitM(多信道中间人攻击) 攻击条件 : 2个无线网卡 攻击者在目标AP与STA信号范围内 攻击流程 : 一个网卡搭建伪AP(与STA同信道) 另一个网卡连接目标AP(转发流量) 使用Deauth攻击迫使STA连接伪AP 聚合帧(A-MSDU) 将多个802.11帧聚合到一个帧中复用头部 通过QoS Control字段的flag标志位识别 子帧结构包含Destination、Source和Length字段 分片帧(Fragment) 将大帧分为多个小帧传输 通过FC字段标志位识别是否为最后一分片 同一序列的分片具有相同Sequence number和递增的Fragment number 0x02 A-MSDU帧注入攻击(CVE-2020-24588) 攻击条件 近场攻击 客户端需请求攻击者服务器 攻击效果 在不接入AP网络的情况下注入任意TCP/IP帧 攻击原理 攻击者作为中间人转发流量 修改802.11头部的A-MSDU flag(明文部分) 利用可控的Response构造恶意A-MSDU子帧 详细攻击流程 建立Multi-Channel MitM环境 社工STA访问攻击者服务器资源(如图片) 服务器构造特殊Response: 第一个子帧:利用LLC/SNAP字段修复格式 第二个子帧:构造合法注入内容 攻击者拦截数据帧,设置A-MSDU flag为1 STA解密后丢弃第一个子帧,处理第二个子帧 技术要点 802.11头部A-MSDU flag不受保护 需要控制部分数据段内容(通过社工) 第一个子帧会被丢弃,重点构造第二个子帧 0x03 混合密钥攻击(CVE-2020-24587) 攻击条件 近场攻击 客户端需请求攻击者服务器 攻击效果 泄露分片帧的明文内容 攻击原理 AP不验证分片是否使用同一密钥解密 混合使用不同密钥解密的分片组合 详细攻击流程 建立Multi-Channel MitM环境 社工STA请求大资源(如图片/JS文件) STA发送分片帧(序列号s1,分片号n/n+1,密钥k) 攻击者转发Frag0,丢弃Frag1 STA与AP重新握手(密钥更新为m) 攻击者捕获新分片(Frag1),修改序列号为s1 AP组合Frag0(密钥k解密)和Frag1(密钥m解密) 数据包发送至攻击者服务器导致信息泄露 技术要点 利用分片重组不验证密钥一致性的漏洞 需要触发密钥重新协商 依赖分片帧传输大文件场景 0x04 分片缓存攻击(CVE-2020-24586) 攻击条件 近场攻击 已知AP WiFi密码 攻击效果 泄露分片帧的明文内容 攻击原理 AP会缓存解密的分片,即使STA断开连接 攻击者预先发送部分分片 详细攻击流程 攻击者伪装STA连接AP(需知道密码) 请求大资源,仅发送第一个分片(Frag0) AP解密Frag0并缓存 攻击者断开连接 STA正常连接AP 攻击者捕获STA的分片(Frag1),修改序列号 AP组合缓存的Frag0和STA的Frag1 数据包发送至攻击者服务器导致信息泄露 技术要点 需要知道AP密码 利用AP的分片缓存机制 比混合密钥攻击更稳定(不依赖密钥更新) 0x05 防御建议 及时更新 :应用厂商发布的补丁 禁用A-MSDU :在设备配置中关闭A-MSDU功能 实施SPP :启用A-MSDU帧认证(Subframe Protection) 分片验证 :确保分片使用相同密钥解密 清除缓存 :STA断开后清除相关分片缓存 0x06 实验环境搭建 硬件要求 3070芯片系列无线网卡(用于攻击) 2张无线网卡(用于Multi-Channel MitM) 软件工具 Wireshark(抓包分析) fragattacks工具集(https://github.com/vanhoefm/fragattacks) Hostapd(搭建AP) 0x07 漏洞验证步骤 A-MSDU注入攻击验证 设置伪AP与转发环境 诱导STA访问攻击者HTTP服务器 构造恶意A-MSDU响应 修改802.11头部标志位 验证注入的TCP/IP包是否被执行 混合密钥攻击验证 建立MitM环境 诱导STA请求大文件 拦截并修改分片序列 触发密钥重协商 验证信息泄露 分片缓存攻击验证 以合法STA身份连接AP 发送部分分片后断开 捕获正常STA的分片 修改序列号重放 验证信息泄露 0x08 参考资源 研究论文:https://papers.mathyvanhoef.com/usenix2021.pdf 官方说明:https://www.fragattacks.com PoC工具:https://github.com/vanhoefm/fragattacks 802.11协议详解:https://inet.omnetpp.org/docs/showcases/wireless/aggregation/doc/index.html 0x09 总结 FragAttack系列漏洞揭示了802.11协议在设计上的深层次问题,特别是帧聚合和分片机制的安全缺陷。这些漏洞影响几乎所有的WiFi设备,攻击者可以在不知道WiFi密码的情况下实施攻击。安全研究人员和厂商应重视这些协议级漏洞,推动更安全的无线通信标准实施。