blackpanther011/soc-incident-trainer.github.io
GitHub: blackpanther011/soc-incident-trainer.github.io
一款基于纯前端技术构建的 AI 驱动 SOC 事件响应训练平台,让分析师在浏览器中即可体验逼真的安全事件处置流程并获得标准化评分。
Stars: 0 | Forks: 0
# SOC Trainer — 事件指挥
**一款专为网络安全分析师打造的 AI 驱动的事件响应训练场。** 生成超真实的 SOC 安全事件,在作战室控制台中进行分析处理,并根据 NIST SP 800-61 和 MITRE ATT&CK 标准获得毫不留情的 AI 评估 —— 全程在浏览器中完成,无需后端。
## 为什么开发这个工具
大多数 IR(事件响应)练习工具要么过于理论化(教科书),要么过于昂贵(企业级网络靶场)。SOC Trainer 则介于两者之间:提供包含真实 IOC、Event ID、ATT&CK 技术和实际业务约束的现实、自适应事件 —— 正是这些权衡让决策变得*困难* —— 并将其包装在一个类似于真实安全运营中心的控制台界面中。
它是一个单页应用。无需构建步骤,没有框架,无需服务器。
## 核心亮点
- **三阶段操作员流程** — 任务设置 → 分析与响应 → 评估,基于真实的事件生命周期建模。
- **作战室控制台 UI** — 实时严重性仪表盘、双重事件时钟(已用时间 + 业务截止倒计时)、自动跟踪的响应目标以及实时活动日志。
- **五种参与模式** — 事件响应、威胁狩猎、数字取证、高管简报和 CTF 狩猎 —— 每种模式都有专属的写作指南、模板和评估准则。
- **游戏化进阶** — XP、七个分析师等级、连击记录,以及一张**技能雷达图**,用于绘制你在各项模式下的平均得分,让你准确知道下一步该训练什么。
- **Demo 模式** — 内置六个预设事件,加上基于自适应关键词覆盖率的评分器,无需任何 API key 即可让整个流程运转起来。
- **自带 AI (Bring-your-own-AI)** — 填入免费的 Groq、Gemini 或 OpenAI key,即可进行实时场景生成和逐字评分。
- **本地优先** — XP、等级和完整的会话历史记录会持久化存储在 `localStorage` 中。除了直接调用你选择的 AI 提供商外,任何数据都不会离开你的机器。
## 操作流程
| 阶段 | 内容说明 |
|---|---|
| **01 · 任务设置** | 选择威胁层级(初级 → 国家级)、事件类别和你的访问模式。操作员档案会显示你的等级、XP、统计数据、技能雷达图和近期行动记录。 |
| **02 · 分析与响应** | 事件激活。阅读情报流(告警、进程树、IOC、ATT&CK 映射、业务约束),选择参与模式,并在控制台编辑器中起草你的响应。严重性仪表盘、倒计时时钟、目标清单和活动日志会持续施加压力。 |
| **03 · 评估** | 提交评分。动态评分仪表盘、裁定结果和 XP 奖励将伴随指挥官的评估一并展示 —— 包括优势、致命失误、遗漏的操作,以及“那个会让你被解雇的错误”。 |
## 快速开始
### 立即运行(Demo 模式)
无需 key,无需设置。由于该应用使用 ES modules,请通过 HTTP 提供服务,而不是直接打开文件:
```
git clone https://github.com/blackpanther011/soc-trainer.git
cd soc-trainer
python3 -m http.server 8080 # or: npx serve .
# 打开 http://localhost:8080
```
Demo 模式默认开启 —— 点击 **Initiate Incident**(启动事件),即可完整体验一个内置场景。
### 启用实时 AI(可选)
1. 在 [console.groq.com/keys](https://console.groq.com/keys) 获取**免费的 Groq API key**(无需绑定信用卡)。同时也支持 Gemini 和 OpenAI。
2. 将其粘贴到任务设置界面的 **API Key** 输入框中 —— Demo 模式会自动关闭。
3. 场景和评估现在将实时生成。该 key 仅保留在浏览器标签页中,并且只会发送给你选择的提供商。
### 免费部署 (GitHub Pages)
1. 推送到公开仓库。
2. **Settings → Pages →** 源选择 `main`,根目录 `/`。
3. 即可通过 `https://blackpanther011.github.io/soc-trainer` 访问。
## 项目结构
```
soc-trainer/
├── index.html # App shell — three stages, top HUD, all markup
├── theme.css # "Incident Command" design system (HUD + SIEM density)
├── app.js # Core logic: stage flow, gauges, XP/ranks, skill radar, state
├── demo.js # No-key engine: baked scenarios + adaptive evaluation
├── prompts.js # Prompt engineering — scenario + evaluation + raw-log realism, per mode
├── api.js # AI provider layer — auto-detect, timeouts, retries, typed errors
├── scoring.js # Composite triage score: accuracy 60% · coverage 25% · speed 15%
├── auth.js # Local operator profiles (login/register, PBKDF2-hashed passcodes)
├── security.js # Input validation, rate limiting, markdown sanitization
├── extras.css # Auth modal, score breakdown, SIEM-density raw log viewer
└── README.md
```
各模块之间刻意设计为解耦状态:
- **切换 AI 提供商** → 仅需编辑 `api.js`(修改一个 `PROVIDER` 常量)。
- **调整场景或评分质量** → 仅需编辑 `prompts.js`。
- **调整外观** → 仅需编辑 `theme.css`(所有设计令牌都是 CSS 自定义属性)。
- **添加 UI / 交互机制** → 修改 `app.js` + `index.html`。
## 设计理念
界面采用了刻意的视觉美学:一种紧张、富有电影感的**作战室 HUD**(氛围发光、扫描线、边角括号、雷达扫描仪表盘),并由**真实 SIEM 的数据密度**(IOC 表格、ATT&CK 映射、实时流式活动日志)作为基础支撑。配色方案基于运营逻辑编码 —— 青色代表操作员,橙色代表实时威胁,绿色代表已确认/安全,红色代表严重事件 —— 字体系统组合了 Chakra Petch (HUD)、IBM Plex Sans (UI) 和 JetBrains Mono (数据)。所有的颜色、字体和间距值都是 `theme.css` 中的 CSS 变量。
## 提示词工程
**场景生成**会强制模型生成真实可观测的数据(绝非占位符)、随难度递增的复杂性、产生真实利益权衡的业务约束、偶尔出现的误导信息,并为每种行为提供对应的 MITRE ATT&CK ID。
**评估**依据 NIST SP 800-61 标准并使用固定的评分准则进行打分:
| 分数 | 含义 |
|---|---|
| 9–10 | 涵盖所有阶段,细节具体,具备主动狩猎能力 |
| 7–8 | 表现扎实,有细微疏漏 |
| 5–6 | 包含核心阶段但内容模糊 |
| 3–4 | 存在重大疏漏 —— 极有可能导致遏制失败 |
| 1–2 | 具有危险性 —— 可能会销毁证据或惊动攻击者 |
在 Demo 模式下,`demo.js` 会通过计算各模式的关键词覆盖率、结构和长度信号,并扣除难度惩罚分来近似模拟这一标准 —— 从而在没有 API 调用的情况下也能提供真实的反馈感。
## 切换 AI 提供商
`api.js` 暴露了一个单一函数 —— `callAPI(apiKey, systemPrompt, userMessage) → Promise` —— 并且开箱即用地支持 `groq`、`gemini` 和 `openai`。修改文件顶部的 `PROVIDER` 常量即可进行切换。按照相同的函数签名编写一个单一的 `fetch` 包装器,即可添加其他提供商。
## 安全说明
- AI 输出会通过 Markdown 解析器进行渲染,并在接触 DOM 之前**使用 DOMPurify 进行消毒**。
- **Content-Security-Policy** 将网络连接限制为仅允许受支持的 AI 端点。
- 所有输入都经过验证,并进行了轻量级的速率限制 (`security.js`)。
- 你的 API key 仅在当前标签页会话的内存中存活 —— 绝不会被持久化存储,除了发送至你选择的提供商外,绝不发送至任何其他地方。
- 操作员配置文件为**纯本地**:密码通过 PBKDF2 哈希处理(21万次迭代,使用 Web Crypto),且绝不离开浏览器。它们用于区分共享同一台机器的不同人员之间的训练进度 —— 它们*不是*真正的身份验证;多用户部署需要后端支持。
## 技术栈
原生 **HTML / CSS / JavaScript (ES modules)** —— 无框架,无构建。外部库仅限于 [marked](https://github.com/markedjs/marked) (Markdown) 和 [DOMPurify](https://github.com/cure53/DOMPurify) (消毒),均从 CDN 加载。
## 路线图
- 增加“提示扣 XP”和“时间奖励”机制以带来更强的压迫感
- 成就徽章(首次 9+ 分、通关所有类别、APT 幸存者)
- 首次运行任务简报遮罩层
- 离线本地 LLM 模式 (Ollama)
## 许可证
MIT — 可自由使用、分叉和部署。
*本项目作为作品集构建,旨在展示 AI 集成应用开发、提示词工程以及前端/UX 工程能力。*
标签:AI辅助训练, 前端单页应用, 多模态安全, 安全运营(SOC), 库, 应急响应, 漏洞修复, 网络安全培训, 自定义脚本