Broadlink智能生态系列漏洞详解

2023-11-03 23:59

本文主要是介绍Broadlink智能生态系列漏洞详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

博文作者:阿里安全研究实验室 - 谢君

发布日期:2016-1-26

博文内容:

背景

当下全球网络威胁活动中,国外攻击者主要使用Zeus、CryptoWall、Bedep、各类常见RAT工具等作为恶意负载,但在最近我们监控恶意威胁的过程中,发现个别高级样本攻击中使用了较为少见的BetaBot木马,关于此木马很少有相关的


0x01初识智能插座

今天我选择分析研究的这款插座是博联的SP2(smart plug),为什么选择这款插座,这款插座现在应用比较多,而且使用的元器件产商marvell提供的smart energy在国内的创业团队中也应用的比较多,据悉小米插座也使用了marvell的解决方案。

外观如下图,是我们今天研究的主角.


 


通过拆解插座我们得知它使用的一些芯片和元器件,下图插座核心模块.

Cortex-M3处理器+WIFI模块,具体芯片是marvell的88MC200+88W8782



下图是插座的继电器模块,主要功能是用于开关插座,具体器件是Y14F-SS-105LMW-115



下图是电量计量模块,用于记录电量使用情况,具体器件是ATT7021CU


 

从使用的这几个模块来看,基本上我们能够确定一些关联,微控制器是核心的控制中心,管理WIFI模块用于联网和通信,管理继电模块物理开关插座,从计电传感器读取电量的使用情况,以上的微控制模块是我们今天研究的重点。

 

0x02.系统架构

我们将从硬件架构和软件系统来对这款插座进行详细介绍。


2.1硬件架构

这里我们将详细介绍该核心控制系统的硬件和软件架构,上面我们提到了微控制芯片marvell的88MC200和WIFI模块88W8782,这两芯片组合就是Marvell提供的smart Energy解决方案。

下图是硬件组合功能图



简单介绍这两片芯片的特性:

88MC200:ARM Cortex M3的核,处理器时钟高达200Mhz,512KB SRAM,1MB Flash片上存储空间,128位AES加密算法引擎,CRC算法引擎.

88W8782:集成Marvell Feroceon CPU(ARMv5TE-compliant)高达128Mhz处理器时钟,兼容802.11 a/b/g/n,支持WIFI-Direct和stations模式(后面会详细介绍,传说中的SmartConfig)


2.2软件系统架构

该插座的软件系统基于Marvell的Easy-Connect SDK开发平台来完成,产商通过Marvell提供的开发平台来开发属于自己的上层应用,通过marvell提供的信息来看,我们可知该插座的软件系统的一些特性,下图是marvell提供的开发板。

操作系统:FreeRTOS

TCPIP协议栈:LwIP(一个轻量级的TCPIP协议栈的实现)



简单介绍一下嵌入式操作系统FreeRTOS,这是一款开源的跨平台的迷你实时操作系统,第一次知道这个操作系统要从硅谷有一家做智能手表的公司叫pebble watch说起,他们是从美国众筹网站kickstarter上融到钱做智能手表的,他们就是用的FreeRTOS。


它的特点就是短小精悍,最小的FreeRTOS核心仅包含3个.C文件(task.c,queue.c, list.c)和少量的头文件,精简编绎的二进制文件可以小到10几K,非常适合做这种低功耗的智能设备的操作系统,博联的这个插座的整个系统的firmware才260多KB,里面包括整个硬件初始化,FreeRTOS系统和TCPIP协议栈,无线管理,上层业务逻辑等等,使用FTFS精简文件系统,显得非常紧簇和精简,下面我们将介绍插座的启动过程。


2.2.1系统引导过程

我们从一些途径获取到了该插座的更新固件(BL_SP2-27-3.bin),因此我们可以获知它的内部系统运行的流程和功能,下图是该固件的结构分析图。



该固件的头部0x28个字节包含头部标识,固件长度,和加载地址,固件校验等信息。

对于88MC200的芯片启动过程来讲,我们有必要附上整个硬件系统的内存分布图,来详细介绍其启动过程,它使用的是Cortex-M3 32位的处理器,使用ARMv7-M架构,使用的指令集Thumb-2(16/32位混用),由于代码密度高,所以编绎出来的体积小。



简单介绍一下硬件系统部分地址空间分布:

1.    地址空间0x0000-0x100000,片上1MB flash存储,0x0~0x1000为Boot ROM,BootROM的功能主要是把flash上面存储的固件加载到起始地址为0x100000的静态内存上去。

2.    片上静态内存(SRAM),大小512KB分为4个段,跨代码和数据段,分别是(RAM0/1/2/3),地址空间和大小可以通过系统控制存器标志位可配,默认配置如下:

0x100000-0x12ffff              RAM0 192KB (用于存储代码和数据)

0x12ffff-0x15ffff               RAM1 192KB (用于存储代码和数据)

0x20000000-0x20010000        RAM2 64KB  (运行时栈空间)

0x20010000-0x20020000        RAM3 64KB  (BootROM运行时栈空间)

3.    AON Domain静态内存,

0x480c0000-0x480c1000      4KB AON Domain(用于存储一些即使系统断电后关键的信息,上电唤醒后还能继续使用)


启动过程如下:

1.    BootROM 从0地址读4个字节数据作为初始MSP(主堆栈)的值,然后从0x04地址取值作为指令执行的入口接管MCU(微控制器),通过SPI控制器读取WIFI Flash固件到内存空间,并且WIFI固件代码接管控制权。

