Black Hat Europe 2021议题解读:Wi-Fi Mesh中的安全攻击面

2021年11月26日 阅读数:4
这篇文章主要向大家介绍Black Hat Europe 2021议题解读:Wi-Fi Mesh中的安全攻击面,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

近年来,随着万物互联技术的发展,Mesh技术逐渐兴起,Mesh技术是一种组网技术,可将多个接入点组成同一个网络来提供服务,相比于传统的WiFi组网技术,Mesh组网更稳定,更快,扩展性更强。而WiFi Mesh也凭借着自组织,自管理,自治愈的特性,在将来万物互联的场景中占据重要的地位。sass

针对WiFi Mesh的新兴场景,在本次Black Hat Europe 2021大会上,百度安全以线上的形式分享了议题《BadMesher: New Attack Surfaces of Wi-Fi Mesh Network》,该议题主要讨论了WiFi Mesh中的安全攻击面,设计并实现了一套自动化漏洞挖掘工具MeshFuzzer,并展现了其在实际漏洞挖掘过程当中的效果。安全

议题解读

基本概念

EasyMesh概念

EasyMesh是WiFi联盟推出的一项标准化认证方案,其经历了三个发展阶段:网络

图 1 EasyMesh发展流程架构

2018年,Mesh技术为厂商各自实现,缺少统一的标准,所以不一样厂商的设备之间没法互联互通。并发

2019年,WiFi联盟推出EasyMesh V1版本,引入了Onboarding流程和Auto-Config流程,并使用1905控制协议来实现Mesh中大部分的控制功能。工具

2020年,WiFi联盟推出EasyMesh V2和V3版本,V3版本丰富了更多的控制特性,尤为增长了安全特性,为控制消息添加了受权和完整性校验。测试

目前经过EasyMesh认证的厂商已经有数十家,其中包括Mediatek、Huawei、ZTE等。加密

EasyMesh架构

EasyMesh的架构如图 2所示,其中包含两个关键链路,两个关键角色。url

图 2 EasyMesh架构图spa

关键链路

一、Fronthaul链路:指的是暴露的WiFi链路,也就是咱们手机可以正常链接的SSID

二、Backhual链路:指的是隐藏的WiFi链路,即为是没法搜索到的SSID,是专门为Mesh提供的链路

关键角色

一、Controller角色:Mesh网络的管理者,可向Agent发送控制指令,来完成Mesh网络的管理,达到自组织,自管理,自治愈的效果

二、Agent角色:Mesh网络的执行者,经过接受Controller的控制指令来执行任务,并向Controller反馈执行结果

这里的角色并不针对具体的设备,是逻辑实体,一个设备既能够做为Controller也能够做为Agent,或者同时做为Contrller和Agent。

Mesh网络构建过程

整个Mesh网络构建过程分为以下2步:

一、Onboarding

二、Discovery和Configuration

Onboarding过程

Onboarding过程是帮助一个未加入Mesh网络的设备加入Mesh网络,咱们将未加入网络的设备称为Enrollee设备,整个过程是经过1905 Push Button Configueration协议(后面简称1905 PBC)来实现的,1905 PBC包含了以下3个特性:

一、特性1:入网双方须要进行push button

二、特性2:基于WiFi Protected Setup实现

三、特性3:基于TLV

从图 3中可看出,1905 PBC在Multi-AP Extension部分进行了专门的标记,也就是标记获取的是Backhaul的SSID。所以Entollee设备可经过1905 PBC来得到Mesh链路的入网凭证。

图 3 Multi-AP Extension

整个Onboarding的流程如图 4所示:

图 4 Onboarding流程

首先将两个设备进行Push Button,让两个设备进入配网状态。

其次Enrollee设备经过1905 PBC来与Fronthaul SSID交互,通过M1-M8的过程后,最终Existing Agent将Backhual的SSID和password返回给Enrollee设备,以后Enrollee设备便可以链接Backhaul SSID,加入Mesh网络。

至此Onboarding流程完成了。

Discovery和Configuration过程

总体流程如图 5所示:

图 5 Discovery和Configuration流程

在完成Onborading流程后,Enrollee设备须要找到Mesh网络中的Controller来得到当前Mesh网络的基本配置,这里则使用IEEE1905.1a控制协议,Enrollee设备经过“AP Autoconfig Search”广播包来探测Controller是否存在,若网络中存在Controller, 则Controller会回复“AP Autoconfig Response”, Enrollee设备成功找到了Controller,至此,Discovery过程完成。

Configuration过程则是将当前Mesh网络的配置信息同步给Enrollee设备,如Mesh网络的用户名密码,通讯Channel的选择,网络稳定性的维持参数等,是经过“AP Autoconfig Wifi Sample Configuration”来实现的,Enrollee设备获取了Mesh网络的基本配置,可真正的Agent的身份加入Mesh你们庭里,至此整个Mesh 网络构建完成。

Mesh网络控制过程

