D~DIDI~DIDIDI!!!!

0%

WifiFragattacks

概述

FragAttacks(Fragmentation and Aggregation Attacks)是由安全研究员 Mathy Vanhoef 于 2021 年公开的一系列 Wi-Fi 安全漏洞,影响范围覆盖所有现代 Wi-Fi 安全协议(包括 WPA3)。这些漏洞利用了 Wi-Fi 802.11 标准中帧分片(Fragmentation)和帧聚合(Aggregation)机制的设计缺陷和实现漏洞,可被攻击者用于在 Wi-Fi 通信范围内窃取用户数据或攻击设备。

兼容网卡列表

在进行 FragAttacks 测试之前,需要选择支持混杂模式和注入模式的网卡:

网卡型号 USB 5GHz 混杂模式 注入模式 芯片
Technoethical N150 HGA Yes No 需要修补驱动/固件 需要修补驱动/固件
TP-Link TL-WN722N v1.x Yes No 需要修补驱动/固件 需要修补驱动/固件
Alfa AWUS036NHA Yes No 需要修补驱动/固件 需要修补驱动/固件
Intel Wireless-AC 8265 No Yes 需要修补驱动 Yes
Intel Wireless-AC 3160 No Yes 需要修补驱动 Yes
Alfa AWUS036ACM Yes Yes 需要修补驱动 Yes MT7612U
Netgear WN111v2 Yes No 需要修补驱动 Yes
Alfa AWUS036ACH Yes Yes No Yes

建议:推荐使用 Alfa AWUS036ACM(MT7612U 芯片),该网卡支持 2.4GHz 和 5GHz 双频段,注入模式兼容性好,且仅需修补驱动即可支持混杂模式。

涉及的 CVE 漏洞

FragAttacks 涵盖了多个 CVE 编号的漏洞,分为设计层面缺陷和实现层面缺陷两类:

设计层面漏洞

CVE 编号 类型 描述
CVE-2020-24586 分片缓存攻击 设备在重新连接时不清除内存中的分片缓存
CVE-2020-24587 混合密钥攻击 使用不同密钥加密的分片可被重组
CVE-2020-24588 聚合攻击 接受非 SPP(Security Policy Processing)A-MSDU 帧

实现层面漏洞

CVE 编号 类型 描述
CVE-2020-26139 转发漏洞 转发未经认证发送者的 EAPOL 帧
CVE-2020-26140 明文接收 在受保护网络中接受明文数据帧
CVE-2020-26141 TKIP MIC 校验 不验证分片帧的 TKIP MIC
CVE-2020-26142 重组漏洞 将分片帧作为完整帧处理
CVE-2020-26143 明文注入 接受分片的明文数据帧
CVE-2020-26144 A-MSDU 注入 接受以 RFC1042 头开始的明文 A-MSDU 帧
CVE-2020-26145 广播分片 接受明文广播分片
CVE-2020-26146 非连续 PN 重组具有非连续包编号的加密分片
CVE-2020-26147 混合分片 重组加密/明文混合分片

测试工具使用

fragattack.py 基本用法

1
2
# 查看帮助信息
./fragattack.py --help
1
2
3
4
5
usage: fragattack.py [-h] [--inject INJECT] [--inject-test INJECT_TEST]
[--inject-test-postauth INJECT_TEST_POSTAUTH]
[--hwsim HWSIM] [--ip IP] [--peerip PEERIP] [--ap]
[--debug DEBUG] [--delay DELAY] [--inc-pn INC_PN]
iface testname [actions]

关键参数说明

参数 说明
iface 用于测试的网络接口
testname 要运行的测试名称或标识符
--inject INJECT 用于注入帧的接口
--inject-test INJECT_TEST 通过监控接口测试注入功能
--inject-test-postauth 在认证之后运行注入测试
--hwsim HWSIM 使用监控模式的接口,通过 hwsim 模拟 AP/客户端
--ip IP 作为发送者使用的 IP 地址
--peerip PEERIP 被测设备的 IP 地址
--ap 作为 AP 运行以测试客户端
--debug DEBUG 调试输出级别

帧操作参数

