ShiroKiro/microsoft-sentinel-siem-lab
GitHub: ShiroKiro/microsoft-sentinel-siem-lab
一个基于 Microsoft Sentinel 的云原生 SIEM 实验室,展示如何使用 KQL 检测规则、MITRE ATT&CK 映射和自动化事件调查流程来检测企业级安全威胁。
Stars: 0 | Forks: 0
# Microsoft Sentinel Cloud SIEM 实验室




## 概述
一个基于 Microsoft Sentinel 构建的云原生 SIEM 实验室,旨在展示
SOC 分析师技能:威胁检测、KQL 查询、事件调查
以及安全监控仪表板创建。
本项目扩展了我的 [Wazuh 开源 SIEM 实验室](https://github.com/ShiroKiro/soc-security-monitoring-lab)
至企业级云原生 SIEM,展现了跨
自托管和云安全平台工作的能力。
**持续时间:** 2026 年 7 月
**环境:** Microsoft Azure (北欧 / 瑞典中部)
**作者:** Oleg Tuboltsev
## 架构
**数据流:**
Azure Subscription → Log Analytics Workspace (law-soc-lab) → Microsoft Sentinel
**数据源:**
- Azure Activity Logs — 订阅级别的操作监控
- 通过 AMA 获取的 Windows Security Events — 来自 ServerLabVM 的端点安全事件
**检测层:**
- 4 条带有 MITRE ATT&CK 映射的 Analytics Rules
- 自动化事件创建和分配
**组件:**
- `law-soc-lab` — Log Analytics Workspace (北欧)
- `ServerLabVM` — Windows Server 2022 (瑞典中部,使用后释放)
- `SOC-Lab-Dashboard` — Sentinel Workbook
## **[📊 查看实验室架构图](architecture/lab-diagram.png)**
## 检测场景
### 1. 暴力破解 - 多次登录失败
| 字段 | 值 |
|-------|-------|
| 严重程度 | 高 |
| MITRE 战术 | Credential Access |
| MITRE 技术 | T1110 暴力破解 |
| 数据源 | Windows Security Events |
| 事件 ID | 4625 |
```
SecurityEvent
| where EventID == 4625
| summarize FailedLogons = count() by Account, Computer, IpAddress, bin(TimeGenerated, 1h)
| where FailedLogons >= 3
| order by FailedLogons desc
```
### 2. 可疑的本地账户创建
| 字段 | 值 |
|-------|-------|
| 严重程度 | 高 |
| MITRE 战术 | Persistence |
| MITRE 技术 | T1136.001 创建账户: 本地账户 |
| 数据源 | Windows Security Events |
| 事件 ID | 4720 |
```
SecurityEvent
| where EventID == 4720
| project TimeGenerated, Account, TargetAccount, Computer, Activity
| order by TimeGenerated desc
```
### 3. 可疑的本地账户删除
| 字段 | 值 |
|-------|-------|
| 严重程度 | 中 |
| MITRE 战术 | Defense Evasion |
| MITRE 技术 | T1070 指示器移除 |
| 数据源 | Windows Security Events |
| 事件 ID | 4726 |
```
SecurityEvent
| where EventID == 4726
| project TimeGenerated, Account, TargetAccount, Computer, Activity
| order by TimeGenerated desc
```
### 4. 重复失败操作 (Azure)
| 字段 | 值 |
|-------|-------|
| 严重程度 | 中 |
| MITRE 战术 | Initial Access |
| MITRE 技术 | T1078 有效账户 |
| 数据源 | Azure Activity Logs |
```
AzureActivity
| where ActivityStatusValue == "Failure"
| summarize FailureCount = count() by Caller, CallerIpAddress, bin(TimeGenerated, 1h)
| where FailureCount >= 2
| order by FailureCount desc
```
## 事件调查工作流
在 Incident #1 上演示的完整 SOC 分析师工作流:
1. **分类** — 审查严重程度、战术和受影响的实体
2. **分配** — 将事件分配给自己,设置状态为 Active
3. **调查** — 分析实体 (账户 + IP),审查时间线
4. **记录** — 将调查结果添加为事件评论
5. **关闭** — 带有合理理由作为误报关闭
📸 有关带截图的完整记录,请参阅 `/investigations/incident-01.md`。
## SOC 仪表板
构建了一个监控 Workbook `SOC-Lab-Dashboard`,包含:
- 按小时统计的失败操作时间表
- Azure Activity 事件分布
- 安全事件概览
📸 参阅 `/workbook/screenshots/`
## 我学到了什么
- 从零开始部署和配置 Microsoft Sentinel
- 通过 Diagnostic Settings 和 AMA 连接数据源
- 编写基于时间聚合的 KQL 检测查询
- 创建带有 MITRE ATT&CK 映射的计划性 Analytics Rules
- 执行端到端的事件调查工作流
- 在 Workbooks 中构建安全监控仪表板
## 与先前工作的联系
本实验室是我的
[Wazuh SIEM 实验室](https://github.com/ShiroKiro/soc-security-monitoring-lab) 的企业级延续:
| | Wazuh 实验室 | Sentinel 实验室 |
|---|---|---|
| 类型 | 开源,自托管 | 云原生,企业级 |
| 数据源 | 本地 agents,Suricata | Azure Activity,Windows AMA |
| 查询语言 | Lucene/Wazuh 规则 | KQL |
| 告警 | 自定义规则 | Analytics Rules + MITRE |
两者结合,展现了对这两个级别 SIEM 的理解。
标签:AMSI绕过, Azure, KQL, Microsoft Sentinel, 威胁检测, 安全运营, 扫描框架, 红队行动