最早了解 BLE 中继攻击是在 2022 年 3 月份,在网上搜了一堆关于 BLE 攻击方法的介绍,但当时并不知道无钥匙进入系统这么个东西,所以没感觉到中继攻击有什么大用途,当时接触的是些手环、灯泡这类的物联网设备,心想设备在没在我身边我还能不知道?你能骗得了我?
后来在 5 月份的时候 NCC 发布了 BLE 链路层中继解锁特斯拉的视频(https://youtu.be/5mdU4ksOc2w),发现原来 BLE 中继还挺有用的,就回头看了看之前搜集的资料,尝试搭建了 btlejuice 这个用来 BLE 中继攻击的工具(再吐槽一次 npm 安装东西太难了叭)
先把 btlejuice 以及 gattacker 这些中继攻击思路简单描述一下:
用两台带有蓝牙适配器的电脑,一台扫描目标,获取广播包后连接目标,获取服务和特性,然后告诉另一台电脑模拟出来一个虚假的设备,然后每次通信就转发 GATT 层交互的数据(下图为 btlejuice 界面)
但经过测试这个工具相当不稳定,当时测试了几个设备,发现有时候服务与特性都获取不全,且这几个工具都是对 GATT 层进行的中继,对于配对后的 BLE 钥匙就无能为力了,与 NCC 发的视频实现的效果差距太大,便没有深入研究了
后来在网上冲浪的时候发现 NCC 在 hardware.io 分享了他们对 BLE 进行链路层中继的实现思路(https://youtu.be/2CvHM5gZVnY),当时在他们公开的 PPT 中说要对固件进行修改,嗯?修改固件?不会嵌入式开发,告辞
后来看到了小米的师傅们要在 KCon 分享他们实现的 BLE 链路层中继,斥巨资买了张门票(真就为了这个议题去的哈哈哈)然后心满意足的听了小米的师傅们对 BLE 攻击的分享(还说工具要在 Github 开源呜呜呜,催一催
)
KCon PPT:
https://github.com/knownsec/KCon/blob/master/2023/低功耗蓝牙黑客:从数字逃逸到现实.pdf
在与师傅们确认不需要对固件进行改动,只调整 python 代码就能实现后,当场买了两块板子,结果从北京回济南后就出差了哈哈哈,然后在出差的酒店又买了一块板子提前试了试 Sniffle 这个项目
具体实现起来可能更多的是考虑数据该如何处理与转发,像扫描、广播、连接等等这些功能人家早就给你实现好了,当你试过 Sniffle 这个项目的 python_cli 后应该就有思路了
目前仅通过一个从淘宝购买的后改装的 BLE 无钥匙进入系统验证了确实是可行的
在找资料的过程中发现国外一个视频博主,为了录制 BLE 中继解锁特斯拉相关的视频, Sniffle 的作者直接从加拿大飞过去给他们演示攻击效果,这份氛围太棒了吧(当然也可能是博主的钞能力哈哈哈)不过视频做的确实不戳!
原视频:https://youtu.be/myW2cxyOHEQ