😇
牛牛的安全 Odin
  • 个人介绍
  • 数据安全
  • 工控安全
    • 工控概念
  • 车联网安全合规
    • R155
    • CSMS\VTA
    • GDPR认证
  • 车联网安全
    • 漏洞订阅
    • 汽车攻击时间轴
    • 汽车信息安全研究
      • 车厂安全需求 Custom Requirement
      • 安全威胁
      • 参考文章
      • Who’s Behind the Wheel?
      • 安全研究基础
      • 智能网联汽车安全渗透指标
      • 智能网联汽车软件安全测试关键技术研究
      • 基于硬件在环的整车控制器功能安全测试技术研究
      • 智能网联汽车信息安全解决方案
      • 自动驾驶汽车的安全性-识别挑战
    • ECU逆向案例
      • 特斯拉攻击链
      • 汽车动力系统ECU固件逆向工程初探
  • 物联网安全
    • IoT 技术和协议
    • 智能设备常规测试思路总结
    • 各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别
    • QEMU 系统仿真
      • 如何“用 QEMU 模拟它”
      • 处理加密的路由器固件
    • 自动分析Automated Approach
    • IOT渗透测试(一)
    • 物联网安全目录
  • 固件分析案例
    • 智能门锁、手环
      • MCU固件反汇编
      • 云丁鹿客门锁中bootloader和FreeRTOS的分析
      • 云丁鹿客门锁BLE通信的分析(下)
      • 云丁鹿客门锁BLE通信的分析(中)
      • 云丁鹿客门锁BLE通信的分析(上)
      • 华为智联旗下小豚AI摄像头的完整分析(下)
      • 华为智联旗下小豚AI摄像头的完整分析(上)
      • 海康萤石智能门锁的网关分析(4)
      • 海康萤石智能门锁的网关分析(3)
      • 海康萤石智能门锁的网关分析(2)
      • 海康萤石智能门锁的网关分析(1)
      • idapython编写和调试
      • 果加智能门锁的全面分析(下)
      • 果加智能门锁的全面分析(中)
      • 果加智能门锁的全面分析(上)
      • BLE智能手环
      • 耶鲁智能门锁的简单测试(下)
      • 耶鲁智能门锁的简单测试(上)
      • 耶鲁门锁漏洞
      • 对一款BLE灯泡的分析
      • BLE协议栈与Android BLE接口简介
    • 在IoT设备中查找端口对应进程的四种方法
    • 路由器命令执行
    • 对基于Philips TriMedia CPU的网络摄像机进行逆向工程
    • 从Microsoft Band以及 Hello Sense 设备中提取自己的历史数据
    • CVE-2021-22909- 深入研究 UBIQUITI 固件更新错误
    • 复现|摄像头固件重打包
    • Dlink_DWR-932B路由器固件分析
    • 针对小米九号平衡车的无接触式攻击
    • 记一次智能印章设备的漏洞挖掘
  • APP 逆向
    • Go二进制文件逆向分析从基础到进阶——综述
    • Switch APP逆向分析
  • 传统静态代码分析
    • 静态分析案例
      • ELF恶意软件的静态分析原理和方法(上)
      • ELF恶意软件的静态分析原理和方法(下)
    • 静态代码分析工具清单
    • 企业级静态代码分析工具清单
  • 应用安全测试
    • DAST、SAST、IAST
    • IAST 工具初探
  • 芯片架构
    • ARM指令集概念
    • ARM指令集
    • 冯·诺伊曼结构
    • 指令集
    • 处理器架构、指令集和汇编语言,三者有何关系?
  • 病毒分析
    • 熊猫烧香
  • 编程知识
    • REST API 教程
  • 流量分析工具
    • 卡巴斯基开源的智能手机流量劫持工具
    • 利用 Burp Suite 劫持 Android App 的流量(二)
    • 利用 Burp Suite 劫持 Android App 的流量(一)
  • 区块链安全
    • 安全多方计算
    • Chainalysis 团队从区块链的角度分析发现 2020 年最大的 4 起勒索软件攻击实现存在关联
  • 攻击案例
    • 特斯拉Powerwall网关可能受到黑客攻击
  • 移动应用
    • Mac上使用Charles抓包
    • 手机抓包工具汇总
    • APP渗透测试流程和技巧大全
    • 加壳和脱壳
    • 浅谈 Android Dex 文件
    • 移动应用漏洞分析样例分享
    • 移动应用常见漏洞分析
    • 移动应用漏洞分析工具介绍
    • 渗透测试流程详解 及 移动APP安全测试要点
    • Frida Android hook
  • 安全设计
    • 【软件安全设计】安全开发生命周期(SDL)
