zoomHass2-glitch/comet

GitHub: zoomHass2-glitch/comet

一款面向 Claude Code 的自主红队杀伤链插件,通过移除上游不安全组件并强化授权与加密机制,实现可控的自动化攻防演练。

Stars: 0 | Forks: 0

# Comet [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/39faa54be350a1dab8afd3b2fb8c1c83e4d9cff84abfef2374d19a18053687c4.svg)](https://github.com/zoomHass2-glitch/comet/actions/workflows/ci.yml) [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](./LICENSE) [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/) **Comet** 是一个自主的红队杀伤链插件,专为 [Claude Code](https://claude.com/claude-code) 和 oh-my-claudecode (OMC) 设计。它是对 [PurpleAILAB/Decepticon](https://github.com/PurpleAILAB/Decepticon) (Apache-2.0) 的彻底重构,移除了上游的 LangGraph 编排器、LiteLLM 代理、PostgreSQL 花费数据库以及 `/var/run/docker.sock` 挂载,并将编排任务委托给 Claude Code 子代理和 OMC 技能。 ## 状态 Comet 在其规划的七个构建阶段中功能已完备,并附带一个密闭的冒烟测试套件(**118 项检查**,在每次推送时由 CI 运行): | 阶段 | 范围 | 测试 | |------:|-------|:-----:| | 1 | Schemas、沙箱运行器、DuckDB KG、提示注入净化器、核心代理和技能 | 10 | | 2 | 完整的 17 个代理 MITRE ATT&CK 名单、HMAC 链式记录、影响网关 | 16 | | 3 | 疫苗循环(攻击 → 防御 → 重新测试)、防御行动模板 | 21 | | 4 | CVE 富化(NVD/EPSS/KEV/OSV)、Neo4j 后端、Dijkstra 攻击路径规划器 | 20 | | 5 | Sliver C2 子系统(mTLS 绑定,RBAC + 审批 + 影响网关,**默认关闭**) | 17 | | 6 | 只读 Next.js 仪表板(绑定回环地址,CSP 锁定) | 14 | | 7 | 独立 CLI、MCP 服务器、无头 Claude 出站通道 | 21 | C2 子系统(第 5 阶段)和疫苗循环的破坏性操作是可选择加入的,并受交战规则授权的限制——请参阅[安全模型](#security-model)。 ## 为什么存在 Comet | Decepticon(上游) | Comet(此 fork) | |---|---| | LangGraph + LangGraph dev :2024(无认证) | Claude Code 会话 = 编排器 | | LiteLLM 代理 + PostgreSQL 花费数据库 | Claude Max 订阅,`$0` 边际成本 | | 挂载 `/var/run/docker.sock:ro` | 沙箱是带有 `--cap-drop=ALL` 的普通 `docker run` | | 默认 `neo4j/neo4j` 凭证,状态文件为明文 | 静态加密状态(`age` / `openssl`),无默认凭证 | | 未认证的终端服务器 :3003 | 无状态沙箱运行 + 记录文件 | | 工具输出上无提示注入净化器 | `PostToolUse` 钩子从 `Bash` / `WebFetch` 中剥离 PI 标记 | | 无正式授权网关 | 强制要求 `RoE.authorization_block`;若无则设置拒绝运行 | ## 使用 Comet 的四种方式 Comet 在同一个核心 Python 包上公开了四个独立的访问层。 选择与您驱动它的方式相匹配的通道: | 通道 | 入口点 | 能做 | 不能做 | |--------------------------|------------------------------------|---------------------------------------------------------------------------------|---------------------------------------------------------------------------| | **1. Claude Code 插件**| `/comet:*` 技能 + 子代理 | 完整的杀伤链:交战、规划、批准、生成植入物、执行、分类 | — | | **2. CLI (`comet ...`)** | PATH 上的 `comet` (pip install -e .) | 只读 / 安全操作:列出交战、显示 RoE+OPPLAN、列出发现、验证记录、KG 统计 + 攻击路径、CVE 富化、UI 启动器、`sliver kill` | 生成植入物、创建交战、批准计划、运行破坏性 C2 | | **3. MCP server** | `python -m comet.mcp.server` (stdio) | 与 CLI 相同的只读 + 安全计算接口,作为 MCP 工具暴露给 Claude Desktop / Cursor | 任何写入 / 破坏性 / 批准操作 — 由处理程序强制执行 | | **4. 无头出站** | `comet.llm.claude_headless.ask(...)` | Python 代码生成 `claude -p` 用于 LLM 任务(发现分类、摘要) | 绕过净化器;将提示文本泄露到记录;设置 `COMET_HEADLESS_DISABLE=1` 运行 | CLI 和 MCP 层**被特意设计为只读或安全计算**。任何更改交战状态、生成工件或触及实时 C2 的操作,只能通过插件(通道 1)访问,该插件在代理循环内强制执行 RoE + 审批网关。 ### CLI — 快速开始 ``` pip install -e ~/.claude/plugins/local-plugins/comet comet --version comet engagements list comet engagements show ENG-2026-04-22-abcdef01 comet findings list ENG-2026-04-22-abcdef01 comet transcript verify ENG-2026-04-22-abcdef01 comet kg stats ENG-2026-04-22-abcdef01 comet kg path ENG-2026-04-22-abcdef01 host-a host-z comet cve enrich CVE-2024-12345 # needs the `enrich` extra comet ui # spawns `npm run dev` in ui/ comet sliver kill # stop the Sliver teamserver (safe op) ``` 退出代码:`0` 正常,`2` 用法错误,`3` 权限拒绝,`4` 未找到。 ### MCP 服务器 — 在 Claude Desktop / Cursor 中注册 将插件根目录下 `mcp.json` 中的代码片段复制到您的客户端配置中: ``` { "mcpServers": { "comet": { "command": "python", "args": ["-m", "comet.mcp.server"], "env": { "COMET_STATE_ROOT": "${HOME}/.omc/state/comet" } } } } ``` 暴露的工具:`comet_list_engagements`, `comet_get_engagement`, `comet_list_findings`, `comet_verify_transcript`, `comet_kg_stats`, `comet_kg_attack_path`, `comet_cve_enrich`。每个工具都会验证交战 ID 正则表达式,并在返回前通过 `_redact_secrets()` 处理输出。 ### 无头 Claude 出站 ``` from comet.llm import ask summary = ask("Summarise this finding: ...", timeout=30, max_chars=4096) ``` 紧急关闭开关:`export COMET_HEADLESS_DISABLE=1`。 ## 架构 ``` plugin root ├── plugin.json # OMC manifest (agents, skills, hooks) ├── comet/ # Python package (importable as `comet.*`) │ ├── schemas/ # Pydantic v2 models (RoE, OPPLAN, PTT, Finding, CVE, Defense, ...) │ ├── state/ # encrypted state I/O + HMAC-chained transcript + migrations │ ├── sandbox/ # run.sh (docker, cap-drop ALL) + roe_check.py │ ├── safety/ # impact technique gate (fail-closed) │ ├── sanitize/ # regex prompt-injection sanitizer + optional LLM guard │ ├── mitre/ # ATT&CK technique → agent map + validation │ ├── kg/ # DuckDB (default) + Neo4j backends, attack-path planner, CVE enrichment │ ├── defense/ # vaccine loop: brief → action templates → executor → reattack │ ├── c2/ # Sliver client (mTLS-pinned, RBAC + audit) — off by default │ ├── llm/ # headless `claude -p` outbound channel │ ├── mcp/ # read-only MCP stdio server │ └── cli/ # standalone `comet` CLI (read-only / safe-ops) ├── agents/ # 17 Claude Code subagents (Markdown + frontmatter) ├── skills/ # /comet:engage, /comet:opplan, /comet:sliver, /comet:vaccine ├── hooks/ # PostToolUse (sanitize) + UserPromptSubmit (keyword trigger) ├── config/ # default.yaml, impact.yaml, roe.example.yaml ├── ui/ # read-only Next.js dashboard (loopback-only) └── tests/smoke/ # hermetic smoke tests, phases 1–7 ``` 每次交战的状态位于 `/.omc/state/comet//`,包含 `OPPLAN.json`, `PTT.json`, `findings/`, `transcript/.jsonl`, `vaccines/`, 和 `kg-snapshot.duckdb`。 ## 安装 ``` # 1. 将插件放置到指定位置 git clone https://github.com/zoomHass2-glitch/comet ~/.claude/plugins/local-plugins/comet # 2. 安装 Python package(可编辑模式,以便自动获取更新) pip install -e ~/.claude/plugins/local-plugins/comet # 可选 extras:enrich(CVE HTTP 调用)、neo4j、mcp # pip install -e "~/.claude/plugins/local-plugins/comet[enrich,mcp]" # 3.(可选)安装 `age` 用于静态加密 —— 如果缺失则回退到 openssl # Windows: scoop install age # macOS: brew install age # Linux: apt install age # 4. 确保 Docker 已启动(sandbox runner 会使用它) docker --version # 5. 运行冒烟测试 bash ~/.claude/plugins/local-plugins/comet/tests/smoke/test_phase1.sh ``` ### 启用钩子(手动,非自动安装) Comet 提供了两个钩子,您必须通过编辑 `~/.claude/settings.json` 来选择加入。这些钩子**不会**自动注册: ``` { "hooks": { "PostToolUse": [ { "matcher": "Bash|WebFetch", "hooks": [ { "type": "command", "command": "node ~/.claude/plugins/local-plugins/comet/hooks/post-tool-use-sanitize.mjs" } ]} ], "UserPromptSubmit": [ { "hooks": [ { "type": "command", "command": "node ~/.claude/plugins/local-plugins/comet/hooks/keyword-triggers.mjs" } ]} ] } } ``` ## 用法 ``` # 1. 编写一个 Rules of Engagement 文件(从示例开始) cp ~/.claude/plugins/local-plugins/comet/config/roe.example.yaml ./roe.yaml $EDITOR ./roe.yaml # fill in allowed_targets and the authorization_block # 2. 启动一个 engagement /comet:engage 192.168.56.0/24 # 3. 审查 Comet 生成的 OPPLAN /comet:opplan show # 4. 批准(会在 state dir 中写入一个 APPROVED 标志;没有此标志则不会运行任何内容) /comet:opplan approve # 5. Comet 现在通过 Task() 并行分发 PTT-ready 节点 ``` ## 安全模型 1. **强制要求书面授权。** 设置向导和 `/comet:engage` 都会拒绝启动,除非 `roe.yaml` 包含一个完整填写的 `authorization_block`(签名者、签名时间、范围哈希、签名)。范围外的目标会在沙箱运行器处被拒绝。 2. **您对合法性负责。** 在大多数司法管辖区(CFAA、计算机滥用法、西班牙的 LPI 等),对您不拥有或没有书面测试许可的系统运行 Comet 是非法的。 3. **Sliver C2 引入了真正的后渗透能力** — 植入物、信标、横向移动。它被特意由选择加入的配置标志(`sliver.enabled: true`)控制,并且**默认关闭**。每个 C2 操作都会通过 RBAC 范围检查、APPROVED 标志网关、针对破坏性技术的影响网关,以及 HMAC 链式审计记录。 4. **沙箱不是保险箱。** Docker 沙箱使用 `--cap-drop=ALL --security-opt=no-new-privileges --read-only` 和隔离网络,但意志坚定的攻击者利用内核漏洞仍可能逃脱。切勿在生产基础设施上运行 Comet。 5. **状态静态加密**(`age` 接收者/身份模式,或 `openssl enc -aes-256-cbc -pbkdf2`),但在轮次运行时会在内存中解密。请将交战目录视为敏感信息。任何地方都没有默认凭证。 6. **交战记录具有防篡改性。** 每个操作都会附加一条 HMAC-SHA256 链式 JSONL 行;`comet transcript verify` 会跨日期边界遍历链条并报告第一个中断。 7. **提示注入净化器基于正则表达式。** 它可以捕获明显的标记(``、`### NEW INSTRUCTIONS`、零宽字符、ANSI 转义、超大的 base64),但不能保证防范扫描输出中的新型注入向量。在根据工具输出采取行动之前,请先进行检查。可选的基于 LLM 的第二层(`comet.sanitize.llm_guard`)会安全失效(默认拒绝)。 ## 测试 冒烟测试套件是密闭的 — 没有 Docker、没有网络、没有实时 C2(后端被注入/模拟)。运行单个阶段或整个集合: ``` # 单个阶段 bash tests/smoke/test_phase1.sh # 所有阶段 for p in 1 2 3 4 5 6 7; do bash tests/smoke/test_phase$p.sh || break; done ``` Lint + 编译: ``` pip install -e ".[dev]" ruff check comet python -m py_compile $(git ls-files 'comet/*.py') ``` CI 在每次推送时运行上述所有内容(参见 [`.github/workflows/ci.yml`](./.github/workflows/ci.yml))。 ## 定价 Comet 使用您的 **Claude Max 订阅**进行每次模型调用。没有 LiteLLM 代理,没有按 Token 计费的 API 费用,没有 PostgreSQL 支出跟踪。在您的订阅配额内,每次交战的边际成本 = **$0**。Sliver C2 子系统在本地 Docker 容器中运行 — 无 SaaS 成本。 ## 版权归属 Comet 是 [PurpleAILAB/Decepticon](https://github.com/PurpleAILAB/Decepticon)(Apache License 2.0)的分支。有关完整的归属说明,请参阅 [`NOTICE`](./NOTICE);有关 Apache-2.0 许可证文本,请参阅 [`LICENSE`](./LICENSE)。重大的架构变更已列在此文件顶部的表格中。 ## 许可证 Apache License 2.0 — 详见 [`LICENSE`](./LICENSE)。
标签:Claude插件, IP 地址批量处理, LLM代理, MCP服务, TGT, 插件系统, 攻防演练, 红队自动化, 请求拦截, 逆向工具