首页
社区
课程
招聘
[原创]手环BLE蓝牙认证绕过,可实现远程控制
2021-6-1 16:40 17194

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

2021-6-1 16:40
17194

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,即可实现远程控制手环。



[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞7
打赏
分享
最新回复 (10)
雪    币: 4001
活跃值: (1704)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mfkiwl 2021-6-2 02:05
2
0
点赞。部分厂商硬是要用认证机制,实现数据必须上云的目的;绕过认证机制蛮有意义的
雪    币: 3624
活跃值: (3783)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
caolinkai 2021-6-2 14:55
3
0
支持一下,文章很不错
雪    币: 8255
活跃值: (1727)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
广岛秋泽 2021-6-5 02:22
4
0
文章写的蛮不错,战术性Mark
雪    币: 1088
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
raax 1 2021-6-7 11:15
5
0
Mark
雪    币: 311
活跃值: (336)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
SmallDolphin 2021-6-7 12:43
6
0
Mark
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
建安十二年 2021-6-9 14:01
7
0
嘿嘿
雪    币: 38
活跃值: (185)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
0bsidian 2021-6-16 14:24
8
0
Mark
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
stone.liu 2021-7-5 16:14
9
0
key不是ECDH密钥协商的吗?怎么是明文传输的啊
雪    币: 314
活跃值: (619)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
华云安 2021-7-6 11:43
10
0
wx_stone_844 key不是ECDH密钥协商的吗?怎么是明文传输的啊
这里是明文传输的,两端各自保留key和随机数,然后进行AES加密。而且这个key可以被覆盖,所以利用这点绕过的认证。
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
stone.liu 2021-7-7 18:00
11
0
华云安 这里是明文传输的,两端各自保留key和随机数,然后进行AES加密。而且这个key可以被覆盖,所以利用这点绕过的认证。
好吧,对称密钥明文传输就有点缺乏常识了
游客
登录 | 注册 方可回帖
返回