新闻中心
联系我们

总机:  010-8250-9710

热线:  400-1066-819

邮箱:  support@icssla.com
地址:  北京市海淀区上地东路1号院华控大厦7层

智能电表安全研究:深度解析商用蓝牙电表

返回

2026-08-04 公司原创

 

01、概 述

商用蓝牙电表是一种集成了计量与蓝牙通信技术的智能电能表。它允许用户或管理者通过智能手机或移动设备近距离连接电表,实现实时用电监控、数据抄读以及预付费充值等功能,广泛应用于商业租赁、充电桩配套和工业巡检等场景。

 

本文以商用蓝牙电表为研究对象,旨在探索蓝牙协议的通信机制以及相关安全特性,并结合设备所采用的RISC-V架构,对固件进行逆向分析与安全研究。通过分析蓝牙通信协议栈、应用逻辑以及底层固件实现,挖掘潜在的安全漏洞,研究其形成原因及可能带来的安全风险,为物联网终端设备的安全评估与漏洞挖掘提供参考和实践经验。

 

 

02.电 表 分 析

 

2.1 整体分析

 

2.2 硬件分析

PCB如下图:

 

MCU为CH591F,CH591x 是集成 BLE 无线通讯的 RISC-V微控制器,根据手册得知PB14为TIO,PB15为TCK。

 

 

2.3 固件提取

在研究过程中,我们首先尝试获取电表所使用的 CH591 蓝牙芯片固件,以便开展后续的逆向分析工作。

 

 

2.3.1 UART串口分析

首先,对 CH591 芯片的 UART 接口进行了识别,并使用 USB 转 TTL 工具连接设备进行串口通信测试。设备上电启动后能够输出少量初始化信息,但内容主要为系统启动日志,并未包含调试接口、BootLoader 提示或其他具有利用价值的信息。同时,在不同波特率及多种交互方式下均未发现交互式 Shell、命令行接口或固件下载模式,因此无法通过串口方式获取设备固件。

 

 

2.3.2 调试接口的固件读取

尝试使用官方提供的WCH-Link调试器,结合WCH-Link Utility软件对芯片内部 Flash 进行读取。调试过程中发现,目标设备已开启 Flash 读保护机制,同时禁用了芯片的两线调试功能。

 

 

为进一步验证 CH59x 系列芯片的安全机制,我们选取了同系列开发板进行了对比测试。测试结果表明,当芯片未关闭两线调试功能时,可以正常通过 WCH-Link 下载程序、在线调试以及读取内部 Flash 数据;而当两线调试功能被禁用后,调试接口将无法直接恢复。

 

 

若强制重新开启两线调试功能,芯片会自动执行 Flash 擦除操作,内部程序及数据会被全部清除,以防止攻击者绕过调试保护直接获取固件。这一安全设计有效提高了固件提取的难度,也使得基于官方调试接口的固件获取方法基本失效。

 

 

2.3.3 OTA获取固件

通过分析小程序 OTA 升级流程,梳理固件更新逻辑,最终编写python脚本实现固件下载,为后续固件逆向分析提供基础。

 

 

2.4 固件分析

RISC-V是一种开放式精简指令集架构,采用模块化设计,支持指令扩展和自定义,具有开放、灵活、易扩展的特点。目前广泛应用于物联网、嵌入式设备、AI芯片等领域。本次分析的固件是带厂商BLE协议栈配套的轻量事件调度的裸机框架。

 

 

2.4.1 从启动向量到业务代码

在对 RISC-V 架构固件进行分析时,通常需要从程序启动流程入手。与 ARM Cortex-M 等 MCU 类似,RISC-V 裸机固件通常包含中断向量表、启动入口函数以及用户主程序等关键结构。

Reset_Handler 是芯片上电或复位后的第一个执行函数,负责完成系统初始化工作。由于 mepc 是异常/返回后的实际执行入口,因此 0x942C处就是固件的 main 函数。

 

main 主要做系统和外设初始化,打印版本信息,读取关键状态,初始化 BLE/Mesh 等功能,然后进入主循环处理实际业务。

 

2.4.2 BLE通信代码定位

通过分析 FUN_20d4 的实现逻辑,可以发现其中调用的 sub_4E03C 函数行为与 memcmp 函数特征一致。结合官方提供的 BLE ROM 函数表定义进行交叉比对,确认地址 0x4E03C 对应 BLE_LIB_JT(2),其映射函数名为 tmos_memcmp,与实际功能吻合。

 

基于该映射关系,可以进一步确认其他 BLE ROM 函数对应的地址映射关系,并辅助恢复其函数符号。

 

 

03.小程序逆向,通信协议解析

