Emiliano-Its/SOC-Lab-And-Detection
GitHub: Emiliano-Its/SOC-Lab-And-Detection
该项目是在 Azure 上构建的 SOC 检测工程实验室,通过模拟攻击、采集遥测、编写 Sigma 规则到生成 IR 报告,完整覆盖蓝队检测与响应的生命周期。
Stars: 0 | Forks: 0
# 家庭 SOC 实验室与检测工程
这是一个在 Microsoft Azure 上从零开始构建的实操检测工程实验室。其目标是在多主机环境中模拟真实的攻击者行为,在 Sigma 中构建自定义检测,并生成事件响应文档——涵盖了从遥测数据接入到警报分级的完整蓝队生命周期。
## 架构
在 Azure 上的私有虚拟网络(`soc-lab-vnet`,`10.0.0.0/16`)内部署了三台隔离的虚拟机:
| 主机 | 角色 | 操作系统 |
|---|---|---|
| `soc-lab-windows` | 受害端点 | Windows 11 Pro |
| `soc-lab-UbuntuServer` | Linux 服务器 + 网络传感器 | Ubuntu Server 24.04 LTS |
| `soc-lab-wazuh` | SIEM | Ubuntu Server 24.04 LTS |
```
Windows (Sysmon + Wazuh Agent)
│
├─────────────────────────────┐
│ ▼
Ubuntu (auditd + Zeek + Wazuh Agent)──► Wazuh SIEM
```
## 技术栈
| 层级 | 工具 |
|---|---|
| SIEM | Wazuh 4.14.5 |
| 端点遥测 (Windows) | Sysmon — SwiftOnSecurity 配置 |
| 端点遥测 (Linux) | auditd — Neo23x0 规则集 |
| 网络遥测 | Zeek 8.2.0 (JSON 输出) |
| 攻击模拟 | Atomic Red Team (Invoke-AtomicTest) |
| 检测格式 | Sigma (YAML) |
| 规则转换 | pySigma |
## ATT&CK 覆盖范围
| 技术 | 名称 | 战术 | Sigma 规则 |
|---|---|---|---|
| T1003 | 操作系统凭据转储 | 凭据访问 | ✓ |
| T1016 | 系统网络配置发现 | 发现 | ✓ |
| T1041 | 通过 C2 通道外发数据 | 数据外泄 | ✓ |
| T1046 | 网络服务发现 | 发现 | ✓ |
| T1057 | 进程发现 | 发现 | ✓ |
| T1059.001 | PowerShell | 执行 | ✓ |
| T1059.001 | PowerShell 编码命令 | 执行 | ✓ |
## 仓库结构
```
/
├── README.md
├── LESSONS_LEARNED.md
├── /architecture/
│ └── lab-topology.png
├── /rules/
│ └── *.yml — one Sigma rule per technique
├── /attacks/
│ └── *.md — one doc per simulated technique
├── /ir-reports/
│ └── *.md — incident response writeups
└── /tuning/
└── *.md — before/after rule tuning documentation
```
## 检测工程方法
每项技术都遵循相同的工作流:
1. **模拟** — 使用 Atomic Red Team 执行该技术
2. **观察** — 确认 Wazuh 捕获了哪些遥测数据以及数据来源
3. **编写** — 编写针对特定行为而非通用警报的 Sigma 规则
4. **调优** — 引入良性的边缘情况,完善规则逻辑直到消除误报
5. **记录** — 将检测结果视为真实事件,生成 IR 报告
## 关键技术说明
- Wazuh agent 需要对日志文件的读取权限 — 将 `wazuh` 用户添加到 `adm` 组以读取 `audit.log`,并添加到 `zeek` 组以读取 Zeek 日志
- Zeek 必须输出 JSON 格式:在 `local.zeek` 中加载 `policy/tuning/json-logs`
- Zeek 日志路径为 `/opt/zeek/spool/zeek/` — 而非 `/opt/zeek/logs/current/`
- 在 Wazuh 中启用 `logall_json` 以归档所有事件,而不仅仅是警报
- Azure NSG 需要开放 443 端口才能从外部访问 Wazuh dashboard
## 参考资源
- [MITRE ATT&CK](https://attack.mitre.org)
- [Sigma HQ](https://github.com/SigmaHQ/sigma)
- [Atomic Red Team](https://github.com/redcanaryco/atomic-red-team)
- [SwiftOnSecurity Sysmon 配置](https://github.com/SwiftOnSecurity/sysmon-config)
- [Neo23x0 auditd 规则](https://github.com/Neo23x0/auditd)
- [Zeek 文档](https://docs.zeek.org)
- [Wazuh 文档](https://documentation.wazuh.com)
- [The DFIR Report](https://thedfirreport.com)
标签:OpenCanary, Wazuh, 后渗透, 安全实验室, 插件系统