参数 说明
--delay DELAY 特定测试中分片之间的延迟
--inc-pn INC_PN 测试分片中的非顺序包编号
--amsdu 将 ping 封装在 A-MSDU 帧中
--amsdu-fake 设置 A-MSDU 标志但包含正常载荷
--amsdu-spp 强制认证 QoS A-MSDU 标志

请求覆盖参数

参数 说明
--arp 使用 ARP 请求覆盖默认请求
--dhcp 使用 DHCP discover 覆盖默认请求
--icmp 使用 ICMP ping 请求覆盖默认请求
--ipv6 使用 ICMPv6 路由器通告覆盖默认请求
--udp UDP 使用指定端口的 UDP 包覆盖默认请求
--no-dhcp 作为 AP 时不回复 DHCP 请求
--icmp-size SIZE 设置 ICMP ping 请求大小
--padding PADDING 为 ARP/DHCP/ICMP 请求添加填充数据

密钥协商参数

参数 说明
--rekey-request 作为客户端主动请求 PTK 重协商
--rekey-plaintext 使用明文 EAPOL 帧进行 PTK 重协商
--rekey-early-install 在重协商期间发送 Msg3 后安装 PTK
--full-reconnect 先取消认证再重新连接

高级参数

参数 说明
--bcast-ra 使用广播接收器地址发送 ping
--bcast-dst 发送到 AP 时使用广播目标地址
--bad-mic 使用无效的认证标签发送 ping
--pn-per-qos 为每个 QoS TID 使用独立的 Tx 包计数器
--no-qos 不发送 QoS 数据帧(实验性)
--freebsd-cache 发送 EAPOL 帧作为广播 EAPOL/A-MSDU
--connected-delay DELAY AfterAuth 后等待指定秒数再触发 Connected 事件
--pre-test-delay DELAY 启动测试前的延迟
--to-self 发送源和目标 MAC 地址相同的 ARP/DHCP/ICMP
--no-drivercheck 不检查是否使用了修补后的驱动
--stay-up 测试完成后不退出

测试示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 测试注入功能
./fragattack.py wlan0 --inject-test wlan1

# 2. 作为 AP 模式测试客户端的分片缓存漏洞
./fragattack.py wlan0 ping --ap

# 3. 测试 A-MSDU 聚合攻击
./fragattack.py wlan0 ping --amsdu

# 4. 测试混合密钥分片重组
./fragattack.py wlan0 ping --inc-pn 2

# 5. 使用 ARP 请求进行测试
./fragattack.py wlan0 ping --arp

攻击原理

分片攻击

Wi-Fi 802.11 协议支持将大型帧分割为更小的分片进行传输。FragAttacks 利用了以下设计缺陷:

  1. 分片缓存不清除:设备在断开并重新连接时,不会清除之前缓存的分片数据。攻击者可以先发送恶意分片,在目标重新连接后利用缓存的分片完成攻击
  2. 混合密钥重组:协议未强制要求所有分片使用同一密钥加密。攻击者可以混合使用不同会话的分片来构造恶意帧
  3. 非顺序包编号:某些实现不验证分片帧的包编号是否连续,允许注入伪造的分片

聚合攻击

A-MSDU(Aggregate MAC Service Data Unit)是一种帧聚合机制:

  1. A-MSDU 标志伪造:协议中 A-MSDU 标志位未受到认证保护,攻击者可以翻转该标志位
  2. 明文帧注入:某些实现在受保护的 Wi-Fi 网络中仍然接受明文数据帧,允许直接注入恶意数据

安全提示

⚠️ 重要警告: FragAttacks 测试工具仅可用于授权的安全评估和学术研究。使用前请注意:

  • 仅在自己拥有或获得明确授权的网络上进行测试
  • 未经授权对他人 Wi-Fi 网络进行攻击测试属于违法行为
  • 测试前应确保使用的网卡驱动已正确修补
  • 建议在隔离的实验环境中进行测试
  • 发现漏洞后应及时向设备厂商报告

参考资料

  • 官方项目:https://github.com/vanhoefm/fragattacks
  • 研究论文:Fragment and Forge: Breaking Wi-Fi Through Frame Aggregation and Fragmentation (Mathy Vanhoef, USENIX Security 2021)
  • 漏洞详情:https://www.fragattacks.com
  • 本文是 Wi-Fi 安全研究系列之一,详细的部署环境搭建请参考「WifiFragattacks 部署」文章