Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >看大佬如何破解智能门锁

看大佬如何破解智能门锁

作者头像
物联网安全小编
发布于 2020-05-29 07:15:36
发布于 2020-05-29 07:15:36
2.6K0
举报
文章被收录于专栏:物联网IOT安全物联网IOT安全

1

简介

上一篇文章的分析中,我们发现Yale智能门锁的通信中存在两个问题,本篇文章将分为两个部分描述如何利用这两个问题:

a. 嗅探BLE通信获取productInfo;

b. 使用获取的productInfo控制门锁。

2

嗅探BLE通信,获取productInfo

Yale门锁的BLE通信没有加密,所以我们通过嗅探的方式可以直接获取Authentication Request和Authentication Response,利用这两个数据包的Payload做减法运算即可得到productInfo。

2.1 嗅探通信

嗅探BLE通信需要有专用的硬件工具,我们使用的是CC2540 Dongle,配合TI的Packet Sniffer软件,如图2-1所示。

图2-1 CC2540 Dongle+Packet Sniffer软件

Dongle直接接到电脑的USB接口即可使用,Packet Sniffer软件可以对Dongle进行配置,并显示嗅探到的BLE消息。

我们在第一篇文章中介绍过,Master在Scanner状态下,会不断扫描并接收Slave在Advertiser状态下发出的广播包,广播包的发送和接收都是在3个广播信道上进行的,Master想要与某个扫描到的Slave建立连接时会进入Initiator状态并向Slave发起连接请求,双方建立连接后会在37个通信信道上以一定的规律进行调频通信。

由于连接建立后,双方以跳频的方式进行通信,因此我们只能在Master和Slave建立连接时,也就是Master在Initiator状态下发出CONNCET_REQ数据包时,就开始跟踪双方的通信,才有可能嗅探到所有通信内容。

因此,Dongle的工作原理如图2-2所示,整个嗅探流程可以分为三个步骤:

a. 启动完成后,Dongle工作在某一个广播信道上,会嗅探所有该信道上的广播包;

b. 当探测到CONNECT_REQ数据包时,说明该信道上有Master和Slave准备建立连接,此时Dongle会解析CONNECT_REQ数据包的内容,获取主从设备的信息及双方第一次跳频通信的通信信道;

c. 此后,Dongle只会过滤步骤b中主从设备之间的通信,并跟随双方的跳频,这样双方所有的通信都被嗅探到了。

图2-2 Dongle工作原理示意图

一个Dongle只能监听一个广播信道的通信,而通信双方可能会在3个广播信道中随机挑选一个建立通信,因此如果只有一个Dongle时,可能需要多次尝试才能获得需要的数据,有多个Dongle时则可以分别将它们配置为监听不同的广播信道,选择Dongle并配置监听信道的方式如图2-3所示。

图2-3 选择并配置Dongle

介绍完嗅探工具,我们就可以尝试嗅探通信了。

嗅探的操作非常简单,配置好Dongle后,点击Packet Sniffer中的开始嗅探按钮,就可以看到Dongle接收到的所有广播包,如图2-4所示。

图2-4 嗅探到的广播包

开始嗅探后,我们在Dongle附近尝试在app里连接门锁,如果手机和门锁恰好是在Dongle监听的广播信道上建立连接,那么就可以抓到后续手机和门锁之间所有的BLE通信,如图2-5所示。

图2-5 手机与门锁建立通信

图2-5中,黄色数据包之后,手机和门锁就已经开始跳频通信了,可以看到Channel字段每次通信都会变化,而建立通信前的最后一个广播包的类型就是CONNECT_REQ,Dongle是通过这个数据包来跟踪双方随后的跳频通信的。

正如上文所提到的,Dongle一次只能监听一个广播信道,所以我们可能需要多次重复才能嗅探到手机和门锁的通信。

2.2 数据包分析

嗅探到通信之后,我们只要找到Authentication Request和Authentication Response即可,要定位这两个数据包,则需要知道数据包的特征和结构。

回想上一篇文章,在生成Payload并发送Authentication Response之前,调用过一个makeACKFrame的函数,从函数名看,这个函数的作用是将Payload封装成ACK Frame,我们就从这里着手分析。

首先我们看一下调用makeACKFrame的地方,如图2-6所示。

图2-6 函数调用处

调用makeACKFrame函数时传入了4个参数,其中v2、v3分别是已经初始化好的变量,所以Authentication Response中应该有两个固定内容的字节,v4显然是个累加的计数器,最后一个参数arg7,我们上一篇文章中就提到了,这个参数是encodeCounter函数的返回值,也就是Authentication Response的Payload。

