首页
社区
课程
招聘
对某款智能手表的分析与攻击
发表于: 5天前 3768

对某款智能手表的分析与攻击

5天前
3768


之前写过一篇手环的文章:[原创]一个BLE智能手环的分析,国庆放假又翻出来之前买的一块手表,看了看写了篇文章


虽然他叫手表,但是功能上看起来只是个加大表盘版本的手环... 而且我打字习惯性的打出手环来,所以后面就不纠结这个叫法了,可能混着用哈哈哈;不过表带挺软的,摸起来很舒服,带起来也很轻(直播带货hhh)


该有的功能都有,不过我主要关注两个,一是能不能让手环震动(查找设备)另一个是能不能显示任意消息(消息通知)


先来简单抓个包看看吧,这里我用 NCC Group 开源的 Sniffle 这个项目,可以用 python 来操作,可自定义程度比较高,而且价格也算实惠,还能拿来做 BLE 链路层中继。BLE 的空口抓包后面可以再写一篇文章,测评一下不同的方案


对于 BLE 抓包有不熟悉的小伙伴,这里再以手机和手表为例,介绍一下为什么能够抓到 BLE 的空口数据,首先要明确一点,BLE 的通信是跳频的,也就是说如果你的设备只能抓取一个信道的数据,那你百分百是抓不全的,那上面那些方案是咋实现空口抓包的呢,这就需要从 BLE 的连接机制讲了


手机能扫描到手表是因为手表正在往外发送 BLE 广播包,手机扫描到广播包知道手表的存在,与手表建立连接时双方会沟通一系列参数来确定后续的 BLE 跳频通信信道(如下图中的 Channel Selection Algorithm 信道选择算法、Channel Map 可用信道、Hop 跳频参数),只要抓包设备能够捕获到这个包,就可以提取通信双方约定的一系列参数,也跟着它们同步跳频


而 "众所周知",BLE 的广播信道也是在 37、38、39 这三个信道跳频的,你抓包工具怎么就能保证抓到手机连接手表的数据包呢?那就需要抓包设备可以同时抓取三个广播信道进行监听了,有些 BLE 抓包设备你往虚拟机里面插的时候会发现要连接三次,可能就是因为它内置了三颗芯片,来确保能够同时捕获三个广播信道中的连接包,从而同步跳频


那么既然想要跟着手表同步跳频,就需要能够抓到手机与手表建立连接的包,因此抓包之前要确保手机已经和手表断开连接,抓包后再进行连接


然后抓包的时候可以指定 MAC 地址进行过滤,手环的 MAC 地址可以通过手环中的关于选项看到,也可以通过扫描得到:21:23:10:21:05:43



直接使用 Sniffle 提供的 python_cli,-m 参数过滤 MAC 地址,-o 参数将捕获到的流量保存为 pcapng 文件


开始抓包后就可以用手机正常连接手表,然后操作对应的功能了,这时候要考虑好,想通过抓这次包来分析什么,别上来一通乱点,最后看着满屏的数据包不知道啥是啥,带着目的去抓,比如我想分析手环震动的数据包(查找设备)那这次抓包我就只点查找设备这一个功能,多点几次,这样在流量包里面好定位哪一条数据包是该功能的 BLE 流量


这里还要吐槽一点感觉在很多 BLE 的设备上并没有很好的区分出来 BLE 的连接、配对的概念,在我的理解中,配对是要走 SMP 协议的,是要进行链路层加密的,但是这个手环的配对显然仅仅是做了一个 BLE 的连接,更像是他自己在应用层进行的手机与手表的牵手配对


在捕获到的流量包中过滤掉呼吸包,选中 Empty PDU 的数据包,右键作为过滤器应用 -> 非选中


我这次等待所有信息加载完后,按了三次查找设备,应该就是这三次了


不用考虑太多,直接展开具体的数据包,可以看到有对应的 Value 和对应的 UUID,直接连接发送一下试试,经过尝试确认这两次就是查找设备和找到设备后点击确定从而停止查找的 BLE 指令,而且因为是个手表的缘故,除了震动还附带声音,效果不错


同样的,可以开启消息通知之后抓一下收到消息的 BLE 指令,然后重放也是有效的,但是怎么发送自定义消息呢,比如我用 test 账户发了个 6,可以看到直接明文传输的

复制这段指令出来 da380e00180a010f063004010a74657374369cc2 ,直接重放也是有效的,但是重放也太没用了,能不能修改内容呢


根据 ASCII 直接解析后的内容修改十六进制值,例如 test 对应了 74657374,修改为 tesA,即 74657341,整个数据就是:da380e00180a010f063004010a74657341369cc2,发过去并没有响应,说明他对数据做了校验,我不认为你能靠多次抓包分析出来校验格式,那么接下来逆向 APP 吧


APP 没加固啥的,值得表扬,直接丢到 jadx 里面看一下,一开始搜索了一下 wechat,发现有个位置是 bluetoothsdk 且是 MessageType 可以说跟蓝牙消息通知十分关联了

收藏
免费 14
支持
分享
最新回复 (4)
雪    币: 413
活跃值: (597)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
感谢分享,分析细致!
4天前
0
雪    币: 334
活跃值: (2563)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
还挺有趣的, 谢谢分享哦.
3天前
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
w2w
4
NB plus
2天前
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
学到了
1天前
0
游客
登录 | 注册 方可回帖
返回
//