欢迎进入UG环球官网(环球UG)!

filecoin fla(www.ipfs8.vip):【胖猴小玩闹】智能门锁与网关:云丁鹿客智能门锁BLE通讯的剖析(下)

admin3个月前72

1. 简介

上一篇文章中我们通过SWD接口提取出了门锁固件,并使用IDA顺遂加载了固件,本篇将继续对固件举行剖析,研究门锁若那边理手机通过BLE下发BleKey的通讯数据。

书接上文,我们模拟果加门锁固件的处置方式,对鹿客门锁的固件举行剖析之后,IDA 的导航条如下图所示

图1-1 IDA直接剖析固件后的导航条

上图中可以看到,现在固件只有最先的一小部门被剖析成代码了,其他绝大部门固件数据都是unexplored状态。浏览固件中的字符串,可以发现如下图所示的内容:

图1-2 固件中的部门字符串

连系被顺遂剖析的代码片断,我们可以推测现在此部门代码仅仅是bootloader,后续的主程序可能使用了FreeRTOS系统(一种开源的实时操作系统,https://www.freertos.org/)。

针对当前的情形,我们可以选择直接“莽”,即由bootloader最先剖析,一直剖析到BLE的处置流程,然则由于门锁固件使用了FreeRTOS操作系统,这个剖析思绪实现起来会更穷苦一点。这里可以选择一种更直接的研究方式:既然门锁电路板上已经提供了SWD引脚,这里我们就看看能不能“投契取巧”一下,直接通过SWD调试,快速定位到固件的要害位置。关于bootloader和FreeRTOS,后续会以一篇番外的形式来分享其剖析方式。

2. SEGGER JLink的调试功效

在举行调试之前,先简朴先容一下若何使用SEGGER JLink(下文以JLink代称)的调试功效。上一篇文章中,我们在提取固件时使用了JLink的下令行工具,这个下令行工具也包罗了诸如设置断点、暂停CPU焦点、读取/写入寄存器或指定位置的内存、单步骤试等动态调试所需要的指令,详细可以查阅SEGGER的Wiki(https://wiki.segger.com/J-Link_Commander)。可以选择openOCD配合JLink举行调试,但我们在本篇中暂不先容openOCD,而是选择另一款调试工具。

在现实调试历程中,下令行工具通常需要搭配IDA使用,用起来异常繁琐,且信息展示不够直观。SEGGER提供了一个图形界面工具——Ozone,可以在一定水平上解决以上问题, 关于Ozone的先容可以参考SEGGER的官方网站(https://www.segger.com/products/development-tools/ozone-j-link-debugger/),软件以及使用手册的下载页面也可以在这里找到。下载后的安装一起next就可以了,想必人人都很熟练(滑稽)。

安装完成后,可以通过“File->New->New Project Wizard”选项来确立新的项目,确立时需要选择待调试芯片的型号、调试接口类型、通讯速率等信息。继续,点击“Debug->Start Debug Session->Attach to Running Program”毗邻到待调试装备,注重整个调试历程中需要保持电脑、调试器和装备的接通状态,如下图所示。

图2-1 毗邻到装备

毗邻到待调试装备后,Ozone可以像IDA一样展示多个subview,这样就可以同步考察许多信息了,下图是笔者某次调试的界面。

图2-2 Ozone调试界面

如上图所示,我们在调试时可以一次性看到寄存器的数据、多个内存区域的数据以及反汇编后的代码,下方的控制台区域可以执行一些指令或预先编写好的剧本,除此之外,左上角的断点设置区域,可以看到断点除了Location以外,另有Type和Extra两个属性, 通过阅读用户手册可以确定这两个属性是用于设置断点类型的,如执行断点,读写断点、TRACE断点等,如下图所示:

图2-3 Ozone中止点的属性

Ozone还提供了许多壮大的功效,在后文中,我们用到的时刻就会逐一先容这些功效。

3. 通过SWD接口对门锁举行调试

学习了Ozone的基本使用方式,我们就来调试一下门锁固件。回首第一篇鹿客门锁的剖析文章,我们剖析了鹿客门锁与手机app之间的通讯数据,知道BLE通讯有AES加密珍爱,遐想到果加门锁的剖析文章中,我们通过TEA加密使用的常量来定位门锁的通讯处置代码,那么这里我们是不是也可以从AES加密入手呢?

3.1 固件中的AES加解密

翻阅门锁MCU的芯片手册可以看到,芯片提供了AES处置模块,该模块的内存映射如下图所示。

图3-1 EFM32中的内存映射

显然,我们假设鹿客门锁使用芯片的AES模块举行加解密操作,而不是自写AES算法,那么一定需要接见0x400E0000~0x400E0400这片区域中的内存地址,那么我们只要在设置适当的读写断点,然后守候手机与门锁举行通讯时触发断点就可以了。

在断点设置区域右键,选择Set Data Breakpoint,会弹出如下图所示的窗口, 

,

USDT线上交易

U交所(www.9cx.net)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。

,

图3-2 设置数据端点

上图中的设置,示意当CPU向0x400E00XX地址写入数据时触发断点。

断点设置完成之后,在手机上点击开锁,由于我们设置的数据断点是监控一片内存区域,以是开锁历程中会多次被触发,后可以看到如下图左侧的一小段代码,右侧是执行到0xED0C地址时的寄存器数据。

图3-3 写入待解密数据的断点

上图中,0x400E001C地址(R0 + 28)是AES_DATA寄存器,这一小段代码所处的函数向AES_DATA寄存器写数据,应该就是AES的处置函数(下文以AESFunc代称)。回溯挪用栈,可以找到挪用AESFunc的外层函数,以及AESFunc函数的起始地址,进而使用IDA的F5功效对AESFunc函数举行剖析,如下图:

图3-4 AESFunc函数的伪代码

连系芯片手册,由伪代码很容易能判断出AESFunc各个参数的作用,在本系列第一篇文章中,我们已经知道了开锁时的解密密钥就是BleKey,而门锁BleKey的获取历程,是由服务器下发一组数据totalData至手机app,app没有举行任那边理,直接通过BLE通讯转发给了门锁。那么,接下来看一看门锁是若那边理totalData的。

3.2 门锁获取BleKey的历程

首先我们需要看一下,totalData的内容是什么,如下图所示:

图3-5 totalData字段及其base64解码数据

可以看到totalData是一串二进制数据经由base64编码后的效果,红框之前的部门可以视作数据的header,包罗新闻头、数据包序号、校验等内容, header之后的body部门,即红、蓝、黑框中的数据,这三组数据的结构是相同的,如下图所示:

图3-6 totalData中payload用到的数据结构

红框中data_type为0x03的数据,其data_content=0x5FFFECAE,该部门与AES根密钥密文有关。totalData的body部门另有两组数据,其详细作用不再详细说明,说太多有些不妥。

接着,我们在AESFunc的入口下一个断点,可以看到BleKey的值如下图所示:

图3-7 内存中的BleKey

从图3-5和图3-7中看不到BleKey和totalData之间的联系,想必二者之间照样经由了某些解密或解码转换,我们需要继续寻找门锁对totalData的处置历程。保持AESFunc函数的断点,在调试历程中可以发现totalData也是经由 AESFunc函数举行解密的。此时,回溯挪用栈即可找到如下图所示的要害代码。

图3-8 totalData数据的处置

上图中的AESEntry函数为AESFunc的封装,这部门就是由totalData天生BleKey的焦点代码,该流程可以整理为下图。

图3-10 BleKey获取流程图

在这个流程中,若是没有根密钥就无法解密获得BleKey,通过调试可以找到根密钥在Flash中的存储地址是0x7E09C。

4. 总结

鹿客门锁的系列文章就先到这里,其他的功效逻辑剖析就不再做过多讨论,感兴趣的读者可以自行探索。在关于鹿客的第一篇文章中,我们通过逆向手机app知道了门锁蓝牙功效的通讯数据有AES加密珍爱;第二篇文章分享了若何使用SWD接口提取固件;本篇文章进一步通过对门锁固件的调试,来剖析门锁获取BleKey的历程。在下一篇番外中,我们会先容关于鹿客门锁的其他剖析技巧,但不会再更多的讨论鹿客门锁的运行逻辑了,感兴趣的同砚请多多关注我们的后续文章。最后,希望人人都能有所收获。

Light & Yimi Hu @ PwnMonkeyLabs

本文为 胖猴实验室 原创稿件,授权嘶吼独家宣布,

Max pool

Max pool网(www.ipfs8.vip)是FiLecoin致力服务于使用FiLecoin存储和检索数据的官方权威平台。IPFS网实时更新FiLecoin(FIL)行情、当前FiLecoin(FIL)矿池、FiLecoin(FIL)收益数据、各类FiLecoin(FIL)矿机出售信息。并开放FiLecoin(FIL)交易所、IPFS云矿机、IPFS矿机出售、租用、招商等业务。

上一篇 下一篇

猜你喜欢

网友评论

  • 2021-07-02 00:01:09

    欢迎进入Allbet手机版下载(www.aLLbetgame.us),欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。我要画CP了

随机文章
热门文章
热评文章
热门标签