針對聯(lián)網(wǎng)智能燈泡的安全性分析
本文主題是關于LIFX燈泡的,LIFX是一款智能燈泡,它能夠用WIFI控制,節(jié)能,多顏色顯示,可以使用Android或iOS手機控制。我們之所以選擇對這款產品進行研究,主要是因為它使用了新興的無線網(wǎng)絡協(xié)議,投入市場的方式以及先進的技術深深的吸引了我們。
LIFX燈泡通常需要連接到WiFi網(wǎng)絡,以便使用智能手機應用程序能夠對燈泡進行控制。在有多個燈泡可用的情況下,只有一個燈泡將連接到網(wǎng)絡。這個“主”燈泡從智能手機應用程序上接收命令,并通過802.15.4 6LoWPAN無線網(wǎng)絡將其廣播到其他燈泡。
WiFi和802.15.4 6LoWPAN mesh網(wǎng)絡
在主燈泡關閉或與WIFI網(wǎng)絡斷開連接的情況下,系統(tǒng)會從剩余燈泡中重新選擇一個燈泡作為主設備,并使其連接到WiFi網(wǎng)絡,新主設備繼續(xù)將命令發(fā)送到其他燈泡。這種一次只需要連接一個燈泡到WiFi上的架構具有許多優(yōu)點,其中包括剩余燈泡在不亮時以低功率運行,還有就是可以使燈泡網(wǎng)絡的可用范圍遠遠超過WiFi網(wǎng)絡的覆蓋范圍,這樣可以減少WiFi網(wǎng)絡的擁塞。
不用說,LIFX燈泡使用的新興無線通信協(xié)議,mesh網(wǎng)絡結構以及主/從通信方式深深吸進了“黑客”的注意力,因此我們拿起了幾個燈泡并開始了我們的研究之旅。本文針對LIFX固件1.1版本進行了研究和分析,并且自從向LIFX報告了研究結果之后,該公司已經(jīng)對固件1.1版本進行了升級,現(xiàn)在1.2版本已經(jīng)可供下載了。
開啟攻擊之旅
LIFX燈泡網(wǎng)絡中有以下三個核心通信組件:
1.智能手機到燈泡的通信
2.燈泡WiFi通信
3.燈泡網(wǎng)絡通信
分析初始階段碰到的最大難題是新技術和理論知識帶給我們的挑戰(zhàn),因此我們準備從燈泡內的802.15.4 6LoWPAN無線mesh網(wǎng)絡開始著手,以查看其是否存在漏洞。具體來說,我們決定研究LIFX燈泡是如何在6LoWPAN mesh網(wǎng)絡之間共享WiFi網(wǎng)絡憑證的。
6LoWPAN是一種基于IEEE 802.15.4構建的無線通信規(guī)范,與Zigbee使用的基本標準相同,該規(guī)范允許通過低功率的Personal Area Networks (PAN)轉發(fā)IPv6數(shù)據(jù)包。為了監(jiān)控和注入6LoWPAN流量,我們需要一個基于802.15.4規(guī)范的外圍設備。在此任務中我們選擇的設備是安裝了Contiki 6LoWPAN固件鏡像的ATMEL AVR Raven ,該設備提供了一個標準的網(wǎng)絡接口,通過該網(wǎng)絡接口我們可以監(jiān)控和注入網(wǎng)絡流量到LIFX mesh網(wǎng)絡。
協(xié)議分析
通過上述網(wǎng)絡接口,我們可以監(jiān)控并將網(wǎng)絡流量注入到LIFX mesh網(wǎng)絡中。通過觀察我們發(fā)現(xiàn)LIFX網(wǎng)絡在很大程度上是未加密的,因此我們可以輕松地解析其網(wǎng)絡協(xié)議,并構造消息來控制燈泡并重放任意數(shù)據(jù)包的有效載荷。
通過在LIFX網(wǎng)絡中添加新燈泡以及同時監(jiān)控從mesh網(wǎng)絡中捕獲的數(shù)據(jù)包,我們能夠識別有關WiFi網(wǎng)絡憑證的特定數(shù)據(jù)包。整個新燈泡的加入過程包括主燈泡在網(wǎng)絡上廣播有一個新燈泡加入進網(wǎng)絡;之后新燈泡對主燈泡的廣播作出響應,并請求傳輸WiFi憑證細節(jié);然后主燈泡通過mesh網(wǎng)絡廣播加密的WiFi憑證細節(jié),并將新的燈泡添加到LIFX智能手機應用程序中的可用燈泡列表中。
通過Wireshark 6LoWPAN捕獲數(shù)據(jù)包
通過對捕獲到的數(shù)據(jù)包進行分析我們發(fā)現(xiàn),WiFi細節(jié)(包括憑證)是被加密傳輸?shù)模虼宋覀兛梢栽趍esh網(wǎng)絡中注入數(shù)據(jù)包,以獲取WiFi細節(jié)。此外,獲取WiFi詳細信息的過程不會添加任何新設備或在LIFX智能手機應用程序中引發(fā)任何警報?,F(xiàn)在我們可以任意地從mesh網(wǎng)絡獲取WiFi憑證,但卻沒辦法來解密它們。為了進一步的攻擊,我們需要對其使用的加密機制進行分析。
獲取固件
我們首先從分析LIFX設備的固件開始來嘗試去破解其加密機制,一般情況下,我們只需要從供應商網(wǎng)站下載固件,脫殼,解密或以其他方式將其更改為我們熟悉的格式就可以了。然而,在研究時我們發(fā)現(xiàn),由于LIFX設備剛投入市場,因此供應商還沒有向公眾發(fā)布可以分析的固件。在這種情況下,我們只能自己獲取LIFX設備的固件。
為了從設備中提取固件,我們首先需要獲得對內嵌的微控制器的物理訪問,這是一個非常講究技術的獲取過程。對于外行人來說,似乎只不過是用錘子敲擊它,直到能夠看到LIFX設備的內部結構。一旦獲取內嵌的微控制器,我們就可以訪問Printed Circuit Board (PCB)了,該設備如下圖所示:
提取LIFX PCB
通過分析獲取到PCB我們發(fā)現(xiàn),該器件主要由兩個片上系統(tǒng)(SoC)集成電路(IC)組成:一個是德州儀器CC2538,其主要負責6LoWPAN網(wǎng)絡設備的通信,另一個是STMicroelectronics STM32F205ZG,其主要負責WiFi端的通信。這兩款芯片均基于ARM Cortex-M3處理器。進一步的分析發(fā)現(xiàn),每個芯片上的JTAG引腳功能齊全。JTAG是Joint Test Action Group的縮寫,是IEEE 1149.1標準的常用名稱,它描述了用于測試微控制器缺陷的一種協(xié)議,并通過Test Action Port接口調試硬件。
一旦確定了每個芯片正確的JTAG引腳以及準備好連接到芯片的JTAG接口,下一步要做的事情是手動跟蹤引腳,分析以及自動探測。為了能夠控制發(fā)送到芯片的JTAG命令,我們需要硬件和軟件組合起來使用。在這種情況下使用的硬件是開源的BusBlaster JTAG調試器,它與開源的OpenOCD調試器配合使用。在配置好硬件和軟件之后,我們可以向芯片發(fā)出JTAG命令了。
BusBlaster JTAG調試器
此時,我們可以從每個芯片中快速的轉儲閃存,并啟動對固件的逆向分析工作。
逆向分析固件
現(xiàn)在我們擁有兩個二進制的blob固件,我們需要識別哪個固件負責存儲和加密WiFi憑證。通過映像上的“字符串”我們確定WIFI憑證存儲在LIFX LWM-01-A芯片的固件映像中。
將固件映像加載到IDA Pro中,我們可以通過查找常見的加密常量(S-Boxes,F(xiàn)orward and Reverse Tables和Initialization Constant)來識別加密代碼,通過該方法我們確定芯片中使用的是AES加密算法。由于AES是一種對稱加密算法,因此加密密鑰和解密密鑰是相同的。通過分析我們發(fā)現(xiàn)在LIFX的設計中,每個設備都會發(fā)出一個恒定的全局密鑰。因此如果我們可以從一個設備中獲取密鑰,那么我們就可以使用相同的密鑰來解密所有其他設備發(fā)送的消息。在這種情況下,密鑰可用于解密從任何LIFX燈泡發(fā)送的加密消息。由于加密常量也可用于識別加密和解密程序的匯編代碼,因此在AES算法開源實現(xiàn)的幫助下,我們可以通過逆向分析之前定位到的加密函數(shù)來提取加密密鑰,初始化向量以及塊模式。
IDA Pro拆解固件加密代碼
最后一步是通過使用提取到的密鑰解密從網(wǎng)絡中嗅探到的WiFi憑證來證明提取的加密密鑰是否正確。
組合攻擊
掌握了加密算法,密鑰,初始化向量以及對mesh網(wǎng)絡協(xié)議的了解,我們可以將數(shù)據(jù)包注入到mesh網(wǎng)絡中,捕獲WiFi細節(jié)并解密憑證,所有這一切都不會引起LIFX設備的任何身份驗證或警報。因此我們成功了!
應該注意的是,由于這種攻擊是針對802.15.4 6LoWPAN無線mesh網(wǎng)絡進行的攻擊,所以攻擊者需要在一個易受攻擊的LIFX燈泡的無線覆蓋范圍內(30米范圍內)進行攻擊,因此這嚴重限制了大規(guī)模漏洞利用的實用性。
修復建議
在發(fā)現(xiàn)該漏洞后我們及時通知了LIFX公司,并一起協(xié)助該公司完成了漏洞的修復工作,以及其他進一步的安全性改進措施?,F(xiàn)在,新固件使用從WiFi憑證導出的加密密鑰來加密所有的6LoWPAN流量,并包括了用于保證新燈泡能夠安全加入到WIFI網(wǎng)絡中的安全功能。
當然,任何物聯(lián)網(wǎng)設備,無論是手機,筆記本電腦,還是燈泡,黑客總是有機會將其劫持,后續(xù)我們將會在后面介紹更多有關劫持物聯(lián)網(wǎng)設備的技術文章。