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