Bad usb實現U盤攻擊

1、Bad usb介紹及原理

介紹

BadUSB是利用僞造HID設備執行攻擊載荷的一種攻擊方式。用戶插入BadUSB,就會自動執行預置在固件中的惡意代碼,如下載服務器上的惡意文件,執行惡意操作等。由於惡意代碼內置於設備初始化固件中,而不是通過autorun.inf等媒體自動播放文件進行控制,因此無法通過禁用媒體自動播放進行防禦,殺毒軟件更是無法檢測設備固件中的惡意代碼。這種攻擊方式可以在不經意間實施攻擊,而且不易被殺軟或系統發覺~~事了拂袖去,深藏功與名~~

原理

HID是Human Interface Device的縮寫,HID設備是直接與人交互的設備,例如鍵盤、鼠標與遊戲杆等。HID設備並不一定要有人機接口,只要符合HID類別規範的設備都是HID設備。一般來講針對HID的攻擊主要集中在鍵盤鼠標上,因爲只要控制了用戶鍵盤,基本上就等於控制了用戶的電腦。攻擊者會把攻擊載荷隱藏在一個正常的鼠標鍵盤中,或者將帶有攻擊載荷的設備僞裝成HID設備。當用戶將含有攻擊載荷的鼠標或鍵盤,插入電腦時,惡意代碼會被加載並執行。

Arduino

Arduino是一款便捷靈活、方便上手的開源電子原型平臺。包含硬件(各種型號的Arduino板)和軟件(Arduino IDE)。Arduino IDE可以在Windows、Macintosh OS X、Linux三大主流操作系統上運行,基於processing IDE開發。對於初學者來說,極易掌握,同時有着足夠的靈活性。Arduino語言基於wiring語言開發,是對 avr-gcc庫的二次封裝,不需要太多的單片機基礎、編程基礎,簡單學習後,可以快速的進行開發。

Keyboard庫

keyboard庫的功能是將arduino 模擬成一個usb鍵盤。可以控制按下/放開鍵盤上的任意按鍵。通過設置按鍵順序和恰當的延時可以實現組合鍵的鍵入

備註:說了這麼多其實bad usb看着像u盤,其實是塊集成板,插入時電腦會當做虛擬鍵盤,所以殺毒軟件等無法檢測和查殺。

2、準備

硬件:需要買一塊bad usb,可以去淘寶。很多的,幾十塊錢就可以。也有很便宜的,那種沒有U盤殼,一看就能看出是塊板子。

軟件:硬件準備好我們就要開始準備軟件了,我們需要下載Arduino IDE.

下載鏈接:https://www.arduino.cc/en/Main/Software

注意:找到對應的操作系統,博主用的是windows所以選擇windows的。也有linux版本的

3、開始

注意:如果不放心可以在虛擬機裏進行操作

安裝:沒有什麼要注意的,一路next就行了。安裝成功後就會在桌面生成如下圖標

刻錄代碼:雙擊點開程序,剛打開的時候是這樣的

我們需要在這裏輸入我們的代碼,代碼主要基於keyboard庫。keyboard庫的功能是將arduino 模擬成一個usb鍵盤。可以控制按下/放開鍵盤上的任意按鍵。通過設置按鍵順序和恰當的延時可以實現組合鍵的鍵入。不會寫代碼的沒關係,網上很多。也可以看博主寫的,很容易理解

代碼: 

#include<Keyboard.h> //包含鍵盤模塊頭文件(放第一條)
void setup(){
//初始化

Keyboard.begin();//開始鍵盤通信

delay(1000);//延時1000毫秒,不要太短,因爲每天電腦的運行速度都不一樣 

Keyboard.press(KEY_CAPS_LOCK); //按下大寫鍵 這裏我們最好這樣寫 不然大多數電腦在中文輸入的情況下就會出現問題

Keyboard.release(KEY_CAPS_LOCK); //釋放大寫鍵

delay(500);


Keyboard.press(KEY_LEFT_GUI);//按下徽標鍵 也就是win鍵 

delay(500); 

Keyboard.press('r');//按下r鍵 

delay(500); 

Keyboard.release(KEY_LEFT_GUI);//鬆掉win鍵 

Keyboard.release('r');//鬆掉r鍵 

delay(500); 

Keyboard.println("notepad");//輸入notepad 打開記事本

delay(500); 

Keyboard.press(KEY_RETURN); //按下回車鍵

Keyboard.release(KEY_RETURN); //釋放回車鍵

delay(500); 

Keyboard.println(" fuck the world!!!");//輸入我們想顯示的信息

Keyboard.press(KEY_RETURN); //按下回車鍵

Keyboard.release(KEY_RETURN); //釋放回車鍵

delay(500);

Keyboard.press(KEY_CAPS_LOCK); //按下大寫鍵

Keyboard.release(KEY_CAPS_LOCK); //釋放大寫鍵 我們再次關閉開啓的大寫鍵

delay(500);

Keyboard.end();//結束鍵盤通訊 
}
 
void loop() {
  // put your main code here, to run repeatedly:
 
}

這段代碼的主要操作就是打開記事本顯示一行我們輸入的信息。還能做很多操作,可以去網上找找。

代碼寫好就要刻錄進U盤(其實嚴格來說不是U盤),首先插入U盤然,新買的U盤應該沒有刻進東西所以不會進行任何操作,如果有莫名奇怪的操作那就去找買家吧。

U盤插入後需要在工具裏將開發板設置爲如下圖所示

 

然後將端口改爲如下,可能你們的電腦不是COM3不過沒關係,只要後面的括號裏一樣就行

設置好就可以點擊下圖的上傳箭頭進行上傳,這裏上傳成功會默認在你的電腦運行一次,所以不要寫有害系統的東西或者去虛擬機裏運行。

上傳成功後這塊U盤插入電腦就會運行你寫的代碼。

還沒看懂的可以去看這個視頻,博主就是按照這個視頻學習的:https://www.bilibili.com/video/av20517610

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章