mostafaahmedaly2003/SOC-monitoring-lab
GitHub: mostafaahmedaly2003/SOC-monitoring-lab
一个集成的 SOC 迷你实验室,通过 Snort、Wazuh、T-Pot 与 Shuffle SOAR 实现秒级检测与自动响应。
Stars: 3 | Forks: 3
# SOC Mini-Lab: Snort + Wazuh + T-Pot + Shuffle SOAR








## 架构概述
```
flowchart TB
subgraph INTERNET["INTERNET"]
NET[("WAN")]
end
subgraph KALI["KALI LINUX — Gateway + Attacker"]
ETH0["eth0: NAT\n192.168.61.128"]
SNORT["Snort 3.12.1.0\nIPS: NFQUEUE drop\nIDS: alert_fast.txt"]
WAGENT1["Wazuh Agent"]
SHUFFLE["Shuffle SOAR\n:3443"]
end
subgraph INTERNAL["INTERNAL LAN — 192.168.1.0/24"]
WIN["Windows 10\n192.168.1.32\nWazuh Agent + Sysmon"]
WAZUH["Wazuh Server\n192.168.1.33\nManager + Indexer + Dashboard"]
TPOT["T-Pot Honeypot\n192.168.1.34\nWazuh Agent"]
end
subgraph EXTERNAL["EXTERNAL SERVICES"]
VT["VirusTotal API"]
SG["SendGrid Email"]
end
NET -->|NAT| ETH0
ETH0 --> SNORT
SNORT -->|"clean traffic"| WIN
SNORT -->|"attack traffic"| TPOT
SNORT -->|"alerts"| WAGENT1
WAGENT1 -->|TCP 1514| WAZUH
WIN -->|"events"| WAZUH
TPOT -->|"honeypot logs"| WAZUH
WAZUH -->|"webhook L10+"| SHUFFLE
SHUFFLE --> VT
SHUFFLE --> SG
style KALI fill:#1a1a2e,stroke:#00ff41,color:#00ff41
style INTERNAL fill:#0d1117,stroke:#58a6ff,color:#58a6ff
style SNORT fill:#ff4444,stroke:#ff4444,color:#fff
style WAZUH fill:#0066cc,stroke:#0066cc,color:#fff
style TPOT fill:#ff8800,stroke:#ff8800,color:#fff
style SHUFFLE fill:#9933ff,stroke:#9933ff,color:#fff
```
**完整架构详情:** [`architecture/README.md`](architecture/README.md)
## 网络拓扑
### IP 分配
| 机器 | 接口 | IP 地址 | 网络 | 角色 |
|:--------|:----------|:-----------|:--------|:-----|
| Kali Linux | eth0 | `192.168.61.128` | NAT | 互联网出口 |
| Kali Linux | eth1 | `192.168.1.31` | Bridged | 内部局域网 |
| Kali Linux | eth2 | `10.94.117.59` | Bridged | Snort 检测 |
| Windows 10 | eth0 | `192.168.1.32` | Bridged | 受害者 + Wazuh agent |
| Wazuh Server | eth0 | `192.168.1.33` | Bridged | SIEM manager |
| T-Pot | eth0 | `192.168.1.34` | Bridged | 蜜罐 |
| Shuffle SOAR | Docker | `10.94.117.58:3443` | — | SOAR 引擎 |
### 网段划分
| 网段 | CIDR | 用途 |
|:--------|:-----|:--------|
| NAT | `192.168.61.0/24` | 仅限 Kali 访问互联网 |
| 内部局域网 | `192.168.1.0/24` | 所有 agent 连接至 Wazuh manager |
| 管理 | `10.94.117.0/24` | Snort 接口 + Shuffle |
### 流量流向
```
sequenceDiagram
participant K as Kali (Attacker)
participant S as Snort IPS/IDS
participant W as Windows (Victim)
participant T as T-Pot (Honeypot)
participant M as Wazuh Manager
participant SH as Shuffle SOAR
participant VT as VirusTotal
participant E as SendGrid Email
K->>S: Attack traffic (eth2)
S--xK: IPS: DROP malicious packets
S->>W: Clean traffic forwarded (eth1)
S->>M: IDS alerts via Wazuh agent
W->>M: Endpoint events (Sysmon/Security)
T->>M: Honeypot hits via Wazuh agent
M->>SH: Level 10+ alert webhook
SH->>VT: IP reputation lookup
VT-->>SH: Malicious score
SH->>E: Alert email notification
SH->>M: IP block (active response)
```
**完整拓扑详情:** [`topology/README.md`](topology/README.md)
## 工具与技术栈
| 工具 | 版本 | 用途 | 许可证 |
|:-----|:--------|:--------|:--------|
| Kali Linux | 2025.4 | 攻击者 + 网关 + Docker 主机 | GPL |
| Snort | 3.12.1.0 | 网络 IDS/IPS (NFQUEUE inline) | GPL-2.0 |
| Wazuh | 4.14.4 OVA | SIEM: Manager + Indexer + Dashboard | GPL-2.0 |
| Windows 10 | 10.0.17763 | 受害者端点 | 专有 |
| Sysmon | v15 | 增强的 Windows 事件日志记录 | 免费 |
| T-Pot | 24.04 HIVE | 多蜜罐平台 | Apache-2.0 |
| Shuffle SOAR | 最新版 | 自动化事件响应 | GPL-3.0 |
| VirusTotal API | v3 | IP 信誉查询 | 免费层 |
| SendGrid | v3 API | 邮件通知 | 免费层 |
| VMware Workstation | Pro | Kali + Windows 虚拟化 | 专有 |
| VirtualBox | 最新版 | Wazuh + T-Pot 虚拟化 | GPL-2.0 |
| Docker | 最新版 | Shuffle 容器 | Apache-2.0 |
| iptables/NFQUEUE | 内核 | 将数据包路由至 Snort 进行 inline 处理 | GPL |
### 功能对比
| 能力 | 传统 SOC | 本实验室 |
|:-----------|:----------------|:---------|
| 检测方法 | 人工日志审查 | 自动化 IDS/IPS + SIEM 关联分析 |
| 响应时间 | 几分钟到几小时 | **< 15 秒** |
| 威胁情报 | 手动查询 IOC | 自动化 VirusTotal 情报补充 |
| 告警 | 定时邮件 | 实时 webhook + 邮件 |
| 蜜罐集成 | 独立系统 | 统一整合在 SIEM 管道中 |
| 事件响应 | 人工 playbook | SOAR 自动化工作流 |
## 检测管道
```
flowchart LR
subgraph ATTACK["ATTACK"]
A1["Nmap SYN Scan"]
A2["Hydra SSH Brute"]
A3["ICMP Sweep"]
A4["Honeypot Probe"]
end
subgraph DETECT["DETECT"]
D1["Snort IDS\nalert_fast.txt"]
D2["Snort IPS\nNFQUEUE DROP"]
D3["Sysmon\nWindows Events"]
D4["T-Pot\nJSON Logs"]
end
subgraph CORRELATE["CORRELATE"]
C1["Wazuh Manager\n192.168.1.33"]
end
subgraph RESPOND["RESPOND"]
R1["Shuffle SOAR"]
R2["VirusTotal API"]
R3["SendGrid Email"]
R4["IP Block"]
end
A1 --> D1 & D2
A2 --> D1 & D2
A3 --> D1 & D2
A4 --> D4
D1 --> C1
D3 --> C1
D4 --> C1
C1 -->|"Level 10+"| R1
R1 --> R2
R2 --> R3
R2 --> R4
style ATTACK fill:#ff4444,stroke:#ff4444,color:#fff
style DETECT fill:#ff8800,stroke:#ff8800,color:#fff
style CORRELATE fill:#0066cc,stroke:#0066cc,color:#fff
style RESPOND fill:#00cc44,stroke:#00cc44,color:#fff
```
### 自定义 Snort 规则
| SID | 类型 | 规则 | 阈值 |
|:----|:-----|:-----|:----------|
| 1000001 | IDS | ICMP Ping 扫描 | 5 个 ping / 2 秒 |
| 1000002 | IDS | Nmap SYN 端口扫描 | 20 个 SYN / 1 秒 |
| 1000003 | IDS | SSH 暴力破解 | 5 次尝试 / 60 秒 |
| 1000004 | IDS | HTTP 非标准端口 (C2) | 每个数据包 |
| 1000005 | **IPS** | **激进端口扫描** | **30 个 SYN / 5 秒** |
| 1000006 | IDS | RDP 暴力破解 | 5 次尝试 / 30 秒 |
| 1000007 | **IPS** | **ICMP 泛洪** | **50 个 ping / 1 秒** |
| 1000008 | IDS | FTP 登录尝试 | 每个数据包 |
| 1000009 | IDS | DNS 放大攻击 | dsize > 512 |
**检测规则、解码器和规则 ID:** [`detection-pipeline/README.md`](detection-pipeline/README.md)
## 自动化工作流
### Shuffle SOAR — 告警富化管道
```
flowchart TD
A["Wazuh Alert\nLevel >= 10"] -->|webhook| B["Shuffle\nWebhook Trigger"]
B --> C["Extract src_ip\n(regex parse)"]
C --> D["VirusTotal\nIP Lookup"]
D --> E{"Malicious\nscore > 0?"}
E -->|YES| F["SendGrid\nAlert Email"]
E -->|YES| G["Wazuh\nIP Block"]
E -->|NO| H["Log: Benign\n(INFO level)"]
style A fill:#0066cc,stroke:#0066cc,color:#fff
style E fill:#ff8800,stroke:#ff8800,color:#fff
style F fill:#00cc44,stroke:#00cc44,color:#fff
style G fill:#ff4444,stroke:#ff4444,color:#fff
style H fill:#666,stroke:#666,color:#fff
```
**触发条件:** Wazuh 告警级别 >= 10
**平均响应时间:** 从检测到邮件发送 < 15 秒
**完整工作流文档:** [`automation-workflows/shuffle-lab1.md`](automation-workflows/shuffle-lab1.md)
## 性能结果
| 指标 | 结果 | 评级 |
|:-------|:-------|:-------|
| Snort 到 Wazuh 延迟 | 1-3 秒 | 极好 |
| Wazuh 到 Shuffle 延迟 | 2-5 秒 | 良好 |
| 端到端(从攻击到阻断) | **5-15 秒** | 极好 |
| VirusTotal API 响应 | 1-3 秒 | 免费层 |
| T-Pot 捕获率 | 100% | 极好 |
| 邮件发送 (SendGrid) | 3-10 秒 | 良好 |
| Dashboard 查询时间 | 1-2 秒 | 良好 |
### 已验证的攻击场景
| # | 攻击 | 工具 | IPS 响应 | IDS 告警 | SOAR 操作 | 状态 |
|:--|:-------|:-----|:-------------|:----------|:------------|:-------|
| 1 | 端口扫描 | `nmap -sS` | 30 个 SYN/5s 后阻断 | 规则 1000002 | 发送邮件 | 通过 |
| 2 | SSH 暴力破解 | `hydra` | 5 次尝试后阻断 | 规则 1000003 | 封禁 IP | 通过 |
| 3 | ICMP 扫描 | `ping -c` | 50 次/秒 后阻断 | 规则 1000001 | 记录日志 | 通过 |
| 4 | 恶意 IP 探测 | `curl` | 无 | Wazuh 告警 | VT 评分 > 0 - 发送邮件 | 通过 |
| 5 | 蜜罐 SSH | 对 T-Pot 执行 `ssh` | 无 | 规则 200002 | Dashboard 告警 | 通过 |
| 6 | FIM 变更 | Win 上编辑文件 | 无 | Sysmon EID 1 | Dashboard 告警 | 通过 |
## 安装指南
请按顺序遵循以下指南:
| 步骤 | 指南 | 时间 |
|:-----|:------|:-----|
| 0 | [外部账户设置](installation/00-accounts-setup.md) | 15 分钟 |
| 1 | [Kali 环境配置](installation/01-kali-setup.md) | 20 分钟 |
| 2 | [Snort IDS/IPS 配置](installation/02-snort-ids-ips.md) | 30 分钟 |
| 3 | [Kali 上的 Wazuh Agent](installation/03-wazuh-agent-kali.md) | 20 分钟 |
| 4 | [Windows Agent + Sysmon](installation/04-windows-agent-sysmon.md) | 25 分钟 |
| 5 | [T-Pot 蜜罐](installation/05-tpot-honeypot.md) | 60 分钟 |
| 6 | [Shuffle SOAR 工作流](installation/06-shuffle-soar.md) | 30 分钟 |
| 7 | [端到端验证](installation/07-verification.md) | 15 分钟 |
### 前置条件
- VMware Workstation Pro(任何近期版本)
- VirtualBox(最新版)
- 配置了 3 个网络适配器的 Kali Linux 虚拟机
- 宿主机最低 **16 GB RAM**(仅 T-Pot 就需要 8 GB)
## 截图与演示
SOC Mini-Lab — 集成安全运营中心
一个构建在虚拟化实验环境中的、完全集成的开源 SOC。
网络 IDS/IPS • SIEM 日志收集 • 蜜罐欺骗 • 自动化事件响应
5核心组件Wazuh • Snort • Shuffle • T-Pot • Sysmon |
<15s从攻击到阻断端到端自动化响应 |
3活跃 AgentKali + Windows + T-Pot |
6/6通过的测试100% 检测率 |
View Architecture Dashboard Screenshot
View Network Topology Dashboard
View Tools & Stack Dashboard
View Results & Performance Dashboard