解密BadUSB:世界上最邪惡的USB外設(shè)
概述
在2014年美國(guó)黑帽大會(huì)上,柏林SRLabs的安全研究人員JakobLell和獨(dú)立安全研究人員Karsten Nohl展示了他們稱為“BadUSB”(按照BadBIOS命名)的攻擊方法,這種攻擊方法讓USB安全和幾乎所有和USB相關(guān)的設(shè)備(包括具有USB端口的電腦)都陷入相當(dāng)危險(xiǎn)的狀態(tài)。
USB背景知識(shí)
1. USB內(nèi)部結(jié)構(gòu)
注:BadUSB主要依靠USB驅(qū)動(dòng)器的構(gòu)建方式,USB通常有一個(gè)大容量的可重寫(xiě)的內(nèi)存芯片用于實(shí)際的數(shù)據(jù)存儲(chǔ),以及一個(gè)獨(dú)立的控制器芯片。控制芯片實(shí)際上是一個(gè)低功耗計(jì)算機(jī),并且與你的筆記本電腦或臺(tái)式機(jī)一樣,它通過(guò)從內(nèi)存芯片加載基本的引導(dǎo)程序來(lái)啟動(dòng),類似于筆記本電腦的硬盤(pán)驅(qū)動(dòng)器包含一個(gè)隱藏的主引導(dǎo)記錄(MasterBoot Record)。
2. USB如何識(shí)別
3. USB設(shè)備的初始化
設(shè)備可以擁有多個(gè)標(biāo)識(shí)(注:一個(gè)設(shè)備可以被識(shí)別為多種類型):
*一個(gè)設(shè)備通過(guò)一個(gè)描述符標(biāo)明它的功能;
*一個(gè)設(shè)備可以擁有多個(gè)描述符,如果它支持多種設(shè)備類別,例如網(wǎng)絡(luò)攝像頭+麥克風(fēng);
*設(shè)備可以注銷,然后再次注冊(cè)為一個(gè)不同的設(shè)備;
可重復(fù)編程的外設(shè)
USB攻擊場(chǎng)景
1. 在Windows環(huán)境下感染USB,然后再控制Linux機(jī)器
鍵盤(pán)模擬足夠用于感染和權(quán)限提升(不需要軟件漏洞)
注:在Linux/Unix操作系統(tǒng),LD_PRELOAD是一個(gè)環(huán)境變量,可以影響程序的運(yùn)行時(shí)的鏈接(Runtimelinker),設(shè)置在程序運(yùn)行前優(yōu)先加載的動(dòng)態(tài)鏈接庫(kù)。通過(guò)這個(gè)環(huán)境變量,可以在主程序和其動(dòng)態(tài)鏈接庫(kù)的中間加載別的動(dòng)態(tài)鏈接庫(kù),甚至覆蓋正常的函數(shù)庫(kù)。一方面,我們可以以此功能來(lái)使用自己的或是更好的函數(shù)(無(wú)需別人的源碼),而另一方面,我們也可以以向別人的程序注入惡意程序,從而達(dá)到那不可告人的罪惡的目的。
2. USB設(shè)備篡改Windows系統(tǒng)的DNS設(shè)置
通過(guò)“USB上的DHCP”轉(zhuǎn)移網(wǎng)絡(luò)流量
意外收獲:突破虛擬機(jī)
3. Android轉(zhuǎn)移Windows機(jī)器的網(wǎng)絡(luò)流量
“我能借用你的筆記本給手機(jī)充電嗎?”Android手機(jī)是最簡(jiǎn)單的USB攻擊平臺(tái)。
注:Ethernet-Over-USB:將USB接口模擬為以太網(wǎng)接口,實(shí)現(xiàn)基于Ethernet的網(wǎng)絡(luò)連接。
Android設(shè)備的POC代碼下載地址為:
https://srlabs.de/blog/wp-content/uploads/2014/07/BadAndroid-v0.1.zip
4. USB引導(dǎo)扇區(qū)病毒
5. 攻擊方式總結(jié)
防護(hù)以及下一步
1. 防護(hù)對(duì)策及缺陷
2. USB外設(shè)的可重復(fù)編程也有積極的用途
總結(jié)
以上內(nèi)容主要源自SRLabs在2014年黑帽子大會(huì)上的演講稿,僅對(duì)內(nèi)容的編排做了調(diào)整,原稿的下載地址https://srlabs.de/blog/wp-content/uploads/2014/07/SRLabs-BadUSB-BlackHat-v1.pdf。
花了一周的空余時(shí)間翻譯的,水平有限,歡迎大家批評(píng)指正!