我们在上一篇文章中获取到的日志,如图2-7,send 72ACK的内容,起始字节是0x72和0xA1,而图2-6中,参数v2和v3分别包含了HexString(72)和HexString(A1)。所以,我们可以推断Authentication Reponse起始字节是固定的0x72A1,这一点可以作为数据包的特征。帮助我们在嗅探到的通信中寻找Authentication Response。

图2-7 app的日志

makeACKFrame的结果在v1中,打印Log时调用了v1.toString(),这个函数如图2-8所示。

图2-8 FrameModel类的toString函数

在toString函数中我们能直观的看出Authentication Response的数据包结构:

a. 开始的两个字节是event和source;

b. 第3个字节表示数据包的序号,第4个字节则是长度,我们暂时还不清楚这是数据包的长度还是Payload的长度;

c. 第5字节开始是数据包的Payload;

d. 最后一个字节是校验,校验算法暂时未知。

通过数据包的特征,我们在嗅探到的通信中定位到图2-9了这样一组数据包。

图2-9 嗅探到的BLE通信

根据起始字节是0x72A1这一特征,第二个数据包应该就是Authentication Response,那么第一个数据包应该是Authentication Request,Response数据包的结构分析如图2-10。

图2-10 数据包结构

按照类似的方式取出Request数据包的Payload,按照上一篇文章的分析,只需要将Response的Request两个数据包的Payload做差即可得到这个门锁的productInfo,做差过程如图2-11。

图2-11 计算productInfo

我们在已绑定了门锁的手机中查看app的数据库,其中显示了已绑定门锁的productInfo,如图2-12所示。

图2-12 数据库中的productInfo

对比图2-11我们计算出来的结果,和2-12中数据库里的product_info字段数值,二者前6字节是相同的,上一篇分析中在分析productInfo变量的使用时,其中也只有6个字节参与了计算,所以我们推测后两个字节是无效字节,下一章的操作中可以看到,这两个字节置0也能够开启门锁。

3

使用计算得到的productInfo开启门锁

前文提到app数据库中有product_info字段,而app在构造Authentication Response时直接使用了这个字段的数值,那么如果我们在未绑定门锁的手机上,跳过门锁绑定步骤,直接将门锁的相关信息写入到app的数据库中会出现什么情况呢?接下来我们对这种情况进行实验。

修改数据库最方便的办法就是,通过ADB将app中的数据库(位于/data/data/com.irevo.blepack/databases目录下)拉取到电脑上,在电脑上修改完成后再推送回app。

要操作/data目录下指定app的文件,需要我们拥有root权限或者使用run-as指令,在未root的手机中,执行run-as + 包名,就可以直接以root权限进入该应用的沙盒中查看数据库、xml、各种信息文件等内容。使用run-as指令,需要指定的应用处于允许debug的模式,所以我们在上一篇文章中添加Log代码时,也在AndroidManifest.xml文件中添加了Android:debuggable = true的标签。

在未绑定门锁的手机中,数据库应该是空的。空数据库的填写方式如图3-1所示。除了product_info外,还有一个module_addr字段需要注意,这个字段应该填写门锁的蓝牙地址,这个地址可以在门锁附近,使用nRF Connect扫描周围设备获取。

图3-1 app数据库填写方式

数据库填写完成后,使用ADB指令推送回手机,即可使用该手机控制门锁了。如图3-2所示,手机最初并没有绑定门锁,在我们将数据库推送进手机后,重启app,会发现手机开始尝试与门锁建立连接,稍等片刻连接建立之后,就可以直接用这个手机打开门锁了。

图3-2 用未绑定门锁的手机打开门锁

4

总结

我们用了两篇文章记录了Yale门锁的漏洞分析及利用过程。

首先我们从Yale Bluetooth Key这款app的Log着手,定位到了app中的关键代码,随后通过对关键代码的分析,发现了门锁与手机之间的身份认证环节存在漏洞,最终通过嗅探门锁与手机之间的BLE通信,我们利用身份认证的漏洞在未绑定门锁的手机上打开了门锁。

这次对智能门锁的安全测试仍然是从BLE入手的,重点分析的是手机端的app。而智能门锁的开锁方式不只有蓝牙这一种,之后我们会和大家分享更多的内容,大家如果有想要讨论或者分享的事情,欢迎在公众号后台留言,或发邮件到pwn@pwnmonkey.org。

