張乃珩
(紐卡斯?fàn)柎髮W(xué),紐卡斯?fàn)朜E1 7RV,英國(guó))
目前,雖然USB設(shè)備作為在網(wǎng)絡(luò)信息系統(tǒng)中應(yīng)用非常普遍的一種終端設(shè)備,在輸入輸出設(shè)備、多媒體設(shè)備、通信設(shè)備、儲(chǔ)存器等領(lǐng)域發(fā)揮著越來(lái)越重要的作用,但是它的安全性問(wèn)題卻一直沒(méi)有得到足夠的關(guān)注和重視. 即使有像Stuxnet[1]這種典型的攻擊事件的警醒,提高了人們對(duì)USB設(shè)備安全問(wèn)題的關(guān)注度,但目前來(lái)看在該領(lǐng)域的研究仍然還有很多的問(wèn)題亟須解決.
為了厘清目前USB設(shè)備安全研究領(lǐng)域存在的問(wèn)題和挑戰(zhàn),本文從攻擊和防御兩個(gè)角度對(duì)已知的USB設(shè)備安全問(wèn)題展開(kāi)分析研究,并在此基礎(chǔ)上總結(jié)提出USB設(shè)備安全問(wèn)題的發(fā)展趨勢(shì),從而為未來(lái)的研究提供思路和方向.
自1991年USB1.0誕生以來(lái),USB協(xié)議得到了迅速發(fā)展,逐漸取代了很多其他串行總線協(xié)議而成為當(dāng)前應(yīng)用非常廣泛的一種數(shù)據(jù)傳輸方式,因此采用USB 協(xié)議的USB 設(shè)備在種類(lèi)和數(shù)量上也都得到了極大豐富.正是因?yàn)閁SB設(shè)備的大發(fā)展吸引了攻擊者的注意力,各種針對(duì)USB設(shè)備的攻擊技術(shù)開(kāi)始出現(xiàn),各類(lèi)網(wǎng)絡(luò)攻擊事件更加深了人們對(duì)USB設(shè)備安全問(wèn)題的關(guān)注.
基于安全問(wèn)題存在形式的不同,現(xiàn)有的USB設(shè)備安全問(wèn)題可以分為如圖1所示的四種類(lèi)型,即USB設(shè)備作為攻擊負(fù)載的傳播媒介、USB HID攻擊、BadUSB攻擊和驅(qū)動(dòng)漏洞利用攻擊.
圖1 USB設(shè)備安全問(wèn)題Fig.1 Security issues of USB equipments
隨著網(wǎng)絡(luò)安全防護(hù)技術(shù)的發(fā)展和實(shí)際部署的各種安全機(jī)制的逐步完善,以前通過(guò)網(wǎng)絡(luò)連接進(jìn)行的攻擊負(fù)載的傳播方式受到了很大限制,實(shí)現(xiàn)越來(lái)越困難,很容易被入侵檢測(cè)系統(tǒng)等檢測(cè)到. 另外,當(dāng)攻擊者的攻擊目標(biāo)部署在一個(gè)相對(duì)封閉的內(nèi)部網(wǎng)絡(luò)環(huán)境時(shí),例如工控系統(tǒng)、監(jiān)控系統(tǒng)等,如何將攻擊負(fù)載傳輸?shù)侥繕?biāo)所在的內(nèi)網(wǎng)中就成為攻擊者要解決的一個(gè)非?;A(chǔ)和關(guān)鍵的問(wèn)題.
針對(duì)上述問(wèn)題,隨著USB設(shè)備的普遍運(yùn)用,攻擊者開(kāi)始將目光轉(zhuǎn)移到USB設(shè)備上,尤其是針對(duì)使用USB協(xié)議的移動(dòng)存儲(chǔ)設(shè)備,例如優(yōu)盤(pán)、移動(dòng)硬盤(pán)等. 攻擊者通過(guò)分析發(fā)現(xiàn),為了方便使用,早期很多操作系統(tǒng)(例如2011年前的Windows 操作系統(tǒng))都支持和允許移動(dòng)存儲(chǔ)設(shè)備在其根目錄下添加autorun.inf 和setup.exe 文件,實(shí)現(xiàn)自動(dòng)運(yùn)行功能. 因此,當(dāng)移動(dòng)儲(chǔ)存設(shè)備通過(guò)USB接口連接到主機(jī)時(shí),通過(guò)自動(dòng)運(yùn)行功能可以實(shí)現(xiàn)多種自動(dòng)化的操作. 為了利用這一機(jī)制,攻擊者首先將惡意代碼置于存儲(chǔ)設(shè)備中,并通過(guò)設(shè)置autorun.inf 和setup.exe自動(dòng)執(zhí)行功能,實(shí)現(xiàn)將惡意代碼從存儲(chǔ)設(shè)備轉(zhuǎn)移到目標(biāo)主機(jī)的相應(yīng)操作,從而解決前面提到的攻擊負(fù)載傳播和傳染的問(wèn)題(如Stuxnet[1]、Conficker[2]、Flame[3]等). 圖2 展示了Stuxnet 攻擊的實(shí)現(xiàn)過(guò)程,可見(jiàn)攻擊者就是以?xún)?yōu)盤(pán)作為媒介,將攻擊負(fù)載從外網(wǎng)最終傳播到了伊朗核設(shè)施的相應(yīng)控制系統(tǒng)內(nèi).
圖2 Stuxnet攻擊流程Fig.2 Stuxnet attack flow
因此,USB設(shè)備安全問(wèn)題的早期表現(xiàn)主要是作為一種攻擊負(fù)載的傳播途徑,當(dāng)將攻擊負(fù)載復(fù)制到目標(biāo)主機(jī)后,具體的攻擊操作則仍然由攻擊負(fù)載實(shí)施,USB設(shè)備并不參與后續(xù)的攻擊操作.
隨著USB設(shè)備的普遍使用和地位的提高,攻擊者已經(jīng)不再滿(mǎn)足僅僅將USB設(shè)備作為攻擊負(fù)載傳播的一種媒介,開(kāi)始探索更加直接和隱蔽的USB設(shè)備攻擊方式.
USB人機(jī)交互設(shè)備(Human Interface Device,HID)是一種非常重要和廣泛使用的USB設(shè)備類(lèi)型,被廣泛應(yīng)用于人機(jī)交互和少量實(shí)時(shí)數(shù)據(jù)傳輸中,例如鍵盤(pán)、鼠標(biāo)、游戲桿等應(yīng)用場(chǎng)景. USB HID設(shè)備最主要的特點(diǎn)是可以模擬人和機(jī)器的交互過(guò)程,能夠主動(dòng)地向連接的主機(jī)中傳輸數(shù)據(jù)和命令. 同時(shí),基于USB HID協(xié)議中的約定,USB HID設(shè)備無(wú)須安裝驅(qū)動(dòng)就能與主機(jī)進(jìn)行交互. 另外,操作系統(tǒng)完全信任與USB HID設(shè)備的整個(gè)交互過(guò)程. 基于上述原因和背景,在2010年美國(guó)黑客安全大會(huì)上,Pisani等首次提出并展示了USB HID攻擊[4].
USB HID攻擊技術(shù)是利用USB接口偽造用戶(hù)鍵盤(pán)敲擊等行為實(shí)施的一種攻擊方式. 攻擊者首先設(shè)計(jì)實(shí)現(xiàn)一個(gè)具有惡意功能的USB HID 設(shè)備,當(dāng)該設(shè)備被接入到某個(gè)目標(biāo)主機(jī)中時(shí),通過(guò)在設(shè)備枚舉過(guò)程中將自己聲明為一個(gè)HID設(shè)備,由于主機(jī)無(wú)條件相信外部設(shè)備. 因此該設(shè)備將被作為HID設(shè)備并觸發(fā)主機(jī)加載相應(yīng)的HID 驅(qū)動(dòng)程序,之后惡意USB設(shè)備即可直接執(zhí)行事先設(shè)計(jì)好的通過(guò)模擬鍵盤(pán)按鍵操作、鼠標(biāo)操作等構(gòu)造的攻擊行為(例如篡改系統(tǒng)網(wǎng)絡(luò)配置、讀取和泄露用戶(hù)敏感信息等).
USB HID攻擊相對(duì)于僅將USB作為傳播介質(zhì)的攻擊方式具有以下兩個(gè)特點(diǎn).
1)隱蔽性更強(qiáng):USB HID攻擊模仿用戶(hù)按鍵操作,使得操作系統(tǒng)將輸入的數(shù)據(jù)或命令當(dāng)作來(lái)自用戶(hù)的鍵盤(pán)或鼠標(biāo)操作,因此系統(tǒng)并不對(duì)輸入數(shù)據(jù)或命令進(jìn)行任何監(jiān)控和審查,整個(gè)攻擊過(guò)程得以隱蔽和毫無(wú)阻礙地進(jìn)行;更重要的是,USB HID 攻擊的惡意代碼被隱藏在芯片的固件中,上層殺毒軟件無(wú)法檢測(cè)這部分代碼. 因此,USB HID攻擊的隱蔽性更強(qiáng).
2)更易獲得高權(quán)限:由于USB HID 攻擊本質(zhì)上與系統(tǒng)用戶(hù)的直接操作沒(méi)有本質(zhì)區(qū)別,因此通過(guò)模擬特定的鍵盤(pán)敲擊操作可輕易獲得比當(dāng)前主機(jī)用戶(hù)更高的系統(tǒng)管理權(quán)限,如圖3所示,即為通過(guò)模擬鍵盤(pán)敲擊獲取系統(tǒng)管理員權(quán)限的一種實(shí)現(xiàn)方式.
USB HID 攻擊的出現(xiàn),使得USB 設(shè)備開(kāi)始直接參與全部的攻擊過(guò)程,由傳播媒介轉(zhuǎn)而變成攻擊發(fā)起的主體. 更為嚴(yán)重的是,自2010 年被首次提出以來(lái),現(xiàn)在已經(jīng)存在多種可定制化的USB HID 攻擊開(kāi)發(fā)平臺(tái)[5-6],如圖4所示,這就使得USB HID攻擊的技術(shù)門(mén)檻變得極低,造成的危害也更嚴(yán)重.
圖3 基于模擬鍵盤(pán)操作的系統(tǒng)管理員權(quán)限獲取方式Fig.3 The way of obtaining administrator rights based on simulated keyboard operation
圖4 USB HID攻擊開(kāi)發(fā)平臺(tái)Fig.4 USB HID attack development platform
USB HID攻擊最初都是依賴(lài)于基于某些嵌入式的USB開(kāi)發(fā)板設(shè)計(jì)實(shí)現(xiàn)的,而無(wú)法在通用USB設(shè)備上實(shí)現(xiàn),這就在一定程度上限制了USB HID攻擊的通用性;同時(shí)由于采用基于開(kāi)發(fā)板的定制化實(shí)現(xiàn),該類(lèi)USB設(shè)備極易被破除設(shè)備封裝等檢測(cè)方式發(fā)現(xiàn). 這就迫使攻擊者繼續(xù)探索更好的攻擊方式. 在2014年美國(guó)黑帽大會(huì)上,研究者首次提出并展示了稱(chēng)為“BadUSB”的攻擊技術(shù)[7]. BadUSB 攻擊的提出較好地解決了USB HID攻擊的局限性.
BadUSB攻擊的基本思路是篡改USB設(shè)備中的原有固件,將含有攻擊負(fù)載的內(nèi)容寫(xiě)入到設(shè)備固件中,從而使得USB 設(shè)備在接入到目標(biāo)主機(jī)時(shí),通過(guò)執(zhí)行固件中的攻擊負(fù)載實(shí)現(xiàn)攻擊功能. BadUSB 攻擊的實(shí)現(xiàn)雖然需要USB 設(shè)備支持固件更新這一前提,但是仍然比USB HID 攻擊具有更好的通用性(據(jù)Karsten Nohl稱(chēng),BadUSB首次提出時(shí)可以適用的優(yōu)盤(pán)占當(dāng)時(shí)市場(chǎng)份額的50%以上[7]). 另外,由于BadUSB攻擊實(shí)現(xiàn)過(guò)程中僅對(duì)存儲(chǔ)器芯片中存放的固件進(jìn)行了篡改,并不對(duì)USB設(shè)備硬件進(jìn)行任何改變,所以該類(lèi)攻擊的隱蔽性更高.
BadUSB攻擊的出現(xiàn),不僅僅是在通用性和隱蔽性上對(duì)USB HID攻擊進(jìn)行了改進(jìn),而且通過(guò)篡改設(shè)備固件,為攻擊者提供了更多的攻擊選擇. 一方面,攻擊者通過(guò)修改固件,能夠執(zhí)行的操作不僅僅局限在模擬HID操作,通過(guò)借助USB設(shè)備控制器可以實(shí)現(xiàn)更多的復(fù)雜操作;另一方面,具有不同類(lèi)型和功能配置的USB設(shè)備給攻擊者提供了更多可能性,例如攻擊者通過(guò)對(duì)設(shè)備固件的篡改,可控制USB網(wǎng)卡設(shè)備中本身具備的網(wǎng)絡(luò)適配器,從而可實(shí)現(xiàn)對(duì)目標(biāo)主機(jī)網(wǎng)絡(luò)流量的劫持和監(jiān)控;還可以通過(guò)控制USB存儲(chǔ)設(shè)備的存儲(chǔ)器,實(shí)現(xiàn)對(duì)目標(biāo)主機(jī)敏感信息的提取和隱蔽存儲(chǔ)等.
BadUSB攻擊的高隱蔽性、強(qiáng)通用性以及可以實(shí)現(xiàn)的功能的復(fù)雜性,使得BadUSB攻擊具有遠(yuǎn)比USB HID攻擊更嚴(yán)重的安全威脅,標(biāo)志著USB設(shè)備攻擊技術(shù)上升到一個(gè)新的層次.
USB HID攻擊和BadUSB攻擊都是基于對(duì)USB設(shè)備自身的篡改實(shí)現(xiàn)的,而除了上述方式實(shí)現(xiàn)外,攻擊者還可以通過(guò)對(duì)USB設(shè)備驅(qū)動(dòng)中漏洞的利用實(shí)現(xiàn)攻擊目的[8-9].
USB設(shè)備的架構(gòu)如圖5所示,安裝在主機(jī)端的USB設(shè)備驅(qū)動(dòng)是一個(gè)USB設(shè)備實(shí)現(xiàn)其與主機(jī)操作系統(tǒng)以及應(yīng)用程序之間交互的媒介,驅(qū)動(dòng)接收所連接的USB設(shè)備的所有輸入并進(jìn)行相應(yīng)處理. 因此,如果設(shè)備驅(qū)動(dòng)程序存在某些安全漏洞,那么攻擊者就可以基于USB設(shè)備向其輸入特定信息實(shí)現(xiàn)漏洞利用. 例如,當(dāng)設(shè)備驅(qū)動(dòng)中存在某個(gè)內(nèi)存漏洞時(shí),來(lái)自USB設(shè)備的意外或特定輸入將導(dǎo)致緩沖區(qū)溢出等攻擊.
圖5 USB架構(gòu)Fig.5 USB architecture
基于主機(jī)端驅(qū)動(dòng)的攻擊,根本上源于主機(jī)端軟件對(duì)外部設(shè)備的隱式信任,并無(wú)條件接收所有來(lái)自設(shè)備的輸入;另外,可編程的USB 設(shè)備(例如FaceDancer[10])正變得越來(lái)越多,攻擊者可以更加方便地利用該類(lèi)USB設(shè)備觸發(fā)設(shè)備驅(qū)動(dòng)中的安全漏洞;更嚴(yán)重的是,USB驅(qū)動(dòng)程序運(yùn)行在內(nèi)核或特權(quán)進(jìn)程中,因此這種攻擊方式仍然可以較為容易地獲得高操作權(quán)限.
綜上,通過(guò)對(duì)USB設(shè)備安全問(wèn)題的分析可以發(fā)現(xiàn),隨著攻擊技術(shù)的發(fā)展,USB設(shè)備的攻擊面也在發(fā)生改變. 從最開(kāi)始通過(guò)利用USB 存儲(chǔ)設(shè)備的自動(dòng)執(zhí)行功能,將USB 存儲(chǔ)設(shè)備作為攻擊負(fù)載的傳播媒介,到USB HID攻擊,再到基于固件篡改的BadUSB攻擊,最后到不再基于對(duì)硬件設(shè)備的改變,而是轉(zhuǎn)而面向USB設(shè)備驅(qū)動(dòng)中的漏洞利用,整個(gè)攻擊技術(shù)的發(fā)展過(guò)程體現(xiàn)了攻擊者對(duì)攻擊隱蔽性和靈活性要求的不斷提高. 總之,目前USB設(shè)備正面臨多個(gè)層面的安全威脅,被攻擊的風(fēng)險(xiǎn)日益增加.
針對(duì)USB設(shè)備的安全問(wèn)題,研究者已經(jīng)提出了一些防御方法,并且隨著USB設(shè)備攻擊方式的發(fā)展演變,防御技術(shù)也在不斷適應(yīng)和發(fā)展.
USB存儲(chǔ)設(shè)備作為攻擊負(fù)載傳播媒介的核心是操作系統(tǒng)允許設(shè)備配置自動(dòng)運(yùn)行功能. 針對(duì)該問(wèn)題,一方面,微軟在2011年通過(guò)補(bǔ)丁修復(fù)了自動(dòng)執(zhí)行漏洞,使得USB存儲(chǔ)設(shè)備無(wú)法在連接到主機(jī)后自動(dòng)執(zhí)行;另一方面,由于這種攻擊方式的實(shí)質(zhì)仍然是軟件代碼實(shí)現(xiàn)的攻擊負(fù)載,隨著越來(lái)越多的終端防護(hù)系統(tǒng)、病毒檢測(cè)軟件等的出現(xiàn)和部署,對(duì)USB設(shè)備的存儲(chǔ)區(qū)域和主機(jī)系統(tǒng)中的軟件攻擊代碼的檢測(cè)能力大大增強(qiáng),使得存在于這些部位的攻擊負(fù)載更容易被檢測(cè)、發(fā)現(xiàn)和處理.
目前,雖然將USB存儲(chǔ)設(shè)備作為攻擊負(fù)載傳播媒介的安全問(wèn)題仍然時(shí)有發(fā)生,但是總的來(lái)說(shuō),該類(lèi)安全問(wèn)題已經(jīng)得到了極大限制. 在一個(gè)操作系統(tǒng)和病毒防護(hù)軟件經(jīng)常保持更新的主機(jī)中,該類(lèi)攻擊已很難達(dá)到其設(shè)定的攻擊目標(biāo).
雖然BadUSB 攻擊比USB HID 攻擊隱蔽性更好、通用性更強(qiáng),但是BadUSB 攻擊的實(shí)現(xiàn)也仍然離不開(kāi)對(duì)HID接口的聲明和利用,因此對(duì)USB HID和BadUSB攻擊的防御方法很多是相同的.
2.2.1 基于USB協(xié)議層的安全增強(qiáng)方法 USB HID攻擊和BadUSB攻擊實(shí)現(xiàn)的一個(gè)關(guān)鍵原因在于USB協(xié)議中缺乏對(duì)枚舉過(guò)程的有效訪問(wèn)控制[11],主機(jī)僅僅根據(jù)外部USB設(shè)備在設(shè)備描述符中的聲明決定該設(shè)備請(qǐng)求的接口類(lèi)型,從而使得攻擊者可以為本身并不是人機(jī)交互設(shè)備的USB設(shè)備申請(qǐng)HID 接口,從而最終獲得對(duì)鍵盤(pán)敲擊等操作的模擬能力. 基于上述分析,很多研究者從增強(qiáng)USB協(xié)議安全性的角度提出了相應(yīng)的防護(hù)方法.
一些研究者提出了類(lèi)似白名單的防護(hù)方法,即通過(guò)USB設(shè)備簽名[12-13]驗(yàn)證USB設(shè)備固件的可信,只有經(jīng)過(guò)認(rèn)證的USB設(shè)備才可以通過(guò)枚舉過(guò)程申請(qǐng)到所需要的接口,但在設(shè)備制造商以及密鑰不可靠的情況下,這種方法也存在被繞過(guò)的風(fēng)險(xiǎn). 另外,采用白(黑)名單的保護(hù)機(jī)制,雖然能在一定程度上避免惡意USB設(shè)備的攻擊,但是卻同時(shí)限制了主機(jī)使用USB設(shè)備的靈活性. 文獻(xiàn)[11]、[14]、[15]和[16]均提出了基于USB設(shè)備與USB接口類(lèi)型匹配綁定的安全策略,即只允許USB設(shè)備在枚舉過(guò)程中申請(qǐng)與之功能或用途相匹配的接口類(lèi)型,從而有效防止非HID設(shè)備申請(qǐng)HID接口. 但是,當(dāng)目標(biāo)設(shè)備本身就能夠申請(qǐng)使用多個(gè)接口類(lèi)型,甚至本身即包括HID接口時(shí),這類(lèi)防護(hù)方法通常會(huì)面臨安全性和可用性之間的矛盾. 另外,還有研究者提出了基于設(shè)備特性與物理外觀的一致性進(jìn)行判斷的防護(hù)方法[17],該方法的核心是基于設(shè)備外觀等已知信息判斷某USB設(shè)備是否能夠作為HID設(shè)備,但這種判斷方法很多時(shí)候依賴(lài)于用戶(hù)對(duì)設(shè)備的認(rèn)知水平.
2.2.2 基于USB設(shè)備行為的安全監(jiān)控方法 不論是USB HID攻擊、BadUSB攻擊還是其他攻擊方式,其最終的攻擊實(shí)施過(guò)程都會(huì)落腳于具體的具有惡意性的操作上,因此一些研究者從USB設(shè)備行為監(jiān)控的角度提出了相應(yīng)的防護(hù)方法.
為了監(jiān)控USB設(shè)備行為,研究者提出了對(duì)USB協(xié)議數(shù)據(jù)包的監(jiān)控和過(guò)慮機(jī)制[18-19],在USB設(shè)備連接到主機(jī)之后,監(jiān)測(cè)USB設(shè)備與主機(jī)之間通信的所有數(shù)據(jù)包,然后基于對(duì)已知攻擊特征的對(duì)比和分析,判斷當(dāng)前的數(shù)據(jù)包中是否含有可疑內(nèi)容,并阻止可疑數(shù)據(jù)包的傳輸. 基于包過(guò)濾的安全機(jī)制可有效檢測(cè)和防御已知攻擊類(lèi)型,但是對(duì)于新型或未知攻擊則效果有限. 還有一些研究者提出了基于執(zhí)行隔離的安全防護(hù)方法,例如文獻(xiàn)[20]和文獻(xiàn)[21],通過(guò)對(duì)接入的不可信USB 設(shè)備的執(zhí)行空間進(jìn)行嚴(yán)格的限制和隔離,使得惡意的USB設(shè)備無(wú)法對(duì)主機(jī)產(chǎn)生真正的攻擊效果. 但是這類(lèi)基于隔離的防護(hù)方法嚴(yán)重依賴(lài)虛擬化或IOMMU模塊等硬件支持,而且實(shí)現(xiàn)過(guò)程復(fù)雜,阻礙了該類(lèi)方法的廣泛應(yīng)用.
對(duì)USB設(shè)備驅(qū)動(dòng)漏洞的利用是導(dǎo)致USB設(shè)備安全問(wèn)題的一個(gè)重要原因,而為了解決該類(lèi)安全問(wèn)題,目前主要采用的方法是通過(guò)符號(hào)執(zhí)行[22-25]、模糊測(cè)試[26-28]等漏洞挖掘技術(shù),在實(shí)際應(yīng)用某USB設(shè)備前,首先分析和挖掘其對(duì)應(yīng)的設(shè)備驅(qū)動(dòng)可能存在的安全漏洞,從而提前掌握USB設(shè)備驅(qū)動(dòng)的安全風(fēng)險(xiǎn),并采取有針對(duì)性的防御措施.
FirmUSB[22]實(shí)現(xiàn)了一個(gè)針對(duì)USB設(shè)備固件的分析框架,通過(guò)對(duì)一個(gè)USB設(shè)備固件的符號(hào)執(zhí)行和靜態(tài)分析,提取出一個(gè)USB設(shè)備固件功能模型,并使用該模型與設(shè)備預(yù)期的功能進(jìn)行對(duì)比,從而檢測(cè)出目標(biāo)USB設(shè)備中存在的各種可疑行為. 該方法可有效提前檢測(cè)出USB設(shè)備是否意圖執(zhí)行超出其本身功能定位外的其他功能,例如原本不需要申請(qǐng)HID接口的USB設(shè)備的固件中卻出現(xiàn)了對(duì)該類(lèi)接口的申請(qǐng). 但同樣,當(dāng)面對(duì)本身就具有復(fù)合功能的USB設(shè)備時(shí),該方法的防御效果也存在一定的局限性. 除FirmUSB外,其他研究者也提出了不同的基于符號(hào)執(zhí)行的分析方法. SymDrive[23]和DDT[24]通過(guò)將設(shè)備端讀出的數(shù)據(jù)轉(zhuǎn)化為符號(hào)化值,而Potus[25]使用類(lèi)似的符號(hào)執(zhí)行方法向USB設(shè)備驅(qū)動(dòng)中注入錯(cuò)誤數(shù)據(jù). 這些方法都避免了對(duì)硬件設(shè)備的依賴(lài),但是由于存在路徑爆炸以及開(kāi)銷(xiāo)較大等問(wèn)題,限制了它們的可用性.
模糊測(cè)試是漏洞挖掘中普遍使用的一種非常重要的技術(shù)方法,核心是構(gòu)建模糊測(cè)試數(shù)據(jù)集,并將這些數(shù)據(jù)作為目標(biāo)對(duì)象的輸入,測(cè)試目標(biāo)對(duì)象出現(xiàn)執(zhí)行異常的情況,從而進(jìn)一步基于異常情況分析潛在漏洞. 由于USB設(shè)備驅(qū)動(dòng)接收實(shí)際的USB設(shè)備的輸出作為輸入,所以在進(jìn)行漏洞挖掘的過(guò)程中如何向設(shè)備驅(qū)動(dòng)中注入測(cè)試數(shù)據(jù)、如何提高測(cè)試覆蓋率以及如何提高方法的可移植性,這些都是影響該類(lèi)安全分析方法的重要因素. vUSBf[26]通過(guò)模擬USB 設(shè)備接口來(lái)代替硬件USB 設(shè)備向驅(qū)動(dòng)程序中注入數(shù)據(jù),但是在測(cè)試覆蓋率方面欠缺考慮;USBFuzz[27]則是采用仿真USB設(shè)備向驅(qū)動(dòng)中注入測(cè)試數(shù)據(jù),并在Linux系統(tǒng)中實(shí)現(xiàn)了支持覆蓋率引導(dǎo)的模糊測(cè)試;usb-fuzzer[28]采用增加特定系統(tǒng)調(diào)用的方式向被測(cè)試的USB設(shè)備驅(qū)動(dòng)中注入數(shù)據(jù),保證了一定的測(cè)試覆蓋率,但是由于該方法實(shí)現(xiàn)過(guò)程中需要對(duì)操作系統(tǒng)內(nèi)核中某些關(guān)鍵模塊的修改,導(dǎo)致該方法的可移植性較差.
通過(guò)漏洞挖掘的方式提前暴露USB設(shè)備驅(qū)動(dòng)中的安全隱患,發(fā)現(xiàn)某些未知的安全威脅,可以盡可能地緩解攻擊的影響和效果. 但是該類(lèi)方法受限于漏洞挖掘、動(dòng)態(tài)分析、設(shè)備仿真等技術(shù)的發(fā)展,并且只是盡可能地緩解而無(wú)法徹底消除USB設(shè)備驅(qū)動(dòng)中潛在的安全漏洞.
可以看出,通過(guò)對(duì)已有的USB設(shè)備安全防護(hù)技術(shù)的分析可以發(fā)現(xiàn),現(xiàn)有防御技術(shù):基本解決了最早期的以USB存儲(chǔ)設(shè)備作為攻擊負(fù)載傳播媒介所帶來(lái)的安全問(wèn)題;對(duì)USB HID 攻擊和BadUSB 攻擊也具有了一定的檢測(cè)和防護(hù)能力,但防御效果有限;對(duì)USB設(shè)備驅(qū)動(dòng)漏洞利用這一安全問(wèn)題,雖然已經(jīng)存在若干可行的漏洞檢測(cè)和設(shè)備行為安全分析方法,但一方面該類(lèi)防御方法距離廣泛應(yīng)用還有較大差距,另一方面不同方法之間的檢測(cè)能力差別較大,實(shí)際檢測(cè)效果難以評(píng)估.
綜合分析目前USB 設(shè)備攻防技術(shù)的發(fā)展現(xiàn)狀,本文對(duì)USB 攻防研究領(lǐng)域的未來(lái)發(fā)展提出以下分析和預(yù)測(cè).
1)BadUSB攻擊威脅將長(zhǎng)期存在. BadUSB攻擊在目前的防護(hù)水平下仍然具有較強(qiáng)的生命力. 首先對(duì)該類(lèi)攻擊的檢測(cè)難度較高,目前尚沒(méi)有非常有效的檢測(cè)方法;另外,該類(lèi)攻擊可以綜合運(yùn)用現(xiàn)有的各種各樣的USB設(shè)備中具備的各類(lèi)功能模塊,例如無(wú)線模塊、藍(lán)牙模塊、傳感器模塊等,尤其在物聯(lián)網(wǎng)發(fā)展的大背景下,BadUSB攻擊的影響范圍和威脅程度將得到進(jìn)一步提高.
2)USB設(shè)備驅(qū)動(dòng)漏洞利用攻擊的研究將日益增加. USB設(shè)備驅(qū)動(dòng)漏洞利用攻擊通過(guò)對(duì)主機(jī)側(cè)驅(qū)動(dòng)的攻擊實(shí)現(xiàn),在一定程度上避免了對(duì)設(shè)備本身的篡改,使得這種攻擊方式具有非常強(qiáng)的隱蔽性,并且由于漏洞的不可預(yù)測(cè)性,使得對(duì)該類(lèi)攻擊的防御難度較大,尤其是在設(shè)備固件本身難以修改的情況下,該類(lèi)攻擊方式對(duì)攻擊者的意義將更加重要.
1)USB設(shè)備固件升級(jí)過(guò)程的安全研究. 固件對(duì)USB設(shè)備的功能具有重要影響,BadUSB攻擊即通過(guò)對(duì)固件的篡改實(shí)現(xiàn),某些對(duì)USB設(shè)備驅(qū)動(dòng)漏洞的利用攻擊也需要對(duì)設(shè)備固件進(jìn)行相應(yīng)修改. 因此,設(shè)備固件升級(jí)過(guò)程的安全性對(duì)USB設(shè)備安全具有重要影響. 為了應(yīng)對(duì)這類(lèi)攻擊,有些USB設(shè)備直接在制造完成后利用熔絲等機(jī)制禁止對(duì)固件的讀寫(xiě)操作,以阻斷攻擊者對(duì)固件的篡改操作,但這就導(dǎo)致當(dāng)發(fā)現(xiàn)當(dāng)前固件有漏洞時(shí)也無(wú)法通過(guò)補(bǔ)丁等方式更新修復(fù). 當(dāng)前,很多USB設(shè)備仍允許在一定條件下實(shí)現(xiàn)對(duì)固件的更新升級(jí)以保證USB設(shè)備的易用性,而如何保證升級(jí)過(guò)程不會(huì)被攻擊者利用而引入惡意操作將是當(dāng)前和未來(lái)一個(gè)重要的研究熱點(diǎn).
2)驅(qū)動(dòng)模糊測(cè)試技術(shù)的進(jìn)一步完善. 模糊測(cè)試已經(jīng)被公認(rèn)是一種非常有效的漏洞挖掘方式,但是在驅(qū)動(dòng)分析方面,由于驅(qū)動(dòng)對(duì)硬件設(shè)備的依賴(lài)性導(dǎo)致該方面的模糊測(cè)試實(shí)現(xiàn)難度高且效果有限. 如何針對(duì)USB設(shè)備驅(qū)動(dòng)設(shè)計(jì)實(shí)現(xiàn)一種不依賴(lài)硬件的、全覆蓋的、具有更高效率的模糊測(cè)試方法,對(duì)于檢測(cè)驅(qū)動(dòng)漏洞、彌補(bǔ)安全缺陷具有重要意義.
3)基于云平臺(tái)的USB設(shè)備行為監(jiān)控技術(shù)的研究. 在云計(jì)算發(fā)展背景下,USB設(shè)備在云環(huán)境下的應(yīng)用將越來(lái)越普遍. 研究適合云平臺(tái)的USB設(shè)備行為監(jiān)控技術(shù)是未來(lái)不可避免的一種發(fā)展需求. 其中,如何合理描述USB設(shè)備攻擊的行為特征以提高攻擊檢測(cè)精度,如何充分利用現(xiàn)有硬件支持的虛擬化技術(shù)降低監(jiān)控開(kāi)銷(xiāo)等都是該領(lǐng)域研究的重要方向.
本文從USB 設(shè)備存在的安全問(wèn)題和已有的安全防護(hù)技術(shù)兩個(gè)方面分別展開(kāi)論述,綜合全面地分析了USB設(shè)備攻擊和防御中的典型技術(shù)和方法,并對(duì)當(dāng)前攻防技術(shù)存在的問(wèn)題進(jìn)行了總結(jié). 最后,對(duì)USB設(shè)備攻防領(lǐng)域未來(lái)的發(fā)展方向進(jìn)行了預(yù)測(cè)和分析,為下一步的研究工作提供了一定的參考.