ronakmishra28/microsoft-sentinel-enterprise-siem-lab

GitHub: ronakmishra28/microsoft-sentinel-enterprise-siem-lab

一个完整的企业级 Microsoft Sentinel SIEM 实验室项目,涵盖攻击检测、KQL 威胁狩猎、事件响应与 SOAR 自动化的端到端实操配置。

Stars: 1 | Forks: 0

# Microsoft Sentinel 企业级 SIEM 实验室 **SC-200 认证** | CompTIA Security+ | ISC2 CC 本实验室从零开始模拟了一个真实的企业级 SOC 环境。我通过 Azure Arc 将两台虚拟机(Windows 11 和 Ubuntu 22.04)连接到 Microsoft Sentinel,接收了来自两个端点的安全日志,并使用 Kali Linux 虚拟机作为攻击者模拟了现实世界中的威胁,包括 SSH 暴力破解、RDP 暴力破解以及后渗透侦察。随后,我使用自定义的 KQL 分析规则检测了这些攻击,使用威胁狩猎查询进行调查,根据 NIST 事件响应框架进行响应,并使用 SOAR playbook 自动化响应过程。每个步骤都配有直接从实时环境中截取的屏幕截图。 这不是一个有指导的实验或演练——每个组件都是手动配置的,每个检测规则都是从零开始编写的,每个事件都进行了端到端的调查。 ## 如何浏览此仓库 | 如果你想查看... | 前往... | |----------------------|----------| | 实验室如何搭建 | [Day 1](./Day01-Environment-Setup/) | | 多端点接入 + 首次攻击 | [Day 2](./Day02-Multi-Endpoint-Attack-Simulation/) | | 事件响应调查 | [Day 3](./Day03-Threat-Hunting-Incident-Response/) + [IR 报告](./Day03-Threat-Hunting-Incident-Response/IR-2026-001-SSH-Brute-Force.pdf) | | Windows 攻击检测 | [Day 4](./Day04-Windows-Attack-Simulation/) | | KQL 威胁狩猎查询 | [Day 5](./Day05-KQL-Threat-Hunting/) | | SOAR 自动化 playbook | [Day 6](./Day06-SOAR-Automation/) | | SOC 仪表板 | [Day 7](./Day07-SOC-Dashboard/) | | 所有 KQL 查询汇总 | [分析规则](#analytics-rules) + [狩猎查询](#threat-hunting-queries) | | MITRE ATT&CK 覆盖范围 | [MITRE ATT&CK 覆盖范围](#mitre-attck-coverage) | | 屏幕截图 | [Day01](./Day01-Environment-Setup/screenshots/) 至 [Day07](./Day07-SOC-Dashboard/screenshots/) | ## 实验室架构 ``` MacBook M4 Pro (Host) └── Parallels ├── Windows 11 Enterprise — RONAKMISHRA345C (10.0.0.32) → Monitored Endpoint ├── Ubuntu 22.04 — ronak (10.0.0.33) → Monitored Endpoint └── Kali Linux 2025.2 (10.0.0.100) → Attack Machine Microsoft Azure └── Resource Group: sc200-rg (East US) ├── Log Analytics Workspace: sc200-lab ├── Microsoft Sentinel ├── Azure Arc (connects both VMs to Azure) ├── Azure Monitor Agent (on Windows + Ubuntu) ├── Data Collection Rules (Windows Security Events + Linux Syslog) └── Logic App: Sentinel-Block-IP-Playbook (SOAR) ``` ## 构建内容 | 组件 | 详情 | |-----------|---------| | SIEM 平台 | Log Analytics Workspace 上的 Microsoft Sentinel | | 监控端点 | 通过 Azure Arc 接入的 Windows 11 企业版 + Ubuntu 22.04 | | 数据源 | Windows 安全事件 (AMA) + Linux Syslog (AMA) | | 分析规则 | 3 个自定义检测规则(SSH 暴力破解, RDP 暴力破解, 侦察) | | 狩猎查询 | 4 个自定义 KQL 威胁狩猎查询 | | 事件 | 3 个由分析规则自动生成的事件 | | SOAR | Logic App playbook + Automation Rule | | 事件报告 | IR-2026-001 (SSH 暴力破解 — 已解决) | ## 实验室时间线 ### Day 1 — 环境设置与 Windows 端点 - 部署了 Microsoft Sentinel 工作区 (`sc200-lab`) - 将 Windows 虚拟机连接到 Azure Arc - 在 Windows 上安装了 Azure Monitor Agent - 为 Windows 安全事件创建了 Data Collection Rule - 通过 AMA 连接器连接了 Windows 安全事件 - 验证了 SecurityEvent 日志正在流入 Sentinel - 模拟了 Windows 暴力破解 — 检测到了 EventID 4625 失败的登录 ### Day 2 — 多端点接入与攻击模拟 - 将 Ubuntu 虚拟机连接到 Azure Arc - 在 Ubuntu 上安装了 Azure Monitor Agent - 创建了 Linux Syslog Data Collection Rule - 验证了 Syslog 数据正在从 Ubuntu 流入 Sentinel - 从 Kali 针对 Ubuntu 运行了 Hydra SSH 暴力破解 — 检测到 260 次失败尝试 - 构建了自定义分析规则:**检测到 SSH 暴力破解攻击**(高严重性,MITRE T1110.001,每 5 分钟运行一次) - 自动生成事件:ID 1 — 检测到 SSH 暴力破解攻击 — 高 — 活跃 ### Day 3 — 威胁狩猎与事件响应 - 构建了攻击时间线图表,显示了 3 波攻击(48、120、88 次尝试) - 通过 KQL 取证识别出攻击者 IP (10.0.0.100) 和目标用户名 - 确认没有成功的身份验证 - 通过 UFW 封禁了攻击者 IP:`sudo ufw deny from 10.0.0.100 to any port 22` - 确认封禁生效 — Kali SSH 连接超时 - 撰写了事件报告:[IR-2026-001-SSH-Brute-Force](./Day03-Threat-Hunting-Incident-Response/IR-2026-001-SSH-Brute-Force.pdf) ### Day 4 — Windows 攻击模拟 - 从 Kali 针对 Windows 虚拟机运行了 Nmap — 发现端口 445 (SMB) 和 3389 (RDP) 处于开放状态 - 运行了 Hydra RDP 暴力破解 — 在 Sentinel 中检测到 14 次失败登录 (EventID 4625) - 在 Windows 上运行了侦察命令 (whoami, net user, ipconfig) — 通过 EventID 4688 检测到 - 构建了 **检测到 RDP 暴力破解攻击** 分析规则(高,MITRE T1110) - 构建了 **检测到可疑侦察命令** 分析规则(中,MITRE T1082) - 总共有 3 个活跃的分析规则 ### Day 5 — KQL 威胁狩猎 在 Microsoft Sentinel 中构建了 4 个自定义狩猎查询: | 查询 | 战术 | 技术 | |-------|--------|-----------| | 按账户分类的失败登录汇总 | 凭证访问 | T1110 | | Windows 上的可疑进程创建 | 执行 | T1204 | | 权限提升检测 | 权限提升 | T1068 | | Linux 侦察检测 | 发现 | T1082 | ### Day 6 — SOAR 自动化 - 构建了 Logic App playbook:`Sentinel-Block-IP-Playbook` - 触发器:Microsoft Sentinel 事件 - 操作:向事件添加带有响应说明的自动评论 - 创建了 Automation Rule:`Auto-Respond to SSH Brute Force` - 在创建与 SSH 暴力破解分析规则匹配的事件时触发 - 自动运行 playbook - 在资源组上授予了 Sentinel Automation Contributor 权限 ### Day 7 — SOC 仪表板(Azure Monitor Workbooks) - 在连接到 sc200-lab Log Analytics 工作区的 Azure Monitor Workbooks 中构建了完整的企业级 SOC 仪表板 - 仪表板包含由 KQL 查询驱动的 6 个实时部分: | 部分 | 可视化 | 数据源 | |---------|--------------|-------------| | 失败登录分析 (Windows) | 柱状图 | SecurityEvent — EventID 4625 | | SSH 暴力破解攻击时间线 | 折线图 | Syslog — 密码失败事件 | | 热门攻击者 IP | 表格 | Syslog — 解析出的攻击者 IP | | Windows 安全事件分布 | 饼图 | SecurityEvent — EventID 4624/4625/4688/4672 | | 检测到的侦察命令 | 表格 | SecurityEvent — EventID 4688 | | 活跃事件 | 表格 | SecurityIncident | ## 分析规则 ### 规则 1:检测到 SSH 暴力破解攻击 ``` Syslog | where Facility == "authpriv" | where SyslogMessage contains "Failed password" or SyslogMessage contains "authentication failure" | where Computer == "ronak" | summarize FailedAttempts = count() by Computer, HostName, bin(TimeGenerated, 5m) | where FailedAttempts > 10 ``` - **严重性:** 高 - **MITRE ATT&CK:** T1110.001 — 暴力破解:密码猜测 - **计划:** 每 5 分钟 ### 规则 2:检测到 RDP 暴力破解攻击 ``` SecurityEvent | where EventID == 4625 | where TimeGenerated > ago(1h) | summarize FailedLogons = count() by IpAddress, Account, Computer | where FailedLogons > 5 ``` - **严重性:** 高 - **MITRE ATT&CK:** T1110 — 暴力破解 - **计划:** 每 5 分钟 ### 规则 3:检测到可疑侦察命令 ``` SecurityEvent | where EventID == 4688 | where TimeGenerated > ago(1h) | where CommandLine has_any ("whoami", "net user", "ipconfig", "systeminfo", "tasklist", "net localgroup") | project TimeGenerated, Account, Computer, NewProcessName, CommandLine ``` - **严重性:** 中 - **MITRE ATT&CK:** T1082 — 系统信息发现 - **计划:** 每 5 分钟 ## 威胁狩猎查询 ### 按账户分类的失败登录汇总 ``` SecurityEvent | where EventID == 4625 | where TimeGenerated > ago(24h) | summarize FailedLogons = count() by Account, Computer, IpAddress | where FailedLogons > 5 | order by FailedLogons desc ``` ### Windows 上的可疑进程创建 ``` SecurityEvent | where EventID == 4688 | where TimeGenerated > ago(7d) | where CommandLine has_any ("whoami", "net user", "ipconfig", "systeminfo", "tasklist", "net localgroup") | project TimeGenerated, Account, Computer, NewProcessName, CommandLine, IpAddress | order by TimeGenerated desc ``` ### 权限提升检测 ``` SecurityEvent | where EventID in (4672, 4728, 4732, 4756) | where TimeGenerated > ago(7d) | project TimeGenerated, Account, Computer, EventID, Activity, IpAddress | order by TimeGenerated desc ``` ### Linux 侦察检测 ``` Syslog | where TimeGenerated > ago(7d) | where SyslogMessage has_any ("whoami", "uname", "ifconfig", "netstat", "ps aux", "id", "cat /etc/passwd") | project TimeGenerated, HostName, SyslogMessage, Facility, SeverityLevel | order by TimeGenerated desc ``` ## 事件报告 **IR-2026-001 — 针对 Ubuntu 服务器的 SSH 暴力破解攻击** | 字段 | 值 | |-------|-------| | 日期 | 2026 年 5 月 16 日 | | 分析师 | Ronak Mishra | | 严重性 | 高 | | 状态 | 已解决 | | 攻击者 IP | 10.0.0.100 (Kali Linux) | | 目标 | ronak (Ubuntu 22.04, 10.0.0.33) | | 总尝试次数 | 260 次失败的 SSH 身份验证尝试 | | 攻击持续时间 | 约 28 分钟,分 3 波进行 | | 成功认证 | 无 | | MITRE ATT&CK | T1110.001 — 暴力破解:密码猜测 | **攻击时间线:** - 05:05 UTC — 第一波开始(48 次尝试) - 05:25 UTC — 第二波(120 次尝试) - 05:30 UTC — 第三波(88 次尝试) - 05:45 UTC — 通过 KQL 取证识别出攻击者 IP - 05:50 UTC — 遏制:`sudo ufw deny from 10.0.0.100 to any port 22` - 05:52 UTC — 确认封禁,来自 Kali 的 SSH 连接超时 完整报告:[IR-2026-001-SSH-Brute-Force](./Day03-Threat-Hunting-Incident-Response/IR-2026-001-SSH-Brute-Force.pdf) ## MITRE ATT&CK 覆盖范围 | 战术 | 技术 | 检测方法 | |--------|-----------|-----------------| | 凭证访问 | T1110 — 暴力破解 | 分析规则 + 狩猎查询 | | 凭证访问 | T1110.001 — 密码猜测 | 分析规则 | | 发现 | T1082 — 系统信息发现 | 分析规则 + 狩猎查询 | | 执行 | T1204 — 用户执行 | 狩猎查询 | | 权限提升 | T1068 — 利用漏洞进行权限提升 | 狩猎查询 | ## 展现的关键技能 - 用于混合端点管理的 Azure Arc 部署 - Azure Monitor Agent 安装与 Data Collection Rule 配置 - Windows 安全事件日志分析 (EventID 4625, 4624, 4688, 4672) - Linux Syslog 摄取与分析 - 用于检测、调查和狩猎的 KQL 查询编写 - 创建包含 MITRE ATT&CK 映射的自定义分析规则 - 遵循 NIST IR 框架的事件响应 - 通过 UFW 防火墙规则进行威胁遏制 - 使用 Azure Logic Apps 开发 SOAR playbook - 用于自动化事件响应的 Automation Rule 配置 ## 屏幕截图 | 日期 | 文件夹 | 内容 | |-----|--------|----------| | Day 1 | [Day01/](./Day01-Environment-Setup/) | 工作区设置,Arc 连接,AMA 安装,DCR,首批日志,KQL 查询 | | Day 2 | [Day02/](./Day02-Multi-Endpoint-Attack-Simulation/) | Ubuntu 接入,Hydra 攻击检测,分析规则,事件创建 | | Day 3 | [Day03/](./Day03-Threat-Hunting-Incident-Response/) | 攻击时间线,IR 取证,遏制,IR 报告 | | Day 4 | [Day04/](./Day04-Windows-Attack-Simulation/) | Nmap 扫描,RDP 暴力破解,侦察检测,3 个分析规则 | | Day 5 | [Day05/](./Day05-KQL-Threat-Hunting/) | 4 个自定义威胁狩猎查询 | | Day 6 | [Day06/](./Day06-SOAR-Automation/) | SOAR playbook,Automation Rule,触发响应 | | Day 7 | [Day07/](./Day07-SOC-Dashboard/) | SOC 仪表板 — 6 个部分,实时 KQL 可视化 | ## 作者 **Ronak Mishra** - 作品集:[ronakmishra28.github.io](https://ronakmishra28.github.io) - 博客:[ronakonweb.medium.com](https://ronakonweb.medium.com) - LinkedIn:[www.linkedin.com/in/ronakmishra/](https://www.linkedin.com/in/ronakmishra) - 认证:SC-200 | CompTIA Security+ | ISC2 CC
标签:KQL, PE 加载器, SOAR, 安全实验室, 安全运营, 微软Sentinel, 扫描框架