Jrodri5891/Detection_Engineering_Lab
GitHub: Jrodri5891/Detection_Engineering_Lab
该项目是一个端到端的紫队检测工程实验室,通过模拟攻击与 Splunk SIEM 检测闭环来演示完整的 SOC 分析师工作流。
Stars: 0 | Forks: 0
# 🛡️ 紫队检测工程实验室
本实验室端到端展示了完整的 SOC 分析师工作流:搭建企业环境、发起攻击、检测攻击并发出警报——利用实战化的红队技术向进攻安全领域延伸。
## 🔭 演示内容
- **检测工程** — 编写了 5 个映射到 MITRE ATT&CK 的原创 Splunk 检测规则
- **SIEM 运营** — 通过 Universal Forwarder 将 Sysmon + Windows 遥测数据管道接入 Splunk
- **对手模拟** — Atomic Red Team + 实时 Kali 攻击 (nmap, enum4linux, smbclient)
- **事件归因** — 从失败登录数据中捕获了实时攻击者的源 IP 和账户
- **SOAR 式警报** — 自动化 Splunk → Discord webhook 通知,发送至 SOC 频道
- **基础设施故障排除** — 诊断了真实的防火墙、索引和部署问题
## 🏗️ 架构
```
graph LR
KALI["🐉 Kali Linux
NAPLS589
192.168.56.103"] WIN11["💻 WIN11 Endpoint
192.168.56.20
Sysmon + Universal Forwarder"] DC01["🗄️ DC01
Windows Server 2022
lab.local · 192.168.56.10"] SPLUNK["📊 Splunk Enterprise
SIEM / Indexer
192.168.56.1"] DISCORD["🔔 Discord
#splunk-alers"] KALI -->|"nmap · enum4linux · smbclient"| WIN11 WIN11 -->|"domain member"| DC01 WIN11 -->|"logs → :9997"| SPLUNK DC01 -.->|"auth logs"| SPLUNK SPLUNK -->|"webhook"| DISCORD ``` | 主机 | 角色 | 操作系统 | 实验室 IP | |------|------|-----|--------| | **DC01** | 域控制器 / DNS | Windows Server 2022 | `192.168.56.10` | | **WIN11** | 终端(受害者) | Windows 11 Pro | `192.168.56.20` | | **Splunk** | SIEM / Indexer | Host | `192.168.56.1` | | **NAPLS589** | 攻击者 | Kali Linux | `192.168.56.103` | **域:** `lab.local` (NetBIOS `LAB`) · **OU:** HR, IT, Finance · **网络:** 隔离的 host-only `192.168.56.0/24`
## 🛰️ 遥测管道
**Sysmon** (SwiftOnSecurity config) + **Windows 事件日志** (Security / System / PowerShell) → **Splunk Universal Forwarder** → `:9997` 上的 indexer → **`sysmon`** 和 **`windows`** 索引,由 Splunk Add-ons for Windows 和 Sysmon 解析。
## 🎯 攻击 → 检测矩阵
| # | 技术 | ATT&CK | 攻击者操作 | Splunk 检测 |
|---|-----------|--------|-----------------|------------------|
| 1 | PowerShell 执行 | **T1059.001** | Atomic Red Team (SOAPHound, SharpHound, 编码命令) | `PurpleTeam_AtomicRedTeam_Event-Detection` |
| 2 | 网络服务发现 | **T1046** | 来自 Kali 的 `nmap` 扫描 | `PurpleTeam_Network_Recon_Detection` |
| 3 | 网络共享发现 | **T1135** | `enum4linux` / `smbclient` | `PurpleTeam_Share_Enumeration_Detection` |
| 4 | 暴力破解 / 有效账户 | **T1110 / T1078** | 来自 Kali 的失败登录 | `PurpleTeam_Failed_Logon_Detection` |
| 5 | 远程服务 | **T1021** | 网络(类型 3)登录 | `PurpleTeam_Network_Logon_Detection` |
## 🔴 红队亮点
来自 Kali 的**侦察与枚举** — `nmap` 服务/操作系统扫描和 `enum4linux` 域枚举(恢复了 `LAB` 域名和主机详细信息):

