【原创】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 进行后门、木马的植入,或者一些批处理文件。

相关文章
相关标签/搜索