sujay-cj/Windows-Active-Directory-Threat-Hunting-Lab
GitHub: sujay-cj/Windows-Active-Directory-Threat-Hunting-Lab
基于 Splunk 的 Windows AD 威胁狩猎实验室,通过假设驱动的调查方法论和 SPL 查询分析五类常见攻击场景并给出基于证据的结论。
Stars: 0 | Forks: 0
# Windows Active Directory 威胁狩猎实验室
## 实验架构

## 概述
本仓库记录了在家庭实验室环境中进行的一项结构化威胁狩猎练习。来自 Active Directory 域 (`ATTACKRANGE.LOCAL`) 的 Windows 安全事件日志被采集到 **Splunk Enterprise** 中,并使用 **SPL (Search Processing Language)** 查询进行分析,以调查五个常见的攻击假设。
其目的是展示 **SOC 分析师调查方法论** —— 形成假设、构建针对性查询、客观解读结果,并得出基于证据的结论。并非每个假设最终都能确认存在攻击;这是刻意设计的。优秀的 SOC 分析师知道何时数据足以支撑结论,何时不能。
## 环境
| 组件 | 详情 |
|-----------|---------|
| **SIEM** | Splunk Enterprise 10.2.3 |
| **Index** | `soc_lab` |
| **日志源** | Windows 安全事件日志 (`windows_security_text`) |
| **域** | `ATTACKRANGE.LOCAL` |
| **域控制器** | `win-dc-259.attackrange.local`, `win-dc-7216619.attackrange.local` |
| **数据集** | Mordor/OTRF Attack Range 数据集(模拟 AD 攻击场景) |
| **日志时间范围** | 2020 年 10 月 – 11 月 |
## 调查索引
| # | 假设 | 关键事件代码 | 结论 |
|---|-----------|-----------------|------------|
| [01](./01-Brute-Force/README.md) | 针对域账户的暴力破解攻击 | 4625, 4624, 4740 | ⚠️ 发现证据 |
| [02](./02-Password-Spraying/README.md) | 密码喷洒攻击 | 4625 | ✅ 无证据 |
| [03](./03-Kerberoasting/README.md) | Kerberoasting(TGS 请求滥用) | 4769 | ⚠️ 结论不明确 |
| [04](./04-DCSync/README.md) | DCSync 攻击(凭证转储) | 4662 | ✅ 未发现确凿证据 |
| [05](./05-Golden-Ticket/README.md) | 黄金票据 / 提权 | 4624, 4732 | 🔴 发现可疑活动 |
## 引用的关键 Windows 安全事件代码
| 事件代码 | 描述 |
|------------|-------------|
| **4624** | 账户成功登录 |
| **4625** | 账户登录失败 |
| **4740** | 用户账户被锁定 |
| **4769** | 请求了 Kerberos 服务票据 (TGS) |
| **4662** | 对对象执行了操作(目录服务访问) |
| **4732** | 成员已被添加到启用安全的本地组中 |
## 展示的技能
### 🔍 SIEM 与日志分析
- **Splunk SPL** — 使用 `stats`、`eval`、`where`、`dedup`、`table`、`sort`、`search` 和基于时间的过滤编写多阶段查询
- **Windows 安全事件日志**分析 — 解析原始事件 XML 字段、登录类型、状态/子状态代码以及身份验证协议
- **字段提取与流转** — 从聚合视图深入到原始事件以获取取证细节
- **Index 管理** — 了解 Splunk index 结构、sourcetypes 和 source 字段解析
### 🛡️ Active Directory 与 Windows 身份验证
- **Kerberos 身份验证流程** — TGT/TGS 请求生命周期、加密类型(RC4 与 AES)以及黄金票据如何滥用 `krbtgt` 哈希
- **NTLM 身份验证** — NtLmSsp 登录过程、登录类型(Type 2 = 交互式,Type 3 = 网络)以及失败状态代码
- **失败状态代码** — 解析 `0xC000006D`(凭证错误)、`0xC000006A`(密码错误,用户有效)、`0xC0000064`(用户不存在)
- **AD 复制协议 (MS-DRSR)** — DCSync 如何滥用 `DS-Replication-Get-Changes-All` 权限,以及 EventCode 4662 的哪些属性可以识别它
- **组成员身份事件** — 解析 EventCode 4732/4728 以获取特权提升指标
### 🎯 威胁狩猎方法论
- **假设驱动狩猎** — 在编写任何查询之前形成一个可测试的假设
- **基线与异常思维** — 在标记异常之前,先了解正常情况是怎样的(例如 DC 到 DC 的 Kerberos 通信)
- **基于证据的结论** — 记录数据所支持的内容,并在假设未得到确认时明确声明
- **攻击区分** — 使用 `dc()` 聚合,区分暴力破解(一个 IP → 一个用户)和密码喷洒(一个 IP → 多个用户)
- **多阶段调查** — 从广泛的概述查询 → 缩小范围的向下钻取查询 → 原始事件检查的逐步流转
### 🗺️ MITRE ATT&CK 框架
- 将观察到的日志模式映射到 ATT&CK 技术和子技术
- 理解战术(目标)与技术(方法)之间的区别
- 针对性地记录 ATT&CK 的负面发现 — 识别数据不支持某项技术的情况
### 📋 SOC 报告与文档记录
- 编写包含假设、查询、结果和结论的结构化调查报告
- 透明地记录负面发现 — 这是一项关键的实战 SOC 技能
- 以技术和非技术人员都能阅读的格式展示技术发现
## 方法论
每项调查都遵循此工作流程:
```
Hypothesis
↓
Identify Relevant Event Codes
↓
Write SPL Query
↓
Analyze Results
↓
Drill Down / Pivot
↓
Evidence-Based Conclusion
↓
MITRE ATT&CK Mapping
```
## MITRE ATT&CK 映射
| 技术 ID | 技术名称 | 调查 |
|-------------|---------------|---------------|
| T1110.001 | 暴力破解:密码猜测 | [01-暴力破解](./01-Brute-Force/README.md) |
| T1110.003 | 暴力破解:密码喷洒 | [02-密码喷洒](./02-Password-Spraying/README.md) |
| T1558.003 | 窃取或伪造 Kerberos 票据:Kerberoasting | [03-Kerberoasting](./03-Kerberoasting/README.md) |
| T1003.006 | 操作系统凭证转储:DCSync | [04-DCSync](./04-DCSync/README.md) |
| T1558.001 | 窃取或伪造 Kerberos 票据:黄金票据 | [05-黄金票据](./05-Golden-Ticket/README.md) |
## 关于结果的重要说明
本实验使用**公开的模拟攻击数据集**(Mordor/OTRF Attack Range)。部分调查未返回结果,因为数据集中不存在特定攻击技术的日志痕迹,或者需要当前 index 中不可用的额外数据源。针对这些情况,已在每项调查的 README 中进行了透明记录。
*作者:Sujay C J | 网络安全作品集*
标签:Active Directory, Plaso, SPL查询, Terraform 安全, Windows安全事件, 安全运营中心(SOC), 模拟器