最近有安全研究人員報告LIFX燈泡存在漏洞,黑客可以在距離燈泡30米內獲取燈泡連接的WIFI密碼。LIFX燈泡使用aes加密wifi密碼,其加密密鑰是固定的,通過特殊方式獲得密鑰之后就可以解密wifi的密碼。目前LIFX已經發布安全升級公告。
LIFX燈泡是可以由Wi-Fi控制的智能多色LED燈泡,售價99美元。LIFX曾創下Kickstarter眾籌平臺有史以來最成功的融資活動,在最初目標僅為10萬美元的情況下,于短短六天內籌集到了130萬美元。上周,該公司宣布在A輪融資中募集了1,200萬美元。
LIFX燈泡會連接wifi網絡,這樣才可以通過手機APP控制。當有多個燈泡的時候,只有一個燈泡會連接到網絡。這個控制燈泡會接受手機發來的指令,然后通過802.15.4 6LoWPAN協議廣播給其他的燈泡。
當控制燈泡關閉或者掉線的時候,剩余的燈泡會選舉一個新的控制燈泡連接wifi,等待接受手機端發來的命令。這樣的設計保證同時只有一只燈泡連接wifi,不用說,這種設計是有很多優點的。也引起我們的研究興趣。
分析攻擊面
在燈泡的網絡中主要有3個核心的通信部分:
1,智能手機到燈泡的通信。
2,燈泡WIFI的通信。
3,燈泡mesh網絡的通信。我們決定先從燈泡的 802.15.4 6LoWPAN的無線mesh網絡下手,分析一下燈泡之間是如何分享 wifi 認證密碼的。
協議分析
通過監控和注入LIFX的mesh網絡,我們發現大部分通信都是未加密的。這樣就可能輕易的分析出協議,從而構造消息控制燈泡或者重放控制指令。我們也發現了共享wifi密碼的流程。當有新燈泡加入時,控制燈泡會廣播消息,新燈泡回應控制燈泡,然后跟控制燈泡請求wifi的相關信息。控制燈泡會回應wifi的信息,加密之后發給新燈泡。然后新燈泡就出現在手機APP的控制列表里了。下圖顯示的是加密之后的wifi信息。
通過對數據的進一步分析,我們發現可以自己在燈泡的mesh網絡中注入數據包來請求wifi的信息。這樣就可以在沒有新燈泡加入的情況下獲得wifi信息,而且手機上不會有任何提示。到目前為止,還沒有足夠的信息來解密wifi信息,因此我們決定去分析燈泡使用的加密算法。
獲得固件
理想的情況下,可以在設備官網下載到固件分析。這次由于LIFX是一家非常新興的公司,他們還沒有發布過固件。所以我們只好自己想辦法提取固件。
通過對PCB的分析,我們獲得了以下的信息:mesh網絡使用的是德州儀器的CC2538,wifi網絡使用的是意法半導體的STM32F205ZG (marked LIFX LWM-01-A)。處理器使用的ARM Cortex-M3 。而且芯片的jtag都是可以用的。我們使用開源硬件BusBlaster JTAG debugger,最后成功導出了固件。
逆向固件
現在我們有了兩個二進制的文件。通過對字符串的識別,發現加密算法部分在LIFX LWM-01-A芯片中。使用IDA Pro加載固件,通過尋找一些加密常用的常量: S-Boxes, Forward和Reverse Tables和Initialization Constants,分析出LIFX采用了AES進行加密。AES是一種對稱加密算法。也就是說加密和解密都需要同一個預共享的key。如果LIFX使用了固定的加密密鑰的話,這就意味者我們從一個LIFX燈泡中獲得了加密key,就可以使用這個key解密所有LIFX燈泡加密的wifi信息。下圖是ids 反匯編的加密代碼。結合對開源AES實現的分析,我們獲得了aes加密使用的key,初始化向量,塊模式等。
最后我們使用獲得的信息解密了嗅探到的wifi信息證明了漏洞存在。由于這個攻擊場景需要使用無線mesh網絡,所以攻擊者需要在網絡覆蓋的范圍內進行攻擊,大概是30米。目前lifx已經發布了新版固件修正這個漏洞。