richard-skerritt/sentinel-soc-tier1-lab

GitHub: richard-skerritt/sentinel-soc-tier1-lab

一个面向初级 SOC 分析师的本地模拟环境,通过模糊告警、真实日志和内置 KQL 引擎练习告警分拣和攻击链追踪。

Stars: 0 | Forks: 0

Sentinel SOC Tier 1 Lab — alert workspace with KQL editor and triage panel # Sentinel SOC Tier 1 实验室 **在参加面试之前,先坐上 SOC 的工位。** 一个面向初级 Microsoft Sentinel / SOC Tier 1 分析师的逼真工位模拟。模糊的警报标题。成百上千条原始日志事件。一个可运行的 KQL 引擎。一位不会直接给你答案的高级导师。你的工作就是去深挖。 [为什么会有这个项目](#why-this-exists) · [你的实际工作内容](#what-you-actually-do) · [功能特性](#features) · [截图展示](#screenshots) · [入门指南](#getting-started) · [项目结构](#project-structure) · [免责声明](#disclaimer)
## 为什么会有这个项目 大多数 SOC 培训工具都会告诉你发生了什么。警报写着**"检测到密码喷洒"**,然后你点击*真阳性*。这并不是真实值班时的感受。 在真实的 Tier 1 工位上,警报通常只会写着类似**"单一源 IP 的多次身份验证失败"**这样平淡的话。产品触发了一条规则,仅此而已。这到底是密码喷洒、配置错误的打印机、被遗忘的服务账号,还是嘈杂的 VPN,需要**你**通过阅读日志来弄清楚。 Sentinel SOC Tier 1 Lab 在本地重建了这种体验——无需 Azure 订阅,无需许可证,没有任何成本——因此你可以练习初级分析师受雇所需养成的真实习惯: - 阅读模糊的警报并决定需要提出什么问题 - 针对真实的日志表编写 KQL 来回答该问题 - 从一个实体(IP、用户、主机)跳转到另一个实体以追踪攻击链 - 使用结论、操作清单和其他分析师能看懂的备注对警报进行分类 ## 你的实际工作内容 队列中的每个警报都遵循相同的循环: 1. **打开警报。** 你会看到规则名称、单行描述、一两个实体以及 MITRE 技术。仅此而已。没有现成的标准答案。 2. **阅读调查目标。** 你必须回答四个纯英文问题,然后才能处理这件事。 3. **打开日志。** 八个实时表格:`SigninLogs`、`DeviceProcessEvents`、`OfficeActivity`、`AzureActivity`、`SysmonEvent`、`DeviceNetworkEvents`、`AzureFirewallNetworkRule`、`ThreatIntelligenceIndicator`。约 8,000 条事件中隐藏着一条真实的攻击链。 4. **编写 KQL。** 真实的运算符——`where`、`project`、`summarize`、`count`、`extend`、`take`、`sort`、`join`、`bin`、`ago`、`has`、`contains`。引擎能在毫秒内返回真实的结果表。 5. **实体跳转。** 发现可疑 IP?点击它即可查询提及该 IP 的每一个表格。发现可疑主机?操作相同。顺着链条追踪,直到你能还原整个事件全貌。 6. **分类处理。** 选择一个结论(真阳性 / 假阳性 / 良性阳性),勾选正确的响应操作,为下一位分析师留下备注。导师会为你打分,并解释 Tier 3 分析师会怎么做。 如果你卡壳了,可以向 Morgan——高级导师——寻求提示。每条提示都会被记录。仪表板会显示你的提示使用情况,以便你分辨自己是取得了进步,还是仅仅更加依赖帮助。 ## 导师简介 该实验室附带了一位虚构的 Tier 3 班次主管,名叫 **Morgan Reyes**。拥有 12 年的 SOC 和 IR 经验,冷静且直接,是那种见过初级分析师在第一天手忙脚乱也能淡然处之的前辈。 Morgan 的规则: Morgan 会在五个地方出现: - **主页的班次简报** —— 为本次练习奠定基调。 - **导师聊天** —— 一个带有预设提示的自由聊天标签页(`我不知道从哪里开始处理这个警报`,`帮我写一个关于 X 的 KQL 查询`,`解释一下这个查询…`)。 - **警报提示** —— 你询问的次数越多,得到的提示就越具体。 - **分类后反馈** —— 结论的推理过程、你遗漏了什么,以及 Tier 3 分析师接下来会做什么。 - **教程指导** —— 在每节 KQL 课程结束时给予祝贺并提供下一步指引。 如果你在“设置”中提供了 **ElevenLabs API 密钥 + 音色 ID**,Morgan 的台词将以你选择的音色播放为音频。如果不提供这些,实验室将仅保留纯文本功能——完全可用,只是比较安静。 ## 功能特性 ### 可运行的 KQL 引擎 这不是一个虚假的正则表达式匹配器。而是一个包含分词器 → 解析器 → 求值器的系统,它针对捆绑的日志表运行并返回带有类型的结果集。 | 支持 | 示例 | |---|---| | 表格运算符 | `where`、`project`、`summarize`、`count`、`extend`、`take`、`sort` / `order by`、`join`、`distinct` | | 聚合函数 | `count()`、`countif()`、`dcount()`、`sum()`、`avg()`、`min()`、`max()`、`make_set()`、`make_list()` | | 字符串函数 | `contains`、`has`、`startswith`、`endswith`、`matches regex`、`tolower`、`toupper`、`strlen`、`split` | | 时间函数 | `ago()`、`now()`、`bin()`、`datetime()`(均锚定为冻结的 `now`,即 `2026-05-13T12:00:00Z`,因此结果具有可重现性) | | 运算符 | `==`、`!=`、`>`、`>=`、`<`、`<=`、`in`、`!in`、`and`、`or`、`not`、`between` | | 用户体验 | 带有 KQL 语法高亮、按 Tab 显示 Schema、具有可排序列的结果表、运行时间和行数统计的 CodeMirror 6 编辑器 | KQL 规范位于 [`docs/kql-engine-spec.md`](docs/kql-engine-spec.md)。 ### 涵盖 6 款 Microsoft 产品的 30 个事件 均匀分布在 **Azure AD Identity Protection**、**Microsoft Defender for Endpoint**、**Microsoft 365 Defender**、**Microsoft Defender for Cloud**、**Azure Firewall** 和 **Sysmon** 之间。严重程度分布:4 个严重 · 12 个高 · 13 个中 · 1 个低。每个事件都包含: - 故意模糊的标题和贴近真实产品的描述 - 你可以进行跳转查询的已标记实体(IP、用户、主机、文件、URL 等) - 一项 MITRE ATT&CK 技术 - 四个可用作检查清单的调查目标 - 隐藏在分类提交按钮背后的真实结论、正确的操作清单以及 Tier 3 分析师的推理过程 隐藏在队列中的是一条**端到端的攻击链**——不可能旅行 → 密码喷洒 → MFA 疲劳攻击 → Office 到 PowerShell → LSASS 转储 → 权限维持 → 数据窃取 → 卷影副本删除——你可以通过实体跳转来追踪它。这条链路每次都是相同的(基于种子的日志生成),因此可以作为一种教学工具。 ### KQL 教程学习路径 四节短课程,大约需要 45 分钟完成。你可以按顺序学习,也可以直接跳过。 | 课程 | 你将学到什么 | |---|---| | 1 — 基础知识 | 表格、管道符,以及每一条 KQL 查询都具备的四行结构 | | 2 — 你每次值班都会用到的四个运算符 | `where`、`project`、`summarize`、`count` —— 大约占所有真实 SOC 查询的 80% | | 3 — 在实体之间跳转 | 顺藤摸瓜,将一个 IP 从 `SigninLogs` 追踪到 `DeviceProcessEvents`,再到 `OfficeActivity` | | 4 — 搜索模式 | 密码喷洒、信标检测、不可能旅行、大批量删除的聚合分析 | 每一节课都包含可以在实验室的日志表上实际运行的示例。 ### 分类处理、仪表板和搜索笔记本 - **三栏式警报工作区。** 左侧是警报摘要,中间是 KQL 编辑器,右侧是分类处理 / 笔记本标签页。 - **搜索笔记本。** 每个警报专属的草稿本。可以保存查询、粘贴发现、关联实体。刷新页面后依然存在(SQLite 支持)。 - **仪表板。** 分类结果、准确率 %、错误计数、使用的提示数、每个警报的查询次数、教程进度、按严重程度 / 产品分类的警报统计,以及分类结果统计。 - **冻结时间。** 引擎中的每一个 `now()` / `ago()` 都会解析为 `2026-05-13T12:00:00Z`,因此无论在第 1 天还是第 30 天,你的查询都会返回相同的行。 ### 语音功能(可选) 如果你在“设置”中粘贴了 ElevenLabs 的 API 密钥和音色 ID,Morgan 的台词将通过 ElevenLabs 朗读出来。侧边栏中的语音切换开关允许你随时静音/取消静音。设置中的“测试音色”按钮会在密钥、音色 ID 或网络出错时为你提供准确的错误信息。 ## 截图展示 **简报 —— 班次开始** ![Briefing page with stats, Morgan welcome, get-started buttons and voice toggle](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/3c876d841f053956.png) **警报队列 —— 涵盖 6 款产品的 30 个事件** ![Alert queue showing critical and high alerts across Defender, Azure AD, Sysmon, Azure Firewall](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/19beceae24053956.png) **警报工作区 —— 调查进行中** ![Alert detail with KQL query running, result table populated, triage panel ready](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/858498e802053957.png) **警报工作区 —— 分类后的反馈** ![Alert detail showing correct triage verdict with Morgan's Tier 3 reasoning](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/4551177fb4053958.png) **KQL 教程 —— 第 2 课** ![Lesson 2 explaining where, project, summarize, count with runnable examples](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/d20ee09db9053959.png) **导师聊天 —— Morgan Reyes** ![Mentor chat with canned prompts and free-text input to ask Morgan anything](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/b017a47f12053959.png) **仪表板 —— 班次表现** ![Dashboard with triage accuracy, hints used, alerts by severity and product, tutorial progress](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/2381c20d44054000.png) **设置 —— 语音配置** ![Settings page with ElevenLabs key, voice ID, Test Voice button and troubleshooting hints](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/c163b34e77054001.png) ## 入门指南 ### 前置条件 - Node 20+ - npm 10+ ### 本地运行 ``` git clone https://github.com/richard-skerritt/sentinel-soc-tier1-lab.git cd sentinel-soc-tier1-lab npm install npm run dev # dev server on http://localhost:5000 ``` 然后打开 [http://localhost:5000](http://localhost:5000)。 ### 生产环境构建 ``` npm run build # builds client to dist/public, server to dist/index.cjs NODE_ENV=production node dist/index.cjs ``` ### 可选:开启 Morgan 的语音功能 1. 从 [elevenlabs.io](https://elevenlabs.io/app/settings/api-keys) 获取 API 密钥。 2. 从 [Voice Lab](https://elevenlabs.io/app/voice-lab) 中挑选一个音色,并复制它的 **ID**(而不是名称)。免费层级的示例音色(如 Rachel (`21m00Tcm4TlvDq8ikWAM`))可以直接使用。 3. 在实验室中打开 **设置**,将两者粘贴进去,点击 **保存设置**,然后点击 **测试音色**。 侧边栏底部的语音切换开关可以瞬间将 Morgan 静音 / 取消静音,而不会丢失你的设置。 ## 项目结构 ``` sentinel-soc-tier1-lab/ ├── client/ Vite + React + Tailwind + shadcn/ui frontend │ └── src/ │ ├── components/ Layout, MorganBubble, KQL editor, etc. │ ├── data/ Bundled alerts, tutorial, mentor JSON │ ├── lib/ │ │ ├── kql/ Tokeniser, parser, evaluator │ │ └── voice.ts ElevenLabs client, mute state, speak queue │ └── pages/ Briefing, Queue, AlertDetail, Learn, Mentor, Dashboard, Settings ├── server/ Express API + SQLite (Drizzle ORM) │ ├── data/logs/ 8 log tables (~8 000 events, seeded) │ └── routes.ts /api/logs, /api/triage, /api/voice, /api/settings ├── shared/ Drizzle schema shared between client and server ├── docs/ │ ├── build-spec.md Full v2 build specification │ ├── kql-engine-spec.md KQL operator + function reference │ └── screenshots/ README screenshots ├── .env.example ├── LICENSE └── README.md ``` ## 技术栈 - **前端** — React 18, Vite, Tailwind, shadcn/ui, Wouter (hash routing), CodeMirror 6, Recharts, lucide-react - **后端** — Express, Drizzle ORM, better-sqlite3 - **KQL 引擎** — 原创的分词器 + 解析器 + 求值器,无第三方查询库 - **语音** — ElevenLabs Turbo v2.5,顺序播放队列,内存中的静音状态 - **构建** — 单个 `npm run build` 步骤会生成 `dist/public`(客户端)和 `dist/index.cjs`(服务端) ## 这个项目是什么 —— 以及不是什么 这是一个**模拟器**,而不是真正的 Microsoft Sentinel。它运行的 KQL 是一个高度还原的子集,而不是完整的 Kusto Query Language。警报和日志虽然是手工编写以追求真实感的,但它们都是虚构的。 如果你想针对真正的产品进行练习,Microsoft 在 GitHub 上发布了一个[官方的 Sentinel 培训实验室](https://github.com/Azure/Azure-Sentinel/tree/master/Training),可以部署到你自己的 Azure 订阅中。本实验室是你**在此之前**使用的东西——当你还没有订阅、没有许可证,或者还没准备好自信去实操时使用。 ## 免责声明作为 Tier 1 SOC 分析师路径的个人学习工具而构建。与 Microsoft、ElevenLabs 或任何商业培训供应商无关。所有警报文本、日志数据、Morgan Reyes 人物设定以及内嵌的攻击链均为原创虚构内容。 ## 许可证 MIT — 详见 [LICENSE](LICENSE)。
标签:Azure安全, Cloudflare, KQL, Kusto查询语言, MITRE ATT&CK, OPA, SOC分析师培训, Tier 1分析师, 初阶分析师, 告警研判, 安全事件响应, 安全攻防演练, 安全运营中心, 微软Sentinel, 攻击链, 日志数据挖掘, 漏洞修复, 网安面试, 网络安全, 网络安全培训, 网络映射, 自动化攻击, 语音助手, 隐私保护, 靶场