Rblea97/SOC-Lab
GitHub: Rblea97/SOC-Lab
一个基于 Wazuh SIEM 的四虚拟机 SOC 实验室,提供五个经过验证的 MITRE ATT&CK 攻击场景、完整的检测工程流水线、警报富化工具和事件响应报告,帮助安全从业者从零练习安全运营全流程。
Stars: 0 | Forks: 0
[](https://github.com/Rblea97/SOC-Lab/actions/workflows/ci.yml)
# SOC Lab
UTC 时间 01:11,Wazuh 触发了规则 5763 —— *试图暴力破解以获取系统访问权限* —— 在 45 秒内触发了 36 次。我通过关联跨越不同 PID 的 4 个并行 Hydra 会话进行了分类研判,并通过验证 **规则 100002 未触发** 来确认未获取任何凭证,随后将事件关闭为 *未发生入侵*。该工作流 —— 警报、关联、遏制决策 —— 正是此实验室旨在练习和记录的内容。

## 此实验室展示的内容
- **警报 → 分类 → 调查 → 遏制** —— 端到端的分析师工作流,而不仅仅是规则部署
- **检测工程决策** —— 为何调整阈值,自定义解码器如何解决实际标准化缺口,以及规则在何种情况下*正确地*未触发
- **经过验证的证据** —— 5 个攻击场景,包含机器可读的 JSON 警报快照、哈希值、时间戳和检测延迟
- **分析师工具** —— Python 富化流水线(风险评分 + MITRE 上下文)和 Sigma 转换器,经过测试和 CI 把关
## 技能一览
| 领域 | 工具 / 技术 |
|---|---|
| 威胁检测 | Wazuh SIEM, Sigma rules, ATT&CK Navigator |
| 检测工程 | Sigma→Wazuh XML 转换, 警报富化, 分类评分, 覆盖率指标 |
| 对手模拟 | Nmap, Hydra, Metasploit (vsftpd CVE-2011-2523), sudo 滥用, web-shell FIM |
| 质量门禁 | ruff, pyright, pytest, pip-audit, nox, pre-commit, GitHub Actions CI |
| 事件响应 | IR 报告(5 个场景), ATT&CK layer, detection-coverage.md |
## 快速演示
```
# 需要:Python 3.11+, uv (https://docs.astral.sh/uv/)
git clone git@github.com:Rblea97/SOC-Lab.git
cd SOC-Lab
# 运行完整检测 pipeline (Sigma → XML → enrichment → IR report → triage)
uv run python tools/pipeline_demo.py
# 运行 quality gate suite (fmt, lint, type, test, audit) — 与 CI 完全一致
uv run nox -s all
```
## 架构
```
┌─────────────────────────────────────────────────────┐
│ Host (VirtualBox) │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌─────────────┐ │
│ │ Kali │ │ Metasploitable│ │ Wazuh │ │
│ │ Attacker │──▶│ 2 Target │──▶│ Manager │ │
│ │10.0.2.15 │ │ 10.0.2.5 │ │ 10.0.2.10 │ │
│ └──────────┘ └──────────────┘ └──────┬──────┘ │
│ │ │
│ ┌───────▼──────┐ │
│ │ Ubuntu │ │
│ │ Analyst │ │
│ │ 10.0.2.20 │ │
│ └──────────────┘ │
└─────────────────────────────────────────────────────┘
```
## 检测场景
| # | 场景 | MITRE | 规则 | 采集方式 | 延迟 | 状态 |
|---|---|---|---|---|---|---|
| 01 | [Nmap 侦察](docs/attack-scenarios/01-nmap-recon.md) | T1046 | 100011 (自定义) | Syslog / MS-2 | 72 s | 已验证 |
| 02 | [SSH 暴力破解](docs/attack-scenarios/02-ssh-brute-force.md) | T1110.001 | 5763 (内置) | Agent / journald | 126 s | 已验证 |
| 03 | [Metasploit vsftpd](docs/attack-scenarios/03-metasploit-vsftpd.md) | T1190 | 2501 (内置) | Syslog / MS-2 | 192 s | 已验证 |
| 04 | [权限提升](docs/attack-scenarios/04-priv-escalation.md) | T1548.003 | 5402 (内置) | Agent / journald | **7 s** | 已验证 |
| 05 | [可疑文件](docs/attack-scenarios/05-suspicious-file.md) | T1505.003 | 100003 (自定义) | Agent / syscheck | 71 s | 已验证 |
基于 Agent 的采集(场景 04)实现了 **7 秒** 检测。Syslog 转发事件(场景 01、03)测得 72–192 秒 —— 这一 10–27 倍的差距反映了传统主机覆盖范围与检测速度之间在生产环境中的实际权衡。
有关应用于每条规则的分类逻辑 —— 我接下来检查什么、恶意与良性的判断推理以及何时升级 —— 请参阅 [docs/triage-methodology.md](docs/triage-methodology.md)。
## 检测工程流水线
```
tools/sigma/*.yml (Sigma detection rules, one per scenario)
│
▼
tools/sigma_convert.py (converts Sigma YAML → Wazuh XML rule)
│
▼
Wazuh alert (live) or tools/fixtures/sample_enriched.json (offline)
│
▼
tools/enrich_alerts.py (adds risk_label + mitre_description)
│
▼
tools/triage.py (scores triage priority P1–P4)
│
▼
tools/report.py (generates Markdown IR summary)
│
▼
docs/ir-report-*.md (incident response report)
```
检测覆盖率通过 `tools/detect_metrics.py` 针对 `docs/attack-coverage.json` 中的 ATT&CK Navigator 层进行追踪。
所有阶段均可离线测试:`uv run nox -s test` 可在无需实时 Wazuh 实例的情况下运行 85 个测试。
## 门禁
```
# Full suite (本地 == CI)
uv run nox -s all
# Pre-commit hooks
pre-commit run --all-files
```
门禁按顺序运行:`fmt` (ruff) → `lint` (ruff) → `type` (pyright) → `test` (pytest) → `audit` (pip-audit)。
## 证据
已验证的警报捕获按场景存储在 `evidence/` 中:
| 场景 | 证据 | IR 报告 |
|---|---|---|
| 01 Nmap 侦察 | [evidence/scenario-01-nmap/result.json](evidence/scenario-01-nmap/result.json) | [docs/ir-report-nmap-recon.md](docs/ir-report-nmap-recon.md) |
| 02 SSH 暴力破解 | [evidence/scenario-02-brute-force/result.json](evidence/scenario-02-brute-force/result.json) | [docs/ir-report-ssh-brute-force.md](docs/ir-report-ssh-brute-force.md) |
| 03 Metasploit vsftpd | [evidence/scenario-03-vsftpd/result.json](evidence/scenario-03-vsftpd/result.json) | [docs/ir-report-vsftpd-exploit.md](docs/ir-report-vsftpd-exploit.md) |
| 04 权限提升 | [evidence/scenario-04-priv-esc/result.json](evidence/scenario-04-priv-esc/result.json) | [docs/ir-report-priv-escalation.md](docs/ir-report-priv-escalation.md) |
| 05 可疑文件 | [evidence/scenario-05-suspicious-file/result.json](evidence/scenario-05-suspicious-file/result.json) | [docs/ir-report-suspicious-file.md](docs/ir-report-suspicious-file.md) |
富化样本(离线):[tools/fixtures/sample_enriched.json](tools/fixtures/sample_enriched.json)
检测覆盖范围:[docs/detection-coverage.md](docs/detection-coverage.md)
标签:AMSI绕过, CI/CD安全, CISA项目, Cloudflare, CSV导出, CVE-2011-2523, Detection Engineering, DNS 反向解析, Hydra, Llama, MITRE ATT&CK, Nmap, Python, Python 实现, Sigma规则, SOC实验室, VSFTPD, Wazuh, Webshell, 威胁检测, 安全规则引擎, 安全运营, 扫描框架, 插件系统, 攻击模拟, 无后门, 检测规则, 目标导入, 网络安全, 网络资产发现, 虚拟驱动器, 逆向工具, 速率限制, 野蛮破解, 隐私保护, 驱动签名利用