穆超,楊明,楊明曌,王彪,王繼志
(齊魯工業(yè)大學(xué)(山東省科學(xué)院) 山東省計(jì)算中心(國(guó)家超級(jí)計(jì)算濟(jì)南中心)山東省計(jì)算機(jī)網(wǎng)絡(luò)重點(diǎn)實(shí)驗(yàn)室,山東 濟(jì)南 250014)
隨著物聯(lián)網(wǎng)時(shí)代的到來(lái),網(wǎng)絡(luò)攝像頭、網(wǎng)絡(luò)路由器、網(wǎng)絡(luò)打印機(jī)、可穿戴設(shè)備、智能電視、智能汽車等物聯(lián)網(wǎng)設(shè)備不斷普及,傳統(tǒng)企業(yè)、新興科技企業(yè)等各類物聯(lián)網(wǎng)設(shè)備生產(chǎn)商加速進(jìn)軍物聯(lián)網(wǎng)應(yīng)用市場(chǎng)。根據(jù)Gartner在ITxpo 2018的報(bào)告[1],到2021年物聯(lián)網(wǎng)設(shè)備預(yù)計(jì)可達(dá)250億個(gè),市場(chǎng)相當(dāng)龐大。與此同時(shí),針對(duì)物聯(lián)網(wǎng)設(shè)備的攻擊和安全事件也不斷攀升,已嚴(yán)重威脅到用戶的個(gè)人隱私甚至生命財(cái)產(chǎn)安全。在2018年的各種物聯(lián)網(wǎng)安全事件中[2],攻擊對(duì)象已從簡(jiǎn)單的家用設(shè)備上升到工控、醫(yī)療、交通甚至航空航天領(lǐng)域,攻擊類型涵蓋利用僵尸網(wǎng)絡(luò)實(shí)施的DDoS攻擊[3]、利用網(wǎng)絡(luò)攝像頭破解實(shí)施的個(gè)人隱私盜取[4]等。物聯(lián)網(wǎng)安全威脅已滲透至經(jīng)濟(jì)社會(huì)發(fā)展的多個(gè)層面,解決物聯(lián)網(wǎng)安全問(wèn)題刻不容緩。
物聯(lián)網(wǎng)攻擊日益猖獗的重要原因在于,物聯(lián)網(wǎng)已成為一種新的網(wǎng)絡(luò)攻擊向量,且物聯(lián)網(wǎng)設(shè)備本身的安全設(shè)計(jì)存在嚴(yán)重缺陷。多數(shù)物聯(lián)網(wǎng)設(shè)備生產(chǎn)商在設(shè)計(jì)和開發(fā)過(guò)程中,優(yōu)先考慮實(shí)現(xiàn)功能以搶占市場(chǎng)而忽視安全因素,例如在開發(fā)階段缺少對(duì)已存在漏洞的安全處理,在預(yù)交付階段缺少安全測(cè)試等。在硬件方面,物聯(lián)網(wǎng)設(shè)備資源受限,其接入網(wǎng)絡(luò)后更難以實(shí)施安全配置與部署,而暴露于公網(wǎng)的物聯(lián)網(wǎng)設(shè)備尤其易遭黑客攻擊和利用。在操作系統(tǒng)方面,大量物聯(lián)網(wǎng)設(shè)備對(duì)已有嵌入式系統(tǒng)進(jìn)行了直接引用或簡(jiǎn)單二次開發(fā),加劇了將已有漏洞帶入物聯(lián)網(wǎng)系統(tǒng)的風(fēng)險(xiǎn)。
物聯(lián)網(wǎng)設(shè)備在軟硬件方面的差異性、不同功能導(dǎo)致的系統(tǒng)層與應(yīng)用層的差異性、物聯(lián)網(wǎng)設(shè)備指令架構(gòu)的復(fù)雜性(如ARM、MIPS、PowerPC等異構(gòu)類型)以及開發(fā)源碼與文檔的公開性等,均導(dǎo)致難以對(duì)所有物聯(lián)網(wǎng)設(shè)備進(jìn)行統(tǒng)一的漏洞和建模分析,無(wú)法實(shí)現(xiàn)自動(dòng)化、批量化地掃描與發(fā)現(xiàn)漏洞。因此,當(dāng)前的物聯(lián)網(wǎng)設(shè)備漏洞挖掘仍以人工分析和挖掘?yàn)橹鳌?/p>
當(dāng)前針對(duì)物聯(lián)網(wǎng)固件的安全研究,多數(shù)是基于固件解壓文件(包括二進(jìn)制可執(zhí)行文件、源碼文件等)進(jìn)行分析,并對(duì)新安全漏洞或新安全威脅進(jìn)行挖掘。Thomas等[5]采用靜態(tài)分析方法挖掘硬編碼類型的漏洞,通過(guò)提取函數(shù)特征并比對(duì)函數(shù)與靜態(tài)數(shù)據(jù)進(jìn)行建模識(shí)別,通過(guò)CFG程序控制流圖確定數(shù)據(jù)比對(duì)的代碼塊影響力和重要度,以此評(píng)估函數(shù)重要性,在此基礎(chǔ)上發(fā)現(xiàn)了硬編碼的認(rèn)證后門漏洞,并恢復(fù)SOAP、FTP協(xié)議指令集等。在后續(xù)研究中,Thomas等[6]進(jìn)一步采用了半監(jiān)督學(xué)習(xí)方法,將二進(jìn)制功能進(jìn)行了分類,在語(yǔ)義描述的基礎(chǔ)上識(shí)別后門,并成功挖掘到tenda設(shè)備后門。Davidson等[7]使用KLEE符號(hào)執(zhí)行引擎[8]搭建工具FIE,使用一種符號(hào)化語(yǔ)言,建立行為的統(tǒng)一描述方式,并進(jìn)行符號(hào)執(zhí)行,通過(guò)內(nèi)存污染等方法提升分析覆蓋率和準(zhǔn)確性,可挖掘到內(nèi)存破壞和外網(wǎng)IO誤用類的漏洞。但由于該工具依托符號(hào)執(zhí)行,需獲取固件源碼,且執(zhí)行環(huán)境與真實(shí)環(huán)境存在差異,因此可能出現(xiàn)誤報(bào)。此外,符號(hào)執(zhí)行存在路徑爆炸問(wèn)題,使其應(yīng)用受到進(jìn)一步限制。這些漏洞挖掘方法雖各有優(yōu)勢(shì),但都需對(duì)二進(jìn)制可執(zhí)行程序進(jìn)行反編譯并模擬執(zhí)行,導(dǎo)致運(yùn)行速度較慢。
綜上所述,現(xiàn)有方法均無(wú)法針對(duì)數(shù)字證書文件進(jìn)行漏洞挖掘,而證書泄露漏洞是物聯(lián)網(wǎng)系統(tǒng)中最重要的漏洞形式之一,可能造成敏感信息泄漏、證書偽造、惡意程序傳播等危害,如CVE-2017-8222[9]即為證書文件泄露導(dǎo)致攻擊者獲取敏感信息的典型案例。針對(duì)以上問(wèn)題,本文設(shè)計(jì)了一種面向物聯(lián)網(wǎng)固件中數(shù)字證書文件的識(shí)別和校驗(yàn)系統(tǒng),可檢測(cè)固件中是否存在數(shù)字證書泄露漏洞,并對(duì)泄露的數(shù)字證書進(jìn)行有效性驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)可對(duì)多款物聯(lián)網(wǎng)設(shè)備內(nèi)的證書泄露漏洞進(jìn)行有效識(shí)別,并對(duì)其中的無(wú)效數(shù)字證書進(jìn)行檢測(cè)。
根據(jù)系統(tǒng)整體設(shè)計(jì)要求,本系統(tǒng)主要包括固件收集預(yù)處理模塊、證書文件識(shí)別模塊、證書有效性校驗(yàn)?zāi)K、數(shù)據(jù)存儲(chǔ)模塊。
其中固件收集預(yù)處理模塊主要采用網(wǎng)絡(luò)爬蟲在不同廠商、不同設(shè)備的官方網(wǎng)站,論壇或FTP站點(diǎn)下載固件原始文件,然后經(jīng)過(guò)初步識(shí)別分析出固件的架構(gòu)并進(jìn)行文件解壓和提??;然后對(duì)解壓后的文件進(jìn)行格式校驗(yàn)識(shí)別出證書文件,提交至證書有效性校驗(yàn)?zāi)K,根據(jù)證書的格式讀取證書內(nèi)容,分析證書屬性,進(jìn)行有效性校驗(yàn);最后根據(jù)識(shí)別出的證書有效性分別存入數(shù)據(jù)庫(kù),方便后續(xù)分析不同廠商、不同設(shè)備、不同版本等因素對(duì)證書的影響,提高對(duì)新增固件檢測(cè)的可擴(kuò)展性。
系統(tǒng)架構(gòu)如圖1所示。
圖1 系統(tǒng)架構(gòu)圖Fig.1 System architecture diagram
固件獲取是分析固件功能的基礎(chǔ),通常來(lái)說(shuō)固件獲取有兩類方法:一是直接從物聯(lián)網(wǎng)設(shè)備中提取;二是從設(shè)備廠商官方網(wǎng)站下載。Vasile等[10]總結(jié)了多種從物聯(lián)網(wǎng)設(shè)備提取固件的方法,但其局限性在于必須擁有固件和固件提取的硬件設(shè)備;從成本和難度考慮,本系統(tǒng)采用從官網(wǎng)下載固件的方法。由于設(shè)備官網(wǎng)提供的下載渠道中包含固件的升級(jí)包和補(bǔ)丁包,本系統(tǒng)對(duì)完整版固件進(jìn)行篩選,結(jié)合固件分析工具Firmadyne[11],編寫爬蟲進(jìn)行下載。
將下載的固件導(dǎo)入固件分析系統(tǒng),按照廠商等進(jìn)行分類,對(duì)固件操作系統(tǒng)和架構(gòu)進(jìn)行識(shí)別,如系統(tǒng)為L(zhǎng)inux、VxWorks,架構(gòu)為MIPS、ARM等;之后對(duì)固件解壓,基于匹配的固件頭特征碼、符號(hào)表等,利用Binwalk[12]和Firmware Mod Kit[13]工具實(shí)現(xiàn)對(duì)常見(jiàn)固件文件系統(tǒng)(如Sasquash和Jefferson等)的提取。
解壓后的內(nèi)容為各類文件的集合,如Web服務(wù)相關(guān)的前端頁(yè)面文件HTML、JavaScript、CSS等,配置類文件config、xml、ini等。根據(jù)數(shù)字證書文件的特點(diǎn),基于格式搜索和特征匹配兩種方法搜索證書類文件。首先根據(jù)文件File類型過(guò)濾出text類型的文件,然后識(shí)別pem、cer、key、der、crt、pfx等后綴格式的文件,并根據(jù)數(shù)字證書文件頭的特征字符匹配篩選證書文件。
本系統(tǒng)依托Binwalk工具,檢測(cè)到某些固件中的可執(zhí)行文件包含軟件類證書(如DER),因此增加對(duì)軟件中的數(shù)字證書進(jìn)行提取的功能,并將提取結(jié)果添加到證書識(shí)別庫(kù)。
對(duì)識(shí)別出的證書進(jìn)行格式分析,使用證書查看工具(如OpenSSL等)分析證書屬性,如頒發(fā)者、有效期、密鑰長(zhǎng)度、使用者等,并對(duì)證書有效性進(jìn)行校驗(yàn)。
完成證書校驗(yàn)后,根據(jù)其有效性存儲(chǔ)到不同數(shù)據(jù)庫(kù)中,為后續(xù)分析研究提供基礎(chǔ)。有效證書和無(wú)效證書的數(shù)據(jù)庫(kù)中需要存儲(chǔ)的內(nèi)容包括固件名、生產(chǎn)廠商、證書路徑、證書文件名、證書文件Hash等,在無(wú)效證書數(shù)據(jù)庫(kù)中,還需要添加證書校驗(yàn)相關(guān)屬性,包括頒發(fā)者、有效期、使用者、密鑰長(zhǎng)度等。建立數(shù)據(jù)庫(kù)可將有效證書和無(wú)效證書做橫向?qū)Ρ?,分析固件證書的分布和特點(diǎn),以及方便對(duì)添加的新固件進(jìn)行高效管理。
在整體設(shè)計(jì)、模塊設(shè)計(jì)的基礎(chǔ)上,研發(fā)了基于數(shù)字證書識(shí)別及校驗(yàn)的物聯(lián)網(wǎng)固件安全檢測(cè)系統(tǒng),具體如下。首先采用Python編寫爬蟲,下載了47個(gè)不同廠商、不同產(chǎn)品的固件;對(duì)下載的47個(gè)固件進(jìn)行文件解壓預(yù)處理,并根據(jù)證書格式和特征進(jìn)行匹配,檢測(cè)到15個(gè)固件存在證書泄露漏洞;因同一固件可能泄露多個(gè)證書,對(duì)固件中所有證書匯總,共得到泄露的證書57個(gè);對(duì)泄露證書進(jìn)一步研究,檢測(cè)到不同固件的不同版本中存在相同證書文件,對(duì)證書文件進(jìn)行Hash和去重,最終共檢測(cè)到19個(gè)不同的證書泄露。證書去重之后的統(tǒng)計(jì)結(jié)果如表1所示。
表1 證書去重統(tǒng)計(jì)Table 1 Certificate deduplication statistics
分析證書的格式,將其分為Public、Private、Certificate,并根據(jù)不同的證書類型讀取屬性值。根據(jù)當(dāng)前時(shí)間計(jì)算出證書的有效性,在去重后的19個(gè)證書文件中檢測(cè)到3個(gè)已過(guò)期。過(guò)期證書的統(tǒng)計(jì)結(jié)果如表2所示。
表2 過(guò)期證書統(tǒng)計(jì)Table 2 Expired certificate statistics
讀取證書的詳細(xì)信息并存入設(shè)計(jì)的數(shù)據(jù)庫(kù),將有效證書、無(wú)效證書兩個(gè)庫(kù)分類管理,以方便對(duì)新增固件進(jìn)行檢測(cè)。測(cè)試結(jié)果表明,對(duì)于新增固件360P4-V2.0.9.55031.bin,固件解壓識(shí)別到證書文件ssl.pem,計(jì)算其Hash值并比對(duì),與數(shù)據(jù)庫(kù)內(nèi)固件360POP-P0-V2.0.55.55073.bin中ssl.pem文件的Hash值相同,且此ssl.pem已被標(biāo)記為過(guò)期證書,據(jù)此判定新固件存在證書泄露漏洞,且此證書是無(wú)效的。對(duì)新固件的證書檢測(cè)結(jié)果如圖2所示。
圖2 新固件過(guò)期證書檢測(cè)Fig. 2 New firmware expired certificate detection
本文設(shè)計(jì)并實(shí)現(xiàn)了基于數(shù)字證書識(shí)別及校驗(yàn)的物聯(lián)網(wǎng)固件安全檢測(cè)系統(tǒng)。以物聯(lián)網(wǎng)固件作為檢測(cè)對(duì)象,研究固件中公鑰、私鑰、簽名類數(shù)字證書文件特征,設(shè)計(jì)了一種數(shù)字證書檢測(cè)模型,自動(dòng)進(jìn)行固件提取、數(shù)字證書識(shí)別以及證書有效性檢測(cè),構(gòu)建證書管理數(shù)據(jù)庫(kù),并成功檢測(cè)到樣本之外存在數(shù)字證書缺陷的固件。該系統(tǒng)運(yùn)行高效,無(wú)需人工干預(yù),識(shí)別準(zhǔn)確率高,系統(tǒng)占用率小,數(shù)據(jù)庫(kù)支持固件樣本更新完善,具有良好的可擴(kuò)展性。后續(xù)將進(jìn)一步擴(kuò)大物聯(lián)網(wǎng)固件的樣本量,支持更多的檢測(cè)固件,并優(yōu)化數(shù)據(jù)庫(kù)的設(shè)計(jì)從而提高檢測(cè)效率。