grishi05/soc-blueteam-lab
GitHub: grishi05/soc-blueteam-lab
一个基于 Splunk 和 Active Directory 的蓝队家庭实验室,用于练习日志收集、检测工程和事件响应的完整 SOC 工作流程。
Stars: 0 | Forks: 0
# SOC Blue Team 家庭实验室




一个独立运行的实验室,用于模拟小型企业网络,专为 **Blue Team / SOC** 实践设计:日志收集、检测工程、威胁狩猎和事件响应。
该环境模拟了真实的企业架构 —— 包含 Active Directory 域、边界防火墙、终端设备以及集中式的日志/SIEM 服务器 —— 以便安全地生成攻击行为并进行端到端的调查。
## 目录
1. [目标](#objectives)
2. [网络拓扑](#network-topology)
3. [实验室组件](#lab-components)
4. [日志与数据流](#log--data-flow)
5. [仓库结构](#repository-structure)
6. [设置说明](#setup-instructions)
7. [检测用例](#detection-use-cases)
8. [事件响应](#incident-response)
9. [展示技能](#skills-demonstrated)
10. [路线图](#roadmap)
11. [参考资料](#references)
## 目标
- 在 VirtualBox/VMware 上构建一个**可复用的**类企业环境。
- 将 **Windows Event Logs**(Security/System/Sysmon)和 **syslog**(pfSense, Linux)集中收集到 **Splunk** 中。
- 针对常见的攻击者行为编写并验证**检测内容(SPL)**,重点关注 Active Directory 中的**暴力破解**和**未授权的特权访问**。
- 实践完整的**事件响应工作流** —— 检测、分类、调查、遏制、根除、恢复和记录文档 —— 并与行业标准框架(NIST 800‑61,MITRE ATT&CK)对齐。
## 网络拓扑
该实验室采用了分段的网络架构:pfSense 后方是管理/企业 LAN,以及一个代表不可信网络的隔离“攻击者”区。pfSense 负责在各网段间进行路由和过滤,并将其日志转发至 SIEM。
```
┌──────────────────────────────┐
│ Host / Hypervisor │
│ (VirtualBox / VMware) │
└──────────────┬────────────────┘
│ NAT / Bridged (Internet)
│
┌──────────▼──────────┐
│ pfSense FW │
│ WAN: DHCP (NAT) │
│ LAN: 192.168.10.1 │
│ OPT1:192.168.20.1 │
└───┬──────────────┬───┘
LAN (Corp) │ │ OPT1 (Attacker / DMZ)
192.168.10.0/24 │ │ 192.168.20.0/24
┌───────────────┬────────┴───┐ │
│ │ │ │
┌──────▼──────┐ ┌──────▼──────┐ ┌───▼───────┐ │ ┌───────────────┐
│ DC01 │ │ WKST01 │ │ SPLUNK │ └──▶│ KALI (attacker)│
│ Win Server │ │ Windows 10/ │ │ Ubuntu │ │ 192.168.20.5 │
│ 2022 AD/DNS │ │ 11 Endpoint │ │ Log Server│ └───────────────┘
│192.168.10.10│ │192.168.10.20│ │192.168.10.30
└─────────────┘ └─────────────┘ └───────────┘
```
完整的详细信息、VLAN/网段划分依据以及防火墙规则矩阵位于
[`docs/network-topology.md`](docs/network-topology.md) 中。
## 实验室组件
| 主机 | 角色 | 操作系统 | IP 地址 | 关键服务 |
|------------|----------------------------------------|----------------------------|------------------|-------------------------------------------|
| `pfSense` | 边界防火墙 / 路由器 | pfSense CE 2.7 | `192.168.10.1` (LAN) | Firewall, DHCP, DNS resolver, syslog export |
| `DC01` | 域控制器 | Windows Server 2022 | `192.168.10.10` | AD DS, DNS, Group Policy, Sysmon, UF |
| `WKST01` | 加入域的工作站 | Windows 10/11 Pro | `192.168.10.20` | Sysmon, Splunk Universal Forwarder |
| `SPLUNK` | 集中式日志服务器 / SIEM | Ubuntu Server 22.04 LTS | `192.168.10.30` | Splunk Enterprise (indexer + search head), rsyslog |
| `KALI` | 模拟的攻击者 (Red Team) | Kali Linux | `192.168.20.5` | Nmap, CrackMapExec, Hydra, Impacket |
- **域名:** `corp.blueteam.local` (NetBIOS `CORP`)
- **Splunk 接收端口 (S2S):** `9997/tcp`
- **Syslog 摄取:** `514/udp` 和 `514/tcp`
## 日志与数据流
```
Windows hosts (DC01, WKST01)
│ Security / System / Application / Sysmon (Operational)
│ via Splunk Universal Forwarder ──────────────┐
│ ▼
pfSense ── syslog (UDP/TCP 514) ─────────▶ SPLUNK (Ubuntu)
│ rsyslog → monitored files
Ubuntu/Linux ── local logs / rsyslog ───────▶ Splunk Enterprise
(index, parse, search, alert)
│
▼
Dashboards • Alerts • SPL Hunts
```
- Windows 主机运行 **Splunk Universal Forwarder (UF)**,将 Event Logs 和 Sysmon 发送到端口 `9997` 上的 indexer。
- **pfSense** 通过 **remote syslog** 将 Firewall/DHCP/VPN 日志导出到 Ubuntu 服务器,由该服务器上的 `rsyslog` 将其写入 Splunk 监控的文件中。
- 索引(Indexes):`wineventlog`、`sysmon`、`pfsense`、`linux_logs`。
请参阅 [`splunk/`](splunk/) 获取准确的 `inputs.conf`、`outputs.conf` 和 `props.conf`。
## 仓库结构
```
SOC/
├── README.md # You are here
├── LICENSE
├── .gitignore
├── docs/
│ ├── network-topology.md # Detailed topology, addressing, FW rules
│ └── setup-guide.md # Step-by-step VM build instructions
├── provisioning/
│ ├── Vagrantfile # Spin up the Ubuntu log server + endpoints
│ └── ansible/
│ ├── inventory.ini # Lab inventory
│ ├── ubuntu-logserver.yml # Install/configure Splunk + rsyslog
│ ├── ad-config.yml # Baseline AD / audit-policy hardening
│ └── group_vars/
│ └── all.yml # Shared variables (non-secret)
├── splunk/
│ ├── inputs.conf # Windows Event Log + syslog ingestion
│ ├── outputs.conf # Forwarder → indexer routing
│ ├── props.conf # Sourcetype parsing
│ ├── indexes.conf # Index definitions
│ └── README.md # How the Splunk config fits together
├── detections/
│ └── ad-detection-queries.md # SPL: brute force + privileged access
└── incident-response/
└── IR-2026-001-brute-force.md # Formal IR report (simulated attack)
```
## 设置说明
完整说明位于 [`docs/setup-guide.md`](docs/setup-guide.md) 中。简要步骤如下:
1. **创建虚拟网络。** 在 VirtualBox/VMware 中,创建两个内部/仅主机网络:`LAN`(企业)和 `OPT1`(攻击者)。将 pfSense 连接到 WAN (NAT) 和这两个网络。
2. **安装并配置 pfSense** —— 分配接口,设置 LAN `192.168.10.1/24`,启用 DHCP,并配置远程 syslog 发送至 `192.168.10.30`。
3. **构建域控制器 (DC01)** —— 安装 Windows Server 2022,将其提升为 `corp.blueteam.local` 的域控制器,并应用审计策略 GPO(参见 `provisioning/ansible/ad-config.yml`)。
4. **构建工作站 (WKST01)** —— 将其加入域,部署 Sysmon。
5. **构建 Ubuntu 日志服务器 (SPLUNK)** —— 使用 Vagrant/Ansible 进行配置;安装 Splunk Enterprise + rsyslog。
6. **部署 Universal Forwarder** 在 Windows 主机上,并将其指向 `192.168.10.30:9997`。
7. **验证数据摄取** 在 Splunk 中(`index=wineventlog`、`index=pfsense` 等)。
8. **生成遥测数据** 从 KALI 发起,并使用 [`detections/`](detections/) 中的 SPL 进行狩猎。
## 检测用例
位于 [`detections/ad-detection-queries.md`](detections/ad-detection-queries.md) 中的检测库涵盖(包括但不限于):
| ID | 检测项目 | ATT&CK 技术 | 关键事件 ID |
|--------|---------------------------------------------|-------------------------------------|----------------------|
| D‑001 | 密码暴力破解(单账户) | T1110.001 Password Guessing | 4625, 4740 |
| D‑002 | 密码喷射(多账户) | T1110.003 Password Spraying | 4625 |
| D‑003 | 暴力破解后成功登录 | T1110 / T1078 Valid Accounts | 4625 → 4624 |
| D‑004 | Kerberos 预身份验证失败 | T1110 Brute Force (Kerberos) | 4768, 4771 |
| D‑005 | 特权组中添加了新成员 | T1098 / T1078.002 Priv. Escalation | 4728, 4732, 4756 |
| D‑006 | 登录时分配了特殊权限 | T1078.002 Domain Accounts | 4672 |
| D‑007 | 非工作时间创建新用户账户 | T1136.002 Create Account | 4720 |
## 事件响应
[`incident-response/IR-2026-001-brute-force.md`](incident-response/IR-2026-001-brute-force.md)
是一份正式的、符合 NIST 800‑61 标准的报告,完整剖析了**导致未授权获取 Domain Admin 访问权限的模拟 RDP/SMB 暴力破解攻击** —— 包括基于 Splunk 的调查、时间线、IOC、遏制/根除措施以及经验教训。
## 展示技能
- **SIEM 工程:** Splunk 部署、forwarder 管理、index/sourcetype 设计。
- **日志流水线:** Windows Event Log、Sysmon 和 syslog 的集中化。
- **检测工程:** 编写与 MITRE ATT&CK 映射的 SPL。
- **威胁狩猎与事件响应:** 结构化的调查和符合 NIST 标准的报告。
- **基础设施即代码:** 使用 Vagrant + Ansible 进行可重复的自动化配置。
- **网络与安全加固:** 网络分段、防火墙策略、AD 审计策略。
## 路线图
- [ ] 添加 Sysmon 配置(SwiftOnSecurity 基线)和进程树检测。
- [ ] 添加 Wazuh/Elastic 作为替代的 SIEM 进行对比。
- [ ] 为每个检测添加 Atomic Red Team 测试映射。
- [ ] 构建 Splunk 仪表盘(XML)和计划告警(`savedsearches.conf`)。
- [ ] 添加 Windows Event Forwarding (WEF) 收集器作为 UF 的替代方案。
## 参考资料
- NIST SP 800‑61r2 — *Computer Security Incident Handling Guide*
- MITRE ATT&CK® —
- Splunk 文档 — *Getting Data In* & *Add-on for Microsoft Windows*
- Microsoft — *Advanced Security Audit Policy Settings* & *Events to Monitor*
*作为一个个人的 Blue Team / 检测工程作品集项目进行维护。*
标签:OPA, 安全运营中心, 系统提示词, 网络映射, 靶场