(浙江大學 網(wǎng)絡空間安全學院, 浙江 杭州 310027)
隨著物聯(lián)網(wǎng)設備的普及,針對物聯(lián)網(wǎng)設備的攻擊也層出不窮.諸如網(wǎng)絡攝像頭、智能家居等物聯(lián)網(wǎng)設備由于廠商對安全性的重視不夠?qū)е掳踩┒床粩嘤楷F(xiàn),設備持續(xù)在線的特性又使得漏洞被攻擊利用的概率大大提高.這嚴重威脅了用戶的安全和隱私,甚至威脅整個互聯(lián)網(wǎng)的安全性.例如,一些網(wǎng)絡攝像頭使用默認的用戶名和密碼[1](如 admin/admin)或者有隱藏的后門[2],攻擊者可以遠程控制設備窺視用戶隱私.由物聯(lián)網(wǎng)設備組成的 Mirai 僵尸網(wǎng)絡對域名解析服務商 Dyn 發(fā)動拒絕服務(DDoS)攻擊,導致美國和歐洲很多知名網(wǎng)站如 Netflix、 GitHub 等停止工作,造成了極大的影響[3].
本文從物聯(lián)網(wǎng)設備軟件安全的感知、分析和防御角度出發(fā),梳理已有的研究工作,并且對這一領域一些新的研究方向和趨勢進行初步展望.本文主要關注設備的軟件安全方面,對于設備的通信安全、硬件安全等方面則不做探討.
蜜罐系統(tǒng)作為感知威脅的傳統(tǒng)手段之一,用其感知和捕獲攻擊有著廣泛的應用.近年來出現(xiàn)了一些針對物聯(lián)網(wǎng)設備的蜜罐系統(tǒng).然而由于物聯(lián)網(wǎng)設備的特點(硬件和軟件的碎片化),將蜜罐系統(tǒng)使用在物聯(lián)網(wǎng)設備中遇到了不小的挑戰(zhàn).
IoTPOT[4]是用來捕獲對物聯(lián)網(wǎng)設備Telnet程序進行攻擊的蜜罐.由于設備中的Telnet服務器會采用弱密碼,攻擊者可以通過預置的密碼字典來登陸服務器.IoTPOT通過模擬不同設備對于Telnet請求的響應同攻擊者進行交互.在交互的過程中記錄下攻擊者的來源、發(fā)起的命令等信息.作者將該蜜罐部署在165個IP地址中,并且模擬了29個不同設備的響應.在一個月的數(shù)據(jù)收集中,總共捕獲到將近5萬次的成功攻擊.對攻擊的進一步分析發(fā)現(xiàn),現(xiàn)實攻擊者在成功登錄設備后,往往會下載載荷(payload)以發(fā)起進一步的攻擊.IoTPOT雖然成功捕獲到一些攻擊,但是其缺點在于交互性交叉,而且只能捕獲單一攻擊行為.
SIPHON采用真實的物聯(lián)網(wǎng)設備來組成蜜罐系統(tǒng)[5].通過分布在各地的虛擬機接入點(稱為 Wormholes)來接收外來請求并將請求分發(fā)到后端真實設備,然后通過分析流量來檢測攻擊.最近的一個系統(tǒng)HoneyCloud通過真實的硬件平臺和軟件模擬器混合的方式來構(gòu)建蜜罐系統(tǒng)[6].通過近兩年的持續(xù)監(jiān)測,該系統(tǒng)捕獲了八種不同的攻擊行為,比如竊取數(shù)據(jù)(設備的登錄密鑰)、發(fā)起DDoS攻擊等.采用硬件平臺的蜜罐系統(tǒng)雖然交互性較好,但是構(gòu)建成本高(需要購買不同的真實設備),并且很難對攻擊的過程進行插樁(對真實設備上的軟件進行插樁難度較大).而基于軟件系統(tǒng)的蜜罐(如HoneyCloud中的軟件蜜罐)雖然部署容易,但是交互程度差,對目標系統(tǒng)的模擬完整度不高,容易被攻擊者識別.
為了解決這些問題,提高蜜罐系統(tǒng)的交互性,IoTCandyJar采用了機器學習的方法自動學習物聯(lián)網(wǎng)設備的行為[7].具體來說,IoTCandyJar 通過對互聯(lián)網(wǎng)上公共的物聯(lián)網(wǎng)設備的行為進行學習記錄來不斷完善行為數(shù)據(jù)庫.當接收到新的網(wǎng)絡請求后,IoTCandyJar 首先判斷該請求是否已經(jīng)學習過.如果是,則返回之前保存的行為.否則,向互聯(lián)網(wǎng)上其他設備發(fā)送相同的請求以獲得真實設備的響應數(shù)據(jù).圖1是該系統(tǒng)結(jié)構(gòu)圖.該方法能以較低成本獲得物聯(lián)網(wǎng)設備的真實交互行為,因此蜜罐系統(tǒng)交互性高.不過該方法只能獲得真實設備中較低層次的響應信息(如 HTTP 響應中的頭信息),不適用于需要多次交互的攻擊場景.同樣由于沒有插樁機制,無法對攻擊的整個過程進行實時監(jiān)測和記錄.
圖1 IotCandyJar系統(tǒng)結(jié)構(gòu)圖Fig.1 The system architecture of IoTCandyJar
雖然可以通過蜜罐系統(tǒng)來感知針對物聯(lián)網(wǎng)設備的威脅,但由于設備的硬件碎片化(采用不同的CPU架構(gòu))以及軟件的碎片化(基于多種操作系統(tǒng)平臺),導致目前沒有一個較好的軟件模擬平臺,因此,蜜罐系統(tǒng)的可擴展性和交互性都還比較差.如何設計開發(fā)一個交互性好、仿真度高的蜜罐系統(tǒng)仍然是一個具有挑戰(zhàn)的問題.
除了主動通過蜜罐系統(tǒng)捕獲攻擊意外,研究人員也對目前由物聯(lián)網(wǎng)設備組成的僵尸網(wǎng)絡進行了測量和行為分析.比較典型的工作是對于Mirai[3]和Hajime[8]的分析.Mirai是第一個引起公眾注意的物聯(lián)網(wǎng)僵尸網(wǎng)絡.它第一次出現(xiàn)在2016年年中,在長達半年的過程中,衍生出很多的變種.該網(wǎng)絡高峰期感染了將近60萬臺設備.圖2顯示了Mirai僵尸網(wǎng)絡感染主機數(shù)量隨著時間遷移圖.通過對DNS服務器發(fā)起DDoS攻擊,導致了很多知名網(wǎng)站的癱瘓.研究顯示物聯(lián)網(wǎng)設備的安全狀態(tài)不容樂觀,一個基于字典的簡單攻擊就可以感染成千上萬臺物聯(lián)網(wǎng)設備.Hajime是一個新的僵尸網(wǎng)絡,雖然其目標很多與Mirai相同,但在設計和操作上有很大差異.Hajime使用公共點對點網(wǎng)絡作為其命令和控制(C&C)的基礎設施,并定期引入新的攻擊,從而提高其可恢復性.
圖2 Mirai僵尸網(wǎng)絡感染主機數(shù)量示意圖[3]Fig.2 The number of infected hosts by Mirai[3]
圖2的不同深淺線條表示通過不同的端口進行掃描和感染的主機數(shù)量.從圖2可見,該網(wǎng)絡使用了不同的協(xié)議和端口來實施感染行為.
Cetin等[9]研究了如何清除Mirai僵尸網(wǎng)絡中受感染的機器.研究表明,ISP在僵尸網(wǎng)絡節(jié)點清理方面扮演著至關重要的角色,ISP可以通過建立隔離網(wǎng)絡的方式來清除僵尸網(wǎng)絡;其次,對感染用戶進行主動通知是可行的,盡管目前基于用戶通知和清理建議的可用性比較低.不過筆者也發(fā)現(xiàn),ISP目前并沒有太高的積極性對僵尸網(wǎng)絡進行主動的清理.如何從經(jīng)濟和法律的層面來促使ISP擔負起相關的責任需要進一步的探討.
針對物聯(lián)網(wǎng)設備碎片化的特點,研究人員通過靜態(tài)大規(guī)模分析尋找設備安全性問題,開發(fā)動態(tài)分析平臺分析設備固件安全,以及使用模糊測試進行漏洞挖掘.
Costin等[10]在 2014 年發(fā)布了第一個大規(guī)模物聯(lián)網(wǎng)固件安全性的研究報告,該研究收集了超過3萬個物聯(lián)網(wǎng)設備的固件,然后使用工具對固件進行分析.他們的研究發(fā)現(xiàn)了多個之前沒有被報道的零日漏洞,如私鑰沒有被正確保護等.他們的后續(xù)工作則從固件的 Web 服務器入手,分析其中潛在的安全威脅[11].Firmalice利用二進制分析的方法,尋找固件中一類特殊的安全漏洞[12]:廠商預留的后門.這里的后門不一定是具有惡意的,也可能是廠商為了調(diào)試方便而預置在固件中.不過攻擊者仍然可以利用這樣的后門來獲得設備的控制權.Firmalice使用符號執(zhí)行等技術自動檢測固件中隱藏的后門并能獲取登錄的密鑰.不過由于該系統(tǒng)是一個靜態(tài)分析系統(tǒng),不能對發(fā)現(xiàn)的安全問題進行自動化的測試和確認.
靜態(tài)分析雖然能快速發(fā)現(xiàn)問題,然而靜態(tài)分析的誤報率比較高,并且很難對設備的安全問題做動態(tài)行為監(jiān)控和確認.為了解決這個局限性,研究人員開發(fā)了不同的動態(tài)分析系統(tǒng).Firmadyne是第一個能大規(guī)模地動態(tài)分析設備固件的系統(tǒng)[13].它通過使用軟件模擬器(QEMU)對物聯(lián)網(wǎng)設備的動態(tài)進行仿真和分析.其利用修改過的Linux內(nèi)核啟動固件的用戶態(tài)程序,并且自動化生成設備網(wǎng)絡配置.針對超過2萬個固件的實驗表面,F(xiàn)IRMADYNE能對已知的攻擊行為進行分析并且能發(fā)現(xiàn)未知的漏洞.Avatar[14]和Avatar2[15]通過混合使用硬件真實執(zhí)行和軟件模擬執(zhí)行來分析設備固件.它可以選擇性地在真實設備和虛擬機平臺之間進行切換,并且結(jié)合S2E進行符號執(zhí)行和浮點分析來分析固件行為.雖然系統(tǒng)的分析完整度較高,但是其依賴JTAG硬件調(diào)試端口導致很難大規(guī)模使用該分析平臺.
近年來的研究表明,模糊測試在發(fā)現(xiàn)漏洞方面具有非常好的效果.因此,研究人員也嘗試將模糊測試引入到物聯(lián)網(wǎng)設備安全中.IoTFuzzer在無法訪問固件的情況下,可以自動化發(fā)現(xiàn)物聯(lián)網(wǎng)設備中的內(nèi)存破壞(memory corruption)漏洞[16].他們分析物聯(lián)網(wǎng)設備通常是可以通過官方的應用來進行控制的.因此,可以通過分析應用和設備之間的交互協(xié)議,識別和重用特定的程序的邏輯(如加密)來改變測試用例(特別是消息字段),自動生成通信數(shù)據(jù).然后觀察設備的返回值,從而檢測設備固件的軟件漏洞.該方法的缺點在于只能作用于有官方控制應用的物聯(lián)網(wǎng)設備,適用度不高.Muench等[17]對物聯(lián)網(wǎng)設備和內(nèi)存錯誤漏洞的影響進行分類.研究在不同種類的設備中所存在的內(nèi)存錯誤漏洞后,評估了應對這些漏洞的方法,然后提出了一個基于Avatar和Panda的模糊測試系統(tǒng).該系統(tǒng)使用了6種不同的現(xiàn)存部分仿真或全部仿真的啟發(fā)式分析方法.通過對這個系統(tǒng)一系列的實驗,得出結(jié)論,這6種分析方法可以有效提高對嵌入式設備的模糊測試效率.該系統(tǒng)能分析的設備固件種類受限,并且分析的速度也有待提高.Firm-AFL將用在桌面系統(tǒng)上的AFL移植到物聯(lián)網(wǎng)設備中[18],通過將進程級別分析平臺同全系統(tǒng)分析平臺Firmadyne結(jié)合,使用不同的模糊測試用例策略來自動化發(fā)現(xiàn)系統(tǒng)固件中的安全問題.采用進程級別的分析可以大幅度提高系統(tǒng)的分析效率.實驗結(jié)果表明,該平臺能重現(xiàn)舊的安全威脅和發(fā)現(xiàn)新的漏洞.
另外,最近的一些研究嘗試通過代碼相似度的方法來進行固件安全性分析.該方面的基本思想是如何快速準確地通過已經(jīng)有的漏洞模式,快速判斷一個新的固件中是否也存在類似的漏洞.這里的挑戰(zhàn)在于往往要分析的固件沒有源代碼,并且代碼的架構(gòu)、編譯器工具、編譯選項等都有不同.這給相似度分析帶來了比較大的挑戰(zhàn).Pewny等[19]提出了基于輸入和輸出的賦值表達式的方法來表達一個程序中基本塊的語義,然后通過I/O的行為來尋找和漏洞代碼具有相似模式的代碼路徑.另外,David等[20]發(fā)現(xiàn),在通過相似度進行漏洞匹配的時候,基于函數(shù)級別的相似度往往不能準確進行匹配,還需要配合函數(shù)周圍的信息,其提出的FirmUp系統(tǒng)能對不同體系架構(gòu)中的固件中的漏洞進行快速準確的匹配.另外,研究人員還嘗試基于神經(jīng)網(wǎng)絡對跨體系架構(gòu)的固件進行代碼相似度分析[21].
對于設備軟件安全性增強的工作主要集中在提供新的安全原語,基于編譯器對于軟件進行安全加固,實現(xiàn)新的輕量級的保護方案等.
Dominance是一個新的物聯(lián)網(wǎng)系統(tǒng)的可信計算原語[22],它可以保證在短時間內(nèi)對被攻擊的物聯(lián)網(wǎng)設備進行恢復,即使攻擊者已經(jīng)控制了這些設備.并且它可以對設備進行強制的安全固件升級.C-FLAT通過在設備上使用控制流完整性來進行安全性保證[23].具體來說,該系統(tǒng)首先計算合法的控制流圖,然后通過在運行時計算控制流信息,并且采用遠程認證的方式將控制流信息發(fā)送到認證服務器進行驗證.一旦有非法的控制流跳轉(zhuǎn)發(fā)生,認證服務器能感知到威脅并采取行動.C-FLAT的缺點在于其計算控制流跳轉(zhuǎn)哈希值的開銷過大,并且也不能保證數(shù)據(jù)流完整性.EPOXY通過權限覆蓋(Privilege Overlaying)的方式對代碼進行權限分割[24].也就是說只有需要執(zhí)行特權操作的代碼才需要運行在特權態(tài),其他的代碼只需要運行在普通的特權等級即可.系統(tǒng)通過編譯器對軟件代碼進行自動分析并且自動對代碼進行特權分割.圖3顯示了一個典型的系統(tǒng)的內(nèi)存映射.EPOXY通過對代碼的特權分割,規(guī)定哪一些代碼可以訪問哪一些具體的內(nèi)存地址.Abbasi等[25]分析了現(xiàn)有的嵌入式操作系統(tǒng)中采用的安全措施,然后提出了μArmor系統(tǒng).它基于編譯器將現(xiàn)有的軟件安全措施應用到操作系統(tǒng)中,對軟件代碼進行加固.
圖3 一個典型的基于ARM Cortex-M芯片的系統(tǒng)內(nèi)存映射圖
Fig.3 A typical memory mapping for systems based on the ARM Cortex-M architecture
針對設備軟件安全研究越來越受到重視,從近年來的安全會議上可見收錄的相關文章逐漸增多.本文對一些新的研究方向提出初步的展望.
(1)新的威脅感知方法.雖然通過蜜罐系統(tǒng)可以感知到針對物聯(lián)網(wǎng)設備的攻擊,但是目前的蜜罐系統(tǒng)交互性和仿真性還比較差.如何設計出一個比較好的物聯(lián)網(wǎng)設備蜜罐系統(tǒng)是需要研究的問題.另外,還可以通過對網(wǎng)絡中多維的數(shù)據(jù)信息進行融合分析來感知威脅,如融合DNS數(shù)據(jù)、ISP網(wǎng)絡流量數(shù)據(jù)以及設備固件中提取訪問模式,從而能感知可疑和未知的威脅.
(2)新的靜態(tài)分析工具和方法.目前的靜態(tài)分析方法在擴展性和準確度方面還有比較大的提升空間.特別是目前的物聯(lián)網(wǎng)設備軟件多基于ARM和MIPS架構(gòu),而目前的靜態(tài)分析工具對于這兩類架構(gòu)支持程度不高.初期研究表明現(xiàn)有的反編譯工具在分析ARM代碼方面準確度比較低,對于代碼/數(shù)據(jù),函數(shù)邊界識別還需要很大提升空間.因此,如何提出新的靜態(tài)分析的工具和方法也是將來可以進行研究的方向之一.
(3)新的動態(tài)分析平臺.FIRMADYNE作為為數(shù)不多的動態(tài)分析平臺[13],對固件分析成功率比較低.實驗結(jié)果表明,F(xiàn)IRMADYNE只能成功運行約30%的基于Linux操作系統(tǒng)的物聯(lián)網(wǎng)設備固件.因此,如何能提高運行的成功率,自動化尋找失敗的原因并且進行修復是值得探索的方向.同時,對于非Linux軟件平臺如何去進行動態(tài)分析,也是目前還沒有解決的難題.