飄散在空中的Wi-Fi密碼:SmartCfg無線配網方案的安全分析
隨著無線移動互聯網的普及,現在家家戶戶中幾乎都會有那麼一兩個支持無線接入和遠程管理的智能設備:烘乾機會在工作完成後給主人發來提示「衣物已烘乾」,體重秤可以提示主人「您今天是不是吃得有點多」,甚至連冷冰冰的門鎖都能夠搖身一變,成為那些喜歡弄丟鑰匙的馬大哈主人的貼心管家。這些曾經只是在科幻電影裡面看到的場景,已經真真實實地「飛入尋常百姓家」了。
儘管智能家居設備的安全性一直是各方關注的焦點,但是在諸多安全研究者的眼中,針對智能家居設備的安全建模仍然還集中在「傳統程序+運行於嵌入式設備」,更多地把過去安全分析的經驗遷移到新的應用場景上:例如如何去挖掘嵌入式設備固件上的代碼漏洞,抑或是尋找智能設備所對應的手機APP的安全問題。除此以外,少有研究關注那些智能家居設備所獨有的應用場景中可能存在的安全隱患。不幸的是,往往是這些新出現的應用場景更容易發現嚴重的安全問題:在那些從已有桌面平台和智能手機平台遷移至嵌入式平台的代碼中,安全漏洞大多已經修復,演算法和協議的設計也從已有的經驗中獲益良多,唯獨新出現的應用場景無法借鑒過往經驗,更容易產生獨特而高危的安全漏洞。
從去年開始,GoSSIP小組對一類智能家居上獨有的安全問題——智能家居設備配網安全問題開展了深入的研究。所謂智能家居設備配網,是為智能家居設備(例如智能體重秤、智能空氣凈化器、智能洗衣機等)提供所接入Wi-Fi網路所需要的SSID和對應密碼的過程。由於智能家居設備大多缺乏輸入界面,使用者沒有辦法像使用計算機或者智能手機一樣手工輸入相關的信息,因此往往需要依賴於其他的一些途徑(例如手機APP以及輔助的AP熱點等)來向設備提供所需要的登陸憑據。我們的研究表明,這種在智能家居設備上獨有的應用場景存在諸多安全問題。特別地,我們針對一類無線配網方案——SmartCfg配網方案開展的安全分析表明,當前市場上廣泛使用的各類SmartCfg配網方案(來自於八家主流無線晶元商)中,多數方案均會導致Wi-Fi密碼被攻擊者解密獲取,而針對市面上常見的超過60款智能家居設備的實際調查更是證實了這種危害的廣泛存在:超過三分之二的設備確確實實受到此問題影響!我們的工作已經撰寫了學術論文——Passwords in the Air: Harvesting Wi-Fi Credentials from SmartCfg Provisioning,並被無線安全領域頂級的國際學術會議WiSec18錄用,同時也將會在今年5月13日在北京舉辦的首屆DEF CON China安全會議上做相關報告。為了讓大家更好地了解我們發現的相關安全問題,我們論文的主要作者李昶蔚和蔡洤朴同學對這一議題進行詳細的介紹,在專欄上第一時間和大家分享:
0x0 智能家居應用場景
一個典型的智能家居系統由三個部分組成:智能設備、App、物聯網雲平台。智能設備用來完成某一特定的功能(比如控制開關,監控室內溫濕度),這些設備往往帶有通信功能(通常利用Wi-Fi模塊連入互聯網)。同時,智能設備所屬的物聯網雲平台還會提供相應的App,用來控制設備並了解設備的狀態。雲平台用來管理數據的存儲和實現遠程控制。
如果App和智能設備處於同一個Wi-Fi環境下,App就可以與設備直接通信,此時,通過App向設備發送控制指令而不需要與雲平台交互,智能設備可以向雲平台上傳自身的狀態。為了支持在家庭外面(如在公司)遠程管理物聯網設備,智能設備還支持通過App遠程控制,這種模式下,App通過雲平台作為中轉實現改變設備的狀態,而智能設備只需向雲平台同步狀態即可。
在智能家居的領域中,目前大多數智能設備都採用無線網路連接,設備入網便是一個必不可缺少的環節。智能設備入網後,用戶可通過移動端上的App來遠程操控設備,讓其按照設定的功能執行一系列操作。假如用戶買了一個智能插座,因為插座本身沒有輸入界面,無法通過自身連入互聯網,此時就要藉助 App輸入SSID對應的PASSWORD來完成配網操作。這種配網技術是一種新的應用場景,因此也會引入新的安全風險。
0x1 SmartCfg配網方案
Texas Instruments(TI)在2012年首次推出Smart Config這種新型的配網技術,該技術旨在幫助那些沒有用戶交互界面的智能設備(例如插頭,門鎖,冰箱)連接到無線網路。經過五年的發展,這種技術已經被各種無線晶元廠商廣泛接受。諸如Realtek,MediaTek,MXCHIP和Espressif等無線晶元製造商也實現了他們類似的技術。在本文中,我們將使用SmartCfg來指代所有這些類似的技術。通常,SmartCfg配網技術具有三個典型的特徵:
- 智能設備需要依賴App將Wi-Fi密碼進行編碼並通過廣播發送給設備。
- 智能設備開啟無線網卡的混雜模式被動監聽數據,並且不知道發送者的身份。
- Wi-Fi密碼被編碼到一連串802.11數據包的元數據中(例如數據包的長度)。
所以,即使802.11數據包中的數據欄位使用WEP或WPA2加密,設備仍然可以通過監聽空中數據並解碼元數據的信息,而不管數據的實際內容,可以理解為一種側信道的傳輸方式。
如圖1所示,根據數據被編碼的方式,我們可以把SmartCfg的數據編碼模式分為三類:
1. Data in Multicast Addresses (DMA)
此時數據被編碼在Destination Mac Address的後23bit,即每一次發包過程可以傳輸23Bit。顯而易見,這種模式的效率比DPL更高。
2. Data in Packet Length (DPL)
此時數據被編碼在一連串802.11數據包的Length這一欄位,即每個數據包的長度隨著發送數據每一位元組的ASCII值的改變而改變。
3. Hybrid
在實際使用中,也可以同時以上兩種方式。比如在Destination Mac Address欄位中存放Index,在Length欄位存放Data。使用Index的優點是當解碼時,可以根據Index的序號得知數據包的順序。
根據我們的觀察,前導碼是SmartCfg的一個很重要的特徵。前導碼是一連串固定模式的數據包。使用前導碼有兩個好處,(1)可以通過前導碼識別出符合特定協議的數據包的開始,以便過濾掉空中其他來源的數據。(2)數據包的數據經過不同的終端進行加密,加密後的數據長度會發生變化,通過前導碼可以矯正這個偏倚。
0x2 SmartCfg安全分析
我們假設攻擊者把配網過程中最有價值的Wi-Fi密碼(和相應的Wi-Fi SSID)作為主要目標。並且攻擊者處於在無線區域網(WLAN)之外,無法物理或遠程連接到設備(否則認為他已經可以訪問內部網路)。要獲得此憑證,攻擊者只能從無線數據中恢復Wi-Fi密碼(即使數據可能被加密)。我們還假設攻擊者不會事先知道被攻擊者所使用的智能家居設備和移動應用程序,但他可以事先收集典型的SmartCfg解決方案,然後對其進行逆向工程並恢復使用的數據編碼方案。
分析SmartCfg的安全性的困難性包括:
1. 如何識別智能設備中使用的SmartCf配網方案
儘管我們事先知道多種SmartCfg的解決方案,但我們的分析設備都是真實的智能家居設備,而不是開發板。設備製造商通常不會標註哪種解決方案用於某個設備。因此,我們應該利用不同種類的旁路信息(例如,使用的無線晶元的型號)來幫助推導設備使用的SmartCfg解決方案。識別目標設備使用的是哪個SmartCfg方案為後續的安全分析打下了基礎。
2. 如何恢復配網協議中經過編碼的Wi-Fi憑據
即使知道了目標設備採用哪種SmartCfg方案,我們仍然無法確定其配網協議。因為晶元供應商提供的解決方案僅供設備製造商參考。製造商可以修改模板並實現自己的配網協議。要了解數據的編碼方案,我們還需要針對智能家居設備的代碼(即,固件和應用)進行逆向工程。由於製造商通常不會提供源代碼,對這些不同架構的二進位代碼逆向分析通常來說是比較困難的。有時甚至可能無法獲得設備的二進位代碼,唯一可用於分析的數據只有網路流量。
基於SDK代碼的安全分析
SmartCfg的SDK可以分為兩類:device SDK和mobile app SDK。Device SDK用來幫助設備固件的開發,mobile app SDK用來幫助移動終端與智能設備通信。如果一個設備(及其相應的應用)採用某種SmartCfg解決方案並集成了該解決方案的SDK,我們可以利用該SDK的功能來識別其使用的解決方案。我們發現大多數晶元供應商通常在其網站上提供SDK和文檔。因此,我們可以直接下載它們作為我們分析的參考。儘管我們收集的SDK包含device SDK和mobile
app SDK,但是逆向分析只需關注mobile app SDK,原因有二:首先,device SDK通常用於幫助分析設備固件。但是,如果製造商不提供固件並且Flash被保護以免被讀取,就很難獲取固件。而且,大多數智能設備的固件都是封閉的,對這種二進位程序的逆向工程通常是非常耗時的。其次,移動應用程序和設備之間的通信協議可以只通過分析移動應用程序來恢復。明顯,移動應用程序的分析受益於一系列成熟的工具。
簡而言之,我們可以從晶元供應商的網站下載mobile app SDK,然後從應用市場收集應用。為了檢查收集的應用程序是否包含某些mobile app SDK,我們利用Android第三方庫檢測器libscout來檢查目標應用程序與SDK的jar包之間的相似性。我們對native code也有相應的檢查。由於Native code通常編譯為共享庫(.so),並通過JNI調用其導出的函數。我們可以在mobile app SDK的共享庫中收集函數導出表作為特徵。當在Native code中找到相同的函數名稱,我們就可以確定某種方案被使用。
單純基於流量的分析
1 嗅探
我們使用TL-WN722N這塊網卡來對空中的數據進行嗅探,將無線網卡設置為監聽模型,抓取空中所有的符合802.11協議的數據包。然後使用Scapy庫編寫了一個程序將數據解析並記錄下來。我們定義了一個三元組(source mac address,destination mac address,data length)。同時,我們還記錄了當前環境下存在的SSID信息和其對應的BSSID。
2 定位前導碼
我們發現,App在配網時都會先發出一段前導碼(或者是同步碼),目的是通過前導碼過濾出符合特定協議的數據包。從監聽者的角度,匹配前導碼是確定配網特徵和配網發生最好的特徵。通過前導碼還可以確認source mac address,並通過source mac address過濾掉其他所有非配網相關的數據包。我們可以根據三元組來定位其數據存儲的位置。比如,如果destination mac address=ff:ff:ff:ff:ff:ff,那麼可以認為數據是存在data length。
3 差分分析
既然我們知道了數據所處的位置,我們就可以通過輸入不同的password欄位,並觸發配網流程。通過程序記錄下每次的三元組,通過三元組的特徵判定其存儲數據的位置,提取出數據,生成一條payload。然後比較兩條payload的不同之處,通常來說,改變password的一個位元組,payload對應的位置也會發生細微的改變,但是用於校驗的CRC值卻會發生明顯的變化,這個觀察使得我們能有效的定位password的位置。
0x3 安全分析結果
我們分析了市面上八家主流無線晶元廠商所提供的SDK(其市佔率如圖2所示,圖中各解決方案僅顯示頭兩個字母)。
其中有六款產品的SDK存在嚴重的安全問題,直接導致Wi-Fi密碼的泄露(安全問題如圖3所示)。
同時,通過對市面上821款流行的智能家居應用,我們發現其中有64款應用使用SmartCfg技術,而在其中,42款應用存在上述分析中的安全隱患,而這無疑顯示出了在智能家居領域所存在的廣泛安全隱患。以A廠家為例,其下的一款產品是一款裝備有Tensilica 32位微處理器的低功耗高整合度的Wi-Fi晶元模組。其設計的SmartCfg提供通信格式的內容如圖4所示
其中apPwd和apSsid是明文傳送的信息,設備在混雜模式下接收Wi-Fi配置信息,而在這段時間中任何人(包括用戶和攻擊者)都能直接監聽到該數據流。由於信息直接以明文進行傳輸,攻擊者很容易就可以獲取隱私信息。
而在另幾家公司B、C廠家所設計的方案中,其在SmartCfg的配置環節使用了預共享或硬編碼的密鑰。因而即便設計者使用了合理的如AES的加密方式,攻擊者仍然可以通過對市面上已有的產品進行逆向分析得到加密密鑰後,解密與上述相同方式得到加密傳輸信息從而獲得用戶的Wi-Fi憑據。
而在兩家著名公司D、E當中,其設計了一套複雜的通信協議格式(圖5):
在這套協議中我們可以發現,為了實現SmartCfg配網過程中的執行效率,SSID和密碼並沒有進行任何加密,而是通過對每個字元的ASCII碼值加上一組確定的等差數列作為基底的方式對Wi-Fi憑據進行編碼後再傳輸。因此即便攻擊者無法通過逆向分析獲得這組等差數列的具體數字分布,其也可通過簡單的差分分析的方法恢復出傳遞的消息內容,進而獲得用戶的Wi-Fi憑據隱私信息。
0x4 安全防護對策
截止我們的學術論文投稿前,我們都已通過官方聯繫途徑對涉及到的廠商及其協議中存在的問題進行了通報。許多廠商也及時進行了相應。同時,我們也提出如下一種較為合理的安全設計實踐。
如圖6所示,首先,智能家居App通過物理接觸(如掃描產品上的二維碼等特定標識)來獲得產品密鑰和設備ID。從而攻擊者無法通過枚舉來獲得產品信息。
之後,App向雲端伺服器發送用戶自身的身份信息和第一步中獲得的產品密鑰和ID,伺服器計算生成用於獨有的UUID並傳回給App。
接下來,App通過HMAC演算法(如HMAC_SHA256),使用設備ID和密鑰生成加密傳輸數據用的對稱加密密鑰。注意由於攻擊者並不能實際接觸到設備,無法獲得需要物理接觸來獲得的二維碼等信息,因此其無法生成該密鑰。
App生成密鑰後使用該密鑰在802.11協議下對Wi-Fi憑據和UUID信息進行加密後發送。
設備在使用SmartCfg技術接收到數據後,使用在其固件中預燒錄的特定設備密鑰(即使用HMAC演算法生成的加密密鑰)對消息進行解密。如果解密出的結果符合其設計的特定格式,其提取出其中的Wi-Fi憑據信息,連接上家庭無線網路並發送UUID至雲伺服器驗證,如果UUID非法,設備應拒絕來自智能家居應用的遠程控制。
0x5 總結
上海交通大學GoSSIP軟體安全小組長期致力於物聯網和智能家居安全研究。通過審計Wi-Fi提供的SDK晶元供應商和分析智能家居應用程序,我們針對真實世界的智能家居設備進行Wi-Fi配備的一類常見解決方案——SmartCfg解決方案開展了系統性安全分析,並對821個流行的智能家庭應用App進行了安全審計。我們發現,儘管SmartCfg方案方便了Wi-Fi配置,現有的SmartCfg解決方案很少認真考慮並採用隱私保護,因此引入了較多的安全威脅。我們希望我們的研究可以提高相關產業安全問題的意識,並指導晶元和設備的開發人員構建更安全的SmartCfg配網解決方案。
推薦閱讀:
※自稱世界上最權威監控軟體FlexiSpy被黑刪庫,怎麼做到的?
※信息安全讀研北郵 or中科院信工所,二者哪個學到的知識多些,哪個對女生來說更具優勢,二者的優缺點是?
※未來20年,新技術將從哪些方面改變人的消費方式?
※暴雪遊戲存在嚴重遠程控制漏洞,數億用戶受影響
※中國信息安全現狀如何?