Mesh网络的维护与管理是一项重要的工程,经过IEEE1905.1a来实现,IEEE1905.1a本质上是介于物理层和网络层的协议,是定义了家庭网络中的有线或无线的控制技术。在Mesh场景中,IEEE1905.1a是载体,提供了多种控制协议如设备发现、设备配置、设备管理等,其整个实现都是基于Type-Length-Value,部分EasyMesh控制协议如表 1所示:

Message type

Protocol

Value

1905 Topology Notification message

STA capability

0x0001

Multi-AP Policy Config Request message

Multi-AP configuration

0x8003

Unassociated STA Link Metrics Response message

Link metric collection

0x8010

Backhaul Steering Request message

Backhaul optimizatio

0x8019

Client Disassociation Stats message

Data Element

0x8022

......

……

……

表 1 部分EasyMesh控制协议

这里选择“Multi-AP Policy Config Request Message”来做为例子,能够看到图 6对应的命令字为 0x8003,具体的Streeing Policy则知足基本的TLV,能够看到图 6中Type为0x89,len为21,而value则为对应的payload。

图 6 Multi-AP Policy Config Message

攻击面分析

分析完了整个Mesh网络的组网和控制过程,咱们来看看实际的攻击面,攻击的载体是两个关键协议:

一、1905 Push Button Configuration Protocol

二、IEEE 1905.1a Control Protocol

对应的是两个关键的攻击面:

一、攻击网络构建过程

二、攻击网络控制过程

攻击Mesh网络构建过程

攻击Existing Agent

攻击者:“Bad“ Enrollee Agent

受害者:Exixting Agent

攻击载体:1905 Push Button Configuration Protocol(M一、M三、M五、M7)

整个攻击流程如图 7所示

图 7 攻击Existing Agent

攻击者构造恶意的Enrollee设备来攻击Existing Agent,具体则是基于1905 PBC发送畸形的M一、M三、M五、M7包来进行攻击,可触发Existing Agent在M一、M三、M五、M7过程当中的TLV的解析漏洞。

攻击Enrollee Agent

攻击者:“Bad” Existing Agent

受害者:Enrollee Agent

攻击载体:1905 Push Button Configuration Protocol(M二、M四、M六、M8)

整个攻击流程如图 8所示

图 8 攻击Enrollee Agent

攻击者构造恶意的Existing Agent设备来攻击Enrollee设备,具体则是基于1905 PBC回复畸形的M二、M四、M六、M8包来进行攻击,可触发Enrollee设备在M二、M四、M六、M8过程当中的TLV解析漏洞。

攻击Mesh网络控制过程

分析完Mesh构建的攻击面,再看Mesh网络控制的攻击面。

攻击者:“Bad” Existing Agent

受害者:Controller和其余Existing Agent

攻击载体:IEEE 1905.1a Control Protocol

攻击者可发送畸形的1905包来触发Controller和Existing Agent中1905 TLV的解析漏洞,图 9是咱们针对“AP_AUTOCONFIGURATION_WSC_MESSAGE”设计的恶意包,能够看到,咱们在SSID的len部分填入了0xFF,而实际的SSID最长为64,并在SSID的payload部分中所有填入0xFF,从图 10实际获取的数据包中能够看到,实际的SSID部分充满了咱们填充的0xFF的Payload,这是不符合SSID解析的预期。

图 9 模拟发送畸形的IEEE 1905.1a控制包

图 10 实际的IEEE 1905.1a控制包

自动化工具MeshFuzzer

MeshFuzzer架构

咱们的Meshfuzzer包含两个Fuzzing子系统,分别是针对1905 PBC的Fuzzing以及针对1905.1a的Fuzzing,总体架构如图 11所示。

图 11 MeshFuzzer架构

上半部分是咱们设计的针对1905 PBC的Fuzzing子系统,咱们采用实际设备间的WPS交互数据做为输入,通过咱们的TLV 变异系统,最终使用咱们的802.1的发包器来进行发包,与此同时对设备进行串口链接,实时监控crash的状态。

下半部分是咱们设计的针对IEEE 1905.1a的Fuzzing子系统,咱们实现了大部分EasyMesh中的控制协议字段,一样通过咱们的TLV变异系统,最终使用咱们的1905发包器来进行发包,经过独有的1905数据包来监控crash的状态。

变异策略

因为两个目标协议均是基于TLV实现的,咱们能够用统一的变异策略来高效的辅助Fuzzing的进行。

变异策略1:变异长度字段,经过过长或者太短的长度来触发TLV解析的一些常规内存破坏漏洞,好比长度太短会致使越界读,或者整数溢出,过长会致使越界写等问题,图 12是咱们实际测试中将长度字段变异为太短的效果。

变异策略2:对现有的TLV块进行随机的增删改,这可能会致使的内存破坏相关的逻辑漏洞,如Double-Free、UAF等,图 13是咱们实际测试中随机增长TLV块的效果。

