利用Arduino实现HID攻击

作者:   广州竞远安全技术股份有限公司 2019/03/11 15:44:44 41次阅读 国际

什么是Arduino?

        Arduino是一个开发各类设备,让你比台式电脑更能充分感知和控制物理世界的生态系统。Arduino是一个基于一系列单片机电路板的开源物理计算平台,一个编写用于Arduino和Genuino开发板的软件开发环境和一个拥有活跃开发者和用户社区。Arduino可用于开发交互式物体,接受来自各类开关或传感器的输入,并能控制各种灯光、马达和其他物理输出装置。Arduino项目可以单独运行,也可以与您计算机上运行的软件(Processing、MaxMSP)配合使用。您可以手动组装简单的开发板,或购买预装的整套开发板, 还可以免费下载开源Arduino软件(IDE)。

Arduino 模块说明

c170b3752fd9c7c6ce2c82ad90257979.pnga124cb5b2861eb9045f0b06b7b8dad3a.jpgc0625f757875df0ebbb77b80b18ee7ff.png

Arduino电源

          Arduino Uno需要一个电源才能运行,并且可以通过多种方式供电。最简单的方式就是直接通过USB电缆将电路板连接到计算机。
81e15b1cf284d35c1382d57ec6a8ebb4.jpg

编程Arduino

          首先可以到arduino官网下载对应的开发IDE,链接https://www.arduino.cc/en/Main/Software,安装过程简单,和安装普通的软件一样。安装后可以顺利打开。

e3f7cd2d907979954ab84274aadec491.png
           内置示例是Arduino软件(IDE)中包含的草图,单击工具栏菜单打开它们:文件>示例。这些简单的程序演示了所有基本的Arduino命令。它们从Sketch Bare Minimum到Digital和Analog IO,再到Sensors和Displays的使用。

a4a70d3961000672cdb87c59a91f3036.png
          链接好开发板到电脑上可以直接编译程序并自动烧写到开发板上,一个简单的程序在已经在开发板上正常运行起来。而上面的例子程序有两个关键的函数定义,setup和loop,前者用于初始化开发板的相应设置,后者是程序的处理逻辑,并重复执行这个loop函数。整个程序的功能是启动开发板上内置的led灯亮一秒再灭一秒,一直循环,所以效果是led一直在有规律的闪动。
          具体的编程都可以参考官方的说明文档或者到一些爱好者社区学习。

改写arduino成HID键盘设备

          USB HID键盘符合标准USB规范,因此适用于所有现代操作系统。所有这些都可以通过使用Arduino设备固件更新(DFU)功能实现。Arduino UNO上的Atmega8U2芯片可以使用称为设备固件更新(DFU)的特殊USB协议直接编程。这和使用Arduino IDE向电路板直接烧写程序的“常规”方法完全不同
          大致的操作流程为:
          重置8u2或16u2

94fbf9ad56127f4d9f587686e178c3e3.jpg
          要验证您是否已重置8u2或16u2芯片:在Arduino编程环境中,检查串行端口列表,串口设备将不会再出现在设备列表中。
          需要的工具和文件有
dfu-programmer, Arduino-keyboard-0.3.hex, Arduino-usbserial-uno.hex
          这几个都可以直接在网上搜索找到(github)

5e425956ae455b0208806f9dd2393f5f.png
第一步:dfu-programmer at90usb82 erase
第二步:dfu-programmer at90usb82 flash --debug 1 Arduino-usbserial.hex
第三步:dfu-programmer at90usb82 reset
第四步:通过查看Arduino软件的串行端口菜单来查看和验证新的设备。
第五步:用arduino ide烧写想要运行的程序到开发板上,和一开始烧写的led灯程序是一样的步骤。
第六步:dfu-programmer at90usb82 erase
第七步:dfu-programmer at90usb82 flash --debug 1 Arduino-keyboard-0.3.hex
第八步:dfu-programmer at90usb82 reset
此时已经把arduino变为hid设备来,接下来的重点是在编写应用程序上。

HID Attack Demo Code

          攻击的原理是编写程序,让程序模拟键盘自动进行键盘敲击,通过运行win+R 输入cmd命令,进行系统攻击,部分功能代码如下:
3347d11e276d5651309ebb95fb507ca1.png

          验证过程可以把烧写改装好的开发板直接连接到windows机器上,稍等片刻可以看到系统已经在无人干扰的情况下自动执行了想应的程序,实现了我们的攻击,当然真正的攻击最简单的可以系统自带的powershell程序执行相应的攻击操作,例如植入系统后门等。

BY:广州竞远安全技术股份有限公司

指导单位
广东省公安厅网络警察总队 广东省信息安全等级保护协调小组办公室