Discord-CLI Payload完整详解:如何用Discord机器人远程操控USB Rubber Ducky
【免费下载链接】usbrubberducky-payloadsThe Official USB Rubber Ducky Payload Repository项目地址: https://gitcode.com/GitHub_Trending/us/usbrubberducky-payloads
Discord-CLI是 usbrubberducky-payloads 官方 Payload 仓库中一个非常实用的远程访问(Remote Access)载荷。它基于 Hak5 的 USB Rubber Ducky 硬件,利用Discord 机器人的 API作为命令与控制服务器,让你在插入 U 盘后无需 IP 地址、无需公网服务器,仅凭一个 Discord 频道就能远程操控目标 Windows 10/11 电脑——在频道里发一条消息,就等于在目标机器上执行一条命令,并自动把输出发回频道。🦆
一、Discord-CLI 是什么?能做什么?
简单来说,Discord-CLI 是一个反向 Shell(Reverse Shell)工具,它把"键盘注入"和"即时聊天"巧妙结合在一起:
- 🎯目标平台:Windows 10 / Windows 11
- 🔌控制方式:通过 Discord Bot 接收命令、回传结果
- 📦实现载体:一条 PowerShell 单行命令 + DuckyScript 脚本
- 📄核心文件:Discord-CLI.txt
官方 README.md 中的描述是:"Gain a reverse shell on a target Windows PC using Discord's bot API as a command and control server."(利用 Discord 机器人 API 作为 C2 服务器,在目标 Windows 电脑上获取反向 Shell。)
二、工作原理:一次按键注入如何变成远程控制台?
Discord-CLI 的执行流程可以拆成4 个阶段,理解它就理解了整个 BadUSB 的精髓:
第 1 步:被动检测是否为 Windows 系统
脚本开头内嵌了官方的 PASSIVE_WINDOWS_DETECT 扩展(被动式 Windows 系统检测 + 就绪检测)。它不发出任何按键,而是通过主机锁指示灯等被动信号判断当前插入的是不是 Windows 机器:
- ✅ 检测到 Windows → 点亮绿灯,继续执行
- ❌ 不是 Windows → 点亮红灯,停止 Payload
这让 Ducky 插到 Linux、Mac 或其他系统上时自动"装死",避免误触发。
第 2 步:模拟键盘打开 PowerShell
确认是 Windows 后,脚本按下Win + R组合键,在"运行"框中输入:
powershell -Ep Bypass -W H
这条命令以绕过执行策略的方式启动一个 PowerShell 窗口,为后续注入命令打开通道。
第 3 步:注入 Discord 轮询单行脚本
接下来,Ducky 把一段精心压缩的 PowerShell 单行脚本"打字"注入到窗口中。这段脚本的核心逻辑是:
- 每 3 秒向 Discord 指定频道拉取最新消息
- 检查最后一条消息是否来自人类(非机器人发的)
- 如果是新命令 → 本地执行并捕获输出
- 输出超过 1900 字符时自动分块发送回频道(Discord 单条消息上限 2000 字符)
第 4 步:在 Discord 频道里"聊天式"发命令
完成后,你只需在自己的 Discord 频道里直接输入命令,例如whoami,目标的执行结果就会以代码块形式回帖。整个过程无需 IP、无需端口转发、无需自建 C2 服务器,天然穿透绝大多数内网环境。💬
三、快速上手:4 步配置 Discord-CLI 远程 Shell
1️⃣ 创建 Discord Bot 并获取 Token
在 Discord 开发者后台创建机器人,开启相应权限与事件(Message Content Intent),拿到你的Bot Token。
2️⃣ 确定接收命令的频道 ID
打开你希望作为"控制台"的频道,复制频道 ID。
3️⃣ 修改 Payload 中的两个占位符
编辑 Discord-CLI.txt,替换文件开头的两个定义:
#TOKEN→ 你的 Bot Token(第 9 行)#CHANNEL→ 你的频道 ID(第 10 行)
4️⃣ 用 PayloadStudio 编译并刷入 Ducky
将文件拖入 Hak5 官方PayloadStudio编译后写入 USB Rubber Ducky,插入目标电脑即可。等几秒钟后,到频道里发一句whoami测试——看到回显就说明通道已建立。✅
四、进阶选择:普通版 vs 隐藏版
仓库中提供了两个版本,按需选择:
| 版本 | 文件 | 特点 |
|---|---|---|
| 标准版 | Discord-CLI.txt | 显示 PowerShell 窗口,便于调试 |
| 隐藏版 | Discord-CLI-Hidden.txt | 通过 Win32 API 隐藏控制台窗口,更不易被察觉 |
隐藏版额外注入了一段调用ShowWindowAsync的代码,将 PowerShell 窗口句柄设为隐藏状态。README 中特别提示:"Use the hidden version to hide the running console window from the user on Windows 10 and 11!"(在 Win10/11 上想隐藏控制台窗口,请使用隐藏版)。
五、相关文件与延伸阅读
- 载荷源码:payloads/library/remote_access/Discord-CLI/Discord-CLI.txt
- 隐藏版载荷:payloads/library/remote_access/Discord-CLI/Discord-CLI-Hidden.txt
- 使用文档:payloads/library/remote_access/Discord-CLI/README.md
- 被动检测扩展:payloads/extensions/passive_windows_detect.txt
- 同类远程访问载荷:
payloads/library/remote_access/目录下还有 ReverseDucky、RegDoor、NSHELL 等 10+ 个方案
六、使用须知 ⚠️
- 合法使用:该脚本仅限在你自己拥有的设备或已获书面授权的系统上测试(README 原文强调此点)。未经授权操控他人设备属违法行为。
- 保护 Token:Bot Token 等同于"钥匙",切勿泄露到公开渠道。
- 权限与事件:若频道里发消息无回显,优先检查机器人权限与 Message Content Intent 是否已开启。
- 分块机制:大文件输出会被切成 1900 字符/块的代码块逐条发出,注意按顺序拼接。
总结:Discord-CLI 展示了 BadUSB 技术的典型思路——把最常见的聊天软件变成"免服务器"的远程控制台。掌握它的原理后,你也能理解 Payload 仓库中大量基于即时通讯工具(如 Telegram)构建的远程访问方案。🛡️
【免费下载链接】usbrubberducky-payloadsThe Official USB Rubber Ducky Payload Repository项目地址: https://gitcode.com/GitHub_Trending/us/usbrubberducky-payloads
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考