图 12 太短的长度字段

图 13 随机对TLV块进行增长

Fuzzing网络构建过程

软硬件选择

硬件部分:选择Ubuntu或者树莓派4,配合无线的USB网卡来进行发包操做。

软件部分:选择了对wpa_supplicant进行改造来定制化咱们的Fuzzer,具体缘由则是wpa_supplicant自己支持1905 PBC协议,所以咱们能够在其不一样的阶段中加入咱们的变异策略,可高效稳定的实现Mesh网络构建阶段的Fuzzing工做。

图 14 wpa_supplicant实现代码

实际Fuzzing Existing Agent

咱们使用以上的定制化的Fuzzing工具,即可模拟整个1905 PBC过程,并对M一、M三、M五、M7阶段注入Fuzzing Payload,图 15是咱们在Fuzzing过程当中,捕获到的的M7阶段的TLV解析致使的越界写入漏洞的崩溃日志,图 16是咱们捕获的实际的数据包。

图 15 M7阶段越界写问题

图 16 M7阶段越界写实际数据包

咱们监控崩溃的方式则是经过对目标设备进行Ping探测以及串口实时捕获崩溃日志。

实际Fuzzing “Existing” Agent

Network构建过程另外一个受害角色,则是未配网的“Enrollee”,咱们模拟一个恶意的“Existing” Agent来fuzzing “Enrollee”。这里为了保证让Enrollee持续保持加入Mesh网络的状态,咱们编写了一个脚本,如图 17所示。

图 17 Enrollee保持加入Mesh网络脚本

咱们在M二、M四、M六、M8阶段注入了Fuzzing Payload,图 18是咱们Fuzzing过程当中,触发的M6阶段的TLV解析致使的越界写入漏洞。图 19是咱们捕获的实际的数据包。

图 18 M8阶段越界写问题

图 19 M8阶段越界写实际数据包

这里咱们监控崩溃的方式仍然是经过对目标设备进行Ping探测以及串口实时捕获崩溃日志。

Fuzzing网络控制过程

软硬件选择

硬件部分:选择了Macbook Pro,由于Macbook Pro能够较好的支持1905数据包的发。

软件部分:选择了现有的开源库pyieee1905,所以咱们能够基于pyieee1905来开发自定义的协议字段,这将大大减小咱们Fuzzer的开发工做量,咱们只须要实现EasyMesh里的控制协议即可对网络控制部分进行Fuzzing测试。

图 20 pyieee1905

监控模块

因为1905的处理模块大可能是单独的进程,咱们没法直接经过串口捕获崩溃,也没法经过对设备发送Ping探测包来监控1905进程的运行状态,这里咱们选择EasyMesh里提供的1905 Topology Query Message,该数据包是用于设备1905进程间探测互相支持的能力,所以经过设备对该包的回复与否,咱们即可容易的知道,设备上的1905进程是否存活,或者是否在正常工做。

图 21 Topology Query Message

每当咱们发出一个Fuzzing Payload,便会发送一次1905 Topology Query,若获得回复,说明1905 Daemon正常工做,若未获得回复,说明1905 Daemon可能出现了问题,此时咱们会记录这次发送的Fuzzing Payload到本地保存,并等待进程的重启。

图 22 1905 崩溃监控与保存

图 23 实际崩溃

实际效果

咱们使用MeshFuzzer在Mediatek MT7915的EasyMesh解决方案中发现了多处TLV解析致使的内存破坏漏洞,并发现了1处违背安全设计准则的安全问题,累计得到了19个CVE,问题列表如图 24所示,目前Mediatek已经修复了全部问题并输出了安全补丁。

图 24 MT7915安全问题

安全建议

对于处理TLV解析致使的内存破坏漏洞,咱们建议对数据包进行完整解析,而后一一检查类型和长度,最后进行处理,当长度和类型检查失败时对数据包进行丢弃。

一个很好的例子是wpa_supplicant,图 25中显示了wpa_supplicant处理TLV包的过程,遵循解析->分发->验证->处理的过程。

图 25 正确的TLV处理例子

针对违背安全设计准则的问题,EasyMesh V3标准中有一节专门描述了1905协议的安全能力。例如,要隔离 Backhaul 和 FrontHaul 链路,须要增长消息的完整性校验并1905包进行加密,建议厂商在实现EasyMesh时,遵照EasyMesh标准,实现1905协议的安全能力。

总结

对整个议题总结以下:

一、咱们发现了WiFi Mesh中的多个安全攻击面,攻击者能够在Mesh网络构建阶段和网络控制阶段对Mesh网络中的设备发起攻击;

二、咱们开发了一款自动化漏洞挖掘工具MeshFuzzer,能够自动挖掘厂商在实现EasyMesh时引入的安全漏洞;

三、在实践中,咱们在MT7915芯片的EasyMesh解决方案中发现了多处安全问题,得到了19个CVE,并给出相应的修复建议。

点击进入得到更多技术信息~~