2.    WIFI固件代码把flash上面的系统固件加载到静态内存0x100000处,然后跳到0x100000读取4个字节值作为MSP的初始值,读0x100004作为PC的初始值并开始执行代码,此处是向量表中的reset执行函数



3.    初始化电源管理单元(PMU)

4.    初始化uart和watchdog

5.    从flash里面读取系统之前运行的配置数据信息并校验

6.    初始化wlan(包括tcpip协议栈,wifi芯片的驱动,无线网络管理)、GPIO和PIN_MUX

7.    初始化AES加密算法引擎

8.    初始化插座的业务逻辑等


 

这里我们将重点介绍业务逻辑。

设备配置

智能设备运行起来并且使用它之前必须用户对它进行配置联网并手机关联帐号等步骤,联网之前必须告之智能设备家里使用的WIFI帐号和密码,这个过程是通过手机来完成,具体方式通过SmartConfig或者DIRECT WIFI来实现。

先说SmartConfig模式,该模式是让设备的WIFI模块处于监听模式,这样设备可以收到原始的802.11的数据帧,手机把wifi帐号信息通过随机数据长度编码的方式告之给设备,完成WIFI配网,具体流程如下:



上图完成整个WIFI配网和手机和设备配对的过程。

 

DIRECT WIFI的方式更加简单,智能设备把自己变成一个WIFI的AP,让手机用户连接上去,手机用户告之设备家庭WIFI的帐号信息即可完成配网过程,手机配对过程同上。

 

控制插座的客户端与插座之间会协商一个16字位的AES密钥,该密钥的生成基于插座的系统时钟来生成,该密钥将用于业务控制逻辑,比如手机远程控制设备的开关等操作,云端只进行转发和定位设备网络链路,该密钥存储于手机端和设备端,云端并不存储该信息,所有的设备都是MAC地址进行索引。

 

Broadlink智能设备生态

博联智能设备生态分两类,第一类就是博联通过自己的物联网解决方案开发的属于自己的智能设备产品,比如如下的智能插座,万能遥控,智能音响,属于自己的产品。



第二类是第三方设备产商通过博联的物联网解决方案加入到它的智能生态中来的设备产商,其中包括传统的家居制造商和一些智能设备产商,如下图示。



博联提供的物联网解决方案包括硬件和软件两方面,硬件就是上面我们提到的Marvell的智能家居方案,软件包括Marvell提供的低功耗嵌入式操作系统方案和博联提供的手机App SDK,网络管理逻辑和云端通信存储方案(可选,因为有的产商是自己建立云端),而设备的控制逻辑由产商开发完成,整体解决方案按照设备收取每个设备9.999元。


 

Broadlink设备漏洞

1.    控制端缺乏严格的认证导致设备可被攻击者所控制,由于设备与控制端的认证体系的脆弱,设备没有对控制端进行可信性认证,导致设备可能会被恶意攻击者所控制,由于大部分智能设备都在家庭网络里面使用,由于路由器的关系,所以危害性得以缓解,但是在通过我们全球扫描过程中发现仍有大约10000左右的设备暴露在公网中(包括第三方产商的智能设备),大部分在中国。


 

2.    未公开的一键“自毁”功能,由于博联所有的智能设备产品都是使用同一套协议框架代码进行开发,不同系列产品只是控制逻辑不同,导致底层代码出问题,所有其它系列产品都会受到影响,该漏洞藏于全系列代码中,一未公开的功能,特定的网络包,可以远程重置设备,清除系统配置信息,让设备处于不可用状态。

 

漏洞一之危害性:

由于漏洞一的存在,可以导致智能设备能够远程被黑客控制并且拥有和设备正常用户同样的操作与控制权,由于博联设备支持从非官方地址更新固件,所以黑客可以远程更新插入恶意代码的固件,由于固件更新验证机制比较脆弱,没有数字签名,远程更新固件的防线也轻而易举,笔者为了验证其危害性,自制固件,插入一段代码目的为了把远程智能设备用户家里的WIFI帐号和密码,还有智能设备的MAC地址信息发送到我们的C&C服务器来,并且不破坏智能设备原有的正常业务逻辑。



我们C&C服务器的UDP 80将会收到MAC地址和远程的WIFI帐号信息与密码信息。



通过自制固件远程更新并且能够从智能设备中获取用户手机的用户名和IMEI等信息,并且可以渗透内网等功能。

 

Broadlink智能生态漏洞

该漏洞同博联的漏洞一,通过该漏洞可以远程控制生态里面的其它智能设备,可能受影响的产品如下。



注:由于部分产品的验证机制在第三方的云端,所以可能不受此漏洞的影响。

 

安全修补建议:

1.    完善客户端接入验证机制,例如每台设备有一个唯一的序列号和验证码用于接入时验证。

2.    发布版本的测试代码一定要清除掉,可能测试代码会成为产品的后门而存在。

3.    固件更新的签名机制,这个我觉得跟Marvell提供的物联网解决方案有关。

4.    SDL开发流程。

 


原文地址: https://security.alibaba.com/blog/blog.htm?spm=a219k.7962236.0.0.8CkV0D&id=39

这篇关于Broadlink智能生态系列漏洞详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/341788

相关文章

SQL BETWEEN 语句的基本用法详解

《SQLBETWEEN语句的基本用法详解》SQLBETWEEN语句是一个用于在SQL查询中指定查询条件的重要工具,它允许用户指定一个范围,用于筛选符合特定条件的记录,本文将详细介绍BETWEEN语... 目录概述BETWEEN 语句的基本用法BETWEEN 语句的示例示例 1:查询年龄在 20 到 30 岁

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五