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