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, 扫描框架