USB Rubber Ducky按钮部署指南:button_deploy.txt扩展实现按键触发多阶段部署
【免费下载链接】usbrubberducky-payloadsThe Official USB Rubber Ducky Payload Repository项目地址: https://gitcode.com/GitHub_Trending/us/usbrubberducky-payloads
在USB Rubber Ducky的官方扩展库中,button_deploy.txt 是一个专为按键触发多阶段部署设计的开发期辅助扩展。它让Ducky插入后默认伪装成U盘(存储模式),只有按下机身物理按钮才开始执行payload,从根源上避免了开发时"误插即触发"的经典事故。本文带你完整解析这个扩展的工作原理、三行核心逻辑,以及如何把它用进你自己的多阶段payload中。
一、背景:Ducky的"按钮"能干什么
USB Rubber Ducky看起来是一根普通U盘,本质是一个HID键盘,插入电脑后会被无条件信任。它的多阶段payload往往依赖两类"手动控制点":
- ATTACKMODE 切换:在键盘模式(HID)与U盘模式(STORAGE)之间切换,每次切换目标系统会重新枚举设备;
- WAIT_FOR_BUTTON_PRESS / BUTTON_DEF:payload执行到"等按钮"指令时暂停,操作员确认现场状态后再按按钮放行下一段代码。
仓库中的Button示例目录提供了9个循序渐进的用法,比如Button-example1.txt演示"按键放行",Button-example3.txt演示"LED提示+按按钮才执行第二阶段":
红灯亮起 = payload在等待,操作员确认目标已就绪 → 按下按钮 → 绿灯亮起,第二阶段代码开始执行。
二、button_deploy.txt扩展逐行解析
整个扩展只有30行,核心逻辑集中在最后三行:
| 代码 | 作用 | 阶段 |
|---|---|---|
ATTACKMODE STORAGE | 上电后立即以U盘身份枚举,看起来就是一根普通U盘 | 第1阶段:潜伏 |
WAIT_FOR_BUTTON_PRESS | 挂起等待,直到操作员按下机身按钮 | 第2阶段:确认 |
ATTACKMODE HID | 切回键盘身份,目标重新枚举后payload开始注入按键 | 第3阶段:执行 |
ATTACKMODE STORAGE WAIT_FOR_BUTTON_PRESS ATTACKMODE HID使用方式非常简单——把该扩展放在payload文件顶部即可(扩展文档中也明确写明Place at the top of your payload)。
它的完整文件位置:payloads/extensions/button_deploy.txt
它解决的真实痛点
开发payload时最尴尬的场景:刚写完代码,习惯性插到自家电脑上测试——键盘一识别就开始猛敲,可能误关掉未保存的文档。而有了BUTTON_DEPLOY:
- 插入 = 安静:设备只表现为存储盘,不产生任何按键;
- 按按钮 = 开火:确认终端/编辑器光标就绪后,手动触发;
- 防误触保险:按钮定义可被payload内的
BUTTON_DEF重新覆盖,行为可控。
三、一个重要的细节:按钮不会重新加载payload
扩展文档中的 IMPORTANT NOTE 特别提醒:
按按钮不会重新加载 inject.bin。修改过payload源码后,必须拔插Ducky(power cycle)让新固件重新上电执行。
也就是说,这个扩展是防误触助手,不是热重载工具。调试循环的正确姿势是:改源码 → PayloadStudio编译 → 拔插Ducky → 插入目标 → 等存储模式出现 → 按按钮放行。
四、把"按钮"用出多阶段部署的更多花样
button_deploy只用了"按钮"能力的一半。结合仓库其他示例,你可以玩出完整的多阶段交互式部署:
1. 循环等待 + 按钮终止
Button-example4.txt中,payload每秒输入一个点,按按钮后立即停止并打印提示——适合"先侦察、确认后终止"的长循环场景。
2. 嵌套按钮定义(阶段推进器)
Button-example6.txt演示了"第一次按键执行第一段按钮函数,同时注册第二段按钮函数",天然适配:
按键1 → 阶段二开始 → 按键2 → 阶段三开始 → …
3. 按键选单菜单
Example_Payloads/payload_menu.txt把NUMLOCK当方向键、Ducky按钮当确认键,实现了一个"插入后手动选payload再执行"的交互式菜单,思路与button_deploy一脉相承:按钮从"触发器"升级为"选择器"。
4. 按钮+锁键组合口令
protected_storage_mode.txt要求按"特定顺序点亮CapsLock/NumLock + 按按钮提交"的三段组合,才解锁存储模式——相当于给按钮加了"密码",误触发概率几乎为零。
五、相关扩展速查表
| 扩展/示例 | 路径 | 与按钮的关系 |
|---|---|---|
| BUTTON_DEPLOY | payloads/extensions/button_deploy.txt | 默认存储模式,按键启动payload |
| PROTECTED_STORAGE_MODE | payloads/extensions/protected_storage_mode.txt | 按钮+锁键组合口令解锁 |
| SELF_DESTRUCT | payloads/extensions/self_destruct.txt | 用DISABLE_BUTTON禁用按钮,防止二次触发 |
| 按键等待示例 | payloads/examples/Button/Button-example1.txt | WAIT_FOR_BUTTON_PRESS基础用法 |
| 多段按键示例 | payloads/examples/Button/Button-example3.txt | LED提示+按钮推进第二阶段 |
六、上手三步走 🦆
- 准备:用PayloadStudio打开你自己的payload源码,在文件顶部引入BUTTON_DEPLOY扩展(或直接粘贴其三行核心逻辑);
- 编译烧录:编译生成inject.bin写入Ducky,插入测试机——此时它应该只表现为U盘,屏幕无任何输入;
- 确认放行:打开终端、把光标放在安全位置,按下Ducky按钮,观察payload按HID键盘身份开始执行。
总结:button_deploy.txt用三行代码把"插入即执行"变成了"按按钮才执行",是多阶段部署中最实用的一颗保险丝。配合BUTTON_DEF、LED状态灯和锁键反射,你可以构建出从"潜伏—确认—分阶段执行—自毁"的完整交互式部署链路。
⚠️ 本仓库payload仅用于授权范围内的安全测试与学习。Ducky行为不可逆、速度快,务必先在虚拟机或自己的设备上验证后再部署到任何真实目标。
【免费下载链接】usbrubberducky-payloadsThe Official USB Rubber Ducky Payload Repository项目地址: https://gitcode.com/GitHub_Trending/us/usbrubberducky-payloads
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考