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

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

智能交通(二)——Spinger特刊推荐

特刊征稿 01  期刊名称: Autonomous Intelligent Systems  特刊名称: Understanding the Policy Shift  with the Digital Twins in Smart  Transportation and Mobility 截止时间: 开放提交:2024年1月20日 提交截止日