m4ckDev/02-soc-analyst-simulator

GitHub: m4ckDev/02-soc-analyst-simulator

一个完全本地化的防御性网络安全训练实验室,通过模拟真实 SOC 工作流帮助学员练习警报分类、案件调查与事件响应。

Stars: 0 | Forks: 0

# 🛡️ 02 · SOC Analyst Simulator ### 一个用于警报分类、调查、时间线构建、案例记录、报告和分析师评分的本地防御性网络安全训练实验室。 SOC Analyst Simulator Blue Team Defense Stack Local Lab Only

[![Frontend](https://img.shields.io/badge/Frontend-React%20%2B%20Vite-61dafb?style=flat-square&logo=react&logoColor=111827)](#-tech-stack) [![Backend](https://img.shields.io/badge/Backend-FastAPI-009688?style=flat-square&logo=fastapi&logoColor=white)](#-tech-stack) [![Database](https://img.shields.io/badge/Database-SQLite-003b57?style=flat-square&logo=sqlite&logoColor=white)](#-tech-stack) [![Docker](https://img.shields.io/badge/Docker-Compose-2496ed?style=flat-square&logo=docker&logoColor=white)](#-docker-compose-run) [![PowerShell](https://img.shields.io/badge/Scripts-PowerShell-5391fe?style=flat-square&logo=powershell&logoColor=white)](#-powershell-helper-scripts) [![Safety](https://img.shields.io/badge/Safety-Defensive%20Only-22c55e?style=flat-square)](#-authorized-training-only) ### `Repo #02` 属于 MacKinnonTech 网络防御实验室系列 **警报队列 → 调查 → 证据 → 时间线 → 报告 → 评分 → 毕业项目** [概述](#-project-purpose) • [功能](#-feature-grid) • [安装](#-installation) • [工作流](#-analyst-workflow) • [警报](#-prebuilt-alert-library) • [评分](#-scoring-engine) • [文档](#-included-docs) • [徽章](#-completion-badges) • [安全](#-authorized-training-only)
## 🧭 项目目的 `02-soc-analyst-simulator` 是一个**完全本地的 SOC Analyst 训练模拟器**,旨在无需接触真实系统的情况下教授真实的蓝队习惯。 该模拟器为新手和中级分析师提供了一个安全的环境,可用于练习:
### 🎯 分类 确定警报优先级,对严重程度进行分类,并决定哪些需要立即关注。 ### 🔎 调查 审查模拟的身份、端点、Web 和网络遥测数据。 ### 📝 报告 构建笔记、时间线、证据引用和最终的事件总结。
本项目仅用于**合法、经授权的本地实验室训练**。所有警报、用户、端点、遥测数据、文件哈希、证据名称和案例均为模拟数据。 ## 📸 截图占位符 | 屏幕 | 预览位置 | 路径 | |---|---:|---| | 警报队列 | 🧾 队列概览 | `assets/screenshots/alert-queue.png` | | 警报详情 | 🔎 调查面板 | `assets/screenshots/alert-detail.png` | | 案例笔记 | 📝 笔记工作区 | `assets/screenshots/case-notes.png` | | 时间线构建器 | 🧭 事件序列 | `assets/screenshots/timeline-builder.png` | | 评分总结 | 🏆 分析师得分 | `assets/screenshots/scoring-summary.png` | | 毕业项目案例 | 🚨 多警报事件 | `assets/screenshots/capstone-case.png` | ``` assets/ └── screenshots/ ├── alert-queue.png ├── alert-detail.png ├── case-notes.png ├── timeline-builder.png ├── scoring-summary.png └── capstone-case.png ``` ## ⚙️ 技术栈 | 层级 | 技术 | 用途 | |---|---|---| | 前端 | **React + Vite** | 交互式分析师控制台 | | 后端 | **Python FastAPI** | API、案例逻辑和评分路由 | | 数据库 | **SQLite** | 本地种子警报和案例历史 | | 容器 | **Docker Compose** | 一键启动本地实验室 | | 脚本 | **PowerShell** | 适用于 Windows 的运行/重置/推送辅助工具 | | 文档 | **Markdown** | SOC 工作流和毕业项目培训材料 | ``` graph LR A[React Analyst Console] -->|API Calls| B[FastAPI Backend] B --> C[(SQLite Database)] B --> D[Scoring Engine] B --> E[Seeded Alert Library] A --> F[Case Notes] A --> G[Timeline Builder] A --> H[Evidence Placeholders] ``` ## ✨ 功能矩阵 | 功能 | 已包含 | 培训价值 | |---|:---:|---| | 警报队列 | ✅ | 练习对传入的 SOC 任务进行优先级排序 | | 严重程度级别 | ✅ | 学习基于影响的分类 | | 模拟端点 | ✅ | 建立端点调查习惯 | | 模拟用户 | ✅ | 审查以身份为驱动的案例 | | 案例笔记 | ✅ | 记录清晰的分析师推理过程 | | 时间线构建器 | ✅ | 重建事件发生序列 | | 证据附件占位符 | ✅ | 在不涉及真实敏感文件的情况下追踪工件 | | 分析师评分系统 | ✅ | 对决策获得反馈 | | 已完成案例历史 | ✅ | 回顾随时间推移的进度 | | 最终毕业项目案例 | ✅ | 将多个警报关联为一个事件 | | Docker Compose | ✅ | 使用单一命令在本地运行实验室 | | PowerShell 辅助脚本 | ✅ | 适用于 Windows 的项目操作 | ## 📦 安装说明 ### 环境要求 | 工具 | 推荐版本 | 检查命令 | |---|---:|---| | Git | 最新版 | `git --version` | | Docker Desktop | 最新版 | `docker --version` | | Node.js | 18+ | `node --version` | | Python | 3.11+ | `python --version` | | PowerShell | 5.1+ / 7+ | `$PSVersionTable.PSVersion` | ## 🐳 Docker Compose 运行 在 PowerShell 中执行: ``` cd "E:\CyberLab\GitHub Repos\02-soc-analyst-simulator" docker compose up --build ``` 访问: | 服务 | URL | |---|---| | 分析师控制台 | `http://localhost:5173` | | 后端 API 文档 | `http://localhost:8000/docs` | 停止实验室: ``` docker compose down ``` ## 🧪 本地开发者运行 ### 后端终端 ``` cd "E:\CyberLab\GitHub Repos\02-soc-analyst-simulator\backend" python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` ### 前端终端 ``` cd "E:\CyberLab\GitHub Repos\02-soc-analyst-simulator\frontend" npm install npm run dev ``` 访问: ``` http://localhost:5173 ``` ## ⚡ PowerShell 辅助脚本 | 脚本 | 用途 | |---|---| | `scripts/run-local.ps1` | 启动本地应用工作流 | | `scripts/reset-db.ps1` | 重置/重新播种模拟器数据库 | | `scripts/github-push.ps1` | 将代码库推送到 GitHub | 运行辅助工具: ``` cd "E:\CyberLab\GitHub Repos\02-soc-analyst-simulator" .\scripts\run-local.ps1 ``` ## 🧠 掌握的技能
### SOC 基础知识 - 警报分类 - 案例优先级排序 - 严重程度分类 - 分析师笔记撰写 - 报告质量控制 ### 调查实践 - 身份异常审查 - 端点进程审查 - Web 活动审查 - 网络异常审查 - 事件时间线构建
### 防御性思维 - 影响分析 - 置信度评分 - 遏制建议 - 证据处理习惯 - 案例关闭纪律 ### 专业输出 - 高管摘要 - 技术发现 - 修复说明 - 经验教训 - 最终得分审查
## 🧭 分析师工作流 ``` flowchart TD A[Open Alert Queue] --> B[Review Alert Details] B --> C[Classify Severity] C --> D[Select Investigation Steps] D --> E[Add Case Notes] E --> F[Build Timeline] F --> G[Track Evidence Placeholders] G --> H[Complete Report Checklist] H --> I[Submit Case] I --> J[Review Score Summary] J --> K{Capstone Ready?} K -- No --> A K -- Yes --> L[Correlate Multi-Alert Incident] ``` ### 核心工作流 1. **打开警报队列**,按严重程度、时间或类别进行排序。 2. **审查警报详情**,包括用户、端点、来源和摘要。 3. 根据业务影响和证据置信度**选择严重程度**。 4. **选择与警报类型相匹配的调查步骤**。 5. **添加案例笔记**,解释审查了什么以及为什么重要。 6. 使用模拟的事件时间戳**构建时间线**。 7. 通过记录工件名称**附加证据占位符**。 8. 带有明确发现和建议的**完成报告清单**。 9. **提交评分**并回顾遗漏项。 10. 通过将多个警报连接为一个事件**完成毕业项目**。 ## 🚨 预置警报库 该模拟器包含 **25 个种子警报**,涵盖身份、端点、网络和 Web 活动。 | # | 警报类型 | 类别 | 培训重点 | |---:|---|---|---| | 01 | 登录失败激增 | 身份 | 暴力破解模式识别 | | 02 | 不可能旅行 | 身份 | 地理/时间异常审查 | | 03 | 可疑的 PowerShell 命令 | 端点 | 命令行调查 | | 04 | 异常的出站连接 | 网络 | Beaconing 模式审查 | | 05 | 新建管理员账户 | 身份 | 权限变更审查 | | 06 | 可疑文件哈希 | 端点 | 文件信誉工作流 | | 07 | 多个 404 请求 | Web | Web 扫描噪声与风险评估 | | 08 | Web 登录异常 | Web | 身份验证模式审查 | | 09 | 数据传输激增 | 网络 | 数据外发嫌疑分类 | | 10 | 端点隔离建议 | 端点 | 遏制决策制定 | | 11 | 重复的 MFA 失败 | 身份 | 账户安全审查 | | 12 | 异常的服务创建 | 端点 | 持久化指标审查 | | 13 | 罕见的父子进程链 | 端点 | 进程树推理 | | 14 | DNS 请求异常 | 网络 | 可疑目标审查 | | 15 | 特权组成员身份变更 | 身份 | 访问控制审查 | | 16 | 外部共享激增 | 数据 | 数据暴露分类 | | 17 | 可疑的压缩包创建 | 端点 | 收集行为审查 | | 18 | 来自新国家/地区的 VPN 登录 | 身份 | 远程访问异常审查 | | 19 | 异常的计划任务 | 端点 | 持久化工作流审查 | | 20 | Web 管理路径探测 | Web | 侦察分类 | | 21 | 高风险端点警报集群 | 端点 | 多信号优先级排序 | | 22 | 敏感文件访问突增 | 数据 | 内部风险样式审查 | | 23 | 从 Office 应用派生的命令行外壳 | 端点 | 可疑执行链审查 | | 24 | 罕见的出站端口连接 | 网络 | 出站异常分类 | | 25 | 毕业项目事件连接器警报 | 多域 | 关联与报告 |
查看警报家族覆盖范围 ``` mindmap root((Alert Library)) Identity Failed Login Spike Impossible Travel MFA Failures New Admin Account Privileged Group Change Endpoint PowerShell Command File Hash Service Creation Scheduled Task Process Chain Network Outbound Connection DNS Anomaly Data Transfer Spike Rare Port Connection Web Multiple 404s Login Anomaly Admin Path Probing Capstone Multi-Alert Incident Chain ```
## 🧮 评分引擎 评分引擎会评估分析师在多个类别的决策。 | 评分领域 | 检查内容 | 分析师习惯示例 | |---|---|---| | 严重程度选择 | 您是否选择了正确的严重程度? | 使影响与紧急程度相匹配 | | 调查步骤 | 您是否选择了相关步骤? | 审查身份、端点、Web 或网络工件 | | 笔记质量 | 您的笔记是否解释了决策? | 撰写清晰、有理有据的推理 | | 时间线质量 | 您是否正确排列了事件顺序? | 确定先发生的、接下来的和最后发生的事件 | | 证据追踪 | 您是否记录了有用的证据占位符? | 引用日志、哈希、用户名、主机名 | | 报告清单 | 您是否完成了最终报告部分? | 包含摘要、影响、发现和建议 | ``` pie title Analyst Score Inputs "Severity" : 25 "Investigation Steps" : 25 "Report Checklist" : 20 "Timeline" : 15 "Notes + Evidence" : 15 ``` ## 🧩 最终毕业项目案例 最终毕业项目案例围绕一个相互关联的模拟事件构建: ``` INC-CAP-9001 ``` 毕业项目要求分析师关联多个警报,而不是将每个警报视为孤立的噪声。 | 阶段 | 模拟信号 | 分析师目标 | |---:|---|---| | 1 | 身份异常 | 识别账户风险 | | 2 | 端点命令活动 | 审查可疑的主机行为 | | 3 | 网络出站异常 | 确定外部通信隐患 | | 4 | 数据传输激增 | 评估潜在的业务影响 | | 5 | 隔离建议 | 决定遏制优先级 | | 6 | 最终报告 | 清晰记录事件 | ## 📚 包含的文档 | 文档 | 用途 | |---|---| | [`docs/soc-workflow.md`](docs/soc-workflow.md) | 端到端的 SOC 分析师工作流 | | [`docs/alert-triage.md`](docs/alert-triage.md) | 如何审查警报并确定优先级 | | [`docs/incident-severity.md`](docs/incident-severity.md) | 严重程度定义及示例 | | [`docs/report-writing.md`](docs/report-writing.md) | 如何撰写清晰的事件报告 | | [`docs/capstone.md`](docs/capstone.md) | 最终多警报案例说明 | ## 🏆 完成徽章 将这些作为 README 成就、个人资料徽章或内部培训里程碑。 | 徽章 | 要求 | 状态 | |---|---|---:| | 🟢 警报队列新手 | 完成 5 个警报 | `Locked` | | 🔵 分类操作员 | 完成 10 个警报且得分在 70% 以上 | `Locked` | | 🟣 严重程度专家 | 正确分类 10 次程度 | `Locked` | | 🟠 时间线构建者 | 为 10 个案例添加时间线条目 | `Locked` | | 🟡 证据处理员 | 为 10 个案例附加证据占位符 | `Locked` | | 🔴 事件报告员 | 完成 10 份报告清单 | `Locked` | | ⚫ 毕业项目分析师 | 完成所有 `INC-CAP-9001` 警报 | `Locked` | | 👑 SOC 主管储备 | 所有已完成案例平均得分 85% 以上 | `Locked` |
未来应用升级的徽章展示创意 ``` [ Rookie ] → [ Operator ] → [ Specialist ] → [ Reporter ] → [ Capstone Analyst ] → [ SOC Lead Ready ] ``` 未来增强构想:将徽章解锁状态存储在 SQLite 中,并在分析师仪表板中呈现它们。
## 🗂️ 项目结构 ``` 02-soc-analyst-simulator/ ├── backend/ │ ├── app/ │ │ ├── database.py │ │ ├── main.py │ │ ├── scoring.py │ │ └── seed_data.py │ ├── data/ │ ├── Dockerfile │ └── requirements.txt ├── frontend/ │ ├── src/ │ │ ├── App.jsx │ │ ├── main.jsx │ │ └── styles.css │ ├── Dockerfile │ ├── index.html │ └── package.json ├── docs/ │ ├── alert-triage.md │ ├── capstone.md │ ├── incident-severity.md │ ├── report-writing.md │ └── soc-workflow.md ├── scripts/ │ ├── github-push.ps1 │ ├── reset-db.ps1 │ └── run-local.ps1 ├── assets/ │ └── screenshots/ ├── reports/ │ └── final-incident-report-template.md ├── docker-compose.yml ├── PROJECT-CHECKLIST.md └── README.md ``` ## 🚀 推送到 GitHub 在 PowerShell 中执行: ``` cd "E:\CyberLab\GitHub Repos\02-soc-analyst-simulator" git init git add . git commit -m "Initial commit: SOC analyst simulator" git branch -M main git remote add origin https://github.com/m4ckDev/02-soc-analyst-simulator.git git push -u origin main ``` 如果代码库已存在: ``` cd "E:\CyberLab\GitHub Repos\02-soc-analyst-simulator" git status git add . git commit -m "Polish README visuals and training documentation" git push ``` ## 🧾 培训完成清单 - [ ] 在本地启动模拟器 - [ ] 审查警报队列 - [ ] 完成 5 个新手警报 - [ ] 共完成 10 个警报 - [ ] 正确分类 10 个警报的严重程度 - [ ] 为 10 个案例添加笔记 - [ ] 为 10 个案例添加时间线条目 - [ ] 为 10 个案例完成报告清单 - [ ] 完成 `INC-CAP-9001` - [ ] 保存最终事件报告 - [ ] 为 README 截取屏幕截图 - [ ] 将完成的项目推送到 GitHub ## 🛡️ 仅限授权培训 本代码库仅用于**授权的本地实验室培训**。 它包含: - 模拟警报 - 模拟用户 - 模拟端点 - 模拟遥测数据 - 占位符证据名称 - 防御性工作流 它**不**包含: - 真实的漏洞利用代码 - 恶意软件 - 钓鱼工具包 - 凭据窃取说明 - 攻击真实系统的说明 - 绕过安全控制的说明 请在安全的实验室环境中使用本项目,以培养分析师技能、防御性判断和专业报告习惯。
## MacKinnonTech 网络防御实验室系列 **Repo 01:** Cyber Range Blue Team **Repo 02:** SOC Analyst Simulator 刻苦训练。清晰记录。合法防御。
标签:AI合规, OPA, SOC分析师, 安全培训, 安全运营, 库, 应急响应, 扫描框架, 版权保护, 逆向工具, 靶场