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

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

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 参考资料

  • http://www.gattack.io/ 中涵盖的 white paper、slides、code

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

  • https://www.bluetooth.com/zh-cn/specifications/bluetooth-core-specification

  • 以及与同事 rayxcp 的讨论

BLE 安全之虫洞攻击相关推荐

  1. What is 虫洞攻击?

    一.基本概念 虫洞攻击是位于网络层中的攻击类型,网络中的两个虫洞节点试图从两个比较远的区域建立一条高速隧道,一般情况下,相较于使用原网络,数据沿隧道传输会率先抵达目标区域,从而吸引虫洞周边节点流量沿此 ...

  2. IoT安全系列-如何发现攻击面并进行测试(物联网安全)

    导读 IoT是物联网的代名词,然而随着这些智能设备的安全性得到越来越多人的关注.要想对物联网设备安全性进行评估,需要先了解它所涉及的各种"组件",以确定哪部分"组件&qu ...

  3. 数据可视化(全彩)(大数据丛书,首次全面细致地梳理了可视化理论,方法、工具与应用案例。马匡六教授、石教英教授鼎力推荐,十二五国家重点图书出版规划项目)...

    大数据丛书 数据可视化(全彩)(大数据丛书,首次全面细致地梳理了可视化理论,方法.工具与应用案例.马匡六教授.石教英教授鼎力推荐,十二五国家重点图书出版规划项目) 陈为  沈则潜等编著 ISBN 97 ...

  4. 2019年信息安全工程师上午真题及答案解析

    1.<中华人民共和国网络安全法>第五十八条明确规定,因维护国家安全和社会公共秩序,处置重大突发社会安全事件的需要,经(   )决定或者批准,可以在特定区域对网络通信采取限制等临时措施. A ...

  5. A Survey on Metaverse: Fundamentals, Security, and Privacy

    本文针对<A Survey on Metaverse: Fundamentals, Security,and Privacy>的翻译,主要针对文字部分,图表请查看原文. 元宇宙综述:基础. ...

  6. 网络工程师精选习题详解(一)

    请点击↑关注.收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 1.在IPv4地址192.168.2.0/24中,表示主机的二进制位数是(  )位. A.8    B.16    C.24     ...

  7. 《 物联网安全技术》期末复习总结

    < 物联网安全技术>期末复习总结 适用教材:<物联网安全:理论与技术>,胡向东主编,机械工业出版社 提示:与教材内容不完全匹配,有所取舍 写在前面: 这份复习总结是笔者根据老师 ...

  8. 区块链及其扩展方案论文总结

    比特币: 比特币白皮书:Bitcoin:A Peer-to-Peer Electronic Cash System 链下通道: 2015_LNCS_A fast and scalable paymen ...

  9. 基于机器学习、人工智能和区块链技术的物联网安全

    物联网安全:基于机器学习.人工智能和区块链技术的挑战和解决方案 背景介绍 物联网 IoT基础设施 物联网协议 IoT 应用 物联网面临的攻击 三种技术下的物联网安全调研 区块链 机器学习 人工智能 物 ...

最新文章

  1. CentOS VMware 配置IP小结 静态 配置 桥接 NAT
  2. android开发中用到的px、dp、sp
  3. 步步为营UML建模系列二、部署图(Deployment Diagram)
  4. vs中如何开发mysql_VS2015如何连接mySQL数据库图文
  5. 神经网络与定态薛定谔方程
  6. 3t studio 导出数据_Studio 3T 2019 强大的MongoDB数据库连接工具
  7. jquery插件之thickbox
  8. 《Python编程从入门到实践》第10章文件和异常动手试一试答案(附代码)
  9. Android RxVolley = Volley + RxJava + OkHttp
  10. P4213 【模板】杜教筛(杜教筛)题解
  11. 1.3 将临时变量内联化
  12. 项目经理,别让猴子跳回背上!
  13. Oracle 11gR2 中 示例用户 安装说明
  14. 联想服务器控制口登录地址_联想服务器登录管理界面 联想服务器客服
  15. 基于MQTT的python聊天室
  16. 计算机教 学计划,计算机教学计划
  17. Hibernate5的学习笔记(二)
  18. 1.3.随机变量,随机向量的自相关与自协方差
  19. 欧姆龙 PLC 程序NJ ST语言EtherCat总线控制24个伺服轴大型程序电池生产线 包括PLC NJ-1400和威纶通触摸屏程序
  20. 到底微信公众号和头条号哪个更适合自媒体新人

热门文章

  1. 条款五:对应的new和delete要采用相同的形式
  2. 做爱做的事,做有快感的事
  3. [C++] 我们需要掌握多少语法细节
  4. hdu 1757 矩阵连乘
  5. JavaScript:window.event.srcElement(指触发事件的对象)
  6. pytorch GPU版本安装 win10
  7. B树与B+树 两者的区别
  8. 反向传播(Back propagation)算法推导具体过程
  9. [云炬创业基础笔记]第四章测试24
  10. 第05课:神经网络基础知识