博文作者:阿裡安全研究實驗室 - 謝君
釋出日期: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