作者:Light & Yimi Hu @ PwnMonkeyLabs

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 物联网IOT安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
对BLE智能手环的测试
在2019年的某个月份,笔者的朋友给笔者送来了一个手环,让笔者搞一搞。详细询问之后,笔者理清了具体情况:这个手环会收集佩戴者的步数并上报给公司,公司认为步数不够的员工显然是没有业绩的。好一个奇怪判断依据。
物联网安全小编
2020/05/21
1.8K0
深入浅出低功耗蓝牙(BLE)协议栈
一般而言,我们把某个协议的实现代码称为协议栈(protocol stack),BLE协议栈就是实现低功耗蓝牙协议的代码,理解和掌握BLE协议是实现BLE协议栈的前提。在深入BLE协议栈各个组成部分之前,我们先看一下BLE协议栈整体架构。
FB客服
2020/12/08
5.1K1
深入浅出低功耗蓝牙(BLE)协议栈
BLE空口抓包方案对比
本文根据实际使用经验,介绍了每种抓包方案的环境配置与抓包方法,对比分析目前几种 BLE 的空口抓包方案(只讨论普通人用得起的,ellisys 这类神器摸都没摸过 Orz)
yichen
2022/11/11
2.7K0
BLE空口抓包方案对比
黑客撩妹新招get!如何利用MouseJack入侵女神的鼠标
0x00 前言 近期安全公司Bastille Networks(巴士底狱)安全研究员发现大多数无线鼠标和接收器之间的通信信号是不加密的。黑客可对一两百米范围内存在漏洞的无线键鼠进行嗅探甚至劫持,从而控制受害者电脑,向计算机中输入任何指令! 在本文中我们将演示如何利用mouseJack控制别人的鼠标。 漏洞盒子安全研究员演示视频 0x01 环境搭建 刚开始选设备的时候在淘宝买了一块nRF24LU1 2.4GHz无线数传模块 和 2.4GHz nRF24LU1+PA+LAN 无线数传模块
FB客服
2018/02/07
2.1K0
黑客撩妹新招get!如何利用MouseJack入侵女神的鼠标
BLE (低功耗蓝牙)协议入门-01-整体介绍
本章介绍蓝牙协议(重点介绍:BLE)的基本特点、版本演进、协议的构成、等基础知识,本章重在了解,目的是对BLE协议有个大概的认知,即了解BLE协议栈的全貌。后续的章节会对每一部分单独进行详细的讲解。
九筒网络安全研究社
2023/10/10
5.5K0
BLE (低功耗蓝牙)协议入门-01-整体介绍
对某款智能手表的分析与攻击
功能上看起来只是个加大表盘版本的手环... 而且我打字习惯性的打出手环来,所以后面就不纠结这个叫法了,可能混着用哈哈哈;不过表带挺软的,摸起来很舒服,带起来也很轻
yichen
2024/10/08
1940
对某款智能手表的分析与攻击
GNURadio+USRP+OFDM实现文件传输
使用 GNU Radio Companion 驱动 USRP N320 实现 OFDM 自收自发测试。(Ubuntu20.04LTS + GNURadio 3.8 + UHD 3.15)
Gnep@97
2024/03/08
1.2K0
GNURadio+USRP+OFDM实现文件传输
【三】Bluetooth 技术||链路层七种状态与空口报文设计(Core_v5.2)
广播通信中发出广播报文的一方称为Advertiser,接收广播报文的一方称为Scanner,连接通信中发起连接的一方称为Mater,接受连接的一方称为Slave,这些设备角色并不是固定的,一个蓝牙设备可以根据需要在多个角色之间切换,也可以同时身兼多个角色。为了方便管理蓝牙设备的角色,在链路层使用状态机来标识蓝牙设备当前的状态,蓝牙设备角色的切换也就相当于状态机中状态的迁移,Bluetooth 5.2 链路层状态机如下:
空白的贝塔
2021/09/08
2.4K0
【三】Bluetooth 技术||链路层七种状态与空口报文设计(Core_v5.2)
【图解】物联网设备的N种Wi-Fi配网方式
物联网时代,各种各样的智能物联网设备正走进我们我们的生活,智能门锁、摄像头、猫眼门铃、扫地机、智能音箱、空气净化器、体脂秤等等。
xxpcb
2021/09/29
2.4K0
BLE的两种广播方式:扩展广播和周期性广播
蓝牙低功耗(BLE)是一种无线通信协议,设计用于短距离通信。它的主要优点是低功耗,使其成为各种电池供电设备的理想选择。在BLE中,广播是一种重要的通信方式,它允许设备在不建立连接的情况下传输信息。本文将详细介绍BLE的两种广播方式:扩展广播和周期性广播。
网络技术联盟站
2025/01/09
2930
BLE的两种广播方式:扩展广播和周期性广播
【二】Bluetooth 技术||协议栈架构与物理层设计 (Core_v5.2)
前篇博文Bluetooth 协议栈设计与演进[1]已经分别介绍了蓝牙协议的四大应用场景及对应的技术解决方案,为满足物联网设备的需求,蓝牙协议新增了室内精准定位技术、基于MESH 的大规模自组网技术和基于6LoWPAN 的IPv6 组网技术,逐渐在物联网无线技术中占稳短距离低速率无线通信的生态位,未来前景可期。
空白的贝塔
2021/09/08
2.5K0
【二】Bluetooth 技术||协议栈架构与物理层设计 (Core_v5.2)
Sniffle: 蓝牙5和4.x LE嗅探器
Sniffle是一个基于使用TI CC1352/CC26x2硬件的蓝牙5和4.x LE嗅探器。
FB客服
2019/11/28
1.8K0
开源BTS产品中存在多处漏洞,攻击者或可劫持手机通讯基站
前言 在过去的几周时间里,我从多个方面对GSM的安全性进行了调查和研究,例如GSM通信协议中存在的漏洞。除此之外,我还对目前世界上应用最为广泛的BTS软件进行了安全审计。在这篇文章中,我将会给大家介绍一下我在这款开源产品中所发现的多个漏洞,这些漏洞将允许攻击者入侵基站收发信台(BTS),并远程控制它的信号收发模块。 背景知识 一个基站收发信台(BTS)是由软件和无线电设备组成的,它是智能手机连接GSM、UMTS、以及LTE网络时必不可少的关键组件。BTS主要分为基带单元、载频单元和控制单元三部分。基带单
FB客服
2018/02/08
1.1K0
开源BTS产品中存在多处漏洞,攻击者或可劫持手机通讯基站
蓝牙安全与攻击案例分析
本文是 2020 年中旬对于蓝牙技术栈安全研究的笔记,主要针对传统蓝牙和低功耗蓝牙在协议层和软件安全性上攻击面分析,并介绍了一些影响较大的蓝牙漏洞原理,比如协议层的 KNOB、BIAS 漏洞,软件实现上的 BlueBorne、SweynTooth 以及 BlueFrag 漏洞等。
evilpan
2023/02/12
2.5K0
蓝牙安全与攻击案例分析
Python黑帽编程 4.1 Sniffer(嗅探器)之数据捕获(上)
Python黑帽编程 4.1 Sniffer(嗅探器)之数据捕获(上) 网络嗅探,是监听流经本机网卡数据包的一种技术,嗅探器就是利用这种技术进行数据捕获和分析的软件。 编写嗅探器,捕获数据是前置功能,
用户1631416
2018/04/12
3.5K0
Python黑帽编程 4.1 Sniffer(嗅探器)之数据捕获(上)
低功耗蓝牙(BLE)攻击分析
蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。可以说蓝牙是当今世界上,最受欢迎和使用最为广泛的无线技术之一。随着物联网的快速发展,蓝牙技术也加速了其发展步伐以适应不断增长的市场和用户需求。蓝牙特别兴趣小组(SIG)正不断努力提高蓝牙的传输速度,以让蓝牙技术更好的融合于各种物联网设备当中。
FB客服
2018/12/11
5.1K0
低功耗蓝牙(BLE)攻击分析
【物联网】WiFi基础知识
目前有线网络中最著名的是以太网(Ethenet),但是无线网络WLAN是一个很有前景的发展领域,虽然可能不会完全取代以太网,但是它正拥有越来越多的用户,无线网络中最有前景的是Wifi。本文介绍无线网络相关内容。
杨源鑫
2020/05/21
1.4K0
【蓝牙系列】蓝牙5.4到底更新了什么(1)--- PAwR
蓝牙技术联盟最近发布了蓝牙5.4的核心规范,蓝牙5.4规范的主要改进之一就是实现了单个接入点与数千个终端节点进行双向无连接通信, 这一特性主要是针对电子货架标签(Electronic Shelf Label,ESL)市场。
物联网布道师
2023/03/08
10.4K0
【蓝牙系列】蓝牙5.4到底更新了什么(1)---  PAwR
蓝牙数据报文解析
数据传输时,蓝牙模块分主机和从机两种模式。主机模式能够搜索别的蓝牙模块并且主动与之建立连接。从机模式不能主动的建立连接,从机处于广播状态等待主机连接请求。
Linux兵工厂
2023/02/28
2.6K0
蓝牙数据报文解析
智慧城市安全体系实例——智能门锁安全吗?
当前,智慧城市建设成为全球热点,据国际会计师事务所德勤发布《超级智能城市》管理咨询报告显示,当前全球已启动或在建的智慧城市数量超过1000个,中国以 500 个试点城市居于首位,成为了全球最大的智慧城市实施国。
FB客服
2018/12/28
1K0
相关推荐
对BLE智能手环的测试
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档