**对手模拟** — 在终端上执行了 Atomic Red Team T1059.001 PowerShell 测试:
## 🔵 蓝队亮点
**PowerShell 执行检测**,将 Sysmon 进程事件与 Atomic Red Team 命令行进行关联 — **触发了 122 次**,归因于 `WIN11` 上的 `LAB\Administrator`:
```
index=* EventCode=1 ComputerName=WIN11.lab.local CommandLine="*T1059*"
| table _time Image CommandLine User
```
**实时攻击者捕获** — 失败登录检测恢复了 Kali 主机的源 IP (`192.168.56.103`) 及使用的账户:
```
index=* EventCode=4625
| table _time Source_Network_Address Account_Name Failure_Reason
| sort -_time
```
## 🔔 自动化警报:Splunk → Discord
每个检测规则都按 cron 计划运行,并将 **webhook 警报**推送到专用的 Discord SOC 频道 (`#splunk-alers`),呈现结构化的 **"Splunk Alert Triggered!"** 通知,包含警报名称、所有者以及指向结果的深度链接——完成了从遥测到实时分析师通知的闭环。
## 🧰 技术栈
`Windows Server 2022` · `Windows 11` · `Active Directory` · `Kali Linux` · `Sysmon` · `Splunk Enterprise` · `Splunk Universal Forwarder` · `Atomic Red Team` · `nmap` · `enum4linux` · `Discord Webhooks` · `MITRE ATT&CK` · `VirtualBox`
## 🧗 解决的工程挑战
- **Forwarder 被主机防火墙阻止** — 定位到原因是位于“公用”配置文件上的 host-only 网络;通过为 `:9997` 添加适用于所有配置文件的入站规则修复。
- **Sysmon 数据被静默丢弃** — 根本原因归结于大小写敏感的索引路由 (`index = Sysmon` vs `sysmon`);使用 `btool` 验证了修复结果。
- **Windows 11 实验室部署** — 解决了 VirtualBox 无人值守安装失败、TPM 2.0/EFI 要求以及离线本地账户创建的问题。
## 📂 仓库结构
```
purple-team-detection-lab/
├── README.md
├── reports/
│ └── Purple_Team_Detection_Lab_Report.md # full engagement report
├── detections/
│ └── splunk/ # saved-search SPL
├── screenshots/ # all evidence images
└── docs/ # setup notes
```
## 📄 完整报告
请参阅 **[`reports/Purple_Team_Detection_Lab_Report.md`](reports/Purple_Team_Detection_Lab_Report.md)** 获取完整的测试报告 — 包括架构、攻击执行、检测逻辑、ATT&CK 覆盖范围、结果以及挑战。
## 👤 作者
**Jose Angel Rodriguez** — 网络安全分析师 (SOC / DFIR / 检测工程)
*本实验室作为检测生命周期的实战演示,是从头到尾完整构建的。*
NAPLS589
192.168.56.103"] WIN11["💻 WIN11 Endpoint
192.168.56.20
Sysmon + Universal Forwarder"] DC01["🗄️ DC01
Windows Server 2022
lab.local · 192.168.56.10"] SPLUNK["📊 Splunk Enterprise
SIEM / Indexer
192.168.56.1"] DISCORD["🔔 Discord
#splunk-alers"] KALI -->|"nmap · enum4linux · smbclient"| WIN11 WIN11 -->|"domain member"| DC01 WIN11 -->|"logs → :9997"| SPLUNK DC01 -.->|"auth logs"| SPLUNK SPLUNK -->|"webhook"| DISCORD ``` | 主机 | 角色 | 操作系统 | 实验室 IP | |------|------|-----|--------| | **DC01** | 域控制器 / DNS | Windows Server 2022 | `192.168.56.10` | | **WIN11** | 终端(受害者) | Windows 11 Pro | `192.168.56.20` | | **Splunk** | SIEM / Indexer | Host | `192.168.56.1` | | **NAPLS589** | 攻击者 | Kali Linux | `192.168.56.103` | **域:** `lab.local` (NetBIOS `LAB`) · **OU:** HR, IT, Finance · **网络:** 隔离的 host-only `192.168.56.0/24`
## 🛰️ 遥测管道
**Sysmon** (SwiftOnSecurity config) + **Windows 事件日志** (Security / System / PowerShell) → **Splunk Universal Forwarder** → `:9997` 上的 indexer → **`sysmon`** 和 **`windows`** 索引,由 Splunk Add-ons for Windows 和 Sysmon 解析。
## 🎯 攻击 → 检测矩阵
| # | 技术 | ATT&CK | 攻击者操作 | Splunk 检测 |
|---|-----------|--------|-----------------|------------------|
| 1 | PowerShell 执行 | **T1059.001** | Atomic Red Team (SOAPHound, SharpHound, 编码命令) | `PurpleTeam_AtomicRedTeam_Event-Detection` |
| 2 | 网络服务发现 | **T1046** | 来自 Kali 的 `nmap` 扫描 | `PurpleTeam_Network_Recon_Detection` |
| 3 | 网络共享发现 | **T1135** | `enum4linux` / `smbclient` | `PurpleTeam_Share_Enumeration_Detection` |
| 4 | 暴力破解 / 有效账户 | **T1110 / T1078** | 来自 Kali 的失败登录 | `PurpleTeam_Failed_Logon_Detection` |
| 5 | 远程服务 | **T1021** | 网络(类型 3)登录 | `PurpleTeam_Network_Logon_Detection` |
## 🔴 红队亮点
来自 Kali 的**侦察与枚举** — `nmap` 服务/操作系统扫描和 `enum4linux` 域枚举(恢复了 `LAB` 域名和主机详细信息):

