本文作者:牛奶坦克
原文发表于小米安全中心,地址:https://sec.xiaomi.com/article/19
所谓『虫洞』,在天体物理中是通过扭曲空间,连接宇宙遥远区域间的一个隧道,通过穿越这个隧道可以完成『时空穿越』。其实我并不懂天体物理,这些是我 Google 来的。
在 BLE 安全中,有一种攻击近似于『虫洞』,可以在一瞬间让相隔万里的两个设备完成亲密接触。
这种攻击手法在 blackhat USA 2016 由安全研究者 Jasek 进行了阐述,同时 Jasek 公开了一篇详细介绍 BLE 安全的 White Paper『GATTACKING BLUETOOTH SMART DEVICES』和对 BLE 进行安全评估的工具 GATTacker。
PS:阅读本文需要有 BLE 基础,限于篇幅,本文不会对 BLE 展开细讲。
在谈论虫洞攻击之前让我们先简单了解下 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 通讯设备完成同一时间点甚至超越时间上的跨时空攻击。
实现『虫洞』攻击之前,我们还需要稍微再了解一下 BLE 协议,参考下图的 BLE 协议结构
BLE 协议结构
BLE 协议有很多部分组成,但是我们主要关注两部分:
GAP GAP 用于让两个设备进行连接。GAP 为设备定义多个角色,其中最重要的两个分别是:Central 和 Pheipheral。
GATT GATT 用于让两个设备进行连接后的通讯。GATT 定义设备之间通过 Service 和 Characteristic 的东西来进行通讯,不同的 Characteristic 代表设备的不同功能。GATT 的结构如下:
了解了 GAP 和 GATT 之后,再来回忆一下『虫洞』攻击的模型 BLE Peripheral <-- Tunnel --> BLE Central,也就是说我们需要实现三部分功能,分别是 BLE Peripheral、Tunnel、BLE Central。
BLE Central
Tunnel
BLE Peripheral
最终,BLE Peripheral、Tunnel、BLE Central 三者实现了一个『虫洞』,拉近 Phone 和 Device 之间的距离,使其完成近距离接触。
只要网络可达,不在乎距离多远。
GATTacker https://github.com/securing/gattacker
Btlejuice https://github.com/DigitalSecurity/btlejuice
具体用法参见文档,具体实现参见代码。
在谈论『虫洞』时,我们一直在谈论距离,但是在实际的攻击场景中,距离并不是关键,关键的是攻击思想。下面罗列的攻击场景仅供参考
DDoS 在近距离,我们可以通过伪造 Device,使 Phone 强制连接我们伪造的 Device 以达到拒绝服务攻击的目的。
窃听或篡改数据 通过『虫洞』,我们可以洞悉 Phone 到 Device 的数据通讯,必要时候可以对数据进行篡改以达到我们想要的效果。
会话劫持 对于一些设备,通过『虫洞』,可以完成 Device 对 BLE Central 的认证,保持 BLE Central 对 Device 的连接,后续可以任意操作 Device。
当然攻击场景肯定不止上面提到的这三种,可以发散思维,想想还有什么攻击场景?
『虫洞』攻击其实就是 MITM,我并非故意标题党,而是我觉得在 IoT 快速发展的今天,形形色色的使用了 BLE 技术的智能设备已经深入到我们的生活中,并且在影响着我们的生活。手环、智能门锁、无钥匙进入、医疗设备等等,BLE 在为我们提供便利的同时,也埋伏着安全隐患。这种攻击虽然有前置条件,但是一旦发生轻则泄露个人隐私数据,重则造成财产损失,甚至对生命安全产生威胁。
希望本文会被相关从业者看到,能有些许思考。如果能够有些许影响,则更好不过。