thijsvos/crackswarm

GitHub: thijsvos/crackswarm

一款基于 Rust 的分布式 hashcat 编排工具,提供加密传输、实时 TUI 监控和多阶段活动支持,用于高效协调多 GPU 密码破解任务。

Stars: 0 | Forks: 0

# crackswarm [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/bb235a323b150114.svg)](https://github.com/thijsvos/crackswarm/actions/workflows/ci.yml) [![Release](https://img.shields.io/github/v/release/thijsvos/crackswarm)](https://github.com/thijsvos/crackswarm/releases) 分布式 hashcat 编排工具。通过加密传输、实时 TUI 仪表板和多阶段活动支持,将破解工作分配给多个 GPU worker。 ![Crackswarm TUI 演示](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/a4fe4f6a47150117.gif) ## 目录 - [功能](#features) - [架构](#architecture) - [快速开始](#quick-start) - [TUI 仪表板](#tui-dashboard) - [活动](#campaigns) - [命令](#commands) - [安全性](#security) - [工作原理](#how-it-works) - [更新日志](CHANGELOG.md) - [贡献](#contributing) - [许可证](#license) ## 功能 - **分布式破解** -- 在单一仪表板中协调多个 GPU worker 上的 hashcat - **多种攻击模式** -- 暴力破解/掩码、字典,以及字典+规则攻击 - **内置规则** -- 包含 [OneRuleToRuleThemStill](https://github.com/stealthsploit/OneRuleToRuleThemStill)(由 [Will Hunt](https://github.com/stealthsploit) 编写的 4.8 万条规则,MIT 许可证) - **Noise IK 加密** -- 所有 worker 流量均为端到端加密(WireGuard 级别,通过 `snow` 实现) - **实时 TUI 仪表板** -- 协调器和 agent 上均提供带有 vim 键绑定的实时进度显示 - **多阶段活动** -- 将攻击阶段链接在一起;未破解的哈希将自动转入下一阶段 - **模式分析器** -- 检查已破解的密码,为后续阶段生成针对性的掩码 - **自适应分块** -- 根据 worker 的 GPU 速度调整分块大小(每个分块目标用时约 10 分钟) - **基于 Token 的注册** -- 使用单个命令即可接入新的 worker,无需手动交换密钥 - **自动故障转移** -- 心跳监控,在 worker 断开连接时自动重新分配分块 ## 架构 ``` crackctl (CLI) | REST API (127.0.0.1) | ┌───────────────────┴───────────────────┐ │ crack-coord │ │ │ │ ┌───────────┐ ┌────────┐ ┌─────────┐ │ │ │ Scheduler │ │ SQLite │ │ TUI │ │ │ └───────────┘ └────────┘ └─────────┘ │ │ │ │ Noise IK encrypted TCP │ └──────────┬───────────────┬────────────┘ │ │ ┌───────┴───────┐ ┌─────┴─────────┐ │ crack-agent │ │ crack-agent │ ... │ hashcat │ │ hashcat │ │ GPU(s) │ │ GPU(s) │ └───────────────┘ └───────────────┘ ``` | 二进制文件 | 角色 | |--------|------| | `crack-coord` | 带有 TUI 仪表板的协调器服务器 | | `crack-agent` | Worker agent -- 运行 hashcat,报告结果 | | `crackctl` | 用于任务/worker/活动管理的操作员 CLI | ## 快速开始 ### 前置条件 - **Rust 工具链** -- 通过 [rustup](https://rustup.rs/) 安装 - **hashcat** -- 已安装并在 PATH 中 ([hashcat.net](https://hashcat.net/hashcat/)) - 适合您硬件的 GPU 驱动程序(NVIDIA、AMD 等) ### 构建 ``` cargo build --release ``` 二进制文件位于 `target/release/` 中:`crack-coord`、`crack-agent`、`crackctl`。 适用于 Linux、macOS 和 Windows 的预编译二进制文件可在 [发布页面](https://github.com/thijsvos/crackswarm/releases) 获取。 ### 单机设置 最快的入门方式 -- 协调器和 agent 在同一台机器上: ``` # 使用内置本地 agent 启动 coordinator crack-coord run --with-agent # 上传 hash 文件 crackctl file upload hashes.txt # 创建 brute-force 任务 crackctl task create \ --name "NTLM brute" \ --hash-mode 1000 \ --hash-file \ --mask '?a?a?a?a?a?a' ``` 协调器 TUI 将通过五个选项卡显示实时进度:Tasks、Workers、Results、Audit Log 和 Campaigns。 ### 多机设置 **在协调器上:** ``` # 启动 coordinator crack-coord run --bind 0.0.0.0:8443 # 为新 worker 生成 enrollment token crackctl worker enroll --name "gpu-server-1" ``` **在每个 worker 上:** ``` # 使用 token 进行 enroll(server 地址已嵌入其中) crack-agent enroll --token '' # 在后续运行中,agent 会自动重新连接 crack-agent run --server :8443 ``` 如果连接断开,worker 会以指数退避(1 秒到 60 秒)的方式自动重新连接。 ### 字典攻击 上传词表并创建字典任务: ``` # 上传 wordlist crackctl file upload rockyou.txt --type wordlist # Dictionary attack (hashcat -a 0) crackctl task create --name "Dict attack" --hash-mode 1000 \ --hash-file --wordlist ``` ### 带规则的字典攻击 `rules/` 目录包含 [OneRuleToRuleThemStill](https://github.com/stealthsploit/OneRuleToRuleThemStill) -- 这是一个由 [Will Hunt (@stealthsploit)](https://github.com/stealthsploit) 编写、包含 48,439 条规则的优化规则集,采用 MIT 许可证。上传它并与词表结合使用: ``` # 上传 rules 文件 crackctl file upload rules/OneRuleToRuleThemStill.rule --type rules # Dictionary + rules attack crackctl task create --name "Dict+OTRTS" --hash-mode 1000 \ --hash-file --wordlist --rules-file ``` 词表和规则文件通过加密的 Noise 通道传输给 worker 并在本地缓存。文件以约 40KB 的分块发送,且每个 worker 仅传输一次。 ## TUI 仪表板 ### 协调器 协调器 TUI 有五个带有 vim 风格导航的选项卡: | 选项卡 | 内容 | |-----|---------| | **Tasks** | 带有进度条、速度、预计剩余时间、分块明细的任务列表 | | **Workers** | Worker 状态、GPU 设备、hashcat 版本、最后在线时间 | | **Results** | 已破解的哈希及明文、worker 归属、时间戳 | | **Audit Log** | 系统事件:连接、完成、错误 | | **Campaigns** | 活动进度及各阶段状态 | **按键绑定:** | 按键 | 操作 | |-----|--------| | `1`-`5` | 跳转到选项卡 | | `j`/`k` | 向上/向下导航 | | `g`/`G` | 跳转到顶部/底部 | | `Ctrl+d`/`Ctrl+u` | 向下/向上翻页 | | `Tab` | 切换面板焦点 | | `/` | 搜索/过滤当前列表 | | `:` | 命令模式 (`:cancel`、`:start`、`:delete`、`:quit`) | | `?` | 切换帮助覆盖层 | | `q` | 退出 | 当 worker 连接/断开、任务完成以及哈希被破解时,会弹出 Toast 通知。使用 `--headless` 可仅输出日志(无 TUI)。 ### Agent agent 显示一个单屏仪表板,包含连接状态、带有速度/预计剩余时间的当前分块进度、最近的破解结果(最近 10 个)以及会话统计信息。使用 `--headless` 可仅输出日志。 ## 活动 活动将多个攻击阶段链接在一起。未破解的哈希会在阶段之间自动转入。 ``` # 从内置模板创建 campaign(仅包含 mask-only) crackctl campaign create \ --name "Full NTLM audit" \ --hash-mode 1000 \ --hash-file-path ntds_hashes.txt \ --template ntlm-standard \ --auto-start # 创建包含 dictionary + rules 阶段的 campaign crackctl campaign create \ --name "Full NTLM audit" \ --hash-mode 1000 \ --hash-file-path ntds_hashes.txt \ --template ntlm-standard \ --wordlist \ --rules-file \ --auto-start # 列出可用模板 crackctl campaign templates # 监控进度 crackctl campaign show ``` 如果提供了 `--wordlist`,模板将在流水线早期包含一个字典(+规则)阶段。如果未提供,字典阶段将被自动跳过。 ### 内置模板 | 模板 | 哈希模式 | 阶段 | 描述 | |----------|-----------|--------|-------------| | `ntlm-standard` | 1000 (NTLM) | 7 | PIN 扫描、字典+规则、常见掩码、模式分析、最多 8 个字符的暴力破解 | | `wpa-quick` | 22000 (WPA) | 4 | 8 位 PIN、字典+规则、常见 8 字符掩码、模式分析 | | `generic-quick` | 任意 | 6 | PIN 扫描、字典+规则、常见掩码、模式分析、最多 7 个字符的暴力破解 | ### 阶段类型 - **StaticMask** -- 单个掩码攻击 - **MultiMask** -- 掩码的顺序列表,自动依次推进 - **ExpandingBrute** -- 具有递增长度的暴力破解(例如,`?a` 长度从 1 到 8) - **Dictionary** -- 带有可选规则文件的词表攻击(如果未提供词表则跳过) - **AutoGenerated** -- 模式分析器检查已破解的密码,并为下一轮生成针对性的掩码 ### 模式分析器 `AutoGenerated` 阶段类型是最显著的功能。它检查在早期阶段破解的密码,以推断结构模式: 1. 将每个破解的密码转换为骨架(例如,`Password1!` 变为 `Ullllllld s`) 2. 根据已破解集合中的频率对骨架进行排名 3. 根据排名靠前的模式生成掩码,包括自定义字符集缩窄和后缀锚定变体 4. 过滤掉在先前阶段中已尝试过的掩码 这创建了一个反馈循环:每一轮破解都为下一轮提供信息,从而瞄准最有可能的剩余密码结构。 ## 命令 ### crackctl ``` crackctl [--api-url ] Override API URL (default: http://127.0.0.1:9443) env: CRACKCTL_API_URL Tasks: task create Create a cracking task --name Task name (required) --hash-mode Hashcat hash mode (required) --hash-file Hash file ID (required) --mask Attack mask for brute-force (mutually exclusive with --wordlist) --wordlist Wordlist file ID for dictionary attacks --rules-file Rules file ID (requires --wordlist) --charset1..4 Custom charsets for ?1..?4 --priority <1-10> Task priority (default: 5) --extra-args Additional hashcat arguments task list List all tasks task show Show task details with chunks task results Show cracked hashes for a task task cancel Cancel a running task task delete Delete a task Files: file upload Upload a hash file --type File type (default: hash) file list List uploaded files Workers: worker list List all workers worker authorize Pre-authorize a worker by public key --pubkey Worker's base64 public key (required) --name Worker name (required) worker enroll Generate an enrollment token --name Worker name (required) --expires-minutes Token TTL (default: 60) Campaigns: campaign create Create a multi-phase campaign --name Campaign name (required) --hash-mode Hashcat hash mode (required) --hash-file-path Hash file path (auto-uploads) --template Use a built-in template --wordlist Wordlist file ID for dictionary phases in templates --rules-file Rules file ID for dictionary+rules phases in templates --auto-start Start immediately after creation --priority <1-10> Task priority (default: 5) campaign list List all campaigns campaign show Show campaign with phases campaign start Start a draft campaign campaign results Show all cracked hashes campaign cancel Cancel a running campaign campaign delete Delete a campaign campaign templates List built-in templates Potfile: potfile stats Show potfile statistics potfile export Export cracked plaintexts --output Write to file instead of stdout System: status System overview ``` ### crack-coord ``` crack-coord init Initialize coordinator (generate keys) --data-dir Data directory (default: platform data dir) crack-coord run Start the coordinator --bind Worker transport address (default: 0.0.0.0:8443) --api-bind REST API address (default: 127.0.0.1:9443) --data-dir Data directory --with-agent Run a local worker agent in the same process --headless No TUI, log output only --hashcat-path Path to hashcat binary (default: hashcat) ``` 环境变量:`CRACK_COORD_DATA_DIR`、`CRACK_COORD_BIND`、`CRACK_COORD_API_BIND` ### crack-agent ``` crack-agent init Initialize agent (generate keys) --coord-key Coordinator's base64 public key (required) --data-dir Data directory (default: platform data dir) crack-agent enroll Enroll via token from coordinator --token Enrollment token (required) --server Override server address from token --data-dir Data directory --hashcat-path Path to hashcat binary crack-agent run Connect and process work --server Coordinator address (required) --name Worker name (default: hostname) --data-dir Data directory --headless No TUI, log output only --hashcat-path Path to hashcat binary (default: hashcat) ``` 环境变量:`CRACK_AGENT_DATA_DIR`、`CRACK_AGENT_SERVER` ## 安全性 - **Noise IK 协议**(通过 `snow`)用于所有 worker 与协调器之间的流量 -- 使用 Curve25519 静态密钥进行相互身份验证,ChaCha20-Poly1305 加密,前向保密,无明文降级 - **REST API 默认绑定到 127.0.0.1** -- 仅限本机访问,无身份验证。如果您将 `--api-bind` 覆盖为非环回地址,API 将在没有身份验证的情况下暴露 - **基于 Token 的注册** -- 有时间限制的 Token(默认 60 分钟),其中嵌入了协调器公钥和服务器地址 - **私钥保护** -- 密钥以 0600 权限存储(Unix),在释放时从内存中清零 - **采用 WAL 模式的 SQLite** -- 嵌入式,无网络暴露的数据库 - **心跳监控** -- 15 秒间隔,60 秒超时;断开连接的 worker 的分块将自动重新分配 ## 工作原理 1. **哈希文件上传** -- 操作员通过 `crackctl` 上传哈希,存储在协调器磁盘上并通过加密通道传输给 agent 2. **任务/活动创建** -- 定义哈希模式、攻击掩码、优先级和可选的自定义字符集 3. **Keyspace 计算** -- 协调器运行 `hashcat --keyspace` 以确定总工作量 4. **自适应分块** -- 根据基准测试速度针对每个 worker 调整分块大小(目标约 10 分钟),并进行公平共享上限设定,以免单个 worker 垄断 keyspace 5. **分块分发** -- 协调器通过 Noise 加密通道将分块分配给空闲的 worker 6. **Hashcat 执行** -- agent 使用 `--status-json` 运行 hashcat,实时将进度和速度流式传输回协调器 7. **结果收集** -- 每个分块使用独立的每分块 potfile 和 outfile,以防止 worker 之间发生干扰。破解的哈希在找到时会通过 Noise 通道实时发送到协调器(而不是在结束时批量发送)。协调器将所有结果存储在 SQLite 中,该数据库充当集中的 potfile。临时 potfile 和 outfile 在每个分块完成后会被清理 8. **活动推进** -- 当某个阶段耗尽其 keyspace 时,未破解的哈希将转入下一阶段。`AutoGenerated` 阶段会分析破解的密码以生成新的针对性掩码 ## 贡献 欢迎贡献。请在提交 pull request 之前开一个 issue 来讨论建议的更改。 有关安全漏洞,请参阅 [SECURITY.md](SECURITY.md)。 ## 许可证 [MIT](LICENSE)
标签:Bitdefender, Cryptography, DOS头擦除, Hashcat, Hash cracking, Noise协议, PoC, Red team, Rust, TUI, VEH, 分布式系统, 分布式计算, 加密传输, 可视化界面, 响应大小分析, 多阶段任务, 字典攻击, 密码破解, 异常处理, 提示注入, 暴力破解, 终端用户界面, 网络安全, 网络流量审计, 通知系统, 隐私保护, 集群管理