**对手模拟** — 在终端上执行了 Atomic Red Team T1059.001 PowerShell 测试:
## 🔵 蓝队亮点
**PowerShell 执行检测**,将 Sysmon 进程事件与 Atomic Red Team 命令行进行关联 — **触发了 122 次**,归因于 `WIN11` 上的 `LAB\Administrator`:
```
index=* EventCode=1 ComputerName=WIN11.lab.local CommandLine="*T1059*"
| table _time Image CommandLine User
```
**实时攻击者捕获** — 失败登录检测恢复了 Kali 主机的源 IP (`192.168.56.103`) 及使用的账户:
```
index=* EventCode=4625
| table _time Source_Network_Address Account_Name Failure_Reason
| sort -_time
```
## 🔔 自动化警报:Splunk → Discord
每个检测规则都按 cron 计划运行,并将 **webhook 警报**推送到专用的 Discord SOC 频道 (`#splunk-alers`),呈现结构化的 **"Splunk Alert Triggered!"** 通知,包含警报名称、所有者以及指向结果的深度链接——完成了从遥测到实时分析师通知的闭环。
## 🧰 技术栈
`Windows Server 2022` · `Windows 11` · `Active Directory` · `Kali Linux` · `Sysmon` · `Splunk Enterprise` · `Splunk Universal Forwarder` · `Atomic Red Team` · `nmap` · `enum4linux` · `Discord Webhooks` · `MITRE ATT&CK` · `VirtualBox`
## 🧗 解决的工程挑战
- **Forwarder 被主机防火墙阻止** — 定位到原因是位于“公用”配置文件上的 host-only 网络;通过为 `:9997` 添加适用于所有配置文件的入站规则修复。
- **Sysmon 数据被静默丢弃** — 根本原因归结于大小写敏感的索引路由 (`index = Sysmon` vs `sysmon`);使用 `btool` 验证了修复结果。
- **Windows 11 实验室部署** — 解决了 VirtualBox 无人值守安装失败、TPM 2.0/EFI 要求以及离线本地账户创建的问题。
## 📂 仓库结构
```
purple-team-detection-lab/
├── README.md
├── reports/
│ └── Purple_Team_Detection_Lab_Report.md # full engagement report
├── detections/
│ └── splunk/ # saved-search SPL
├── screenshots/ # all evidence images
└── docs/ # setup notes
```
## 📄 完整报告
请参阅 **[`reports/Purple_Team_Detection_Lab_Report.md`](reports/Purple_Team_Detection_Lab_Report.md)** 获取完整的测试报告 — 包括架构、攻击执行、检测逻辑、ATT&CK 覆盖范围、结果以及挑战。
## 👤 作者
**Jose Angel Rodriguez** — 网络安全分析师 (SOC / DFIR / 检测工程)
*本实验室作为检测生命周期的实战演示,是从头到尾完整构建的。*标签:Sysmon, Terraform 安全, Web报告查看器, XXE攻击, 安全实验室, 插件系统, 活动目录, 紫队