KhuranaArjun/soc-analyst-homelab
GitHub: KhuranaArjun/soc-analyst-homelab
基于Wazuh SIEM构建的SOC分析师家庭实验室,整合攻击模拟、自定义检测规则、自动化脚本和事件响应Playbook,提供从理论到实践的完整安全运营训练环境。
Stars: 0 | Forks: 0
# 🛡️ SOC Analyst 家庭实验室 — Wazuh SIEM + 攻击模拟





## 📋 目录
- [概述与动机](#-overview--motivation)
- [实验室架构](#-lab-architecture)
- [技术栈](#-tech-stack)
- [设置指南](#-setup-guides)
- [攻击场景与检测结果](#-attack-scenarios--detection-results)
- [自定义检测规则](#-custom-detection-rules)
- [自动化脚本](#-automation-scripts)
- [事件响应 Playbook](#-incident-response-playbooks)
- [Sigma 规则](#-sigma-rules)
- [关键收获与经验教训](#-key-takeaways--lessons-learned)
## 🎯 概述与动机
作为一名网络安全理学硕士研究生,我构建此实验室旨在弥合学术安全理论与真实 SOC 环境所需的实际动手技能之间的差距。该实验室模拟了一个小型企业网络,包含中央 SIEM、Linux 和 Windows 端点以及专用的攻击者机器 —— 使我能够模拟、检测和响应映射到 [MITRE ATT&CK 框架](https://attack.mitre.org/) 的真实攻击技术。
**本实验室展示的内容:**
- 部署和配置生产级开源 SIEM (Wazuh 4.9)
- 编写超越开箱即用默认设置的自定义检测规则
- 执行和检测攻击技术:SSH 暴力破解、权限提升、侦察
- 构建 Python 自动化工具用于警报增强和日志解析
- 编写 IR Playbook 以实现可重复的事件响应
- 将检测转换为可移植的 Sigma 规则以实现跨平台使用
**为什么选择 Wazuh?** 它被全球真实的 SOC 团队使用,与 MITRE ATT&CK 原生集成,同时支持 HIDS 和网络监控,是 Splunk 或 Microsoft Sentinel 等商业 SIEM 工具的开源等效方案。
## 🏗️ 实验室架构
```
┌─────────────────────────────────────────────────────────────────────┐
│ HOST MACHINE │
│ VirtualBox / VMware Workstation │
│ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ HOST-ONLY NETWORK 192.168.56.0/24 │ │
│ │ │ │
│ │ ┌─────────────────────┐ ┌──────────────────────────┐ │ │
│ │ │ Wazuh Manager + │ │ Ubuntu 22.04 LTS │ │ │
│ │ │ Dashboard │◄───│ Victim / Linux Agent │ │ │
│ │ │ Ubuntu 22.04 LTS │ │ Wazuh Agent + auditd │ │ │
│ │ │ 192.168.56.10 │ │ 192.168.56.20 │ │ │
│ │ └──────────┬──────────┘ └──────────────────────────┘ │ │
│ │ │ │ │
│ │ │ ┌──────────────────────────┐ │ │
│ │ └───────────────│ Windows 10 Pro │ │ │
│ │ │ Wazuh Agent + Sysmon │ │ │
│ │ │ 192.168.56.30 │ │ │
│ │ └──────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────┐ │ │
│ │ │ Kali Linux 2024.1 │ ─── ─── ─── Attack Traffic ───► │ │
│ │ │ Attacker Machine │ │ │
│ │ │ 192.168.56.40 │ │ │
│ │ └─────────────────────┘ │ │
│ └──────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
Log Flow: Agent ──► Wazuh Manager (port 1514) ──► Indexer ──► Dashboard
```
### 虚拟机规格
| VM | OS | RAM | CPU | 角色 |
|---|---|---|---|---|
| `wazuh-manager` | Ubuntu 22.04 LTS | 4 GB | 2 cores | SIEM — Wazuh Manager + Indexer + Dashboard |
| `linux-victim` | Ubuntu 22.04 LTS | 2 GB | 1 core | 受监控端点 — Wazuh Agent + auditd |
| `win-victim` | Windows 10 Pro | 4 GB | 2 cores | 受监控端点 — Wazuh Agent + Sysmon |
| `kali-attacker` | Kali Linux 2024.1 | 2 GB | 1 core | 攻击模拟 — Hydra, Nmap, Metasploit |
## 🔧 技术栈
| 组件 | 工具 | 版本 | 用途 |
|---|---|---|---|
| SIEM | Wazuh | 4.9 | 中央日志收集、关联、告警 |
| 端点检测 | Wazuh Agent | 4.9 | 基于代理的主机监控 |
| Windows 日志 | Sysmon | 15.x | 增强的进程、网络、注册表事件 |
| Linux 审计 | auditd | 3.x | Syscall 级别审计日志 |
| 攻击模拟 | Hydra | 9.5 | SSH/RDP 暴力破解模拟 |
| 网络侦察 | Nmap | 7.x | 端口扫描和 OS 指纹识别 |
| 自动化 | Python | 3.11 | 警报增强、日志解析、报告 |
| Shell 脚本 | Bash | 5.x | 设置自动化和主动响应 |
| 规则语言 | Wazuh XML + Sigma | - | 检测工程 |
## 📖 设置指南
分步安装和配置文档位于 [`docs/setup/`](docs/setup/) 文件夹中:
1. [`01-wazuh-manager-install.md`](docs/setup/01-wazuh-manager-install.md) — 在 Ubuntu 22.04 上部署 Wazuh Manager + Dashboard
2. [`02-linux-agent-setup.md`](docs/setup/02-linux-agent-setup.md) — 配置带有 auditd 规则的 Linux 代理
3. [`03-windows-agent-sysmon.md`](docs/setup/03-windows-agent-sysmon.md) — 在 Windows 10 上部署 Wazuh agent + Sysmon
4. [`04-network-configuration.md`](docs/setup/04-network-configuration.md) — VirtualBox 仅主机网络设置
5. [`05-custom-rules-deployment.md`](docs/setup/05-custom-rules-deployment.md) — 加载和测试自定义 Wazuh 规则
## ⚔️ 攻击场景与检测结果
三个完整的攻击场景已从头到尾记录,涵盖从执行到 Wazuh 警报分析的全过程。
| 场景 | ATT&CK 战术 | 技术 | 检测规则 ID | 文档 |
|---|---|---|---|---|
| SSH 暴力破解 | Credential Access | T1110.001 | 5710, 5712, 100101 | [📄 文档](attack-scenarios/01-ssh-brute-force/README.md) |
| Linux 权限提升 | Privilege Escalation | T1548.001 | 5402, 100201, 100202 | [📄 文档](attack-scenarios/02-privilege-escalation/README.md) |
| Web 侦察 (Nmap) | Discovery | T1046, T1595 | 100301, 100302 | [📄 文档](attack-scenarios/03-web-recon/README.md) |
## 🔍 自定义检测规则
所有自定义规则位于 [`rules/local_rules.xml`](rules/local_rules.xml)。每个规则都注释了 ATT&CK 映射、检测逻辑和调优说明。
**已编写的规则:**
| 规则 ID | 描述 | 级别 | ATT&CK |
|---|---|---|---|
| 100101 | SSH 暴力破解 — 高频阈值 | 12 | T1110.001 |
| 100102 | SSH 暴力破解伴随地理位置异常 | 14 | T1110.001 |
| 100201 | SUID 二进制文件执行 (权限提升) | 12 | T1548.001 |
| 100202 | 非管理员用户的可疑 sudo 使用 | 10 | T1548.003 |
| 100301 | 通过 auditd 检测到 Nmap SYN 扫描 | 8 | T1046 |
| 100302 | 来自内部主机的端口扫描 — 横向移动信号 | 11 | T1046 |
| 100401 | /etc/passwd 或 /etc/shadow 文件完整性违规 | 15 | T1003.008 |
| 100402 | 非 root 用户添加的新 crontab 条目 | 10 | T1053.003 |
## 🤖 自动化脚本
| 脚本 | 语言 | 描述 |
|---|---|---|
| [`alert_enricher.py`](scripts/python/alert_enricher.py) | Python | 读取 Wazuh 警报 JSON,通过 ip-api 使用 IP 地理位置进行增强 |
| [`log_parser.py`](scripts/python/log_parser.py) | Python | 将 `/var/ossec/logs/alerts/alerts.log` 解析为结构化 CSV |
| [`daily_report.py`](scripts/python/daily_report.py) | Python | 生成每日 HTML 摘要,包含触发次数最多的规则、最频繁的源 IP |
| [`active_response_block.sh`](scripts/bash/active_response_block.sh) | Bash | Wazuh 主动响应脚本 — 通过 iptables 封禁攻击者 IP |
| [`agent_health_check.sh`](scripts/bash/agent_health_check.sh) | Bash | 检查所有 Wazuh 代理的连接性并报告断开连接的代理 |
## 📋 事件响应 Playbook
针对三种攻击场景的结构化 Playbook —— 它们模仿了真实的 SOC Runbook 格式:
- [`playbooks/SSH-BruteForce-Playbook.md`](playbooks/SSH-BruteForce-Playbook.md)
- [`playbooks/PrivilegeEscalation-Playbook.md`](playbooks/PrivilegeEscalation-Playbook.md)
- [`playbooks/Recon-Sweep-Playbook.md`](playbooks/Recon-Sweep-Playbook.md)
## 🔄 Sigma 规则
Sigma 是一种通用的 SIEM 无关规则格式。[`sigma-rules/`](sigma-rules/) 中的 Sigma 规则是自定义 Wazuh 检测的可移植转换版本 —— 它们可以转换为 Splunk SPL、Elastic ESQL 或 Microsoft Sentinel KQL。
## 📝 关键收获与经验教训
**效果良好的方面:**
- Wazuh 内置的 MITRE ATT&CK 映射使将警报与真实攻击者技术关联变得简单直接
- 使用 `frequency` + `timeframe` 属性编写自定义规则比单个事件规则提供了更多有效信号
- Linux 上的 auditd 提供极其精细的 syscall 日志 —— 对于捕获权限提升至关重要
**挑战及解决方法:**
- Wazuh indexer 在第 3 天耗尽磁盘空间 —— 通过实施适当的索引生命周期管理 (ILM) 策略解决
- Windows 代理时间戳偏差导致警报排序错误 —— 通过在所有 VM 上同步 NTP 解决
- Hydra 暴力破解在 2 分钟内生成了约 3,000 条警报 —— 调整规则阈值以减少噪音,同时保持高真阳性率
**如果我要重建这个实验室:**
- 添加 TheHive 以进行适当的案例管理和警报工单处理
- 集成 VirusTotal API 以对 FIM 警报进行文件哈希查找
- 部署 Suricata 进行网络级检测,配合基于主机的 Wazuh 代理
## 📁 仓库结构
```
soc-analyst-homelab/
├── README.md ← You are here
├── docs/
│ ├── setup/
│ │ ├── 01-wazuh-manager-install.md
│ │ ├── 02-linux-agent-setup.md
│ │ ├── 03-windows-agent-sysmon.md
│ │ ├── 04-network-configuration.md
│ │ └── 05-custom-rules-deployment.md
│ └── architecture/
│ └── lab-diagram.md
├── rules/
│ └── local_rules.xml ← All custom Wazuh rules
├── scripts/
│ ├── python/
│ │ ├── alert_enricher.py
│ │ ├── log_parser.py
│ │ └── daily_report.py
│ └── bash/
│ ├── active_response_block.sh
│ └── agent_health_check.sh
├── attack-scenarios/
│ ├── 01-ssh-brute-force/
│ │ └── README.md
│ ├── 02-privilege-escalation/
│ │ └── README.md
│ └── 03-web-recon/
│ └── README.md
├── playbooks/
│ ├── SSH-BruteForce-Playbook.md
│ ├── PrivilegeEscalation-Playbook.md
│ └── Recon-Sweep-Playbook.md
├── sigma-rules/
│ ├── ssh_brute_force.yml
│ ├── linux_priv_esc_suid.yml
│ └── internal_port_scan.yml
└── screenshots/
└── [Wazuh dashboard alert screenshots]
```
## 📌 参考资料
- [Wazuh 4.9 Documentation](https://documentation.wazuh.com/current/)
- [MITRE ATT&CK Framework](https://attack.mitre.org/)
- [SwiftOnSecurity Sysmon Config](https://github.com/SwiftOnSecurity/sysmon-config)
- [Sigma Rules Project](https://github.com/SigmaHQ/sigma)
- [Atomic Red Team](https://github.com/redcanaryco/atomic-red-team)
由 Arjun Khurana 构建 — 网络安全理学硕士,帕绍大学 (University of Passau)
标签:Cloudflare, Conpot, CSV导出, IR剧本, MITRE ATT&CK, PB级数据处理, PE 加载器, Python自动化, Sigma规则, SOC分析师, SSH暴力破解, Wazuh, Windows安全, 协议分析, 安全规则开发, 安全运维, 家庭实验室, 密码管理, 应用安全, 插件系统, 攻击模拟, 权限提升, 目标导入, 端点监控, 网络安全, 网络安全审计, 逆向工具, 隐私保护, 驱动签名利用