BLE 安全之虫洞攻击

注:本文为“小米安全中心”原创,转载请联系“小米安全中心”

上期回顾:跨站读取数据小结

0x00 前言

所谓『虫洞』,在天体物理中是通过扭曲空间,连接宇宙遥远区域间的一个隧道,通过穿越这个隧道可以完成『时空穿越』。其实我并不懂天体物理,这些是我 Google 来的。

在 BLE 安全中,有一种攻击近似于『虫洞』,可以在一瞬间让相隔万里的两个设备完成亲密接触。

这种攻击手法在 blackhat USA 2016 由安全研究者 Jasek 进行了阐述,同时 Jasek 公开了一篇详细介绍 BLE 安全的 White Paper『GATTACKING BLUETOOTH SMART DEVICES』和对 BLE 进行安全评估的工具 GATTacker

PS:阅读本文需要有 BLE 基础,限于篇幅,本文不会对 BLE 展开细讲。

0x01 虫洞攻击原理

在谈论虫洞攻击之前让我们先简单了解下 BLE,BLE 是 Bluetooth Low Energy (低功耗蓝牙)的缩写,和传统蓝牙类似,是一种近距离进行设备间无线连接和通讯的协议。BLE 和传统蓝牙除了名字相似外,其架构设计完全不同。BLE 物如其名,其具有极低的功耗,加上其使用简单,成本低廉,深受 IoT 的喜爱,目前在家庭、健康、医疗等领域使用广泛。比如我们所熟悉的手环,就是使用的 BLE 技术。

虽然 BLE 传输距离可以长达 100 米,但其仍然是一种近距离的无线通讯协议,其使用场景仍然需要两个设备进行近距离接触。大部分使用场景如下:

Phone <-- BLE --> Device

假设我们有一种需求是想让 BLE 的传输距离增加到 200 米,那么可以通过下面方式来实现:

Phone <-- BLE --> BLE Relay Device <-- BLE --> Device

我们通过一个 BLE Relay 设备来把 BLE 信号进行中继以达到 200 米的传输距离。更远的距离可以通过增强天线性能或者复用 Relay 设备来实现。

如果是地球的两端呢?应该没有人傻到采用优乐美奶茶绕地球的方式来完成 BLE 的传递。正常的思维会采用下面的方式来实现:

Phone <-- BLE --> BLE Peripheral <-- Tunnel --> BLE Central <-- BLE --> Device

我们通过额外的 BLE Central/Peripheral 设备以及 Tunnel 来完成 BLE 的传递。

放在 BLE 安全攻击模型中,我们可以把 BLE Peripheral <-- Tunnel --> BLE Central 部分称之为『虫洞』,通过『虫洞』来对正常的 BLE 通讯设备完成同一时间点甚至超越时间上的跨时空攻击。

0x02 虫洞攻击实现

实现『虫洞』攻击之前,我们还需要稍微再了解一下 BLE 协议,参考下图的 BLE 协议结构

 BLE 协议结构

BLE 协议有很多部分组成,但是我们主要关注两部分: 

  • GAP(Generic Access Profile)

  • GATT(Generic Attribute Profile)

GAP GAP 用于让两个设备进行连接。GAP 为设备定义多个角色,其中最重要的两个分别是:Central 和 Pheipheral。

  • Pheipheral 发出广播,可以被 Central 设备进行扫描和连接,比如手环;

  • Central 扫描 Pheipheral 设备,并对其进行连接,比如手机;

GATT GATT 用于让两个设备进行连接后的通讯。GATT 定义设备之间通过 Service 和 Characteristic 的东西来进行通讯,不同的 Characteristic 代表设备的不同功能。GATT 的结构如下:

了解了 GAP 和 GATT 之后,再来回忆一下『虫洞』攻击的模型 BLE Peripheral <-- Tunnel --> BLE Central,也就是说我们需要实现三部分功能,分别是 BLE Peripheral、Tunnel、BLE Central。

BLE Central

  • 连接到 Device,获取其所有 Service 和 Characteristic,以及设备名称和 MAC 等信息,通过 Tunnel 传输到 BLE Peripheral,供 BLE Peripheral 伪造 Device。同时保持和 Device 的连接,用于后续对 Device 进行操作;

Tunnel

  • websocket,socket,xmpp、http 等等,whatever,只要能够远程通讯都可以,用于BLE Central 和 BLE Pheipheral 之间数据传输;

BLE Peripheral

  • 接收 BLE Central 传送过来的 Device 相关数据,完全伪造 Device,供 Phone 进行连接。把后续 Phone 对 Device 的操作通过 Tunnel 传输到 BLE Central 端;

最终,BLE Peripheral、Tunnel、BLE Central 三者实现了一个『虫洞』,拉近 Phone 和 Device 之间的距离,使其完成近距离接触。

只要网络可达,不在乎距离多远。

0x03 虫洞攻击相关工具

GATTacker https://github.com/securing/gattacker

Btlejuice https://github.com/DigitalSecurity/btlejuice

具体用法参见文档,具体实现参见代码。

0x04 攻击场景

在谈论『虫洞』时,我们一直在谈论距离,但是在实际的攻击场景中,距离并不是关键,关键的是攻击思想。下面罗列的攻击场景仅供参考

