mayank02raj/SOC-home-lab
GitHub: mayank02raj/SOC-home-lab
一个 Dockerized 的 SOC 家庭实验室,整合 SIEM、NIDS、案件管理与威胁狩猎,实现检测即代码与 MITRE ATT&CK 对齐的端到端演练。
Stars: 0 | Forks: 0
# SOC 家庭实验室 v2
在您的笔记本电脑上部署一个具有生产形态的安全运营中心。包含 Wazuh SIEM、Suricata NIDS、TheHive 案件管理、Cortex 聚合、Grafana KPI 仪表盘,以及一个隔离网络中的三个脆弱目标。检测内容被视为代码,并配有单元测试、CI 流程,以及 Sigma 到 Wazuh 的编译器。一个八阶段对手仿真脚本完整遍历 MITRE ATT&CK 杀伤链,以便您展示端到端的检测覆盖能力。
## 架构
```
┌──────────────────────── blue_net (SOC tooling) ───────────────────────┐
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Wazuh │ │ Wazuh │ │ Wazuh │ │
│ │ Manager │◄──►│ Indexer │◄──►│ Dashboard │ │
│ │ (rules) │ │ (OpenSearch) │ │ :443 │ │
│ └──────┬───────┘ └──────┬───────┘ └──────────────┘ │
│ │ │ │
│ │ ▼ │
│ ┌──────┴───────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Filebeat │ │ Prometheus │◄──►│ Grafana │ │
│ │ (suricata) │ │ :9090 │ │ :3000 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ TheHive │◄──►│ Cortex │ │
│ │ :9000 │ │ :9001 │ │
│ └──────────────┘ └──────────────┘ │
│ │
└────────────────────────────────────────────────────────────────────────┘
│
│ Suricata (host network, sees all traffic)
▼
┌──────────────────── red_net (isolated, no egress) ────────────────────┐
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ DVWA │ │ Juice Shop │ │ Metasploit- │ │
│ │ :8080 │ │ :3001 │ │ able2 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└────────────────────────────────────────────────────────────────────────┘
▲
│
attack_chain.py
(8-stage adversary emulation)
```
## 本仓库包含的组件
| 组件 | 路径 | 用途 |
|---|---|---|
| 多网络编排 | `docker-compose.yml` | 隔离红蓝网络,11 个服务 |
| Sigma 规则(9 条) | `sigma-rules/` | Windows、Linux、Web、DNS、SMB 横向移动 |
| Suricata 规则 | `suricata/rules/local.rules` | Web 攻击、侦察、C2、横向移动、暴力破解 |
| 对手仿真 | `attack_chain.py` | 8 阶段 MITRE ATT&CK 杀伤链,含时间线导出 |
| Sigma 编译器 | `sigma_to_wazuh.py` | 将 Sigma YAML 转换为 Wazuh local_rules.xml |
| 检测单元测试 | `test_detections.py` | 小型 Sigma 评估器与参数化规则测试 |
| CI 工作流 | `.github/workflows/detection-ci.yml` | 每次推送时执行代码检查、验证、测试与编译 |
| 威胁狩猎 | `notebooks/threat_hunting.ipynb` | 针对索引器的四次假设驱动式狩猎 |
| 主动响应 | `active-response/block_ip.sh` | 自动封禁攻击 IP 并包含安全 IP 白名单保护 |
| 自定义解码器 | `custom-decoders/local_decoder.xml` | 解析 Suricata EVE、DVWA 访问日志、AR 审计日志 |
| SOC 仪表盘 | `grafana/dashboards/soc-overview.json` | KPI:告警、严重等级、MITRE 覆盖范围、Top IP |
| Filebeat 采集器 | `filebeat/filebeat.yml` | 将 Suricata eve.json 发送至 Wazuh 索引器 |
| TheHive 配置 | `thehive/application.conf` | 案件管理 + Cortex 集成 |
## 展示的技能
SIEM 工程、检测即代码、MITRE ATT&CK 对齐、Sigma 规则编写、网络入侵检测部署、日志管道设计、威胁狩猎方法学、对手仿真、安全内容 CI/CD、容器编排、多层级网络分段、SOAR 基础能力(主动响应)、KPI 仪表盘。
## 快速开始
```
git clone
cd soc-lab
cp .env.example .env
make up # bring up the stack
sleep 90 # let Wazuh initialize
make rules # compile Sigma rules and reload manager
make test # run detection unit tests
make attack # run the full 8-stage adversary emulation
```
然后打开仪表盘:
| URL | 服务 | 默认凭据 |
|---|---|---|
| https://localhost:443 | Wazuh | admin / SecretPassword |
| http://localhost:3000 | Grafana | admin / admin |
| http://localhost:9000 | TheHive | admin@thehive.local / secret |
| http://localhost:9001 | Cortex | admin /(首次登录时设置) |
| http://localhost:9090 | Prometheus | n/a |
| http://localhost:8080 | DVWA 目标 | admin / password |
| http://localhost:3001 | Juice Shop 目标 | n/a |
## 检测内容生命周期
```
┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐
│ Author │────►│ Lint + │────►│ Unit test │────►│ Compile to │
│ Sigma rule │ │ validate │ │ (pytest) │ │ Wazuh XML │
└────────────┘ └────────────┘ └────────────┘ └─────┬──────┘
│
┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ Tune from │◄────│ Triage in │◄────│ Alert in │◄──────────┘
│ feedback │ │ TheHive │ │ dashboard │
└────────────┘ └────────────┘ └────────────┘
```
`sigma-rules/` 下的每条 Sigma 规则都会经历以下流程:
1. 在推送时由 GitHub Actions 进行代码检查(YAML 合法、必需字段存在、ATT&CK 标签存在)
2. 由 `test_detections.py` 针对合成恶意与良性事件进行单元测试
3. 按需由 `sigma_to_wazuh.py` 编译为本地 Wazuh 格式
4. 通过只读卷挂载由管理器加载
测试使用一个嵌入式的小型 Sigma 评估器,因此可在任何环境中运行,无需真实 SIEM。这与 Splunk 的 `attack_range`、Red Canary 的 `atomic-red-team` 以及 Elastic 的 `detection-rules` 仓库采用相同模式。
## 对手仿真
`attack_chain.py` 遍历一个映射到 ATT&CK 技术的 8 阶段杀伤链。每个阶段都会输出 JSON 格式的时间线,以便证明 SOC 看到了完整攻击,而不仅仅是孤立告警。
```
Stage 1 Recon (T1595) dir busting + scanner UA
Stage 2 Initial Access (T1190) SQLi UNION + auth bypass
Stage 3 Execution (T1059.004) command injection
Stage 4 Persistence (T1505.003) web shell upload
Stage 5 Discovery (T1083) LFI filesystem enum
Stage 6 Cred Access (T1003.008) /etc/shadow read
Stage 7 Exfiltration (T1041) data POST
Stage 8 Impact (T1499.002) brute force DoS
```
可通过 `--stage N` 运行单个阶段用于调优,或不带参数运行完整链路。
## 威胁狩猎
`notebooks/threat_hunting.ipynb` 连接到 Wazuh 索引器并运行四次假设驱动式狩猎:
1. **异常的父子进程关系**(T1059)——发现如 `winword.exe` 启动 `powershell.exe` 这类异常
2. **按用户的首次外部 IP**(T1078)——标记凭证盗窃可疑对象
3. **非管理员时段的管理员活动**(T1078.002)——凌晨 3 点的 sudo 操作
4. **高熵 DNS 子域名**(T1568.002)——DGA 与 DNS 隧道
您可以通过编写更多单元格来扩展它,使用相同的 OpenSearch 客户端。每个狩猎大约只需十行代码。
## 用于作品集总结的素材
1. 架构图(本 README 提供了 ASCII 版本,请在简历网站制作干净的 SVG)
2. 攻击期间 Grafana SOC 仪表盘的截图
3. 单个已处置告警的 Wazuh 仪表盘详细视图,包含完整的事件元数据
4. Sigma 规则与其产生的告警并列展示
5. 显示检测测试通过的 CI 运行记录(针对规则修改)
6. 攻击时间线 JSON 与其触发的告警配对,证明端到端覆盖
7. 威胁狩猎笔记本输出,并标注您发现的一个异常
## 生产环境加固说明
单节点 Wazuh 部署适用于实验室。如需更接近生产环境:
- 使用 `wazuh-certs-tool.sh` 生成正式证书,并挂载到管理器和索引器
- 改用 Wazuh 文档提供的多节点编排文件
- 使用 Cassandra 和 Elasticsearch 运行 TheHive,而非嵌入式 BerkeleyDB
- 将所有地方的 `verify_certs=false` 替换为真实的 CA 验证
- 轮换 `.env` 中的密钥并禁止提交该文件
- 在 Grafana 前面部署经过认证的反向代理
- 为 Prometheus 添加 `node-exporter` 并配置完善的告警规则
## 这对防御承包商岗位的意义
每个 Tier 1 承包商运行的 SOC 都有相同的检查清单:映射到 ATT&CK 的检测覆盖、内容在版本控制下并具备 CI、超越开箱即用规则的狩猎能力、自动化分级与案件管理、以及客户可见的 KPI。本实验室在一个仓库中展示了全部五项能力。当面试被问到“描述一次你从零开始构建检测内容的经历”时,您将拥有一个可运行的工件可供 walkthrough,而非仅停留在假设。
标签:AMSI绕过, API集成, CI, CIDR查询, Cloudflare, Cortex, DNS 解析, Docker, FTP漏洞扫描, Grafana, IP 地址批量处理, KPI仪表盘, Metaprompt, MITRE ATT&CK, NIDS, NIDS, PE 加载器, Sigma编译器, Sigma规则, Suricata, TheHive, Wazuh, Wazuh SIEM, 单位测试, 参数枚举, 可观测性, 后渗透, 威胁检测, 子域名变形, 安全工具集合, 安全编排, 安全运营中心, 安全防御评估, 家庭实验室, 容器化, 容器化, 富集, 对手仿真, 对手模拟, 开源框架, 持续集成, 数据包嗅探, 数据可视化, 检测即代码, 流量嗅探, 版权保护, 现代安全运营, 生产环境, 目标导入, 网络安全, 网络安全审计, 网络映射, 自定义请求头, 请求拦截, 逆向工具, 隐私保护