近日,国外安全研究员Mathy Vanhoef公布了FragAttack系列WiFi漏洞,其中802.11协议设计漏洞影响几乎所有WiFi设备。
针对WiFi的漏洞大致可以分为三类:
FragAttacks主要涉及3个802.11协议设计漏洞:
与多个协议栈代码实现漏洞:
其中协议栈代码实现漏洞大多是与3个协议设计漏洞相关联的漏洞,本文主要对3个协议设计漏洞进行分析。
此章节简单介绍802.11协议一些基础知识。
我们以手机通过WiFi连接路由器这一通信流程为例,来对802.11协议有一个快速的了解。
通常我们将提供WiFi信号的设备定义为接入点(AP),连接到接入点的设备称之为工作站(STA),在当前例子中路由器为AP,手机为STA。
802.11协议中存在信道这一概念,WiFi信号依照802.11协议运行在不同频段上,信道便是区分频段的一个定义,国内使用1至13信道(2.4GHz)。
路由器在某一信道广播Beacon帧,Beacon帧中包含AP的一些基本信息如SSID、速率。
手机在扫描时会不断切换无线网卡信道来接收不同信道的AP信号。
以WPA2认证方式为例,STA与AP建立链接流程为:
以上交互的帧均可通过无线网卡进行嗅探,但攻击者在不知道通信密钥的情况下,无法解密加密数据。
经笔者测试,可以使用3070芯片系列网卡复现攻击。
多信道中间人攻击是Fragattack中提到的一种攻击场景。
攻击者在不同信道上克隆目标AP,搭建一个伪AP。
可以使用Deauth攻击迫使目标STA连接到伪AP,进而转发目标STA和目标AP之间的通信流量。由于只是单纯转发802.11协议帧,此攻击不需要知晓目标AP的wifi密码。
802.11协议有提及对抗这种中间人攻击的方案,但实际上并没有实行。所以在实际中,这种攻击可以稳定实现,不过需要以下条件:
Multi-Channel MitM示意图:
每个802.11帧在传输时都必须带上头部,当多个802.11帧的数据段很小时,可以将多个帧聚合到一个帧中,复用一个头部以提高传输效率。
正常的IP/TCP协议帧封装在802.11数据帧中的格式为:
在Wireshark中可以看到更直观的结构:
判断当前WiFi数据帧是不是A-MSDU帧的依据是802.11头部的Qos Control字段中的flag标志位:
A-MSDU帧中可以包含多个子帧,A-MSDU子帧包含TCP/IP层数据,并在头部添加Destination、Source与Length字段。
A-MSDU帧在wireshark中的结构如下:
当单个802.11帧长度过大时,通过分片机制可将单个帧分为多个分片帧进行传输,单个分片帧与正常802.11帧格式相同。分片帧通过802.11帧头部FC字段中的标志位表示当前分片是否为最后一分片:
同一序列的分片必须拥有相同的序列号(Sequence number
)与递增的分片号(Fragment number
)
Sequence number
与Fragment number
同样在802.11帧头部定义:
攻击条件
利用效果
在不接入AP网络的情况下向网络中任意设备注入TCP/IP协议数据帧,如向某个设备端口发送tcp/udp探测报文。
原理
此攻击需要使用Multi-Channel MitM
攻击场景,攻击者作为中间人转发STA与AP的无线通信流量,并且攻击者不知晓目标AP WiFi密码。
当STA与AP建立链接并开始进行TCP/IP数据通信时,攻击者拦截通信的数据帧,数据帧的数据段虽然被加密,但802.11头部是明文传输,所以A-MSDU flag不受保护(802.11协议定义了SPP机制,可对A-MSDU flag进行认证,但实际中并没有实施此措施),攻击者可将此标志位设置为1。
那么数据段被解密后就会按照A-MSDU格式进行解析。
但攻击者无法加解密数据段,所以需要一个场景来使攻击者可修改数据段明文信息。通过社工使STA访问攻击者的服务器,通过修改服务器返回的Response来控制部分802.11数据帧的数据端内容。
上图红色部分不可控,绿色部分可控,黄色部分可控一部分。
LLC/SNAP
字段会被解析为A-MSDU子帧的Destination等字段,导致第一个A-MSDU子帧的各个字段被填入不合法数据,目标解析第一个子帧时会将其丢弃。所以攻击者需要构造第二个A-MSDU子帧完成注入攻击。
攻击流程:
Multi-Channel MitM
攻击转发STA与AP 802.11通信流量,并社工STA访问攻击者服务器上的资源,比如图片。攻击者修改后的数据帧(解密视图):
这里攻击者注入了一个icmp request包,通信方向为: 192.168.100.1 ==> 192.168.100.2
在192.168.100.1机器上抓包,观察到192.168.100.2返回的icmp response,攻击成功:
攻击条件
利用效果
在不接入AP网络的情况下,泄露网络中某个分片帧的明文内容。
原理
当单个数据帧长度过大时,可以使用帧分片机制,将一个帧分为多个帧进行传输。
AP收到单个分片帧后会将其解密并存放在内存中,但并不会判断这些分片是否使用同一密钥加解密,而是单纯的使用序列号将解密后的分片帧组合起来,这就导致了混合密钥攻击。
此攻击无需知晓目标AP WiFi密码。
攻击流程
Multi-Channel MitM
攻击转发STA与AP 802.11通信流量Sequence number
)为s1,分片号(Fragment number
)分别为n,n+1Sequence number
)修改为s1,并设置为最后一个分片,该分片可能携带敏感信息(HTTP协议)。AP使用密钥m解密Frag1并存放在内存中。攻击条件
利用效果
泄露网络中某个分片帧的明文内容
原理
分片缓存攻击基于混合密钥攻击,区别在于第一组分片由攻击者发送而不是STA,所以攻击者需要知道AP的WiFi密码。此攻击能够实现在于即使STA断开连接,AP依然会将解密的分片缓存在内存中。
攻击流程
Multi-Channel MitM
攻击转发STA与AP 802.11通信流量Sequence number
)修改为s1,并设置为最后一个分片,该分片可能携带敏感信息。AP使用密钥m解密Frag1并存放在内存中。天工实验室隶属于奇安信技术研究院,专注于物联网、车联网领域的安全研究,包括物联网协议安全、固件安全、无线安全、智能网联汽车及自动驾驶安全等,服务于国家和社会对网络空间安全的战略需求。团队成员秉承“天工开物、匠心独运”的创新使命和工匠精神,在物联网漏洞挖掘与攻防领域有丰富的经验积累,漏洞研究成果连续在GeekPwn、天府杯等漏洞破解赛事中斩获多个奖项,漏洞挖掘创新型方法发表于Usenix等国际顶级会议。
50 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!