【原創】Arduino製做Badusb實踐

一、U盤構造編程

     U盤由芯片控制器和閃存兩部分組成。函數

     芯片控制器負責與PC的通信和識別,閃存用來作數據存儲;oop

     閃存中有一部分區域用來存放U盤的固件,它的做用相似於操做系統,控制軟硬件交互;固件沒法經過普通手段進行讀取。測試

     BadUSB就是經過對U盤的固件進行逆向從新編程,至關於改寫了U盤的操做系統而進行攻擊的。ui

二、協議漏洞spa

      根據USB標準,設備佔有惟一可識別的MAC地址系統驗證,所以具備多個輸入輸出設備的特徵。經過重寫U盤固件,假裝成一個USB鍵盤。虛擬鍵盤進行指令代碼輸入。操作系統

     這裏經過Arduino內置函數實現模擬鍵盤輸入和鼠標輸入。命令行

三、製做blog

鏈接Leonardo板卡到PC串口,這裏編程須要用到Auduino自帶的Keyboard庫:cmd

見文知義keyboard 庫,功能就是將arduino 模擬成一個usb 鍵盤。
包含Api 以下:
  • Keyboard.begin()
  • Keyboard.end()
  • Keyboard.press()
  • Keyboard.print()
  • Keyboard.println()
  • Keyboard.release()
  • Keyboard.releaseAll()
  • Keyboard.write()貼一段網上的測試代碼:

    #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("cmd");//輸入cmd進入DOS

    delay(500); 

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

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

    delay(500); 

    Keyboard.println("echo first test");

    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()//循環,這裏的代碼

    //循環體 寫入你要循環的代碼

    }

  • 實現功能是:插入板卡以後,首先開啓大寫鍵 而後打開了運行窗口 而後輸入了CMD 回車,命令行會輸入 echo first test 而且回車。 
  • 進階玩法:經過自行編程實現插USB以後遠程下載木馬,或結合Metasploit 進行後門、木馬的植入,或者一些批處理文件。

相關文章
相關標籤/搜索