lidless-labs/hotwash

GitHub: lidless-labs/hotwash

Hotwash 将 Markdown/Mermaid 编写的应急响应 playbook 转化为可视化交互式流程图 runbook,提供逐步执行引擎、实时状态跟踪,并通过 MCP server 让 LLM agent 驱动整个运行过程。

Stars: 0 | Forks: 0

hotwash banner

⚒️ Hotwash

交互式应急响应 runbook:将 IR playbook 构建为可视化流程图,逐步执行,并通过 MCP 由 LLM 驱动整个运行过程。

官方网站  ·  npm 上的 hotwash-mcp  ·  Wazuh 接入  ·  路线图

CI status hotwash-mcp on npm React 18.2 FastAPI 0.136 MIT license

Hotwash 将使用 Markdown 或 Mermaid 编写的应急响应(IR)playbook 转化为具有真实执行引擎的交互式流程图 runbook,这样 SOC 分析师就可以构建 runbook,针对真实发生的应急事件启动运行,并跟踪每一个步骤、决策和证据。其核心在于,相同的运行过程同样可以由 AI agent 驱动:捆绑的 `hotwash-mcp` Model Context Protocol server 将运行引擎作为工具公开,因此 LLM 可以列出 playbook、启动运行、推进步骤、附加产物(artifact),并对 Wazuh 接入队列进行分类处理。与静态的 playbook 文档或流程图绘制工具不同,每一次 Hotwash 运行都是实时、可审计的状态,可以由人类和 agent 共享。 ## 它的功能 Hotwash 是一款用于 SOC 和蓝队工作的应急响应(IR)runbook 工具。它整合了通常存在于三个不同工具中的三项功能: - **编写。** 将结构化的 Markdown 或 Mermaid playbook 解析为节点-边图,并在交互式的 React Flow 画布上渲染它们(阶段、步骤、决策、执行节点、合并)。按类型(应急响应、漏洞、威胁狩猎)浏览、分类和过滤 playbook 库。 - **执行。** 从 playbook 启动运行,然后通过实时状态、时间戳、指派人、备注、决策和附加的证据逐步进行操作。每次运行都是可查询的状态,而不是有人重新输入到工单中的核对清单。 - **自动化。** `hotwash-mcp` MCP server 允许 AI agent 端到端地驱动运行,而 Wazuh 接入路径通过 HMAC 认证的映射,将警报转换为自动启动的运行或人工审查建议。 关键词:应急响应、IR runbook、SOC、SOAR、playbook 自动化、Model Context Protocol (MCP)、Wazuh 警报接入、蓝队。 ## 快速开始 ``` # 克隆和安装 git clone https://github.com/lidless-labs/hotwash.git cd hotwash # Frontend(web app) cd web && npm install && npm run dev # Backend(run engine + REST API + MCP backend,从 repo root 开始) python3 -m venv .venv && .venv/bin/pip install -r requirements.txt .venv/bin/uvicorn api.main:app --port 8000 ``` 前端:**http://localhost:5177** 后端:**http://localhost:8000** Web 应用在没有后端的情况下可以离线进行可视化。执行引擎、REST API、MCP server 和 Wazuh 接入需要后端支持。 ## MCP server:由 LLM 驱动运行 `hotwash-mcp`([在 npm 上](https://www.npmjs.com/package/hotwash-mcp))是一个封装了 Hotwash REST API 的 stdio MCP server。将其指向正在运行的 Hotwash 后端,任何支持 MCP 的客户端(Claude Desktop、Claude Code、Cursor 等)都可以将应急响应 playbook 作为工具来运行。 将其添加到您的 MCP 客户端配置中: ``` { "mcpServers": { "hotwash": { "command": "npx", "args": ["-y", "hotwash-mcp"], "env": { "HOTWASH_URL": "http://localhost:8000", "HOTWASH_API_KEY": "your-hotwash-api-key" } } } } ``` 服务器读取的环境变量:`HOTWASH_URL`(默认为 `http://localhost:8000`),`HOTWASH_API_KEY`(可选,在后端需要身份验证时作为 API key 发送),以及 `HOTWASH_TIMEOUT`(请求超时时间,以秒为单位,默认为 `30`)。 ### 工具 服务器注册了 10 个工具,均以 `hotwash_` 为前缀: | 工具 | 功能 | |------|--------------| | `hotwash_list_playbooks` | 列出库中的 playbook,支持可选的类别/标签/搜索过滤;返回 id、标题、类别、标签和节点数。 | | `hotwash_get_playbook` | 根据 id 获取单个 playbook 的完整图(节点 + 边)和元数据。 | | `hotwash_start_run` | 针对某个应急事件启动 playbook 的新执行过程;将节点克隆为逐步状态,并返回执行 id。 | | `hotwash_query_run` | 获取当前执行状态:状态、包含状态/证据/备注的完整步骤列表,以及可选的时间线。 | | `hotwash_advance_step` | 更新单个步骤:更改状态、指派分析师、附加备注或记录决策。 | | `hotwash_cancel_run` | 放弃正在进行的运行(为审计日志保持可查询状态)。破坏性操作;需要 `confirm: true`。 | | `hotwash_attach_artifact` | 将文本或 base64 二进制产物(日志片段、截图、哈希列表)附加到某个步骤。 | | `hotwash_list_suggestions` | 列出由 `mode=suggest` Wazuh 映射排队的接入建议(分析师审查队列)。 | | `hotwash_accept_suggestion` | 将待处理的建议提升为实际执行,并将其 Wazuh 警报作为上下文带入。破坏性操作;需要 `confirm: true`。 | | `hotwash_dismiss_suggestion` | 将待处理的建议作为噪声忽略,并锚定映射冷却时间。破坏性操作;需要 `confirm: true`。 | 破坏性工具(`hotwash_cancel_run`、`hotwash_accept_suggestion`、`hotwash_dismiss_suggestion`)除非调用者传入 `confirm: true`,否则将拒绝执行操作,这样 agent 就不会意外放弃运行或耗尽建议队列。 ## 功能特性 - **Markdown 转流程图** - 将结构化的 Markdown playbook 解析为节点-边图 - **Mermaid 语法** - 原生支持 Mermaid 流程图语法 - **交互式画布** - 使用 React Flow 进行拖拽、平移、缩放 - **自定义节点类型** - 阶段、步骤、决策、执行、合并,拥有 5 种变体样式 - **Playbook 库** - 按类型(漏洞、应急响应、威胁狩猎)浏览、分类和过滤 - **执行引擎** - 逐步运行 playbook,提供实时状态跟踪、时间戳和执行历史 - **AI Playbook 生成** - 根据自然语言的事件描述生成完整的 playbook - **SOAR 集成** - 内置动作库,可连接到真实的响应平台 - **MCP 集成** - Model Context Protocol server,允许 AI agent 驱动运行 - **Wazuh 接入** - 经过 HMAC 认证的警报接入,具备映射规则和建议队列 - **小地图与控制** - 提供鸟瞰视图和视口导航 - **客户端解析** - 在浏览器中进行零延迟 Markdown 渲染 - **5 种视觉主题** - SOC、Analyst、Terminal、Command、Cyber 变体 - **引导教程** - 为首次使用的用户提供交互式演练 - **离线优先** - 可视化无需后端支持 ## 技术栈 | 层级 | 技术 | 用途 | |-------|-----------|---------| | **前端** | React 18.2 | 交互式仪表盘 | | **语言** | TypeScript 5.3 | 类型安全 | | **样式** | Tailwind CSS 3.4 | 实用优先的 CSS | | **画布** | React Flow Renderer 10.3 | 节点-边图可视化 | | **状态** | Zustand | 全局状态管理 | | **打包工具** | Vite 5 | 开发服务器和构建 | | **后端** | FastAPI 0.136 | Playbook 存储、执行引擎、集成 | | **MCP** | @modelcontextprotocol/sdk 1.29 | `hotwash-mcp` server (Node >= 20) | | **解析器** | 自定义 Markdown 解析器 | 内联 playbook 解析 | ## Playbook 语法 ### Markdown 格式 ``` # 应急响应:Ransomware 攻击 ## 阶段:Detection - Step: Identify affected systems - Check EDR alerts - Correlate with SIEM events - Document initial indicators ## 阶段:Analysis - Decision: Is it a critical system? - YES -> Execute: Isolate from network - NO -> Execute: Begin forensic collection ## 阶段:Containment - Step: Isolate affected hosts - Segment network access - Disable user accounts - Preserve evidence ## 阶段:Eradication - Step: Remove malware - Scan with multiple AV engines - Remove registry keys - Patch vulnerabilities ## 阶段:Recovery - Step: Restore systems - Restore from clean backups - Apply security patches - Re-enable user access ``` ### Mermaid 格式 ``` flowchart TD A[Detection] --> B{Critical System?} B -->|Yes| C[Isolate Network] B -->|No| D[Preserve Evidence] C --> E[Begin Analysis] D --> E E --> F[Eradicate Threat] F --> G[Recover Systems] ``` ## 节点类型 | 类型 | 用途 | 示例 | |------|---------|---------| | **阶段** | 主要的应急响应阶段 | 检测、分析、遏制 | | **步骤** | 流程化操作 | 执行 EDR 扫描、记录发现 | | **决策** | 条件分支(是/否) | 是否严重?是否存在恶意软件? | | **执行** | SOAR 动作或工具集成 | 隔离主机、禁用账户、封锁 IP | | **合并** | 汇合点 | 重新合并分析路径 | ## 5 种变体 | 变体 | 主题 | 用例 | |---------|-------|----------| | **SOC** | 深板岩色,红色强调 | 安全运营中心 | | **Analyst** | 纯白,蓝色 | 专业分析 | | **Terminal** | 黑色,矩阵绿 | 技术应急响应 | | **Command** | OD 绿,琥珀色 | 军事风格行动 | | **Cyber** | 霓虹青色/品红 | 赛博朋克美学 | 所有变体均使用相同的解析引擎和 React Flow 画布。可即时切换主题。 ## 项目结构 ``` hotwash/ ├── web/ # React 18 + TypeScript + Vite frontend │ ├── src/ │ │ ├── components/ # FlowCanvas (React Flow), panels, viewers │ │ ├── pages/ # Editor, Library, Executions, Suggestions, ... │ │ ├── parsers/ # Client-side Markdown/Mermaid parsing │ │ ├── api/ # Backend API client │ │ ├── hooks/ # useExecutionSocket and friends │ │ └── variants/ # Theme layouts │ ├── package.json │ └── vite.config.ts ├── api/ # FastAPI backend (run engine + REST API) │ ├── main.py # Entry point │ ├── routers/ # playbooks, executions, export, ingest, integrations, parse │ ├── services/ # Execution engine, ingest matching, tags │ ├── parsers/ # Markdown + Mermaid parsers │ ├── integrations/ # SOAR integration clients (TheHive) │ └── tests/ # pytest suite ├── mcp/ # hotwash-mcp npm package (MCP server, Node >= 20) │ ├── src/index.ts # Entry point │ └── src/tools/ # playbooks, runs, suggestions, artifacts tools ├── docs/ # ARCHITECTURE, CONFIGURATION, THEHIVE-INTEGRATION, WAZUH-INGEST └── requirements.txt ``` ## SOAR 动作 针对常见 SOAR 平台的内置动作库: **应急响应动作:** - `isolate_host` - 将主机从网络中移除 - `disable_account` - 禁用用户账户 - `block_ioc` - 封锁 IP/域名/哈希 - `snapshot_vm` - 创建 VM 快照 - `quarantine_email` - 隔离电子邮件 **侦察:** - `whois_lookup` - IP/域名注册信息 - `virustotal_check` - 文件哈希信誉 - `shodan_search` - 互联网扫描结果 所有动作均为模板,团队可进行自定义。 ## Wazuh 集成 Hotwash 通过 `POST /api/ingest/wazuh` 接收 Wazuh 警报(经 HMAC 认证), 并将其与映射表进行匹配,从而可以 `auto`(自动)启动运行、排队人工审查建议,或仅作记录。映射通过 `/api/ingest/mappings` CRUD 进行管理。有关集成脚本模板、HMAC 方案和冷却语义,请参阅 [docs/WAZUH-INGEST.md](docs/WAZUH-INGEST.md)。 ## 路线图 已交付:允许 AI agent 驱动 playbook 运行的 `hotwash-mcp` Model Context Protocol server(在 npm 上),以及包含 HMAC 认证、映射规则和人工审查建议队列的 Wazuh 警报接入路径。下一步:更丰富的执行报告、超越 TheHive 的更多 SOAR 目标,以及更深度的建议队列工作流。 完整计划请参阅 [docs/ROADMAP.md](docs/ROADMAP.md)。 ## 为什么不直接使用 Markdown 文档或流程图工具? - **对比 wiki 或 Markdown 文件中的 playbook:** 文档是只读文本。Hotwash 运行 playbook:实时步骤状态、时间戳、指派人、决策和附加的证据成为可查询的状态和审计跟踪,而不是有人重新输入到工单中的核对清单。 - **对比绘图工具(Mermaid Live、draw.io、Lucidchart):** 这些工具只是画出流程图就停止了。Hotwash 将相同的 Markdown/Mermaid 解析为图,*并*使用引擎、运行历史和可由 agent 驱动的 MCP 接口来执行它。 - **对比完整的商业 SOAR 平台:** Hotwash 是一个本地优先、基于 MIT 许可证、可自托管的 runbook 引擎,您可以阅读并扩展它。SOAR 动作以可自定义的模板形式提供;其设计是让人和 agent 共同参与循环,而不是一个自主触发 playbook 的黑盒。 ## Hotwash 不是什么 - 不是 SIEM,也不是检测引擎。它接入 Wazuh 警报;它不生成警报。 - 不是为每个工具提供供应商集成的交钥匙 SOAR。SOAR 动作(`isolate_host`、`block_ioc` 等)是团队可自定义的模板;TheHive 是目前唯一上线的实时集成。 - 不是托管或多租户服务。它是一个由您自己运行的自托管应用。 - 不是全自动的响应器。破坏性 MCP 工具需要明确的确认,并且 `mode=suggest` 的 Wazuh 映射被设计为路由到人工审查队列。 - 尚未完成。它是 WIP(开发中);预期会发生变化。 ## 贡献与安全 - [CONTRIBUTING.md](CONTRIBUTING.md) - 如何进行设置,哪些内容可以轻松提交,以及哪些内容需要先提 issue。 - [SECURITY.md](SECURITY.md) - 如何报告漏洞(请不要公开提 issue)。 - [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) - Contributor Covenant 2.1。 [CHANGELOG.md](CHANGELOG.md) - 重要变更。 ## 许可证 MIT - 详情请参阅 [LICENSE](LICENSE)。
标签:AV绕过, FastAPI, LLM, MCP, MITM代理, React, Syscalls, Unmanaged PE, 工作流引擎, 库, 应急响应, 网络调试, 自动化, 自动化攻击, 逆向工具