zakariabaala-glitch/Active-Directory-Splunk-SOC-Lab
GitHub: zakariabaala-glitch/Active-Directory-Splunk-SOC-Lab
模拟企业 Active Directory 环境的端到端 SOC 实验室,结合 Splunk SIEM 实现攻击模拟、日志采集与实时威胁检测。
Stars: 1 | Forks: 0
# 🛡️ Active Directory + Splunk SOC 家庭实验室






## 📋 项目概述
一个功能齐全的网络安全家庭实验室,模拟真实的企业环境。本项目展示了端到端的安全监控——从构建 Active Directory 域、部署 Splunk SIEM、模拟来自 Kali Linux 的真实攻击,再到使用自定义 SPL 查询、自动化告警和 SOC 仪表板来检测每一次攻击。
**本实验室涵盖了 SOC Analyst、Security Engineer 和 Blue Team 角色所需的核心技能。**
## 🏗️ 实验室架构
```
┌─────────────────────────────────────────────────────────┐
│ VirtualBox Lab │
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ DC01 │ │ WinClient │ │
│ │ Windows │ │ Windows 11 │ │
│ │ Server 2022 │ │ Enterprise │ │
│ │ 192.168. │ │ 192.168. │ │
│ │ 10.10 │ │ 10.20 │ │
│ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │
│ └───────────┬────────────┘ │
│ │ AD-Lab Internal Network │
│ ┌───────────┴────────────┐ │
│ │ │ │
│ ┌──────┴──────┐ ┌─────────┴───┐ │
│ │ Splunk │ │ Kali Linux │ │
│ │ Ubuntu │ │ Attacker │ │
│ │ Server │ │ 192.168. │ │
│ │ 192.168. │ │ 10.50 │ │
│ │ 10.30 │ │ │ │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────┘
```
## 🖥️ 实验室组件
| 组件 | 操作系统 | IP 地址 | 角色 |
|---|---|---|---|
| DC01 | Windows Server 2022 | 192.168.10.10 | Domain Controller, DNS |
| WinClient | Windows 11 Enterprise | 192.168.10.20 | 域工作站 |
| Splunk-Server | Ubuntu Server 24.04 LTS | 192.168.10.30 | SIEM / 日志聚合器 |
| Kali Linux | Kali Rolling | 192.168.10.50 | 攻击机 |
## 🎯 展示技能
### 🔵 Blue Team / 防御
- Active Directory 设计与管理
- Splunk SIEM 部署与配置
- Windows Event Log 分析
- 使用 olafhartong 模块化配置部署和调优 Sysmon
- 编写 SPL (Splunk Processing Language) 查询
- 告警创建、调优和严重性分类
- SOC 仪表板开发
- 审计策略配置
- 日志转发架构 (Universal Forwarder)
- MITRE ATT&CK 框架映射
### 🔴 Red Team / 进攻(用于检测目的)
- 使用 Nmap 进行网络侦察
- 使用 CrackMapExec 进行 SMB 暴力破解
- Active Directory 枚举(用户、组、策略)
- 权限提升技术
- 通过 scheduled tasks 实现持久化
- 凭据收集模拟
## 📁 项目阶段
### ✅ 阶段 1 — 环境设置
构建了一个完全隔离的虚拟实验室,包含 4 个虚拟机:
- 安装了 VirtualBox 7.2.8 和 Extension Pack
- 配置了隔离的内部网络 `AD-Lab` (192.168.10.0/24)
- 部署了 Windows Server 2022、Windows 11 Enterprise、Ubuntu Server 26.04 和 Kali Linux
- 在所有机器上配置了静态 IP
- 为内部网络通信启用了混杂模式
### ✅ 阶段 2 — Active Directory 设置
在 Windows Server 2022 上构建了类似生产环境的 AD 环境:
- 将服务器重命名为 `DC01`
- 将 DC01 提升为具有新林 `atlas.local` 的 Domain Controller
- 创建了 5 个 Organizational Units:IT、HR、Finance、Managers、Workstations
- 跨 OU 创建了 6 个域用户
| 用户名 | 部门 | OU |
|---|---|---|
| jsmith | John Smith | IT |
| sconnor | Sarah Connor | IT |
| edavis | Emily Davis | HR |
| mjohnson | Mike Johnson | HR |
| rbrown | Robert Brown | Finance |
| lwilson | Linda Wilson | Managers |
- 创建了 3 个安全组:`IT-Admins`、`HR-Staff`、`Finance-Team`
- 配置了强制执行 10 分钟不活动超时的屏幕锁定 GPO
- 将 WinClient 加入到 `atlas.local` 域
- 验证以 `ATLAS\jsmith` 身份登录域
### ✅ 阶段 3 — Splunk SIEM 部署
在 Ubuntu Server 26.04 上部署了 Splunk Enterprise 10.4.0:
- 通过 `.deb` 包下载并安装了 Splunk
- 启动 Splunk 并配置了管理员凭据
- 启用 boot-start 以实现自动启动
- 配置了 UFW 防火墙 —— 端口 `8000` (Web UI) 和 `9997` (日志接收)
- 在 `9997` 上创建了接收端口
- 为 Windows 事件日志创建了 `wineventlog` 索引
- 配置了端口转发以便从主机访问 Web UI
### ✅ 阶段 4 — 日志收集 (Sysmon + Universal Forwarder)
在 DC01 和 WinClient 上均进行了部署:
**Sysmon v15.20:**
- 安装了 olafhartong 模块化配置 (schema v4.91)
- 捕获:进程创建、网络连接、文件创建、注册表更改
- 在转发前验证了事件查看器中的 435+ 个事件
**Splunk Universal Forwarder 10.4.0:**
- 安装并指向 `192.168.10.30:9997`
- 配置了 `inputs.conf` 以收集 4 个日志源:
```
[WinEventLog://Application]
index = wineventlog
disabled = false
[WinEventLog://Security]
index = wineventlog
disabled = false
[WinEventLog://System]
index = wineventlog
disabled = false
[WinEventLog://Microsoft-Windows-Sysmon/Operational]
index = wineventlog
disabled = false
renderXml = true
```
- 设置 forwarder 服务以 Local System 身份运行,以便访问 Sysmon 日志
- **结果:来自 WinClient 的 4,827+ 个事件和来自 DC01 的 8,137+ 个事件**
### ✅ 阶段 5 — 攻击模拟
从 Kali Linux (192.168.10.50) 模拟了 5 次真实攻击:
| # | 攻击 | 工具 | MITRE 技术 | 结果 |
|---|---|---|---|---|
| 1 | 网络侦察 | Nmap 7.98 | T1046 | 捕获了 2,352 个防火墙事件 |
| 2 | SMB 暴力破解 | CrackMapExec | T1110 | 706 次失败登录,密码被破解 |
| 3 | AD 枚举 | CrackMapExec | T1087 | 获取了所有用户和组 |
| 4 | 权限提升 | net group | T1078 | 触发了 EventCode 4728 |
| 5 | 持久化 | schtasks | T1053 | 触发了 EventCode 4698 |
### ✅ 阶段 6 — 检测、告警与仪表板
利用自定义 SPL 查询、5 个自动化告警和一个包含 6 个面板的 SOC 仪表板,为每次攻击构建了检测机制。
## 🔍 关键检测与发现
### 1. 🔴 暴力破解攻击
- 来自 `192.168.10.50` (Kali) 的 **706 次失败登录尝试** (EventCode 4625)
- 目标账户:`jsmith`
- CrackMapExec 成功破解密码:`P@ssw0rd123!`
- **检测:** 当 5 分钟内来自单个 IP 的失败登录超过 10 次时触发告警
### 2. 🟠 网络侦察
- nmap 扫描期间的 **2,352 个 Windows 防火墙事件** (EventCode 5156/5157)
- 发现开放的 AD 端口:`88` (Kerberos)、`135` (RPC)、`139` (NetBIOS)、`389` (LDAP)、`445` (SMB)、`636` (LDAPS)、`3268` (Global Catalog)
- MITRE ATT&CK:T1046 Network Service Discovery
### 3. 🟠 Active Directory 枚举
- 通过 SMB 枚举暴露了所有 6 个域用户
- 揭示了所有组,包括 IT-Admins(2 名成员)和 HR-Staff(2 名成员)
- 在 Splunk 中捕获了 EventCode 4661/4662 对象访问事件
### 4. 🔴 权限提升
- EventCode 4728:`CN=John Smith,OU=IT,DC=atlas,DC=local` 被添加到 **Domain Admins**
- **严重** 级别告警立即触发
- 通过 Splunk 进行实时检测
### 5. 🔴 持久化机制
- EventCode 4698:在 DC01 上创建了计划任务 `\WindowsUpdate`
- 每次登录时以 **SYSTEM** 身份运行
- 在 Splunk 日志中捕获了完整的 XML 任务内容
## 📊 Splunk SPL 查询参考
### 暴力破解检测
```
index=wineventlog host=DC01 EventCode=4625
| stats count by Account_Name, src_ip
| where count > 10
| sort -count
```
### 权限提升检测
```
index=wineventlog host=DC01 EventCode=4728
| table _time, Account_Name, Group_Name, Member_Security_ID
| sort -_time
```
### 持久化检测
```
index=wineventlog host=DC01 EventCode=4698
| table _time, TaskName, SubjectUserName
| sort -_time
```
### 侦察检测
```
index=wineventlog host=DC01 (EventCode=5156 OR EventCode=5157)
| stats count by Source_Address, Destination_Port
| sort -count
```
### 新建账户
```
index=wineventlog host=DC01 EventCode=4720
| table _time, Account_Name, SAM_Account_Name
| sort -_time
```
### 攻击时间线可视化
```
index=wineventlog (EventCode=4625 OR EventCode=4728 OR EventCode=4698 OR EventCode=5156)
| eval EventType=case(
EventCode=4625, "Brute Force",
EventCode=4728, "Privilege Escalation",
EventCode=4698, "Persistence",
EventCode=5156, "Reconnaissance"
)
| timechart count by EventType span=1h
```
### 安全事件日志(完整仪表板查询)
```
index=wineventlog (EventCode=4625 OR EventCode=4728 OR EventCode=4698 OR EventCode=4720 OR EventCode=5156)
| eval Severity=case(
EventCode=4728, "CRITICAL",
EventCode=4698, "HIGH",
EventCode=4625, "HIGH",
EventCode=5156, "MEDIUM",
EventCode=4720, "MEDIUM",
true(), "LOW"
)
| eval Attack_Type=case(
EventCode=4728, "Privilege Escalation",
EventCode=4698, "Persistence",
EventCode=4625, "Brute Force",
EventCode=5156, "Reconnaissance",
EventCode=4720, "New Account",
true(), "Unknown"
)
| table _time, Severity, Attack_Type, host, Account_Name, src_ip
| sort -_time
| head 50
```
## 🚨 已配置的 Splunk 告警
| 告警名称 | EventCode | 严重性 | 类型 | 触发条件 |
|---|---|---|---|---|
| 检测到暴力破解攻击 | 4625 | 高 | 定时 (5 分钟) | 来自单个 IP 的失败登录 >10 次 |
| 权限提升 — 用户被添加到特权组 | 4728 | 严重 | 实时 | 任意结果 |
| 创建了可疑的计划任务 | 4698 | 高 | 实时 | 任意结果 |
| 检测到网络侦察 | 5156/5157 | 中 | 定时 (5 分钟) | 来自单个源的防火墙事件 >50 次 |
| 创建了新的域用户账户 | 4720 | 中 | 定时 (5 分钟) | 任意结果 |
## 📈 SOC 仪表板面板
**Atlas SOC — 安全监控仪表板** 包含 6 个面板:
| 面板 | 可视化 | 查询重点 |
|---|---|---|
| 按类型划分的攻击时间线 | 面积图 | 随时间变化的所有攻击类型 |
| 按主机划分的安全事件 | 饼图 | DC01/WinClient 上的事件分布 |
| 失败登录的 Top 源 IP | 柱状图 | 按计数排名的攻击 IP |
| 随时间变化的失败登录尝试 | 折线图 | 4625 事件时间线 |
| 权限提升事件 | 表格 | 4728/4729/4732 事件 |
| 最近的严重安全事件 | 表格 | 最新的 20 个严重事件 |
## 📸 截图
### 阶段 1 — 环境设置
| 截图 | 描述 |
|---|---|
|  | 已下载的 ISO 文件和 VirtualBox 安装程序 |
|  | 已安装 VirtualBox Extension Pack |
|  | AD-DC 虚拟机双网卡配置 |
|  | DC 静态 IP 192.168.10.10 |
|  | VirtualBox 侧边栏中的所有 3 个虚拟机 |
|  | Windows Server 2022 已就绪 |
|  | Windows 11 Enterprise 已就绪 |
|  | Ubuntu Splunk Server 已就绪 |
|  | Splunk Server 静态 IP 192.168.10.30 |
|  | WinClient 静态 IP 192.168.10.20 |
### 阶段 2 — Active Directory
| 截图 | 描述 |
|---|---|
|  | 服务器重命名为 DC01 |
|  | 已安装 AD DS 角色 |
|  | 提升为 Domain Controller |
|  | ATLAS\Administrator 登录界面 |
|  | AD 用户和计算机 |
|  | 创建了 5 个 OU |
|  | OU 中的域用户 |
|  | IT-Admins 组成员 |
|  | Screen-Lock-Policy GPO |
|  | WinClient 上的 jsmith 域登录 |
### 阶段 3 — Splunk SIEM
| 截图 | 描述 |
|---|---|
|  | Splunk Enterprise Linux .deb 下载 |
|  | 已下载 1.2GB .deb |
|  | dpkg 安装完成 |
|  | Splunk 在端口 8000 上启动 |
|  | Splunk Web UI 登录 |
|  | 作为管理员的 Splunk 仪表板 |
|  | UFW 端口 8000/9997 已打开 |
|  | 端口 9997 接收已启用 |
|  | 创建了 wineventlog 索引 |
### 阶段 4 — 日志收集
| 截图 | 描述 |
|---|---|
|  | 已下载 Sysmon + 配置 + forwarder |
|  | 在 WinClient 上安装了 Sysmon |
|  | 在 DC01 上安装了 Sysmon |
|  | 事件查看器中的 Sysmon 事件 |
|  | 在 WinClient 上安装了 Forwarder |
|  | 在 DC01 上安装了 Forwarder |
|  | 已配置 inputs.conf |
|  | Forwarder 在 WinClient 上运行 |
|  | Forwarder 在 DC01 上运行 |
|  | Splunk 中的 4,827 个 WinClient 事件 |
|  | Splunk 中的 8,137 个 DC01 事件 |
|  | Splunk 中的 2,227 个 Sysmon 事件 |
### 阶段 5 — 攻击模拟
| 截图 | 描述 |
|---|---|
|  | 在 DC01 上启用了审计策略 |
|  | 实验室网络的 Nmap 完整扫描 |
|  | Nmap AD 特定端口 |
|  | 检测到侦察 — 2,352 个防火墙事件 |
|  | CrackMapExec 暴力破解 |
|  | 来自 Kali 的 706 个 EventCode 4625 |
|  | AD 枚举 — 所有用户/组 |
|  | 检测到 AD 枚举 |
|  | 权限提升被拒绝 (jsmith) |
|  | 在 DC 上模拟权限提升 |
|  | EventCode 4728 — Domain Admins 更改 |
|  | 创建了 WindowsUpdate 计划任务 |
|  | EventCode 4698 — 检测到计划任务 |
### 阶段 6 — 告警与仪表板
| 截图 | 描述 |
|---|---|
|  | 配置了暴力破解告警 |
|  | 权限提升告警 — 严重 |
|  | 配置了持久化告警 |
|  | 配置了侦察告警 |
|  | 配置了新账户告警 |
|  | 告警管理器中的所有 5 个告警 |
|  | SOC 仪表板 — 全部 6 个面板 |
|  | 仪表板作为主页 — 自动刷新 |
|  | 带有严重性的安全事件日志 |
## 🛠️ 工具与技术
| 类别 | 工具 | 版本 |
|---|---|---|
| 虚拟化 | VirtualBox | 7.2.8 |
| Domain Controller | Windows Server 2022 | Standard Evaluation |
| 工作站 | Windows 11 Enterprise | Evaluation |
| SIEM | Splunk Enterprise | 10.4.0 |
| 日志收集器 | Splunk Universal Forwarder | 10.4.0 |
| 进程监控器 | Sysmon | v15.20 |
| Sysmon 配置 | olafhartong sysmon-modular | v4.91 |
| 攻击者操作系统 | Kali Linux | Rolling 2026 |
| 侦察 | Nmap | 7.98 |
| 暴力破解 / 枚举 | CrackMapExec | 最新 |
| 服务器操作系统 | Ubuntu Server | 24.04 LTS |
| Splunk Add-ons | Splunk Add-on for Microsoft Windows | 最新 |
| Splunk Add-ons | Splunk Add-on for Sysmon | 最新 |
| Splunk Add-ons | Splunk Security Essentials | 最新 |
## 🗺️ MITRE ATT&CK 映射
| 技术 ID | 技术名称 | 使用工具 | 检测方式 |
|---|---|---|---|
| T1046 | Network Service Discovery | Nmap | EventCode 5156/5157 |
| T1110 | Brute Force | CrackMapExec | EventCode 4625 |
| T1087 | Account Discovery | CrackMapExec | EventCode 4661/4662 |
| T1078 | Valid Accounts / Privilege Escalation | net group | EventCode 4728 |
| T1053 | Scheduled Task / Job | schtasks | EventCode 4698 |
| T1021 | Remote Services | SMB | Sysmon EventCode 3 |
## 📚 关键学习
- 从头开始部署和管理 Active Directory
- 了解 Windows 身份验证事件及其安全影响
- 编写有效的 SPL 查询以进行威胁检测和调查
- 调优 Sysmon 以实现最大的可见性并将噪声降至最低
- 审计策略对于日志完整性的至关重要性
- 入站/出站 Sysmon 网络事件之间的区别
- 使用 Universal Forwarder 的日志转发架构
- 构建可操作的 SOC 仪表板供运营使用
- 告警调优以减少误报(限制、抑制)
- 从侦察到持久化的真实世界攻击者方法论
## 🔗 参考
- [Splunk 文档](https://docs.splunk.com)
- [Sysinternals 的 Sysmon](https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon)
- [olafhartong Sysmon 模块化配置](https://github.com/olafhartong/sysmon-modular)
- [MITRE ATT&CK 框架](https://attack.mitre.org)
- [Windows 安全事件 ID 百科全书](https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/)
- [Splunk Security Essentials](https://splunkbase.splunk.com/app/3435)
- [CrackMapExec 文档](https://github.com/byt3bl33d3r/CrackMapExec)
## 👤 作者
**Baala Zakaria** — Web 开发者与网络安全爱好者
- 🔐 兴趣:Blue Team、SOC 分析、Bug Bounty、渗透测试
- 📍 位于摩洛哥阿加迪尔
标签:Active Directory, CTI, Plaso, 家庭实验室, 攻击模拟, 红队行动, 网络安全, 隐私保护, 驱动签名利用