zoukankan      html  css  js  c++  java
  • 【原创】Arduino制作Badusb实践

    1、U盘构造

         U盘由芯片控制器和闪存两部分组成。

         芯片控制器负责与PC的通讯和识别,闪存用来做数据存储;

         闪存中有一部分区域用来存放U盘的固件,它的作用类似于操作系统,控制软硬件交互;固件无法通过普通手段进行读取。

         BadUSB就是通过对U盘的固件进行逆向重新编程,相当于改写了U盘的操作系统而进行攻击的。

    2、协议漏洞

          根据USB标准,设备占有唯一可识别的MAC地址系统验证,因此具有多个输入输出设备的特征。通过重写U盘固件,伪装成一个USB键盘。虚拟键盘进行指令代码输入。

         这里通过Arduino内置函数实现模拟键盘输入和鼠标输入。

    3、制作

    连接Leonardo板卡到PC串口,这里编程需要用到Auduino自带的Keyboard库:

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

  • 相关阅读:
    CentOS 7.0关闭默认防火墙启用iptables防火墙
    Linux下安装jdk1.8
    Linux下的tar压缩解压缩命令详解
    centos7上安装redis
    通过克隆虚拟机来创建多个虚拟机
    深度学习的网络资料
    在ubuntu中添加widows启动项的简单方法
    循环神经网络RNN的基本介绍
    统计学习——随机过程
    spark机制理解(一)
  • 原文地址:https://www.cnblogs.com/jayway0day/p/6697872.html
Copyright © 2011-2022 走看看