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

  • 相关阅读:
    deeplearning.ai 卷积神经网络 Week 1 卷积神经网络
    deeplearning.ai 构建机器学习项目 Week 2 机器学习策略 II
    deeplearning.ai 构建机器学习项目 Week 1 机器学习策略 I
    deeplearning.ai 改善深层神经网络 week3 超参数调试、Batch Normalization和程序框架
    deeplearning.ai 改善深层神经网络 week2 优化算法
    deeplearning.ai 改善深层神经网络 week1 深度学习的实用层面
    cs231n spring 2017 lecture8 Deep Learning Networks
    cs231n spring 2017 lecture7 Training Neural Networks II
    cs231n spring 2017 lecture6 Training Neural Networks I
    cs231n spring 2017 Python/Numpy基础
  • 原文地址:https://www.cnblogs.com/jayway0day/p/6697872.html
Copyright © 2011-2022 走看看