后续分析转向设备与客户端之间的蓝牙通信过程。相比于固件逆向分析,通信协议逆向同样能够揭示设备的业务逻辑和控制流程,并且对于评估设备的安全性具有重要价值。

 

 

3.1 解包目标程序

微信小程序是设备与用户交互的重要入口,通常包含业务逻辑、接口调用以及蓝牙通信等功能。其发布后的代码以 wxapkg 格式打包存储,PC微信会缓存小程序的包,可以直接提取,也可用通过其他方式获取到。

 

这里用到github上的一个工具wxapkg对微信小程序进行解包。通过解包工具可以还原小程序资源文件,从而分析内部业务流程、设备通信逻辑以及相关接口,为后续协议逆向分析提供基础。

 

 

3.2 通信协议逆向

解包得到小程序的代码后,除了静态分析,大多时候也需要抓包观察接口流量,由于PC微信对蓝牙支持非常不好,无法跑通整个通信过程,我们最终选择了通过root手机绕过签名验证的方式来进行接口调试分析。

 

通过分析小程序管理态下的蓝牙交互过程,梳理其主要执行链路,小程序首先搜索并连接目标电表,完成 BLE 服务初始化后进入管理态校验流程。

 

管理态下,先调用 check() 完成设备校验,通过 BLE 下发 monitorOrder。

 

设备响应成功后调用 on() 进入对应指令执行阶段。在指令交互过程中,小程序通过 writeBLECharacteristicValue 向设备发送控制数据,并通过响应回调获取设备返回结果。

 

最终结合响应帧中的校验信息、序号及返回码判断操作是否成功。

 

 

04.漏洞挖掘及防护建议

针对智能电表、物联网采集终端等设备,通常从云平台、通信协议、设备固件、硬件接口以及移动端应用等多个层面开展安全漏洞挖掘与分析。

 

●在云平台层面,重点关注设备管理平台、数据采集服务、API接口、用户认证与权限控制机制等安全问题,包括身份认证绕过、越权访问、敏感数据泄露、接口未授权调用、弱口令以及业务逻辑漏洞等。通过分析云端与设备之间的数据交互流程,评估攻击者是否能够非法控制设备、篡改电量数据或获取用户隐私信息。

 

●在通信协议层面,主要针对蓝牙、BLE Mesh、4G/NB-IoT、Wi-Fi等通信链路进行安全分析,包括协议设计缺陷、身份认证机制不足、加密算法使用不当、密钥管理缺陷、重放攻击、中间人攻击以及数据篡改等问题。通过抓取设备与手机、网关或云平台之间的通信数据,分析协议格式、数据包结构以及安全保护机制,挖掘潜在攻击路径。

 

●在固件层面,通过对设备固件进行提取、解包和逆向分析,研究其操作系统、文件系统、应用程序以及关键业务逻辑。重点关注固件中的硬编码密钥、默认账号密码、调试接口、未授权服务、缓冲区溢出、命令注入、内存安全漏洞以及加密实现缺陷等问题。同时结合静态分析、动态调试和模糊测试(Fuzzing)等方法,发现设备端软件漏洞。

 

 

4.1 漏洞演示

在对蓝牙电表进行深度分析后,我们挖掘到了多个漏洞,其中包括云平台、固件等多个安全漏洞,由于涉及一些敏感信息,此处不再展开,我们也在积极与相关机构厂商进行漏洞披露。

 

 

4.2 防护建议

加强云平台安全,完善用户认证和权限管理机制,避免弱口令、越权访问等问题。对设备管理接口进行安全校验,加强敏感数据加密存储和访问审计。

 

保障通信安全,设备与云平台、手机之间的通信应采用加密传输,完善身份认证机制,防止数据被窃取、篡改或重放攻击。同时加强密钥管理,避免使用固定密钥。

 

提升固件安全,固件中避免存储明文密码、密钥等敏感信息,关闭不必要的调试接口。升级机制应增加数字签名校验,防止恶意固件刷入。

 

加强硬件防护,限制UART、JTAG等调试接口访问,对Flash中的敏感数据进行加密保护,并采用安全启动等机制保证设备运行环境可信。

 

开展安全测试,在设备上线前进行漏洞扫描、协议分析、固件审计和渗透测试,及时修复发现的问题,并建立持续漏洞修复和安全更新机制。

 

 

05.总 结

 

本文对某商用蓝牙电表进行了从固件到通信协议的安全分析,结合小程序逆向和蓝牙数据流量分析,梳理了设备的业务流程和安全机制。分析发现,设备在通信认证、数据加密以及业务接口设计方面存在不足,部分流程可被绕过或复现。通过此次研究可以看出,智能终端在实现功能的同时,也需要重视协议安全和业务逻辑防护,避免因设计缺陷引入安全风险。