手环BLE蓝牙认证绕过,可实现远程控制

01 低功耗蓝牙(BLE)

BLE是常见的手环所用蓝牙,低功耗蓝牙(Bluetooth low energy,简称BLE)指支持蓝牙协议4.0或更高的模块。相较于传统蓝牙,BLE的特点是最大化的待机时间、快速连接和低峰值的发送/接收功耗。BLE只在需要时传输少量数据,而除此之外则会保持关闭状态,这大大降低了其功耗,也使其成为了在低数据速率下需要长久连接使用的理想选择。

由此来看,BLE非常适合运用于手环这种数据量比较少的传输场景。下面分析手环认证机制后,进行认证绕过。

02 重放攻击

首先,手机开启开发者模式,在开发者选项中启用蓝牙HCI信息收集日志。然后,通过手机APP点击寻找手环功能,向手环发送蓝牙数据。

分析蓝牙日志,确认蓝牙重放句柄的handle和value,使用BLE调试助手或nRF Connect等蓝牙调试工具即可重放攻击。

03 认证机制分析

手环认证分两种情况,一种是未绑定的情况,一种是已绑定的情况。已绑定情况只是少了一步发送key到手环的步骤。由后面分析可知,已绑定的手环同样可以发送key值覆盖之前的key,所以这里只介绍未绑定的情况。

通过手机APP,绑定手环,抓取蓝牙日志。

首先,获取认证characteristic的descriptor,向desc句柄写入0x0100。

如果该手环处于未绑定的状态,需要向手环中写入0x0100+key(16 bytes)。

之后,手机APP端再向手环发送0x020002,来获取随机数。手环会返回0x100201+随机数(16 bytes)到手机APP端。

然后,手机APP端再将key与随机数加密,并以0x0300+加密数据(16 bytes)的形式发送给手环。

最后,手环内部将key与随机数按同样方式加密,对比加密数据,如果相同则返回0x100301,表示认证通过。失败则返回0x100304。

由于已知key,随机数及加密后的数据,我们可以推出,该加密方式为AES_ECB。

未绑定状态认证流程

04 认证机制绕过

根据上面分析,我们其实可以看出来这里面有一个很严重的漏洞。在手环未进行绑定的情况下,如果我写入任意key,根据返回的随机数,按AES_ECB的方式加密,再向手环发送正确的加密后的数据,即可绕过认证。

经多次测试,在已绑定的情况下,如果也向手环写入key,则可以覆盖掉之前的key(之前绑定的设备将无法连接,需重新绑定)。同样也能绕过认证机制。

最后通过蓝牙抓包,确定手环短信提示,来电提示,寻找手环等蓝牙包的handle及value,即可实现远程控制手环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值