使用前声明(教育与道德用途)
请注意:本指南仅供教育和道德目的使用。其目标是帮助安全专业人员、学生和研究人员更好地理解物理漏洞并加强系统防御。未经所有者明确书面许可,对任何计算机系统或网络进行未经授权的访问均属非法。对于本信息的任何滥用或由此产生的任何损害,本文不承担责任。请始终负责任地运用你的技能,为构建更安全的数字环境贡献力量。

背景
USB 橡皮鸭是一种功能强大的渗透测试设备,看起来是一个普通的 U 盘,但本质是一个按键注入工具。当它连接到目标系统时,会模拟 USB 键盘并快速键入预编程的命令。通常无需提升权限,就可以执行有效载荷、运行系统命令或更改配置。由于操作系统天然信任键盘这类人机接口设备,橡皮鸭往往会被立即识别为“可用的输入设备”,从而绕过许多传统安全控制。
道德黑客常用它来收集系统信息、演示“物理访问”带来的风险、利用错误配置,从而揭示终端安全中的薄弱点。它之所以流行,关键就在于“简单但有效”。本文将演示如何用 Raspberry Pi Pico 构建一个类似的按键注入器,用于安全教育与防御验证。
树莓派 Pico 是一款小巧、价格亲民的微控制器,搭载树莓派定制的 RP2040 芯片,面向创客、学生以及嵌入式/硬件项目开发者。与完整的树莓派电脑不同,Pico 不运行标准操作系统,而是使用 MicroPython 或 C/C++ 直接将程序上传至开发板。它配备双核 ARM Cortex-M0+、264KB SRAM 以及丰富的 GPIO 引脚,可外接传感器、LED、电机等外设。由于其效率与精确计时能力出色,也常用于低功耗应用、机器人、物联网项目和动手学习场景。
所需材料
- 树莓派 Pico(任意版本)
- 树莓派 Pico W:带 WiFi 和蓝牙功能的无线单板计算机(可选)

- USB-A 转 Micro USB 数据线(用于连接 Pico 与电脑)

- 代码仓库(克隆或下载)
https://github.com/dbisu/pico-ducky?source=post_page-----5e5b4e3e7ec4---------------------------------------

安装 CircuitPython(刷入固件)
1)进入 BOOT 模式并挂载为磁盘
- 连接树莓派 Pico 至电脑时按下启动(boot)按钮。

- 连接后,“此电脑”中会出现 RPI-RP2 驱动器。

- 打开 RPI-RP2。

2)下载并拷贝 uf2 固件
- 从网站下载 CircuitPython 固件:
https://circuitpython.org/board/raspberry_pi_pico/

- 将
uf2 文件复制到 RPI-RP2(E:) 驱动器。

- 等待片刻,设备将重启并显示另一个名称 CIRCUITPY(E:)。

将 CircuitPython 配置为 USB 橡皮鸭
接下来要做的是:在 Pico 上放入 HID 相关库与脚本,让它能模拟 USB 键盘并执行预设的按键注入内容。
-
在树莓派 Pico 上安装“橡皮鸭转换器”(相关脚本与依赖来自项目文件)。
-
访问以下发布页,下载最新的 adafruit-circuitpython-bundle。
github.com/adafruit/Adafruit_CircuitPython_Bundle/releases
注意:确保下载 9.x 版本,因为这里使用的是 CircuitPython 9.2.0。

- 解压下载文件,进入其
lib 文件夹。找到 adafruit_hid 文件夹并复制,然后进入 Pico 的 lib 文件夹并粘贴。

- 从
adafruit-circuitpython-bundle-9.x-mpy-20241108 的 lib 文件夹中复制以下内容到 Pico 的 lib:
asyncio
adafruit_debouncer.mpy
adafruit_wsgi.mpy
adafruit_ticks.mpy
完成后,Pico 上的 lib 文件应如下所示:

-
将 duckyinpython.py、code.py、webapp.py、wsgiserver.py 复制到 Pico 的根文件夹。
-
从 pico-ducky-v2.0-us 文件中复制 boot.py 到 Pico 的根目录。

编写并验证 payload(功能自检)
- 用 Notepad++ 打开
payload.dd 文件,输入以下有效载荷,用于验证 DIY 橡皮鸭是否正常工作。编辑完成后务必保存 payload.dd 文件。
DELAY 1000
GUI r
DELAY 500
STRING notepad
ENTER
DELAY 1000
STRING DIY Ducky Rocks!!!
- 断开树莓派 Pico 的连接,然后重新插入。若一切正常,你应该会看到类似如下结果(自动打开记事本并输入内容):

这个示例有效载荷刻意设计得很简单,目的只是验证链路是否打通:设备是否能被识别为键盘、是否能按预期“打字”。如果你想查看更详细的信息与更多 payload 示例,可参考官方 USB 橡皮鸭有效载荷仓库:
https://github.com/hak5/usbrubberducky-payloads

结论
使用树莓派 Pico 制作 DIY 按键注入器,不只是一次“把板子插上电脑就能跑”的硬件实验,更是在验证一个关键事实:现代操作系统对人机接口设备(HID)的“固有信任模型”依然是重要的物理安全边界。
当我们用一块价格亲民的微控制器去模拟键盘时,等于复刻了一条现实中的攻击路径:只要具备物理接触机会,就可能在几秒内触发一系列自动化操作,绕过一些纯软件层面的防护。理解它,才能更好地防它——这也是提升终端安全与安全意识的第一步。
如需围绕此类硬件安全与终端防护继续延伸学习,可以在 云栈社区 查找更多相关讨论与实践经验。
|