sblaker/soc-homelab
GitHub: sblaker/soc-homelab
一个基于 Wazuh SIEM 的蓝队 SOC 家庭实验室项目,用于展示安全检测工程、攻击模拟及 MITRE ATT&CK 映射能力。
Stars: 0 | Forks: 0
# SOC 家庭实验室





一个真实的 SOC 家庭实验室,旨在展示 L1 安全分析师的技能:SIEM 操作、检测工程、告警分类以及映射到 MITRE ATT&CK 的事件文档。
本项目作为面向蓝队 / 网络安全分析师岗位的作品集而构建。
## 架构
```
Host — Windows 11 (i5-1135G7 · 16 GB RAM)
│
├── Docker Desktop
│ └── Wazuh Stack (docker-compose)
│ ├── wazuh-manager ← receives agent events, applies rules
│ ├── wazuh-indexer ← OpenSearch, stores alerts
│ └── wazuh-dashboard ← https://localhost (browser on host)
│
├── VirtualBox
│ ├── target-linux Ubuntu Server 22.04 · 1.5 GB RAM · Wazuh Agent
│ └── target-windows Windows 10 Eval · 3 GB RAM · Wazuh Agent + Sysmon
│
└── Browser (host) → Wazuh Dashboard → Alert triage → Write-up
Event flow:
VM activity → Wazuh Agent → Manager (rules engine) → Indexer → Dashboard → Write-up
```
完整图表和网络详情:[docs/architecture.md](docs/architecture.md)
## 技术栈
| 组件 | 技术 | 备注 |
|---|---|---|
| SIEM | **Wazuh 4.9** | Docker Compose,单节点 |
| Linux 靶机 | Ubuntu Server 22.04 | 仅限 CLI,Wazuh Agent |
| Windows 靶机 | Windows 10 Evaluation | Wazuh Agent + Sysmon (SwiftOnSecurity) |
| 攻击模拟 | **Atomic Red Team** | 映射 MITRE 的测试用例 |
| 检测规则 | 自定义 Wazuh XML | ID 范围 100001–100099 |
| 端点遥测 | **Sysmon** | Event ID 1, 3, 7, 11, 13, 22 |
| 分析报告 | Markdown | 针对单次检测,映射 MITRE |
## 检测覆盖率
| ID | 检测项 | MITRE 技术 | 战术 | 严重性 | 状态 |
|---|---|---|---|---|---|
| [DET-001](detections/DET-001_ssh-brute-force.md) | SSH 暴力破解 | T1110.001 | 凭据访问 | 高 | ✅ |
| [DET-002](detections/DET-002_powershell-suspicious.md) | 可疑的 PowerShell | T1059.001 | 执行 | 高 | ✅ |
| DET-003 | 计划任务持久化 | T1053.005 | 持久化 | 高 | 🔄 |
| DET-004 | 注册表 Run Key 持久化 | T1547.001 | 持久化 | 高 | 🔄 |
| DET-005 | SMB / PsExec 横向移动 | T1021.002 | 横向移动 | 高 | 🔄 |
| DET-006 | LSASS 内存访问 | T1003.001 | 凭据访问 | 严重 | 🔄 |
| DET-007 | Office → 子进程生成 | T1566.001 | 初始访问 | 严重 | 🔄 |
### MITRE ATT&CK 覆盖图
| 战术 | 覆盖的技术 |
|---|---|
| 凭据访问 | T1110, T1110.001, T1110.003, T1003, T1003.001 |
| 执行 | T1059, T1059.001, T1059.003, T1053, T1053.005 |
| 持久化 | T1547, T1547.001, T1053, T1053.003 |
| 横向移动 | T1021, T1021.001, T1021.002, T1021.004 |
| 防御规避 | T1027, T1218, T1562, T1562.001, T1562.002 |
| 初始访问 | T1566, T1566.001 |
| 命令与控制 | T1071, T1071.004, T1568 |
## 自定义检测规则
规则位于 [`wazuh/rules/`](wazuh/rules/) 中,并通过 Docker 卷挂载加载到 Wazuh Manager。
| 文件 | 覆盖范围 | 规则 ID |
|---|---|---|
| [custom_ssh.xml](wazuh/rules/custom_ssh.xml) | SSH 暴力破解、用户枚举、sudo 滥用 | 100001–100006 |
| [custom_windows.xml](wazuh/rules/custom_windows.xml) | 基于 Sysmon:进程注入、注册表、文件释放、LSASS | 100020–100028 |
| [custom_mitre_mapped.xml](wazuh/rules/custom_mitre_mapped.xml) | 完整 MITRE 标签覆盖:T1110, T1059, T1053, T1547, T1021, T1562 | 100060–100096 |
## 攻击模拟
位于 [`atomic-red-team/playbooks/`](atomic-red-team/playbooks/) 的剧本 —— 每个都包含确切的命令、预期的 Wazuh 告警和清理程序。
| 剧本 | 技术 | 平台 |
|---|---|---|
| [T1110-001 SSH 暴力破解](atomic-red-team/playbooks/T1110-001_ssh-brute-force.md) | T1110.001 | Linux |
| [T1059-001 PowerShell](atomic-red-team/playbooks/T1059-001_powershell-suspicious.md) | T1059.001 | Windows |
| [T1053-005 计划任务](atomic-red-team/playbooks/T1053-005_scheduled-task.md) | T1053.005 | Windows |
| [T1547-001 注册表 Run Key](atomic-red-team/playbooks/T1547-001_registry-run-key.md) | T1547.001 | Windows |
| [T1021-002 SMB/PsExec](atomic-red-team/playbooks/T1021-002_smb-psexec.md) | T1021.002 | Windows |
## 截图
| 仪表盘概览 | Agent:target-linux |
|---|---|
|  |  |
| Agent:target-windows | MITRE ATT&CK 覆盖率 |
|---|---|
|  |  |
## 快速开始(复现指南)
### 前置条件
- Windows 10/11 宿主机,最低 16 GB 内存
- 配备 WSL 2 的 [Docker Desktop](https://www.docker.com/products/docker-desktop/)
- [VirtualBox](https://www.virtualbox.org/)
- Ubuntu Server 22.04 ISO + Windows 10 Evaluation ISO
### 步骤
**1 — 启动 Wazuh (Docker)**
```
cd wazuh
docker compose -f generate-indexer-certs.yml run --rm generator
docker compose up -d
# Dashboard → https://localhost (admin / SecretPassword)
```
指南:[docs/docker-setup.md](docs/docker-setup.md)
**2 — 创建虚拟机**
- `target-linux`:Ubuntu Server 22.04,1.5 GB 内存,NAT + Host-only 网络适配器
- `target-windows`:Windows 10 Eval,3 GB 内存,NAT + Host-only 网络适配器
指南:[docs/vm-setup.md](docs/vm-setup.md)
**3 — 注册 Wazuh Agent**
两台虚拟机都指向 `192.168.56.1`(Host-only 网络上的宿主机 IP,即 Docker 运行的地方)。
```
# target-linux
sudo WAZUH_MANAGER='192.168.56.1' apt install wazuh-agent -y
sudo systemctl enable --now wazuh-agent
```
指南:[docs/agents-setup.md](docs/agents-setup.md)
**4 — 安装 Sysmon (Windows 靶机)**
```
# target-windows (admin PowerShell)
.\Sysmon64.exe -accepteula -i sysmonconfig.xml
```
指南:[docs/sysmon-setup.md](docs/sysmon-setup.md)
**5 — 加载自定义规则**
`wazuh/rules/` 中的规则通过 `wazuh/docker-compose.yml` 中定义的卷自动挂载到 Manager 容器中。每次更改规则后请重启 manager:
```
docker compose restart wazuh.manager
```
**6 — 运行模拟并验证检测**
```
# target-linux — 触发 SSH 暴力破解检测
for i in {1..6}; do
sshpass -p "wrong${i}" ssh -o StrictHostKeyChecking=no labuser@127.0.0.1 2>/dev/null
done
```
然后检查 Wazuh Dashboard:**Security Events** → 过滤 `rule.id: 100001`
## 仓库结构
```
soc-homelab/
├── docs/ # Setup guides (Italian)
│ ├── architecture.md
│ ├── docker-setup.md
│ ├── vm-setup.md
│ ├── agents-setup.md
│ └── sysmon-setup.md
├── wazuh/
│ ├── docker-compose.yml # Wazuh 4.9 single-node + custom rules mount
│ ├── rules/
│ │ ├── custom_ssh.xml # SSH detection rules
│ │ ├── custom_windows.xml # Sysmon-based Windows rules
│ │ └── custom_mitre_mapped.xml
│ └── decoders/ # Custom decoders (if needed)
├── sysmon/
│ └── sysmon-config.xml # SwiftOnSecurity config (add manually)
├── atomic-red-team/
│ └── playbooks/ # Attack simulation guides
├── detections/
│ ├── README.md # Coverage index + template
│ ├── DET-001_ssh-brute-force.md
│ └── DET-002_powershell-suspicious.md
└── screenshots/
```
## 资源预算
| 组件 | 类型 | 内存 |
|---|---|---|
| Wazuh 技术栈 | Docker | ~3.5–4 GB |
| target-linux | VirtualBox | 1.5 GB |
| target-windows | VirtualBox | 3 GB |
| 宿主机预留 | — | ~7–8 GB |
| **总计** | | **~8.5 GB** |
## 关键发现
在攻击模拟期间捕获的真实告警 —— 位于 [`detections/`](detections/) 的 JSON 文件。
### DET-001 — SSH 暴力破解 (T1110.001)
| 字段 | 值 |
|---|---|
| 规则 ID | `5712` (内置) + `100001` (自定义) |
| 级别 | 10 — 高 |
| 频率 | 约 10 秒内 8 次身份验证失败 |
| 源 IP | `127.0.0.1` (实验室中的环回地址;在生产环境中应为攻击者 IP) |
| 目标用户 | `fakeuser` (不存在 — 自动化扫描器的典型特征) |
| 结果 | 无成功登录(未出现 `Accepted`) |
| MITRE | T1110 · T1110.001 — 凭据访问 / 暴力破解 |
| 时间戳 | 2026-06-24T11:58:40Z |
### DET-002 — 可疑的 PowerShell (T1059.001)
| 字段 | 值 |
|---|---|
| 规则 ID | `92057` (内置) + `100021` (自定义) |
| 级别 | 12 — 高 |
| 检测到的标志 | `-NoP -NonI -W Hidden -Exec Bypass -EncodedCommand` |
| 父进程 | `powershell.exe` (在真实攻击中为:`winword.exe` / `excel.exe`) |
| Payload | Base64 → `Write-Host 'Atomic Red Team T1059.001 test'` |
| Sysmon 事件 | EID 1 (进程创建) |
| MITRE | T1059.001 — 执行 / PowerShell + T1027 — 混淆 |
| 时间戳 | 2026-06-24T12:07:29Z |
## 实验室结果
在截图时,两个 Agent 均处于活跃状态并进行报告:
| Agent ID | 名称 | 平台 | IP | 状态 | 已运行模拟 |
|---|---|---|---|---|---|
| 001 | target-linux | Ubuntu Server 22.04 | `192.168.56.101` | ✅ 活跃 | SSH 暴力破解 (T1110.001) |
| 002 | target-windows | Windows 11 + Sysmon v15.21 | `127.0.0.1` | ✅ 活跃 | 可疑 PowerShell (T1059.001) |
## 作者
作品集项目 — 蓝队 / SOC 分析师 L1
[GitHub](https://github.com/sblaker/soc-homelab)
标签:Wazuh, 安全运营, 实验环境, 扫描框架, 请求拦截