LerinOG/ad-siem-detection-lab
GitHub: LerinOG/ad-siem-detection-lab
一个基于 Windows 活动目录和 Wazuh SIEM 的家庭实验室项目,通过模拟密码喷洒攻击并自动化分诊告警来练习端到端的 SOC 检测工程工作流。
Stars: 0 | Forks: 0
# AD + SIEM 检测实验室 — 密码喷洒模拟与自动化分诊
## 概述
一个家庭实验室检测工程项目,旨在练习端到端的 SOC 分析师工作流:部署 SIEM、模拟真实世界的攻击技术、调查产生的告警并进行自动化分诊。
## 环境
- **Active Directory** — Windows 域控制器 (`OGLAB.LOCAL`)
- **Wazuh SIEM** — 部署在 Ubuntu Server 上,包含启用了 Sysmon 的 Windows 终端日志记录
- **攻击模拟主机** — Ubuntu Linux,运行自定义的 Python 密码喷洒脚本
## 我所构建的内容
1. **检测基础设施** — 配置了 Wazuh 以从加入域的 Windows server 摄取 Windows 安全日志和 Sysmon 事件(进程创建、注册表更改、文件事件),从而为终端和身份验证活动提供实时可见性。
2. **攻击模拟** — 编写了一个 Python 脚本 (`password_spray.py`),模拟针对 Active Directory 的密码喷洒攻击:涉及多个账户,轮换使用一组常见密码,对每个账户的尝试次数保持在较低水平,以模拟真实的攻击者节奏(而不是嘈杂的单账户暴力破解)。
3. **检测与调查** — Wazuh 的关联引擎自动检测到了攻击模式,触发了映射到 **MITRE ATT&CK T1110(暴力破解 / 凭据访问)** 的 level-10 告警。调查了完整的时间线:跨越 3 个账户的 6 次失败的 NTLM 身份验证尝试,随后是 3 次成功登录 — 证实了模拟的入侵。
4. **误报分诊** — 在演练期间,还调查了两个不相关的 Sysmon 告警(一个高危的“可疑文件投放”和一个中危的“PrintNightmare 模式”告警),并正确识别出这两者均为良性 —— 分别是 PowerShell 脚本策略产物和合法的 RDP 打印机重定向活动。
5. **自动化分诊** — 构建了一个 Python 脚本 (`wazuh_triage.py`),它直接查询 Wazuh Indexer REST API,从可配置的时间窗口中提取身份验证事件(事件 ID 4624/4625),并自动标记任何表现出先失败后成功模式的账户 — 将手动审查日志的任务转化为了一键生成的报告。
## 检测时间线
| 时间 | 事件 |
|---|---|
| T+0:00 – T+1:23 | 跨越 3 个账户的 6 次失败 NTLM 登录(事件 ID 4625),单一源 IP |
| T+1:24 | Wazuh 触发关联告警 — “多次 Windows 登录失败”(规则 60204,等级 10,MITRE T1110) |
| T+1:36 – T+1:40 | 3 次成功的 NTLM 登录(事件 ID 4624) — 证实模拟入侵成功 |
## 文件
- `password_spray.py` — 攻击模拟脚本
- `wazuh_triage.py` — 通过 Wazuh Indexer API 进行自动化告警分诊
- `sysmon_config_snippet.xml` — 启用 Sysmon 日志摄取的 Wazuh agent 配置附加项
## 展示的技能
SIEM 部署与管理、Windows/AD 安全日志记录、攻击模拟、日志关联与分诊、误报分析、MITRE ATT&CK 映射、检测自动化、Python + REST API 集成
## 设置说明
分诊脚本使用环境变量进行身份验证,而不是硬编码凭据:
```
export WAZUH_INDEXER_PASSWORD='your-password-here'
python3 wazuh_triage.py
```
标签:Active Directory, Plaso, Wazuh, 安全运营, 密码喷洒, 扫描框架, 自动化分诊, 逆向工具