DDoS 在近距离,我们可以通过伪造 Device,使 Phone 强制连接我们伪造的 Device 以达到拒绝服务攻击的目的。

窃听或篡改数据 通过『虫洞』,我们可以洞悉 Phone 到 Device 的数据通讯,必要时候可以对数据进行篡改以达到我们想要的效果。

会话劫持 对于一些设备,通过『虫洞』,可以完成 Device 对 BLE Central 的认证,保持 BLE Central 对 Device 的连接,后续可以任意操作 Device。

当然攻击场景肯定不止上面提到的这三种,可以发散思维,想想还有什么攻击场景? 

0x05 结尾

『虫洞』攻击其实就是 MITM,我并非故意标题党,而是我觉得在 IoT 快速发展的今天,形形色色的使用了 BLE 技术的智能设备已经深入到我们的生活中,并且在影响着我们的生活。手环、智能门锁、无钥匙进入、医疗设备等等,BLE 在为我们提供便利的同时,也埋伏着安全隐患。这种攻击虽然有前置条件,但是一旦发生轻则泄露个人隐私数据,重则造成财产损失,甚至对生命安全产生威胁。

希望本文会被相关从业者看到,能有些许思考。如果能够有些许影响,则更好不过。

0x06 参考资料

BLE(蓝牙低功耗)安全管理器(Security Manager,SM)是BLE协议栈中负责处理安全相关功能的关键部分。它主要负责设备间的配对、绑定以及链路加密等操作,确保通信的安全性与完整性。 ### BLE安全管理器的核心功能 #### 1. 配对过程 BLE的配对分为两个阶段:**配对请求/响应阶段**和**密钥分发阶段**。在配对过程中,设备通过交换配对参数来协商安全级别,并生成用于后续加密的临时密钥(STK或LTK)。 - **第一阶段**:设备之间交换配对请求(Pairing Request)和配对响应(Pairing Response),协商配对方式(如Just Works、Passkey Entry、OOB等)、IO能力以及是否支持MITM保护[^1]。 - **第二阶段**:根据协商的结果进行密钥生成与分发。例如,在LE Legacy Pairing中使用STK(Short Term Key)作为临时密钥,而在LE Secure Connections中则使用更复杂的算法生成长期密钥(LTK)[^2]。 #### 2. 认证机制 BLE SM支持多种认证机制,主要包括: - **Just Works**:适用于无输入输出能力的设备,无法抵抗中间人攻击(MITM)。 - **Numeric Comparison**:双方显示6位数字并让用户确认是否一致,适用于具有显示和输入能力的设备,可抵御MITM。 - **Passkey Entry**:一方输入另一方提供的6位数字,适用于一方有输入能力而另一方有显示能力的情况。 - **Out of Band (OOB)**:利用外部通道(如NFC)传递配对信息,提供更强的安全保障。 #### 3. 密钥管理与存储 在完成配对后,BLE SM会将生成的长期密钥(LTK)、身份解析密钥(IRK)等存储在设备的“绑定数据库”中。这些密钥可用于未来的连接中快速建立安全连接,避免重复配对。 - **LTK(Long Term Key)**:用于加密连接的数据链路。 - **IRK(Identity Resolving Key)**:用于隐私地址解析。 - **CSRK(Connection Signature Resolving Key)**:用于数据签名验证。 #### 4. 加密链路的建立 一旦生成了STK或LTK,BLE控制器就可以通过HCI命令`Set_Connection_Encryption`(0x0013)来启用链路加密[^2]。所有后续的数据传输都会经过AES-CCM加密算法处理,确保数据的机密性和完整性。 #### 5. 安全事件处理 BLE SM还负责处理各种安全相关的事件,包括: - **配对失败重试** - **超时处理** - **绑定信息更新** - **连接中断后的恢复** ### BLE SM的工作流程示意图 ```plaintext +-------------------+ +----------------------+ | Initiator | | Responder | | (Central/Peripheral) |<--------->| (Peripheral/Central) | +-------------------+ BLE Link +----------------------+ | | | 1. Pairing Request | |--------------------------> | | | |<-------------------------- | | 2. Pairing Response | | | | 3. Pairing Confirm (Phase 1)| |--------------------------> | | | |<-------------------------- | | 4. Pairing Random | | | | 5. STK/LTK Generation | | | | 6. Key Distribution Phase | |--------------------------> | | | |<-------------------------- | | 7. Security Setup Complete | | | ``` ### BLE SM的实现细节 - **协议层位置**:BLE SM位于GAP(Generic Access Profile)之上,与L2CAP层交互,控制配对流程和密钥交换。 - **状态机管理**:SM内部采用状态机机制管理整个配对过程,确保每一步都按序执行。 - **错误处理机制**:对于配对失败、超时等情况,SM会触发相应的错误码并通过回调函数通知上层应用。 ### BLE SM的应用场景 - **物联网设备配对**:如智能手表与手机之间的安全连接。 - **医疗设备数据传输**:确保敏感健康数据不被窃取。 - **智能家居控制**:防止未经授权的设备接入家庭网络。 - **支付系统**:如NFC结合BLE进行安全支付。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值