當前位置:
首頁 > 最新 > 如何入侵聯網智能燈泡——LIFX智能燈泡

如何入侵聯網智能燈泡——LIFX智能燈泡

寫在前面的話

這篇文章的「主人公」,即LIFX智能燈泡。根據官方描述,這種燈泡配備了WiFi功能,可以進行多色調節,它是一種高效節能的LED燈泡,並且可以通過智能手機[1]遠程控制。考慮到它使用了新型的無線網路協議以及其進入市場的高調程度,因此我們選擇對這款物聯網設備進行安全分析。

LIFX項目最初於2012年9月份在眾籌網站Kickstarter上發起,當時該項目大受歡迎,其最終籌得的資金是原始計劃的十三倍之多。

為了通過智能手機應用來進行遠程控制,LIFX燈泡需要連接至WiFi網路。如果處於多個燈泡均可用的情況下,用戶只需要將其中一個燈泡接入網路即可。這個「主」燈泡可以接收智能手機應用發送過來的控制命令,並將命令通過一個802.15.4 6LoWPAN無線mesh網路廣播給其他燈泡。

802.15.4 6LoWPAN無線mesh網路運行架構如下圖所示:

當「主」燈泡熄滅或者斷開網路連接之後,剩下的燈泡會自動選出一個來代替之前「主」燈泡的位置,然後接入網路並繼續負責給其他燈泡發送控制命令。這種架構一次只需要一個燈泡接入網路,其優勢是非常明顯的。比如說,其餘燈泡在不亮的時候可以用低功耗模式運行,擴展了燈泡網路的可用範圍,並且還不會給WiFi網路造成擁塞。

毫無疑問,使用這種新型的網路通信協議之後,mesh網路和主/從通信端都會成為攻擊者的攻擊目標,因此我們決定選取一些燈泡並開始我們的研究。

分析攻擊面

LIFX燈泡網路中有三個核心通信組件:

1. 智能手機端; 2. 燈泡WiFi通信; 3. 燈泡mesh網路通信;

首先,我們將對802.15.4 6LoWPAN 無線mesh網路中的安全漏洞進行研究和分析。其中,我們將重點分析各個燈泡之間是如何通過6LoWPAN mesh網路來共享WiFi網路憑證的。

6LoWPAN是一種基於IEE802.15.4的無線通信規範,這一點與Zigbee是一樣的(同樣基於IEE802.15.4)。6LoWPAN可以允許設備通過低功耗個人區域網絡(PAN)來轉發IPv6數據包。

為了監聽和注入6LoWPAN流量,我們還需要一台使用802.15.4規範的外部設備。我們這裡選擇了ATMEL AVR Raven[2],並安裝了Contiki 6LoWPAN固件鏡像。它可以提供一個標準網路介面,而我們就可以利用它來監控並向LIFX mesh網路注入網路流量了。

協議分析

安裝了Contiki的Raven網路介面將允許我們對LIFX mesh網路進行監控以及流量注入,而就我們的觀察情況來看,該協議似乎並沒有經過加密。這也就意味著,我們可以輕鬆地對協議進行剖析,偽造用於控制燈泡活動的信息,並重放任意數據包Payload。

我們在添加新燈泡時,對mesh網路進行了監控並捕獲了相關數據包,並識別出了燈泡間共享WiFi網路憑證的特定數據包。整個過程大致如下:首先,主燈泡向網路廣播稱有新的燈泡要添加進來,新的燈泡會給主燈泡發送響應信息,然後要求獲取WiFi數據。接下來,主燈泡會將經過加密的WiFi信息通過mesh網路發送給新的燈泡。最後,新的燈泡會被添加進LIFX智能手機應用中的可用燈泡列表之中。

下圖即為我們用Wireshark捕獲到的6LoWPAN數據包:

如上圖所示,其中的WiFi細節信息包括憑證數據在內,並通過加密代碼塊的形式進行發送。

在對添加燈泡的過程進行深入分析之後,我們發現我們可以向mesh網路注入數據包並在主燈泡毫不知情的情況下請求獲取WiFi詳細數據。除此之外,我們在請求WiFi詳細信息的時候既不需要添加任何的新設備,也不會讓LIFX智能手機應用發出警報。

