一块售价35元人民币的微控制器,插上USB线就能在3秒内接管你的电脑。这不是电影桥段,是树莓派Pico的真实能力。更麻烦的是:它看起来完全无害。和普通的U盘、充电线没有区别。但内部运行的脚本,可以自动打开终端、下载后门、或者把敏感文件传走。
本文基于CircuitPython v9.1.4和Adafruit CircuitPython Bundle v9.x的技术环境,完整拆解这款微控制器的"Bad USB"改造流程。所有操作仅针对自有设备,用于理解攻击面、加固防御。
为什么它成了黑客的新玩具
Bad USB攻击不算新东西。Hak5的USB Rubber Ducky早在2010年就开创了这类工具,售价约60美元。它的核心逻辑很简单:让电脑把恶意设备识别成键盘,然后"打字"输入预设指令。但Ducky有硬伤——价格门槛、专用硬件、有限的脚本灵活性。
树莓派这款产品的入局改变了游戏规则。RP2040双核处理器、264KB SRAM、2MB闪存、USB 1.1控制器——这些参数放在2020年只是"够用",放在攻击场景里却是"过剩"。关键突破来自Pico Ducky项目。开发者把DuckyScript解释器移植到了CircuitPython上,让这块板子能直接运行原本为Ducky编写的攻击脚本。GitHub上DuckyScript Payloads仓库里的现成脚本,理论上可以直接套用。这意味着攻击者不需要从零写代码,复制粘贴就能开工。
改造清单:硬件成本不到50元
所需材料极简:树莓派Pico或Pico W(带Wi-Fi版本)、USB数据线(Micro-USB或USB-C,取决于版本)、一台用于烧录的电脑。软件层面需要CircuitPython固件(v9.1.4或更新版本)、Thonny IDE(配置为CircuitPython解释器)、Adafruit CircuitPython库包(v9.x)、以及Pico Ducky项目文件。
总成本:官方售价4美元,国内渠道约25-35元人民币。加上数据线,50元封顶。对比Hak5 Ducky的60美元定价,Bad USB的门槛被砍掉了90%。
第一步:刷入CircuitPython
出厂时运行的是MicroPython。要支持USB HID(人机接口设备)模拟,需要切换到CircuitPython生态。操作流程:按住BOOTSEL键,将设备通过USB连接到电脑。此时会以RPI-RP2磁盘模式出现。把下载好的CircuitPython UF2文件拖进去,自动刷写完成。重新插拔后,会显示为CIRCUITPY磁盘。这就是后续工作的基础环境。
第二步:配置Thonny IDE
Thonny是Python新手向的IDE,但对硬件编程支持意外的好。打开后进入"运行→配置解释器",选择"CircuitPython (generic)",端口指向已连接的设备。配置成功后,Thonny的文件浏览器会显示文件系统。可以直接拖拽文件、实时编辑代码、查看串口输出。
第三步:部署依赖库
从Adafruit CircuitPython Bundle中提取以下文件,复制到lib目录:adafruit_hid/(USB HID模拟核心库)、adafruit_wsgi/(Web服务器网关接口,Wi-Fi版本需要)、asyncio/(异步编程支持)、adafruit_debouncer.mpy(按键消抖)、adafruit_ticks.mpy(时间戳处理)。adafruit_hid是关键。它能让设备把自己注册为键盘、鼠标、游戏手柄等HID设备。操作系统会无条件信任这些设备——这是USB协议的先天设计,也是Bad USB攻击的根基。
第四步:植入Pico Ducky
从Pico Ducky项目复制三个核心文件:boot.py(启动配置)、code.py(主程序入口)、duckyinpython.py(DuckyScript解释器)。其中code.py决定了设备被识别为哪种HID设备。默认配置是键盘,也可以改为鼠标或复合设备。duckyinpython.py负责解析DuckyScript语法,把类似"STRING hello world"的指令转换成实际的USB HID报告。
第五步:编写攻击脚本
在根目录创建payload.dd文件,这就是实际执行的攻击载荷。以下是一个针对Linux系统的演示脚本,功能是在用户主目录创建文件并写入内容:
DELAY 1000
GUI
DELAY 500
STRING terminal
ENTER
DELAY 1000
STRING cd ~ && echo "System compromised" > warning.txt
ENTER
脚本逻辑:等待1秒确保系统就绪,按下Super键打开应用启动器,输入"terminal"并回车打开终端,再等待1秒让终端窗口出现,最后输入shell命令创建文件并写入文本。DELAY指令至关重要。目标系统的响应速度不同,过短的延迟会导致按键丢失。实际攻击中需要根据目标环境反复调试。
防御视角:如何识别这种威胁
从防护端看,这类攻击有几个识别特征。设备管理器里会出现异常的HID设备,尤其是"USB输入设备"类别下多出的未知条目。部分EDR(端点检测与响应)产品能监控异常的键盘输入速率——人类打字有节奏变化,自动化脚本通常是恒定间隔。最彻底的防御是物理层面:禁用未授权的USB端口,或使用带数据隔离的充电线。
但技术防御总有盲区。这款产品的体积小到可以藏进任何USB外设的壳体里——鼠标、键盘、充电宝。攻击者甚至不需要亲自到场,把改造过的"礼物"寄给目标即可。这种供应链式的物理攻击,是目前企业安全架构中最难覆盖的死角。
热门跟贴