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 威胁狩猎实验室 ## 实验架构 ![实验架构](https://static.pigsec.cn/wp-content/uploads/repos/cas/cf/cf5f894d0621b91fb015b01af6935bb400ad5ac98f084d02e677a23a58e2ce30.jpg) ## 概述 本仓库记录了在家庭实验室环境中进行的一项结构化威胁狩猎练习。来自 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), 模拟器