做一個簡單的bad usb

漏洞背景

“BadUSB”是計算機安全領(lǐng)域的熱門話題之一,該漏洞由Karsten Nohl和Jakob Lell共同發(fā)現(xiàn),并在2014年的BlackHat安全大會上公布。 雖然已隔幾年年,但還是有人在研究它,它的攻擊方式也多種多樣。

介紹

BadUSB原理

在介紹BadUSB的原理之前,筆者在這里先介紹下BadUSB出現(xiàn)之前,利用HID(Human InterfaceDevice,是計算機直接與人交互的設(shè)備,例如鍵盤、鼠標(biāo)等)進行攻擊的兩種類型。分別是”USB RUBBERDUCKY”和”Teensy”。

TEENSY介紹

攻擊者在定制攻擊設(shè)備時,會向USB設(shè)備中置入一個攻擊芯片,此攻擊芯片是一個非常小而且功能完整的單片機開發(fā)系統(tǒng),它的名字叫TEENSY。通過TEENSY你可以模擬出一個鍵盤和鼠標(biāo),當(dāng)你插入這個定制的USB設(shè)備時,電腦會識別為一個鍵盤,利用設(shè)備中的微處理器與存儲空間和編程進去的攻擊代碼,就可以向主機發(fā)送控制命令,從而完全控制主機,無論自動播放是否開啟,都可以成功。

關(guān)于TEENSY,可以參考天融信阿爾法實驗室的《HID攻擊之TEENSY實戰(zhàn)

USB RUBBER DUCKY介紹

簡稱USB橡皮鴨,是最早的按鍵注入工具,通過嵌入式開發(fā)板實現(xiàn),后來發(fā)展成為一個完全成熟的商業(yè)化按鍵注入攻擊平臺。它的原理同樣是將USB設(shè)備模擬成為鍵盤,讓電腦識別成為鍵盤,然后進行腳本模擬按鍵進行攻擊。

這兩種攻擊方式,是在BadUSB公布之前,比較流行的兩種HID攻擊方式,缺陷在于要定制硬件設(shè)備,通用性比較差。但是BadUSB就不一樣了,它是在“USB RUBBER DUCKY”和“Teensy”攻擊方式的基礎(chǔ)上用通用的USB設(shè)備(比如U盤)。

U盤的內(nèi)部構(gòu)造

U盤由芯片控制器和閃存兩部分組成,芯片控制器負(fù)責(zé)與PC的通訊和識別,閃存用來做數(shù)據(jù)存儲;閃存中有一部分區(qū)域用來存放U盤的固件,它的作用類似于操作系統(tǒng),控制軟硬件交互;固件無法通過普通手段進行讀取。

BadUSB就是通過對U盤的固件進行逆向重新編程,相當(dāng)于改寫了U盤的操作系統(tǒng)而進行攻擊的。

USB協(xié)議漏洞

為什么要重寫固件呢?下面我們可以看看USB協(xié)議中存在的安全漏洞。

現(xiàn)在的USB設(shè)備很多,比如音視頻設(shè)備、攝像頭等,因此要求系統(tǒng)提供最大的兼容性,甚至免驅(qū);所以在設(shè)計USB標(biāo)準(zhǔn)的時候沒有要求每個USB設(shè)備像網(wǎng)絡(luò)設(shè)備那樣占有一個唯一可識別的MAC地址讓系統(tǒng)進行驗證,而是允許一個USB設(shè)備具有多個輸入輸出設(shè)備的特征。這樣就可以通過重寫U盤固件,偽裝成一個USB鍵盤,并通過虛擬鍵盤輸入集成到U盤固件中的指令和代碼而進行攻擊。

BadUSB利用代碼分析

筆者對KarstenNohl和Jakob Lell公布的代碼進行簡單的一個流程解析。

這樣一個帶有惡意代碼的U盤就產(chǎn)生了,更詳細(xì)的可以搜索Karsten Nohl 和 Jakob Lell公布的代碼。

0×01 制作過程

好的廢話咱們不多說了,直接開始吧~

來看一下我們需要準(zhǔn)備的材料吧

微型usb開發(fā)板

Arduino IDE

筆記本一臺

啟動Arduino IDE

測試代碼

#include "DigiKeyboard.h"

void setup() {
DigiKeyboard.sendKeyStroke(0);
DigiKeyboard.delay(3000);
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
DigiKeyboard.delay(500);
DigiKeyboard.println("notepad");
DigiKeyboard.delay(500);
DigiKeyboard.print("Hello hack!");

}

void loop() {
}

先不要插入開發(fā)板點擊上傳按鍵


出現(xiàn)這個時,插入開發(fā)板

完成后會出現(xiàn)Thank you!的字樣

0×02 測試使用

啊啊啊無法上傳視頻,就上傳一個圖片吧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容