Powered by GitBook
On this page
  • 简介
  • 网关分析
  • 2.1 通信分析
  • 2.2 电路分析
  • 2.3 固件内容分析
  • 2.4 UART接口分析
  • 小结
  1. 固件分析案例
  2. 智能门锁、手环

海康萤石智能门锁的网关分析(1)

Previous海康萤石智能门锁的网关分析(2)Nextidapython编写和调试

Last updated 3 years ago

简介

在本篇和接下来的篇章中分析海康萤石品牌的智能门锁。通过google和github等可以找到很多分析记录和分析工具。萤石是海康威视的一个子品牌,相比于海康威视,萤石的绝大部分产品侧重于家用领域,本文将要分析的智能门锁和网关也是萤石的产品。在本专题的前几篇文章中,我们都在分析门锁和相关的app,这篇我们打算对门锁配套的网关进行一些分析。刚刚看了看萤石的网上商城,最新的联网门锁已经没有外置网关了,我们在2019年分析的智能门锁还是有外置网关的款式,图片如下:

门锁和网关在拿到手之后,就已经是配对状态,我们不需要进行额外的配对操作。海康萤石智能门锁有一个配套使用的app,该app对服务端有证书校验,所以直接抓包是行不通的,由于我们这里是网关分析,所以就不讨论app的工作了,在本专题的后续文章中,还会遇到类似的问题,到那时我们在解决app的事。

网关分析

2.1 通信分析

按照正常思路,肯定是先抓包看一下网关与服务器的通信内容,参考我们在本专题第6篇中的部署方法,通过交换机端口监控的方法抓取海康萤石网关的通信内容,如下图:

通过上图中的通信内容,我们大体上可以分析出一些内容:

A. 网关上电之后,与litedev.ys7.com进行通信。

B. 与litedev.ys7.com通信中,获取了另一个ip,即101.71.30.172。此后,终止了与litedev.ys7.com通信,并一直保持与101.71.30.172的tcp连接。

C. 通信内容看起来是加密的,通信内容中没有很多直接可见的明文。 既然如此,那么就要看看海康萤石网关里面的程序了,研究研究网关固件是如何处理这些通信数据的。

2.2 电路分析

首先我们需要获取海康萤石网关的固件,这次并没有像之前的果加智能门锁那样顺利:萤石配套的app不能获取固件的下载地址,在海康和萤石的官网仔细翻找,同样没有查到固件的下载地址。那我们只好直接提取Flash中的数据了。首先拆开门锁网关,看看里面用了什么芯片,留了什么接口,截图如下:

上图可以看到该芯片并没有内置Flash,而是使用SPI通信的外置Flash。那么,就继续看看电路板上的其他芯片。

在图2-2中,MCU的上方是Winbond W9751G6KB芯片,该芯片是DDR2 SDRAM存储器,简单说就是断电丢数据的内存,固件程序不可能在里面。在MCU的下方有两个芯片,分别是PCM5100A和GD25Q127CSIG芯片, PCM5100A是个音频立体声DAC芯片,而GD25Q127CSIG芯片则是128M-bit的Flash芯片,我们要提取的固件文件应该就是在此Flash中。

要读取Flash芯片,一个简单的方法是直接用烧录夹提取,其优点是不用将芯片焊下来。不巧的是,烧录夹有点粗,海康萤石的门锁网关设计的很紧凑,我们的夹子夹不上去。如此一来,只好将芯片取下来,用热风枪和镊子就可以把Flash吹下来了,如下图所示:

如果没有热风枪,用电烙铁也是可以的,注意手别抖就好。然后将摘下来的芯片放在编程器上,如下图:

然后使用编程器的配套软件,通常情况下软件是可以自动识别出Flash品牌和型号的,但有时也需要我们手动选择。在GD官网查到该Flash的详细参数,网址如下:https://www.gigadevice.com/zh-hans/flash-memory/gd25q127c/,截图如下:

