【IoT漏洞分析】FragAttack系列WiFi漏洞分析
字数 2594 2025-08-09 23:12:43
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密码的情况下实施攻击。安全研究人员和厂商应重视这些协议级漏洞,推动更安全的无线通信标准实施。