基于USB的攻擊向量總結(jié)
本文,我將主要通過上圖的分類方式來探討針對USB的攻擊向量問題。最上層涉及到更多關(guān)于人類應(yīng)用、業(yè)務(wù)的基本交互場景。傳輸層包括設(shè)備的固件、協(xié)議棧等。物理層則主要描述USB總線上的通信問題。
一、人類因素
本節(jié)從人類本身的特點討論USB的攻擊行為。例如:機密USB被外部人員或組織的利用等。
1. 外部威脅
大部分安全從業(yè)人員認為,所有的USB攻擊都是主機插入了外部usb設(shè)備,而這些設(shè)備通常帶有不同形式的惡意代碼。惡意人員會想方設(shè)法的欺騙用戶,將一個不可信的設(shè)備插入到他們的主機中。在社會工程學(xué)范疇,這并不是很困難的事情。根據(jù)Steve Stasiukonis報告《Social engineering, theUSB way》說,2006年的滲透測試行動中,黑客在三天內(nèi)將威脅U盤插入了目標公司內(nèi)部的75%的主機上。
美國國土安全部(Department of Homeland Security)在一項類似的實驗中也證實了了這一結(jié)果,60%的政府設(shè)備有機會會被外部人員接觸;更有意思的是,報告還指出,當(dāng)司機、文秘等職業(yè)得到更多的場所準入權(quán)之后,外部人員接觸終端設(shè)備的數(shù)字上升到90%。
2. 內(nèi)部威脅
USB設(shè)備快速下降的成本使公司和消費者選擇利用USB設(shè)備存儲和傳輸涉密數(shù)據(jù)。與任何物理設(shè)備一樣,USB驅(qū)動器也可能因人為錯誤而損壞,丟棄。這種處理往往會導(dǎo)致有害的結(jié)果。2011年,Ponemon Institute(波耐蒙研究所)發(fā)布了一項研究,記錄了400家不同的公司;他們發(fā)現(xiàn)這些公司因為隨意丟棄USB設(shè)備而損失了250萬美元。2011年晚些時候,一名澳大利亞國防援助人員在經(jīng)過科威特時丟失了存儲在U盤上的絕密文件。完美的人越是容易犯錯誤,這樣總會給公司甚至國家?guī)沓林氐拇鷥r。
USB介質(zhì)也為內(nèi)部攻擊者泄露機密信息提供了便利途徑。2010年,二等兵Chelsea Manning違反《反間諜法》被捕,原因是泄露了美國軍方的私人視頻。曼寧使用了便攜式存儲設(shè)備,因為出口管制很松,為了突破軍隊網(wǎng)絡(luò)的空擋,向外界泄露信息。Edward Snowden(斯諾登)使用類似的技術(shù)從位于夏威夷的軍事基地竊取了美國國家安全局的絕密數(shù)據(jù)。當(dāng)然國內(nèi)的黃*事件也是很典型的案例(下圖)。USB設(shè)備的普遍性和可移植性既是挑戰(zhàn)也是機遇。一方面,它們的易用性極大地幫助了消費者和公司完成日常任務(wù)。另一方面,USB設(shè)備本身實際上是超越技術(shù)范疇的行政安全道德領(lǐng)域,可能會對組織造成巨大的影響。
二、應(yīng)用層
應(yīng)用層攻擊涉及主機用戶空間進程及其與設(shè)備功能的交互。這一層的攻擊通常分為兩類:代碼注入攻擊和數(shù)據(jù)過濾攻擊。
1. 代碼注入
USB存儲已被多個惡意軟件利用。據(jù)本人知道的案例,Duqu病毒使用應(yīng)用層rootkit來隱藏USB存儲設(shè)備上的惡意文件。Conficker、Flame病毒則使用了0day攻擊和惡意autorun。當(dāng)U盤連接到主機時,inf文件自動執(zhí)行惡意軟件。盡管自動運行功能在成為Windows平臺的主要威脅之一后受到了限制,但由于操作系統(tǒng)的漏洞(Bad-USB等),類似的功能仍然可用。
2. 數(shù)據(jù)過濾
由于USB設(shè)備通常不會對主機上正在通信的應(yīng)用程序進行身份驗證,因此應(yīng)用程序可能會對USB設(shè)備寫入或者讀取數(shù)據(jù)。例如,網(wǎng)絡(luò)攝像頭本地的數(shù)據(jù)的存儲,USB設(shè)備本地日志的保存、usb應(yīng)用層存在的各種安全漏洞都可能會成為關(guān)鍵的因素。
三、傳輸層
1. 協(xié)議偽造
USB設(shè)備利用主機對任何連接設(shè)備的完全信任,它們往往為終端操作系統(tǒng)提供附加的驅(qū)動層接口。像USB橡皮鴨或USBdriveby(http://samy.pl/usbdriveby/)這樣的設(shè)備連接到主機系統(tǒng)時,它驅(qū)動層協(xié)議棧所有的回調(diào)接口(包括用戶不知道的)都會被枚舉。這種功能可以通過將惡意代碼嵌入到其他正常的設(shè)備(例如,藍牙耳機中的網(wǎng)絡(luò)適配器)來隱藏。
TURNIPSCHOOL項目(http://www.nsaplayset.org/turnipschool)是一個改進的USB電纜,該設(shè)備具有4層PCB板、內(nèi)置芯片的接口擴展 USB HUB、來自德州儀器的內(nèi)置射頻收發(fā)器單片機和一個3D打印的塑料模具。設(shè)備連接到主機后,主機上運行的軟件可以通過RF接口提取數(shù)據(jù)或接收命令。使得USB傳輸層變成可二次編程,可以用于USB設(shè)備的安全過濾產(chǎn)品的開發(fā)。
識別和減輕這些惡意的接口在傳統(tǒng)上是困難的。因為對手可以簡單地重新編程任何USB基本數(shù)據(jù)(VID、PID)來規(guī)避操作系統(tǒng)中的設(shè)備白名單或黑名單規(guī)則。此外,由于惡意人員可以合理地使用了音頻耳機等組合設(shè)備,攻擊面廣、隱藏率高,降低了攻擊的成本。
2. 協(xié)議漏洞
主機的USB協(xié)議棧只要符合USB標準就可以了,第三方完全可以自由擴展,所以肯定會有大量的傳輸協(xié)議層漏洞。使用FaceDancer進行Fuzzing技術(shù)(筆者未來會寫個Facedancer使用教程),我們會發(fā)現(xiàn)了許多內(nèi)核層的任意代碼執(zhí)行漏洞,在2017年,谷歌研究員也在不同的Linux內(nèi)核USB驅(qū)動中發(fā)現(xiàn)了超過40個漏洞。在某些情況下,這些漏洞可能在主機的設(shè)備枚舉期間被利用。也可能作為一個中間人設(shè)備進行數(shù)據(jù)的嗅探。
四、物理層
物理層攻擊包括對USB總線通信中的機密性和完整性的攻擊。
1. 物理竊聽
無論數(shù)據(jù)是否敏感,傳輸?shù)倪^程中總是需要暴露在管道一段時間。排除透明加密的情況,大部分流量一定會滿足USB底層傳輸標準,我們使用硬件鍵盤記錄器,來進行一次大流量審計,提取USB存儲、甚至USB鍵盤的重要信息。鍵盤記錄器都是小型設(shè)備,放置在主機端口和外設(shè)間抓包。在usb3.0之前,惡意外設(shè)可以竊聽所有連接設(shè)備的下行流量。
(A transparent defense againstUSB eavesdropping attacks)M.Neugschwandtner
我們甚至可以通過USB電流嗅探,示波器信道采集等方式進行攻擊,從信道數(shù)據(jù)可以獲得當(dāng)前主機的重要特征信息,惡意智能手機可以使用該信息來組成攻擊目標的提權(quán)shellcode。(Android安全研究綜述)蔣紹林
Usb嗅探的另一種方法是使用USB協(xié)議分析儀提取總線狀態(tài)的時序特征,并使用機器學(xué)習(xí)分類來推斷主機的操作系統(tǒng),獲取具體信息。Betas提出了一種基于時間間隔的指紋打印方案,該方案可以從商用智能電話啟動。他們表明,特定的操作系統(tǒng)版本和型號可以以高達90%的準確度通過設(shè)備之間發(fā)送數(shù)據(jù)包的間隔來檢測。盡管基于時序的指紋顯著提高了規(guī)避漏洞的門檻,但是經(jīng)驗豐富的木馬設(shè)計者可以修改其時序特征來逃避檢測。
2. 側(cè)信道攻擊(電磁、電源攻擊)
近年來,研究人員研究攻擊者如何使用植入射頻發(fā)射器的從普通的終端中竊取數(shù)據(jù)。這種方法需要一個硬改的USB插頭或設(shè)備,還要有一個專用嵌入式的射頻發(fā)射機。USBee是一款作為射頻發(fā)射器發(fā)射電磁輻射的設(shè)備,對敏感數(shù)據(jù)進行編碼/抓取等操作。當(dāng)然如果無法接觸到目標機器的時候,黑客可以用一根普通的電線觸摸目標機器暴露的金屬部分,得到的信號可以用來提取重要的密鑰信息。Oswald等人展示了如何基于功耗和電磁輻射從Yubikey 2中提取AES 128位密鑰。(Side-channel attacks on the yubikey2one-time password generator) Oswald
電量注入的能力也被用來對終端造成物理損壞。USB Killer在USB key的PCB板的兩側(cè)嵌入多個電容。一旦連接到主機,USB殺手從主機USB總線消耗電流,對自己的電容器進行充電。一旦完全充電,負200V DC通過主機的USB數(shù)據(jù)線放電。這個充電/放電循環(huán)一直進行,直到USB killer移除或終端被破壞。在新版本的USB電源傳輸和Type-C連接器標準中,設(shè)備能夠獲取和傳輸高達100W的電量,它們可以損壞主機且不可修復(fù)。(完)