上图中,可以看到Flash大小为128Mb,即16MB,完成Flash芯片的配置工作之后,就可以读出Flash内容了,如下图所示:

读出完毕之后,即可将读出的数据保存为一个文件,我们将其命名为OriginFirmware.bin文件。由于我们买的编程器是很便宜的那种,提取时有时会出现一些错误,可以多提取几次。获得固件之后,就可以开始分析固件内容了。

2.3 固件内容分析

在本专题的第6篇中,我们就展示过binwalk这款用于固件分析的工具。这里,我们直接用-Me参数提取固件内容,其中M参数表示递归提取:

根据binwalk的分析结果,我们可以判断固件应该包含一个嵌入式Linux操作系统,智能网关的主要功能逻辑应该由某个Linux可执行程序完成。待binwalk运行完毕之后,会生成几个文件夹,分别是2个squashfs文件系统,2个LZMA压缩的数据,以及1个jffs2文件系统,如下图所示:

上图中,前2个文件夹即2个LZMA压缩的数据,解压之后会发现是cpio文件系统,binwalk会自动帮我们递归全部提取。

逐个浏览这些文件系统中的内容,可以得出结论如下:

A. jffs2文件系统保存着门锁和网关的相关信息,如id等;

B. 两个cpio文件系统中,其中一个应该是恢复出厂设置时的备份文件系统,另一个是当前正在使用的文件系统;

C. 两个squashfs文件系统中,一个保存的全部都是mp3文件,另一个保存着网关的主程序,该程序即为我们将要分析的主程序。 到此,我们已经将完整的固件提取出来,至于逆向分析的工作就先放一放,将目光重新聚焦于电路板上。

2.4 UART接口分析

UART接口是IoT设备中最常用的通信接口,一般MCU都会提供UART引脚。在MT7688AN的芯片手册中,我们可以看到该芯片UART0接口和UART1接口。其中UART0接口在30和31引脚,如下图:

上图中,我们仅展示了UART0的位置,UART1可以自行查询芯片手册。如果海康萤石的网关没有屏蔽对UART的输入和输出,那么通过这些UART也许可以实现一些操作。为此,先要确定这些UART引脚是否被引出。在图2-2中,左侧我们可以看到一个软排线接口。海康萤石设计的电路板确实很紧凑,其他厂家的门锁或者网关一般用1.27mm或者2.54mm间距的排针,海康萤石的板子用的是0.5mm间距的软排线,如下图:

通过万用表即可测量引脚与此软排线接口的连通情况,使用万用表的二极管档,然后一个测试笔触碰UART_TXD0引脚,另一测试笔在软排线上滑动,听到万用表蜂鸣声时,即发现了接通的线路,如下图所示:

借由万用表的帮助,我们找到了与UART引脚连通在软排线接口。那么,可以想办法接上这个软排线,看一看固件在启动之后,UART口是否存在输出内容,不过这就留到下一篇中再详细讨论吧。

小结

本篇是我们开始分析海康萤石门锁网关的第一篇。在本篇中,我们使用热风枪将网关的Flash芯片吹了下来,然后通过编程器提取出了Flash中的内容,最后通过binwalk工具提取出了固件内容。接下来我们又研究了一下电路板上的软排线接口和MCU的UART串口,在本专题的后续文章中,会继续研究UART串口以及其他的固件分析内容,希望大家有所收获。对了,吹下来的Flash不要扔,记得要吹回去啊。

上图中,最明显的就是中间的MCU,仔细观察可以确认品牌和型号为MEDIATEK MT7688AN,联发科的芯片,先下载一份芯片手册看一看,下载地址是: 通过阅读芯片手册,可以找到关于Flash的部分内容:

http://labs.mediatek.com/zh-cn/chipset/MT7688。
图1-1 海康萤石智能门锁网关
图2-1 海康萤石网关通信内容
图2-2 海康萤石门锁网关电路板
图2-3 MT7688AN芯片的特点
图2-4 热风枪吹取Flash芯片
图2-5 将Flash芯片放置于编程器上
图2-6 GD25Q127CSIG详细属性
图2-7 使用编程器提取固件
图2-8 binwalk提取固件内容
图2-9 海康萤石网关提取内容
图2-10 MT7688AN芯片UART0引脚位置
图2-11 海康萤石网关软排线接口
图2-12 海康萤石网关软排线接口