目录 

攻击

1、覆盖密钥

2、万能密码

3、利用中间人进行重放攻击

比较

1、数据分析

2、攻击比较

附录


 攻击 

1、覆盖密钥

从上面的分析可以看到密钥是APP写入设备的,那么我们可以把设备重置掉,然后写个key进去,然后就能用电脑模拟 app控制设备了。

步骤为:

1.  首先访问handle:0x0013触发初始化

2.  向0x000c写入设备号及24个密钥信息

3.  访问0x0013获取此次认证的挑战码

4.  使用python程序计算认证码

5.  向0x000c写入认证码,完成配对

6.  向0x000c写入操作行为,操作门锁

具体操作如下

image.png

image.png

此时写入密钥成功

配对过程:

image.png

 此时设备端提示:

image.png

此时已经完成了认证过程,然后就可以写数据进入了:

image.png

设备端提示:

image.png

此时完成了整个设备的控制。


2、万能密码

步骤和一类似,只是不需要覆盖密钥信息了,直接使用4861636b6d654c6f636b4d6173746572通过认证。


3、利用中间人进行重放攻击

利用嗅探工具或中间人获取到ble传输的信息,提取响应的密钥信息,后续使用该密钥进行认证进行操作,改方法不需要

重置设备

根据嗅探或中间人截获到的认证码,使用中间人进行数据的重放攻击

我们在APP上关闭锁操作:

设备端提示:

image.png

显示锁处于关闭状态,我们在btlejuice上进行开锁的重放攻击:

image.png

操作完成后可以看到设备端提示:

锁已经完成了打开操作。


 比较 

1、数据分析

分析蓝牙数据可以更清除的知道整个数据的逻辑流程,利用wireshark进行分析更加清楚btle协议。

ubertooth 功能很强大,但是要是自己配置运行环境比较复杂,还要有docker镜像,但是捕获数据比较麻烦,需要正确捕获到此次传输的频段。

中间人,能很好的知道数据的逻辑流程和传输数据,但是需要配置代理,需要又一个额外的系统进行支持。


2、攻击比较

覆盖密钥方法:需要初始化设备,需要搞清楚整个认证流程,自己写AES加密算法。

中间人攻击:不需要自己去计算认证码,直接重放数据即可,但是配置比较麻烦。


 附录 

AES加密代码:

image.png


源链接

Hacking more

...