neur0sp1cy/TSK

GitHub: neur0sp1cy/TSK

TSK 是一个用于管理和部署 HAK5 设备及普通 USB 闪存盘 payload 的开源 Web 平台,适用于授权安全测试实验室。

Stars: 2 | Forks: 0

TSK | The Skeleton Key

TSK | The Skeleton Key

TSK | The Skeleton Key

DEF CON 34 Edition

一个用于构建和部署 USB / HID payload 的免费、开源平台。包含一个 Web UI,用于 payload 浏览、设备刷写、SnarfSnarf exfil 生成、lure 构建和 phone-home catch。 这是 **The Skeleton Key**(2018 年 TUI 体系的延续)的现代 Web 重构版。GitHub 仓库:**[neur0sp1cy/TSK](https://github.com/neur0sp1cy/TSK)**。 **作者 [Neur0Sp1cy](https://github.com/neur0sp1cy)** **联系方式:** [neur0sp1cy@proton.me](mailto:neur0sp1cy@proton.me) - 如有问题、疑虑和评论。 ## 合法与授权使用 TSK **仅用于授权的安全测试** - 私人实验室、由您控制的 VM,或在您拥有**书面许可**可以部署 payload 并进行评估的环境中。 **请勿**将此项目用于您不拥有或未获授权测试的系统。我们不支持任何滥用、骚扰和非法活动,相关责任完全由您个人承担。 完整政策:**[SECURITY.md](SECURITY.md)**(授权使用、漏洞报告、免责声明)。 ## 功能 - **Web UI** - 浏览 HAK5 payload 仓库,预览、编辑并刷写至受支持的设备;支持折叠分类和带有状态持久化功能的包折叠面板 - **USB Dropper** - 构建 exfil 脚本(PowerShell / Bash)、lure 包(LNK, README, `.desktop`),并刷写至普通 USB 闪存盘 - **SnarfSnarf (SNARF modal)** - 可视化 exfil 构建器,支持 phone-home 或存储于设备本地输出;保存的脚本会显示在 **EXFILS** 下,lure 包显示在 **LURES** 下,手动编写的文件显示在 **MY PAYLOADS**(`+ NEW`)下 - **CATCH** - 用于接收 phone-home 上传的实时接收器,支持预览和 ZIP 导出 - **LAN Turtle** - 浏览器内的 SSH 终端 - **主题** - 六种 UI 主题(从默认到 flat);在命令栏使用 `theme ` - **教程** - 位于 `/tutorial` 的应用内任务 有关实验室设置和详细的 USB 测试场景,请参阅 [TESTING.md](TESTING.md)。 **发布前检查清单:** [RELEASE_ROADMAP.md](RELEASE_ROADMAP.md)(时间表、细节完善、上线)。 **发布说明:** [CHANGELOG.md](CHANGELOG.md) **完整功能检查清单:** [TESTING_CHECKLIST.md](TESTING_CHECKLIST.md)(在发布前对每个功能进行通过/失败测试)。 **应用内教程:** 打开 [/tutorial](http://127.0.0.1:1337/tutorial)(或 `http://:1337/tutorial`),包含涵盖所有设备工作流程的七个引导任务。也可以从 Help modal(`H`)中访问。 ## 环境要求 | 要求 | 说明 | |-------------|--------| | Python 3.8+ | 推荐 3.10+ | | [uv](https://docs.astral.sh/uv/) | 推荐用于安装依赖 | | 普通 USB 闪存盘 | FAT32 或 exFAT,可写入(不能是 Bunny/Ducky 卷) | | 同一局域网 | phone-home 所需;受害机器必须能够连接到 `LHOST:LPORT`(默认为 **1337**) | | java | 仅用于 Rubber Ducky 编码 | | ssh | 仅用于 LAN Turtle 操作 | 依赖项会通过 `uv sync` 自动安装(FastAPI、uvicorn、bcrypt、jinja2、pylnk3、paramiko)。 ## 快速开始 ``` curl -LsSf https://astral.sh/uv/install.sh | sh git clone https://github.com/neur0sp1cy/TSK cd TSK uv sync uv run python server.py ``` 在浏览器中打开 **http://127.0.0.1:1337**(或在 Linux 上运行 `./run_web.sh`)。 **趣味命令**(命令栏):`quote` · `joke` · `hack the planet` · `defcon` · `play`/`pause`/`next`(将音轨拖放到 `web/static/music/` 目录中) · `present` 用于演示布局。按 **H** 键查看完整列表。 要启用 HTTPS(从局域网内其他机器访问时推荐): ``` uv run python server.py --ssl ``` 自签名证书会在 `ssl/tsk.crt` 处生成一次,并在每次重启时重复使用。您的浏览器在首次访问时会显示安全警告 - 点击 **Advanced(高级)**,然后点击 **Proceed(继续)** 以接受它。Phone-home snarf 脚本使用纯 HTTP,因此不受影响。 ### Windows ``` git clone https://github.com/neur0sp1cy/TSK cd TSK uv sync uv run python server.py # 或者:uv run python server.py --ssl ``` ### 首次登录 1. 在登录界面点击 **NEW** 并注册一个操作员账号(密码至少 8 个字符)。 2. 打开 **CONFIG**(SYSTEM 下的 **C** 磁贴)并将 **LHOST** 设置为您的局域网 IP(使用局域网 IP 助手)。 3. 除非您更改了服务器端口,否则将 **LPORT** 设置为 `1337`。 4. 可选:打开 **/tutorial** 查看“任务 1”的详细步骤,或按 **H** 键并点击 **OPEN TUTORIAL**。 各操作员配置:`users//config.json` 已保存的 USB payload:`users//payloads/usb/`(exfil 脚本,`packages//` lure 包) 克隆的仓库:`repos/` Phone-home 上传:`snarfed//`(按操作员隔离) 会话认证:需要注册/登录;API 使用 `X-TSK-Token` 请求头。密码至少 8 个字符。 ## Web UI | 区域 | 用途 | |------|---------| | 左侧导航 | **SYSTEM** 磁贴(About, Help, Config, Repos, Operator) + **DEVICES** 卡片 | | 中间区域 | 所选设备的 payload 列表(展开/折叠分类和包);USB 会在页眉处显示 **+ NEW**、**SNARF** 和 LHOST 标签 | | Modals | CONFIG, REPOS, OPERATOR, SNARF (USB), About, Help | | 右侧面板 | 预览、USB 闪存盘扫描、FLASH / EDIT / SAVE | | 底部栏 | 命令行(`set lhost`、`clone ducky`、`devices` 等) | | **H** | Help modal(操作员指南) | | **A** | About modal | ### 键盘快捷键 | 按键 | 操作 | |-----|--------| | `D` `B` `U` `L` | 跳转至设备(Ducky, Bunny, USB, Turtle) | | `C` `R` `O` `A` `H` | Config, Repos, Operator, About, Help | | `S` | SNARF 构建器(仅限 USB Dropper) | | `f` / `Ctrl+Enter` | 刷写 (Flash) | | `e` | 编辑 payload | | `Esc` | 关闭 modals | ## 支持的设备 | 设备 | 刷写方法 | |--------|----------------| | USB Dropper | Web UI:将脚本和 lure 包刷写至普通 USB 闪存盘 | | Rubber Ducky (OG) | `encoder.jar` → SD 卡 | | Bash Bunny (OG) | 大容量存储 → switch1 / switch2 | | LAN Turtle (OG) | SSH/SCP 推送 | | Teensy 3.2 / 4.0 | 通过 `teensy_loader_cli` 刷入已编译的 `.hex`(当存在内置 sketch 时侧边栏会显示;刷写需要在 `.ino` 旁边有 `.hex` 文件) | 从 REPOS modal(侧边栏 **R**)克隆 HAK5 库:`clone ducky`、`clone bunny`、`clone turtle`、`clone all`。 ## 项目结构 ``` TSK/ ├── server.py # Web server (start here) ├── web/index.html # Web UI ├── web/tutorial.html # In-app tutorial missions ├── web/static/ # Icons, branding, music drop folder ├── dropper/ # SnarfSnarf, lure builder, receiver ├── flash.py # Flash engine ├── config.py # Auth and per-operator config ├── repos.py # Repo clone and indexing ├── users/ # Operator data ├── repos/ # Cloned payload libraries ├── snarfed/ # Phone-home catches (per-operator subdirs) ├── TESTING.md # Lab testing guide ├── TESTING_CHECKLIST.md ├── RELEASE_ROADMAP.md ├── SECURITY.md # Authorized use and disclosure ├── archive/tui/ # Archived TUI notes (removed; web UI only) └── pyproject.toml ``` ### Bug 报告与支持 - **Bug:** [GitHub Issues](https://github.com/neur0sp1cy/TSK/issues)(请使用 bug 报告模板) - **复现帮助:** [TESTING_CHECKLIST.md](TESTING_CHECKLIST.md) - 请注明您当前所处的章节 - **TSK 的安全问题:** 参阅 [SECURITY.md](SECURITY.md)(负责任的漏洞披露,请勿在公开 issues 中披露漏洞利用细节) - **问题 / 疑虑:** [neur0sp1cy@proton.me](mailto:neur0sp1cy@proton.me) - **预期:** 尽力提供支持;请保持建设性 - 我们致力于消灭 bug,但不会容忍辱骂 **启用 Issues:** 在 GitHub 上,打开 **neur0sp1cy/TSK** → **Settings** → **General** → **Features** → 勾选启用 **Issues** → **Save**。新的 issues 将使用 `.github/ISSUE_TEMPLATE/` 中的 bug 报告模板。 *构思于拉斯维加斯闷热且霓虹闪烁的灯光之下。*
标签:HID攻击, USB闪存设备, Web管理界面, 后端开发, 搜索语句(dork), 数据窃取, 逆向工具