這樣一來,我們就可以隨意向mesh網路請求獲取WiFi憑證了。但是我們目前所掌握的信息還不足以完成解密任務,為了進一步實現攻擊,我們還需要了解其中的加密機制。

獲取固件

一般來說,當我們想要了解某款新設備所使用的加密機制時,我們首先會對其固件進行分析。理想情況下,我們可以直接從廠商網站上下載固件。但是由於LIFX設備是一款剛剛上市的新品,因此廠商還沒有發布可公開下載的固件。所以我們現在只能自己想辦法獲取固件了。

為了從設備中提取出固件,我們首先需要物理訪問內置的微型控制器,這可是個技術活,我們的目標就是如下圖所示的這個PCB板:

通過分析PCB板,我們發現該設備主要是由兩套晶元集成電路系統組成的:即德州儀器CC2538(負責處理設備通信-6LoWPAN無線mesh網路)和意法半導體STM32F205ZG(LIFX LWM-01-A,負責處理WiFi端通信),這兩塊晶元均基於ARM Cortex-M3處理器。通過進一步分析後,我們發現這兩塊晶元的JTAG介面(暴露在PCB板上)都有其特殊的功能。JTAG,即Joint Test Action Group(聯合測試工作組),它是一種國際標準測試協議(IEEE 1149.1兼容),主要用於對微型控制器和硬體進行測試以及調試。

識別出了每一塊晶元的JTAG介面之後,我們就可以向晶元發送JTAG命令了。這個過程需要使用到一些其他的硬體和軟體。我們選擇使用的是BusBlaster JTAG調試器[5]以及開源的Open On-Chip Debugger(OpenOCD)[6]。配置好之後,我們就可以向晶元發送JTAG命令了。

下圖即為BusBlaster JTAG Debugger:

接下來,我們就能夠導出每一塊晶元的快閃記憶體數據,並開始對固件進行逆向分析。

固件的逆向分析

獲取到固件鏡像源碼之後,我們需要知道哪一個鏡像負責存儲和解密WiFi憑證。通過搜索相關字元串之後,我們發現憑證數據存儲在LIFX LWM-01-A晶元的固件鏡像之中。將該鏡像載入進IDA Pro中之後,我們通過搜索常見加密常量找出了加密代碼,越來LIFX使用的是AES。

AES這種對稱加密演算法要求加密方和解密方共同訪問一份相同的預共享密鑰。在LIFX的實現中,這種設計暗示著每一台設備都會發送一個全局常量密鑰。如果設備能夠獲取到預共享密鑰,那我們就可以使用這個密鑰來解密其他LIFX燈泡發送的信息了。事實證明,我們的確可以用這個密鑰來解密其他LIFX燈泡發送的信息。

通過對這些密碼學常量的引用情況進行分析之後,我們發現了負責實現加密和解密操作的代碼。在一款免費AES軟體[7]的幫助下,我們對加密函數進行了逆向分析並提取出了加密密鑰和初始向量等信息。

下圖是我們使用IDA Pro反編譯出的部分固件加密代碼:

最後一步,就是要用提取出來的加密密鑰解密WiFi憑證以證明其有效性了。結果想必大家也已經清楚了,這些加密變數就是我們所要尋找的東西。

總結

現在,我們不僅知道了加密演算法、密鑰和初始向量,而且我們還對mesh網路協議進行了分析並能夠向mesh網路注入數據包、捕獲WiFi詳細信息並解密WiFi憑證。值得一提的是,整個操作過程並不要求我們完成任何的身份驗證,而且更不會向用戶發出警告提醒。非常好!

需要注意的是,由於這種攻擊技術針對的是802 15.4 6LoWPAN無線mesh網路,因此攻擊者必須要身處無線網路的覆蓋範圍之內(30米之內),並對存在漏洞的LIFX智能燈泡發動此類攻擊。

GIF/5K

感謝您抽出·來閱讀此文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 開平雲服務 的精彩文章:

外國專家教你買蘋果大招!
外國報告:人類未來辦公室會更多鬥爭
想知道對方是不是你的好友?來個粗暴的!

TAG:開平雲服務 |