智能锁避坑知识分享(BLE分析及实践破解智能门锁)
智能锁避坑知识分享(BLE分析及实践破解智能门锁)3. 访问0x0013获取此次认证的挑战码2. 向0x000c写入设备号及24个密钥信息1、覆盖密钥从上面的分析可以看到密钥是APP写入设备的,那么我们可以把设备重置掉,然后写个key进去,然后就能用电脑模拟 app控制设备了。步骤为:1. 首先访问handle:0x0013触发初始化
上文《BLE分析及实践——抓包及风险分析》已经完成了数据包的抓取并且也分析出风险点出来,下面我们来利用这些风险点
首先开始看了小视频,这个是这个漏洞利用很好的案例:
这个是怎样实现的?我们先看智能门锁的破解过程,大家仔细看第三个攻击方式:
攻击方式1、覆盖密钥从上面的分析可以看到密钥是APP写入设备的,那么我们可以把设备重置掉,然后写个key进去,然后就能用电脑模拟 app控制设备了。
步骤为:
1. 首先访问handle:0x0013触发初始化
2. 向0x000c写入设备号及24个密钥信息
3. 访问0x0013获取此次认证的挑战码
4. 使用python程序计算认证码
5. 向0x000c写入认证码,完成配对
6. 向0x000c写入操作行为,操作门锁
具体操作如下
首先先连接上设备:
然后写入随机数字:
此时写入密钥成功
配对过程:
此时设备端提示:
此时已经完成了认证过程,然后就可以写数据进入了:
设备端提示:
此时完成了对整个设备的控制。
2、万能密码步骤和一类似,只是不需要覆盖密钥信息了,直接使用4861636b6d654c6f636b4d6173746572通过认证。
3、利用中间人进行重放攻击利用嗅探工具或中间人获取到ble传输的信息,提取相应的密钥信息,后续使用该密钥进行认证进行操作,该方法不需要
重置设备
根据嗅探或中间人截获到的认证码,使用中间人进行数据的重放攻击
我们在APP上关闭锁操作:
设备端提示:
显示锁处于关闭状态,我们在btlejuice上进行开锁的重放攻击:
操作完成后可以看到设备端提示:
锁已经完成了打开操作。
利用方法分析1、数据分析
分析蓝牙数据可以更清楚的知道整个数据的逻辑流程,利用wireshark进行分析更加清楚btle协议。
ubertooth 功能很强大,但是要是自己配置运行环境比较复杂,还要有docker镜像,但是捕获数据比较麻烦,需要正确捕获到此次传输的频段。
中间人,能很好的知道数据的逻辑流程和传输数据,但是需要配置代理,需要又一个额外的系统进行支持。
2、攻击比较
覆盖密钥方法:需要初始化设备,需要搞清楚整个认证流程,自己写AES加密算法。
中间人攻击:不需要自己去计算认证码,直接重放数据即可,但是配置比较麻烦。
附录 AES加密代码:至此这个智能门锁,攻击者可以使用电脑打开,这里面将BLE协议转换成tcp传输还是挺有意思的,这个中间人工具就是,这样加大了BLE协议的传播距离。
我们来分析下文章开始时候的案例:钥匙是放在车库里面,这个钥匙用的是BLE协议,信号只有几米的距离,盗贼通过中间人,将BLE的信号通过TCP协议加大距离,另一个同伙再通过协议转化把TCP协议转化成BLE打开了汽车