shateel/enterprise-soc-lab
GitHub: shateel/enterprise-soc-lab
一个基于 VMware 构建的完全虚拟化企业 SOC 实验室,提供从零开始的搭建指南,用于检测工程、威胁狩猎和事件响应练习。
Stars: 0 | Forks: 0
# 🏠 家庭 SOC 实验室 — 小型企业安全运营与检测工程
VMnet8 NAT
192.168.206.132/24] subgraph FW["🔥 pfSense Firewall / Router"] WAN MGMT_IF[MGMT — 192.168.5.1/24] USERS_IF[USERS — 192.168.10.1/24] SRV_IF[SERVERS — 192.168.20.1/24] ATK_IF[ATTACK — 192.168.30.1/24] SPAN_IF[MONITOR_SPAN — no IP] end WAN --> MGMT_IF WAN --> USERS_IF WAN --> SRV_IF WAN --> ATK_IF MGMT_IF --> MGMTNET["🗂️ Management Network
VMnet2 — 192.168.5.0/24"] USERS_IF --> USERSNET["🧑💻 Users Network
VMnet3 — 192.168.10.0/24"] SRV_IF --> SRVNET["🖥️ Servers Network
VMnet4 — 192.168.20.0/24"] ATK_IF --> ATKNET["💀 Attack Network
VMnet5 — 192.168.30.0/24"] SPAN_IF -. mirrored traffic .-> ZEEKNET["📡 SPAN Network
VMnet6 — monitoring only"] MGMTNET --> DC01[DC01-WS2022
AD DS + DNS
.10] MGMTNET --> WAZUH[Wazuh SIEM
.40] MGMTNET --> HIVE[TheHive
.50] MGMTNET --> SHUFFLE[Shuffle SOAR
.60] MGMTNET --> ZEEKMGMT[Zeek Mgmt IF
.70] USERSNET --> WIN10[WIN10-01
Domain Joined + Sysmon
.20] USERSNET --> FLARE[FLARE-VM
Malware Analysis
.21] SRVNET --> WEB01[WEB01-WS2019
Domain Joined + Sysmon
.30] SRVNET --> JUICE[Juice Shop
Docker · .35] SRVNET --> DVWA[DVWA
Docker · .36] SRVNET --> WAF[WAF01 · SafeLine
.70 / .71] ATKNET --> KALI[Kali SOC
.10] ATKNET --> RED[Red Team Box
.20] ATKNET --> NESSUS[Nessus
.30] ATKNET --> PARROT[Parrot OS
.60] ZEEKMGMT -. monitors .-> ZEEKNET ZEEKNET --> ZEEK[🦉 Zeek NSM
Promiscuous mode] ``` ## 🌐 网络网段 | VMnet | 网段 | 子网 | 网关 | 宿主机虚拟适配器 | DHCP | 用途 | |---|---|---|---|---|---|---| | **VMnet2** | Management | `192.168.5.0/24` | `192.168.5.1` | ✅ Enabled | ❌ Disabled | 域、SIEM、SOAR、案件管理 | | **VMnet3** | Users | `192.168.10.0/24` | `192.168.10.1` | ❌ Disabled | ❌ Disabled | 加入域的端点、恶意软件分析 | | **VMnet4** | Servers | `192.168.20.0/24` | `192.168.20.1` | ✅ Enabled | ❌ Disabled | Web 服务器、存在漏洞的 app、WAF | | **VMnet5** | Attack | `192.168.30.0/24` | `192.168.30.1` | ✅ Enabled | ❌ Disabled | 红队 / 攻击工具 | | **VMnet6** | SPAN (monitor) | *dummy /24, unused* | — | ❌ Disabled | ❌ Disabled | 镜像流量 → 仅限 Zeek | | **VMnet8** | NAT | `192.168.206.0/24` | — | — | — | 通过 pfSense WAN 的互联网出口 | ### pfSense 接口摘要 | 接口 | VMnet | IP 地址 | 角色 | |---|---|---|---| | WAN | VMnet8 | `192.168.206.132/24` | 面向 Internet (NAT) | | MGMT | VMnet2 | `192.168.5.1/24` | Management 网关 | | USERS | VMnet3 | `192.168.10.1/24` | Users 网关 | | SERVERS | VMnet4 | `192.168.20.1/24` | Servers 网关 | | ATTACK | VMnet5 | `192.168.30.1/24` | Attack 范围网关 | | MONITOR_SPAN | VMnet6 | *(无 IP)* | Zeek 的流量镜像源 | ## 🖥️ 系统清单 ### 🗂️ Management 网络 (`192.168.5.0/24`) | 主机 | IP | 角色 | |---|---|---| | **DC01-WS2022** | `192.168.5.10` | Active Directory Domain Services · DNS | | **Wazuh** | `192.168.5.40` | SIEM 平台 | | **TheHive** | `192.168.5.50` | 案件管理平台 | | **Shuffle** | `192.168.5.60` | SOAR 平台 | | **Zeek** | `192.168.5.70` | 网络安全监控 (管理 IF) | | 宿主机 PC | `192.168.5.254` | 物理宿主机适配器 (参见 [重 build 指南](#-rebuild-guide)) | ### 🧑💻 Users 网络 (`192.168.10.0/24`) | 主机 | IP | 加入域 | 备注 | |---|---|---|---| | **WIN10-01** | `192.168.10.20` | ✅ Yes | 分析师/用户工作站,已部署 Sysmon | | **FLARE-VM** | `192.168.10.21` | ❌ No | 恶意软件分析工作站,已阻断互联网 | **此网段的 DNS:** `192.168.5.10` (DC01) ### 🖥️ Servers 网络 (`192.168.20.0/24`) | 主机 | IP | 备注 | |---|---|---| | **WEB01-WS2019** | `192.168.20.30` | 加入域,已部署 Sysmon,DNS → `192.168.5.10` | | **Juice Shop** | `192.168.20.35` | Docker 化的包含漏洞的 Web app | | **DVWA** | `192.168.20.36` | Docker 化的包含漏洞的 Web app | | **WAF01 (SafeLine)** | `192.168.20.70` / `192.168.20.71` | 用于 Juice Shop / DVWA 的反向代理 + WAF | | 宿主机 PC | `192.168.20.254` | 物理宿主机适配器 | ### 💀 Attack 网络 (`192.168.30.0/24`) | 主机 | IP | 备注 | |---|---|---| | **Kali SOC** | `192.168.30.10` | 主要攻击者工作站 | | **Red Team** | `192.168.30.20` | 辅助攻防平台 | | **Nessus** | `192.168.30.30` | 漏洞扫描器 (`:8834`) | | **Parrot OS** | `192.168.30.60` | 额外的攻击工具 | | 宿主机 PC | `192.168.30.254` | 物理宿主机适配器 | 所有 Attack 网络主机使用:子网 `255.255.255.0` · 网关 `192.168.30.1` · DNS `8.8.8.8` / `8.8.4.4` ### 📡 SPAN / 监控网络 (VMnet6) | 端点 | 接口 | 备注 | |---|---|---| | pfSense | `MONITOR_SPAN` | 镜像生产流量 | | Zeek | `ens37` (无 IP, promiscuous) | 被动网络监控器 — 绝不接触路由流量 | ## 🔀 流量与检测流 ``` sequenceDiagram participant A as Kali / Parrot (Attack Net) participant PF as pfSense participant SUR as Suricata IDS participant ZK as Zeek (via SPAN) participant WAF as SafeLine WAF participant APP as Juice Shop / DVWA A->>PF: Traffic to Servers network PF->>SUR: Inspect (Users + Servers segments) PF-->>ZK: Mirror packets (VMnet6, promiscuous) PF->>WAF: Forward to reverse proxy WAF->>APP: Proxied request (upstream) WAF-->>PF: WAF logs SUR-->>PF: IDS alerts ZK-->>ZK: Passive NSM logging ``` **馈入流水线的检测源:** - 🔥 pfSense 防火墙日志 - 🚨 Suricata IDS 告警 - 🦉 Zeek 网络日志 - 🛡️ SafeLine WAF 日志 - 🖥️ Sysmon + Windows Event Logs (WIN10-01, WEB01-WS2019, DC01) **端到端 SIEM / IR / SOAR 流水线:** ``` flowchart LR PFS[pfSense Firewall Logs] --> WAZUH SUR[Suricata IDS] --> WAZUH ZEEK[Zeek NSM Logs] --> WAZUH WAF[SafeLine WAF Logs] --> WAZUH SYSMON[Sysmon / Windows Agents] --> WAZUH[🟡 Wazuh SIEM] WAZUH --> HIVE[🟠 TheHive Case Mgmt] HIVE --> SHUFFLE[🔵 Shuffle SOAR] SHUFFLE --> CORTEX[🟣 Cortex Observable Analysis] ``` ## 🧩 检测与响应技术栈 | 工具 | 用途 | |---|---| | **pfSense** | 防火墙 / 路由器 / 串联 IDS (Suricata) | | **Suricata** | 针对 Users 和 Servers 网段的入侵检测 | | **Zeek** | 被动、带外网络安全监控 | | **Wazuh** | SIEM — 日志聚合、关联与告警 | | **Sysmon** | Windows 主机遥测 (进程、网络、注册表) | | **TheHive** | 用于事件响应的案件管理 | | **Shuffle** | SOAR — 自动化 playbook 与工作流 | | **Cortex** | 为 TheHive 提供自动化的 observable/IOC 分析 | | **SafeLine WAF** | 反向代理 + Web 应用程序防火墙 | | **Nessus** | 跨所有网段的漏洞扫描 | ## 📦 包含的文件 | 文件 | 描述 | |---|---| | `SOC-Lab-VMware-Network-Settings.vmnet` | 已导出的 **VMware Virtual Network Editor** 配置文件,涵盖本实验中使用的所有 VMnet (VMnet2, 3, 4, 5, 6, 8) — 子网、DHCP 状态和宿主机适配器设置均已预先配置好,支持一步导入,免去手动设置。 | **导入网络设置文件:** 1. 完全关闭 **VMware Workstation** (退出应用程序;确保没有虚拟机正在运行)。 2. 备份现有的 VMware 网络配置 (Windows: `C:\ProgramData\VMware\`),以便在需要时回滚。 3. 在 VMware Workstation 中打开 **Edit → Virtual Network Editor** 并点击 **Change Settings** (需要管理员权限)。 4. 使用 **Import** (或者,对于没有 GUI 导入选项的版本,请用本仓库中提供的文件替换 `C:\ProgramData\VMware\` 下相关的 `vmnetnat.conf` / `netmap.conf` 文件)。 5. 重启 **VMware 网络服务** (或重启宿主机),使导入的 VMnet 生效。 6. 在启动任何实验虚拟机之前,请在 Virtual Network Editor 中确认每个 VMnet 是否与上面的 [网络网段](#-network-segments) 表格一致。 ## 🚀 重 build 指南 ### 前置条件 - VMware Workstation Pro (或兼容版本) - 以下对象的 ISO / 安装程序:pfSense, Windows Server 2022, Windows Server 2019, Windows 10, Kali Linux, Parrot OS, FLARE-VM 基础镜像, Wazuh, TheHive, Shuffle, Cortex, Zeek, Nessus, SafeLine WAF - 一台拥有足够 RAM/CPU/磁盘空间以运行 12 个以上并发虚拟机的宿主机 (建议 16+ vCPU / 32+ GB RAM) ### 第 1 步 — 导入 (或手动创建) 虚拟网络 最快途径:按照 [包含的文件](#-included-files) 中的说明导入 `SOC-Lab-VMware-Network-Settings.vmnet`。 手动途径 — 在 **VMware Workstation → Edit → Virtual Network Editor** 中,创建以下**仅主机模式**网络: | VMnet | 子网 | 宿主机虚拟适配器 | DHCP | |---|---|---|---| | VMnet | `192.168.5.0/24` | Enabled | Disabled | | VMnet3 | `192.168.10.0/24` | Disabled | Disabled | | VMnet4 | `192.168.20.0/24` | Enabled | Disabled | | VMnet5 | `192.168.30.0/24` | Enabled | Disabled | | VMnet6 | *(SPAN — 无路由流量)* | Disabled | Disabled | | VMnet8 | NAT (默认) | — | — | ### 第 2 步 — 配置物理宿主机适配器 在**物理宿主机**上:按 `Win + R` → 输入 `ncpa.cpl` → 回车。右键点击每个 VMware 虚拟适配器 → **Properties** → **IPv4** → 设置: | 适配器 | IP 地址 | 子网掩码 | 网关 | DNS | |---|---|---|---|---| | VMnet2 (Management) | `192.168.5.254` | `255.255.255.0` | *(留空)* | *(留空)* | | VMnet4 (Servers) | `192.168.20.254` | `255.255.255.0` | *(留空)* | *(留空)* | | VMnet5 (Attack) | `192.168.30.254` | `255.255.255.0` | *(留空)* | *(留空)* | ### 第 3 步 — 部署 pfSense 1. 按照以下顺序连接 pfSense 的虚拟网卡:**WAN → VMnet8**, **MGMT → VMnet2**, **USERS → VMnet3**, **SERVERS → VMnet4**, **ATTACK → VMnet5**, **MONITOR_SPAN → VMnet6**。 2. 按照上面的 [pfSense 接口摘要](#-network-segments) 表分配接口 IP。 3. 为每个网段创建防火墙规则 (区域之间默认拒绝;仅允许您的场景所需的内容)。 4. 安装并启用 **Suricata** 软件包,绑定到 Users 和 Servers 接口。 5. 配置从 Servers + Users 接口到 `MONITOR_SPAN` 接口的**端口镜像 / SPAN**,以便 Zeek 能够被动地观察流量。 ### 第 4 步 — 部署 Management 网段 1. **DC01-WS2022** (`192.168.5.10`) — 提升为 Domain Controller,配置 DNS。 2. **Zeek** (`192.168.5.70` mgmt IP) — 将第二块网卡以**混杂模式**连接到 VMnet6 (该接口不需要 IP);将其指向镜像的 SPAN 流量。 3. **Wazuh** (`192.168.5.40`) — 按照 Wazuh 官方文档进行安装,并加入 Management 网络。 4. **TheHive** (`192.168.5.50`) 和 **Cortex** — 安装并将 Cortex 连接到 TheHive,以进行自动化的 observable 分析。 5. **Shuffle** (`192.168.5.60`) — 安装并连接 webhook/应用程序,以便与 Wazuh 和 TheHive 集成。 ### 第 5 步 — 部署 Users 网段 - **WIN10-01** (`192.168.10.20`) — 加入域,将 DNS 指向 DC01,安装 **Wazuh agent** 和 **Sysmon** (使用面向检测的配置,例如 SwiftOnSecurity 的配置)。 - **FLARE-VM** (`192.168.10.21`) — **不要**加入域;出于恶意软件安全考虑,保持禁用/限制互联网访问。 ### 第 6 步 — 部署 Servers 网段 - **WEB01-WS2019** (`192.168.20.30`) — 加入域,安装 **Wazuh agent** 和 **Sysmon**。 - 部署 **Juice Shop** 和 **DVWA** 容器 (参见 [漏洞应用程序部署](#-vulnerable-application-deployment))。 - 部署 **WAF01** 并配置 SafeLine (参见 [WAF 配置](#-waf-configuration))。 ### 第 7 步 — 部署 Attack 网段 - **Kali SOC** (`192.168.30.10`), **Red Team** (`192.168.30.20`), **Parrot** (`192.168.30.60`) — 标准攻击工具集。 - **Nessus** (`192.168.30.30`) — 按照供应商文档进行安装,在 `:8834` 暴露端口;针对 Users 和 Servers 网段运行经过身份验证/未经身份验证的扫描。 所有 Attack 网络主机:子网 `255.255.255.0` · 网关 `192.168.30.1` · DNS `8.8.8.8` (备用 `8.8.4.4`)。 ### 第 8 步 — 接入日志转发 - 将 **pfSense** 防火墙/Suricata 日志转发到 → **Wazuh** (syslog 或 Filebeat)。 - 将 **Zeek** 日志转发到 → **Wazuh** (Filebeat 模块或 syslog 输出)。 - 将 **SafeLine WAF** 日志转发到 → **Wazuh**。 - 确认 **Wazuh → TheHive** 的告警转案件自动化,以及 **Wazuh/TheHive → Shuffle** 的 playbook 触发器处于激活状态。 ## 🐳 漏洞应用程序部署 这两个包含漏洞的 Web 应用程序都在 **WEB01 / Servers 网络** 上作为 Docker 容器运行。 **OWASP Juice Shop** (`192.168.20.35`): ``` sudo docker run -d --name juiceshop --restart unless-stopped -p 80:3000 bkimminich/juice-shop ``` **DVWA** (`192.168.20.36`): ``` sudo docker run -d --name dvwa -p 80:80 --restart unless-stopped vulnerables/web-dvwa ``` ## 🔐 WAF 配置 **WAF01** 在 Ubuntu Server 上运行 **SafeLine WAF**,作为位于两个包含漏洞的应用程序之前的反向代理。 | 设置 | 值 | |---|---| | 主 IP (Juice Shop) | `192.168.20.70` | | 次 IP (DVWA) | `192.168.20.71` | | 网关 | `192.168.20.1` | | DNS | `8.8.8.8`, `8.8.4.4` | | 管理 UI | `https://192.168.20.70:9443` | ### 反向代理应用程序 | App | 前端 IP | 端口 | 证书 | 上游 | |---|---|---|---|---| | Juice Shop | `192.168.20.70` | 80, 443 | 实验室通配符证书 | `http://192.168.20.35` | | DVWA | `192.168.20.71` | 80, 443 | 实验室通配符证书 | `http://192.168.20.36` | ## ✅ 验证检测流水线 一旦部署了上述所有组件,请确认整个链路能够端到端正常工作: 1. 从 **Kali/Parrot** 向 **Servers** 网络上的目标生成流量 (例如,针对 Juice Shop/DVWA 进行 Nmap 扫描或 Web 攻击)。 2. 确认事件按顺序可见于:**pfSense 日志** → **Suricata 告警** → **Zeek 日志** → **SafeLine WAF 日志**。 3. 确认同一事件 (或其在目标主机上对应的 Sysmon/agent 记录) 已进入 **Wazuh**。 4. 确认根据 Wazuh 告警**在 TheHive 中创建了案件**。 5. 确认 **Shuffle** 接收到该案件/告警并执行了配置的 playbook。 6. 确认 **Cortex** 针对附加到该案件的任何 observables 返回分析器结果。 如果所有六项检查都通过,则说明检测到响应的流水线已完全正常运行。 ## 🔒 安全声明 本仓库记录了一个**完全独立于生产网络运行的实验室环境,最好处于离线状态或受 NAT 限制与互联网隔离**。在部署或发布您自己的版本之前: - **切勿重用**在任何仪表板开箱即用的安装程序中显示的示例/默认凭据 —— 为每个服务 (Wazuh, TheHive, Shuffle, SafeLine, Nessus, AD 等) 设置唯一的强密码,并使其远离版本控制。 - **切勿将实验室管理接口** (SafeLine `:9443`, Nessus `:8834`, Wazuh dashboard 等) 暴露在公共互联网上。 - **FLARE-VM 和任何恶意软件样本**应始终保留在隔离的、不连接互联网的网段中。 - 本文档中的 IP 方案 (`192.168.x.0/24`) 用于私有的仅主机模式实验室 —— 应将其视为模板,而非生产设计。 - 如果您 fork 了这个仓库,请为任何导出的虚拟机配置、凭据或可能包含机密的 `.ova`/`.vmx` 文件添加 `.gitignore`。 ## 📄 许可证 本项目基于 [MIT 许可证](LICENSE) 授权 — 请随意 fork、改编并以此构建您自己的 SOC 实验室。





**一个完全虚拟化、分段的 SOC 实验室,模拟小型企业网络构建 —— 基于 VMware Workstation,并使用了 pfSense、Suricata、Zeek、Wazuh、TheHive、Shuffle,以及位于 WAF 之后包含漏洞的 Web 应用程序靶场。**
本仓库是一份完整的、循序渐进的指南,用于从零开始重建整个实验室,其中包括所使用的精确 VMware 网络配置。
## 📖 目录
- [概述](#-overview)
- [架构](#-architecture)
- [网络网段](#-network-segments)
- [系统清单](#-system-inventory)
- [流量与检测流](#-traffic--detection-flow)
- [检测与响应技术栈](#-detection--response-stack)
- [📦 包含的文件](#-included-files)
- [🚀 重 build 指南](#-rebuild-guide)
- [漏洞应用程序部署](#-vulnerable-application-deployment)
- [WAF 配置](#-waf-configuration)
- [验证检测流水线](#-verifying-the-detection-pipeline)
- [安全声明](#-security-notice)
- [许可证](#-license)
## 🧭 概述
本实验室模拟了一个小型企业网络 —— 划分为**管理、用户、服务器和攻击工具**的分段区域,所有流量均通过中心的 **pfSense** 防火墙/路由器进行路由。流量由 **Suricata** 进行串联检测,并被带外镜像到 **Zeek** 以进行网络安全监控。存在漏洞的 Web 应用程序位于 **SafeLine WAF** 反向代理之后,所有检测源都会输入到 **Wazuh → TheHive → Shuffle** 的 SIEM/案件管理/SOAR 流水线中,同时在 Windows 端点上部署了 **Sysmon** 以提供主机级遥测。
此构建用于练习:
- 🔍 网络安全监控与日志分析
- 🚨 SIEM 告警与关联 (Wazuh)
- 🧑💻 案件管理与事件响应 (TheHive)
- 🤖 安全自动化与编排 (Shuffle / SOAR)
- 🕸️ Web 应用程序攻击与防御 (DVWA, Juice Shop, WAF)
- 🦠 恶意软件分析 (FLARE-VM)
- 🩹 漏洞扫描 (Nessus)
- 🖥️ 主机级遥测 (Sysmon + Windows Event Logs)
## 🏗️ 架构
所有虚拟机均运行在 **VMware Workstation** 上,内部网段使用**仅主机模式网络**,互联网出口使用 **NAT**。每个网段都终止于 **pfSense** 虚拟防火墙,由其负责在不同区域之间路由和检查流量。
```
flowchart TB
INET([🌐 Internet]) --> WAN[pfSense WANVMnet8 NAT
192.168.206.132/24] subgraph FW["🔥 pfSense Firewall / Router"] WAN MGMT_IF[MGMT — 192.168.5.1/24] USERS_IF[USERS — 192.168.10.1/24] SRV_IF[SERVERS — 192.168.20.1/24] ATK_IF[ATTACK — 192.168.30.1/24] SPAN_IF[MONITOR_SPAN — no IP] end WAN --> MGMT_IF WAN --> USERS_IF WAN --> SRV_IF WAN --> ATK_IF MGMT_IF --> MGMTNET["🗂️ Management Network
VMnet2 — 192.168.5.0/24"] USERS_IF --> USERSNET["🧑💻 Users Network
VMnet3 — 192.168.10.0/24"] SRV_IF --> SRVNET["🖥️ Servers Network
VMnet4 — 192.168.20.0/24"] ATK_IF --> ATKNET["💀 Attack Network
VMnet5 — 192.168.30.0/24"] SPAN_IF -. mirrored traffic .-> ZEEKNET["📡 SPAN Network
VMnet6 — monitoring only"] MGMTNET --> DC01[DC01-WS2022
AD DS + DNS
.10] MGMTNET --> WAZUH[Wazuh SIEM
.40] MGMTNET --> HIVE[TheHive
.50] MGMTNET --> SHUFFLE[Shuffle SOAR
.60] MGMTNET --> ZEEKMGMT[Zeek Mgmt IF
.70] USERSNET --> WIN10[WIN10-01
Domain Joined + Sysmon
.20] USERSNET --> FLARE[FLARE-VM
Malware Analysis
.21] SRVNET --> WEB01[WEB01-WS2019
Domain Joined + Sysmon
.30] SRVNET --> JUICE[Juice Shop
Docker · .35] SRVNET --> DVWA[DVWA
Docker · .36] SRVNET --> WAF[WAF01 · SafeLine
.70 / .71] ATKNET --> KALI[Kali SOC
.10] ATKNET --> RED[Red Team Box
.20] ATKNET --> NESSUS[Nessus
.30] ATKNET --> PARROT[Parrot OS
.60] ZEEKMGMT -. monitors .-> ZEEKNET ZEEKNET --> ZEEK[🦉 Zeek NSM
Promiscuous mode] ``` ## 🌐 网络网段 | VMnet | 网段 | 子网 | 网关 | 宿主机虚拟适配器 | DHCP | 用途 | |---|---|---|---|---|---|---| | **VMnet2** | Management | `192.168.5.0/24` | `192.168.5.1` | ✅ Enabled | ❌ Disabled | 域、SIEM、SOAR、案件管理 | | **VMnet3** | Users | `192.168.10.0/24` | `192.168.10.1` | ❌ Disabled | ❌ Disabled | 加入域的端点、恶意软件分析 | | **VMnet4** | Servers | `192.168.20.0/24` | `192.168.20.1` | ✅ Enabled | ❌ Disabled | Web 服务器、存在漏洞的 app、WAF | | **VMnet5** | Attack | `192.168.30.0/24` | `192.168.30.1` | ✅ Enabled | ❌ Disabled | 红队 / 攻击工具 | | **VMnet6** | SPAN (monitor) | *dummy /24, unused* | — | ❌ Disabled | ❌ Disabled | 镜像流量 → 仅限 Zeek | | **VMnet8** | NAT | `192.168.206.0/24` | — | — | — | 通过 pfSense WAN 的互联网出口 | ### pfSense 接口摘要 | 接口 | VMnet | IP 地址 | 角色 | |---|---|---|---| | WAN | VMnet8 | `192.168.206.132/24` | 面向 Internet (NAT) | | MGMT | VMnet2 | `192.168.5.1/24` | Management 网关 | | USERS | VMnet3 | `192.168.10.1/24` | Users 网关 | | SERVERS | VMnet4 | `192.168.20.1/24` | Servers 网关 | | ATTACK | VMnet5 | `192.168.30.1/24` | Attack 范围网关 | | MONITOR_SPAN | VMnet6 | *(无 IP)* | Zeek 的流量镜像源 | ## 🖥️ 系统清单 ### 🗂️ Management 网络 (`192.168.5.0/24`) | 主机 | IP | 角色 | |---|---|---| | **DC01-WS2022** | `192.168.5.10` | Active Directory Domain Services · DNS | | **Wazuh** | `192.168.5.40` | SIEM 平台 | | **TheHive** | `192.168.5.50` | 案件管理平台 | | **Shuffle** | `192.168.5.60` | SOAR 平台 | | **Zeek** | `192.168.5.70` | 网络安全监控 (管理 IF) | | 宿主机 PC | `192.168.5.254` | 物理宿主机适配器 (参见 [重 build 指南](#-rebuild-guide)) | ### 🧑💻 Users 网络 (`192.168.10.0/24`) | 主机 | IP | 加入域 | 备注 | |---|---|---|---| | **WIN10-01** | `192.168.10.20` | ✅ Yes | 分析师/用户工作站,已部署 Sysmon | | **FLARE-VM** | `192.168.10.21` | ❌ No | 恶意软件分析工作站,已阻断互联网 | **此网段的 DNS:** `192.168.5.10` (DC01) ### 🖥️ Servers 网络 (`192.168.20.0/24`) | 主机 | IP | 备注 | |---|---|---| | **WEB01-WS2019** | `192.168.20.30` | 加入域,已部署 Sysmon,DNS → `192.168.5.10` | | **Juice Shop** | `192.168.20.35` | Docker 化的包含漏洞的 Web app | | **DVWA** | `192.168.20.36` | Docker 化的包含漏洞的 Web app | | **WAF01 (SafeLine)** | `192.168.20.70` / `192.168.20.71` | 用于 Juice Shop / DVWA 的反向代理 + WAF | | 宿主机 PC | `192.168.20.254` | 物理宿主机适配器 | ### 💀 Attack 网络 (`192.168.30.0/24`) | 主机 | IP | 备注 | |---|---|---| | **Kali SOC** | `192.168.30.10` | 主要攻击者工作站 | | **Red Team** | `192.168.30.20` | 辅助攻防平台 | | **Nessus** | `192.168.30.30` | 漏洞扫描器 (`:8834`) | | **Parrot OS** | `192.168.30.60` | 额外的攻击工具 | | 宿主机 PC | `192.168.30.254` | 物理宿主机适配器 | 所有 Attack 网络主机使用:子网 `255.255.255.0` · 网关 `192.168.30.1` · DNS `8.8.8.8` / `8.8.4.4` ### 📡 SPAN / 监控网络 (VMnet6) | 端点 | 接口 | 备注 | |---|---|---| | pfSense | `MONITOR_SPAN` | 镜像生产流量 | | Zeek | `ens37` (无 IP, promiscuous) | 被动网络监控器 — 绝不接触路由流量 | ## 🔀 流量与检测流 ``` sequenceDiagram participant A as Kali / Parrot (Attack Net) participant PF as pfSense participant SUR as Suricata IDS participant ZK as Zeek (via SPAN) participant WAF as SafeLine WAF participant APP as Juice Shop / DVWA A->>PF: Traffic to Servers network PF->>SUR: Inspect (Users + Servers segments) PF-->>ZK: Mirror packets (VMnet6, promiscuous) PF->>WAF: Forward to reverse proxy WAF->>APP: Proxied request (upstream) WAF-->>PF: WAF logs SUR-->>PF: IDS alerts ZK-->>ZK: Passive NSM logging ``` **馈入流水线的检测源:** - 🔥 pfSense 防火墙日志 - 🚨 Suricata IDS 告警 - 🦉 Zeek 网络日志 - 🛡️ SafeLine WAF 日志 - 🖥️ Sysmon + Windows Event Logs (WIN10-01, WEB01-WS2019, DC01) **端到端 SIEM / IR / SOAR 流水线:** ``` flowchart LR PFS[pfSense Firewall Logs] --> WAZUH SUR[Suricata IDS] --> WAZUH ZEEK[Zeek NSM Logs] --> WAZUH WAF[SafeLine WAF Logs] --> WAZUH SYSMON[Sysmon / Windows Agents] --> WAZUH[🟡 Wazuh SIEM] WAZUH --> HIVE[🟠 TheHive Case Mgmt] HIVE --> SHUFFLE[🔵 Shuffle SOAR] SHUFFLE --> CORTEX[🟣 Cortex Observable Analysis] ``` ## 🧩 检测与响应技术栈 | 工具 | 用途 | |---|---| | **pfSense** | 防火墙 / 路由器 / 串联 IDS (Suricata) | | **Suricata** | 针对 Users 和 Servers 网段的入侵检测 | | **Zeek** | 被动、带外网络安全监控 | | **Wazuh** | SIEM — 日志聚合、关联与告警 | | **Sysmon** | Windows 主机遥测 (进程、网络、注册表) | | **TheHive** | 用于事件响应的案件管理 | | **Shuffle** | SOAR — 自动化 playbook 与工作流 | | **Cortex** | 为 TheHive 提供自动化的 observable/IOC 分析 | | **SafeLine WAF** | 反向代理 + Web 应用程序防火墙 | | **Nessus** | 跨所有网段的漏洞扫描 | ## 📦 包含的文件 | 文件 | 描述 | |---|---| | `SOC-Lab-VMware-Network-Settings.vmnet` | 已导出的 **VMware Virtual Network Editor** 配置文件,涵盖本实验中使用的所有 VMnet (VMnet2, 3, 4, 5, 6, 8) — 子网、DHCP 状态和宿主机适配器设置均已预先配置好,支持一步导入,免去手动设置。 | **导入网络设置文件:** 1. 完全关闭 **VMware Workstation** (退出应用程序;确保没有虚拟机正在运行)。 2. 备份现有的 VMware 网络配置 (Windows: `C:\ProgramData\VMware\`),以便在需要时回滚。 3. 在 VMware Workstation 中打开 **Edit → Virtual Network Editor** 并点击 **Change Settings** (需要管理员权限)。 4. 使用 **Import** (或者,对于没有 GUI 导入选项的版本,请用本仓库中提供的文件替换 `C:\ProgramData\VMware\` 下相关的 `vmnetnat.conf` / `netmap.conf` 文件)。 5. 重启 **VMware 网络服务** (或重启宿主机),使导入的 VMnet 生效。 6. 在启动任何实验虚拟机之前,请在 Virtual Network Editor 中确认每个 VMnet 是否与上面的 [网络网段](#-network-segments) 表格一致。 ## 🚀 重 build 指南 ### 前置条件 - VMware Workstation Pro (或兼容版本) - 以下对象的 ISO / 安装程序:pfSense, Windows Server 2022, Windows Server 2019, Windows 10, Kali Linux, Parrot OS, FLARE-VM 基础镜像, Wazuh, TheHive, Shuffle, Cortex, Zeek, Nessus, SafeLine WAF - 一台拥有足够 RAM/CPU/磁盘空间以运行 12 个以上并发虚拟机的宿主机 (建议 16+ vCPU / 32+ GB RAM) ### 第 1 步 — 导入 (或手动创建) 虚拟网络 最快途径:按照 [包含的文件](#-included-files) 中的说明导入 `SOC-Lab-VMware-Network-Settings.vmnet`。 手动途径 — 在 **VMware Workstation → Edit → Virtual Network Editor** 中,创建以下**仅主机模式**网络: | VMnet | 子网 | 宿主机虚拟适配器 | DHCP | |---|---|---|---| | VMnet | `192.168.5.0/24` | Enabled | Disabled | | VMnet3 | `192.168.10.0/24` | Disabled | Disabled | | VMnet4 | `192.168.20.0/24` | Enabled | Disabled | | VMnet5 | `192.168.30.0/24` | Enabled | Disabled | | VMnet6 | *(SPAN — 无路由流量)* | Disabled | Disabled | | VMnet8 | NAT (默认) | — | — | ### 第 2 步 — 配置物理宿主机适配器 在**物理宿主机**上:按 `Win + R` → 输入 `ncpa.cpl` → 回车。右键点击每个 VMware 虚拟适配器 → **Properties** → **IPv4** → 设置: | 适配器 | IP 地址 | 子网掩码 | 网关 | DNS | |---|---|---|---|---| | VMnet2 (Management) | `192.168.5.254` | `255.255.255.0` | *(留空)* | *(留空)* | | VMnet4 (Servers) | `192.168.20.254` | `255.255.255.0` | *(留空)* | *(留空)* | | VMnet5 (Attack) | `192.168.30.254` | `255.255.255.0` | *(留空)* | *(留空)* | ### 第 3 步 — 部署 pfSense 1. 按照以下顺序连接 pfSense 的虚拟网卡:**WAN → VMnet8**, **MGMT → VMnet2**, **USERS → VMnet3**, **SERVERS → VMnet4**, **ATTACK → VMnet5**, **MONITOR_SPAN → VMnet6**。 2. 按照上面的 [pfSense 接口摘要](#-network-segments) 表分配接口 IP。 3. 为每个网段创建防火墙规则 (区域之间默认拒绝;仅允许您的场景所需的内容)。 4. 安装并启用 **Suricata** 软件包,绑定到 Users 和 Servers 接口。 5. 配置从 Servers + Users 接口到 `MONITOR_SPAN` 接口的**端口镜像 / SPAN**,以便 Zeek 能够被动地观察流量。 ### 第 4 步 — 部署 Management 网段 1. **DC01-WS2022** (`192.168.5.10`) — 提升为 Domain Controller,配置 DNS。 2. **Zeek** (`192.168.5.70` mgmt IP) — 将第二块网卡以**混杂模式**连接到 VMnet6 (该接口不需要 IP);将其指向镜像的 SPAN 流量。 3. **Wazuh** (`192.168.5.40`) — 按照 Wazuh 官方文档进行安装,并加入 Management 网络。 4. **TheHive** (`192.168.5.50`) 和 **Cortex** — 安装并将 Cortex 连接到 TheHive,以进行自动化的 observable 分析。 5. **Shuffle** (`192.168.5.60`) — 安装并连接 webhook/应用程序,以便与 Wazuh 和 TheHive 集成。 ### 第 5 步 — 部署 Users 网段 - **WIN10-01** (`192.168.10.20`) — 加入域,将 DNS 指向 DC01,安装 **Wazuh agent** 和 **Sysmon** (使用面向检测的配置,例如 SwiftOnSecurity 的配置)。 - **FLARE-VM** (`192.168.10.21`) — **不要**加入域;出于恶意软件安全考虑,保持禁用/限制互联网访问。 ### 第 6 步 — 部署 Servers 网段 - **WEB01-WS2019** (`192.168.20.30`) — 加入域,安装 **Wazuh agent** 和 **Sysmon**。 - 部署 **Juice Shop** 和 **DVWA** 容器 (参见 [漏洞应用程序部署](#-vulnerable-application-deployment))。 - 部署 **WAF01** 并配置 SafeLine (参见 [WAF 配置](#-waf-configuration))。 ### 第 7 步 — 部署 Attack 网段 - **Kali SOC** (`192.168.30.10`), **Red Team** (`192.168.30.20`), **Parrot** (`192.168.30.60`) — 标准攻击工具集。 - **Nessus** (`192.168.30.30`) — 按照供应商文档进行安装,在 `:8834` 暴露端口;针对 Users 和 Servers 网段运行经过身份验证/未经身份验证的扫描。 所有 Attack 网络主机:子网 `255.255.255.0` · 网关 `192.168.30.1` · DNS `8.8.8.8` (备用 `8.8.4.4`)。 ### 第 8 步 — 接入日志转发 - 将 **pfSense** 防火墙/Suricata 日志转发到 → **Wazuh** (syslog 或 Filebeat)。 - 将 **Zeek** 日志转发到 → **Wazuh** (Filebeat 模块或 syslog 输出)。 - 将 **SafeLine WAF** 日志转发到 → **Wazuh**。 - 确认 **Wazuh → TheHive** 的告警转案件自动化,以及 **Wazuh/TheHive → Shuffle** 的 playbook 触发器处于激活状态。 ## 🐳 漏洞应用程序部署 这两个包含漏洞的 Web 应用程序都在 **WEB01 / Servers 网络** 上作为 Docker 容器运行。 **OWASP Juice Shop** (`192.168.20.35`): ``` sudo docker run -d --name juiceshop --restart unless-stopped -p 80:3000 bkimminich/juice-shop ``` **DVWA** (`192.168.20.36`): ``` sudo docker run -d --name dvwa -p 80:80 --restart unless-stopped vulnerables/web-dvwa ``` ## 🔐 WAF 配置 **WAF01** 在 Ubuntu Server 上运行 **SafeLine WAF**,作为位于两个包含漏洞的应用程序之前的反向代理。 | 设置 | 值 | |---|---| | 主 IP (Juice Shop) | `192.168.20.70` | | 次 IP (DVWA) | `192.168.20.71` | | 网关 | `192.168.20.1` | | DNS | `8.8.8.8`, `8.8.4.4` | | 管理 UI | `https://192.168.20.70:9443` | ### 反向代理应用程序 | App | 前端 IP | 端口 | 证书 | 上游 | |---|---|---|---|---| | Juice Shop | `192.168.20.70` | 80, 443 | 实验室通配符证书 | `http://192.168.20.35` | | DVWA | `192.168.20.71` | 80, 443 | 实验室通配符证书 | `http://192.168.20.36` | ## ✅ 验证检测流水线 一旦部署了上述所有组件,请确认整个链路能够端到端正常工作: 1. 从 **Kali/Parrot** 向 **Servers** 网络上的目标生成流量 (例如,针对 Juice Shop/DVWA 进行 Nmap 扫描或 Web 攻击)。 2. 确认事件按顺序可见于:**pfSense 日志** → **Suricata 告警** → **Zeek 日志** → **SafeLine WAF 日志**。 3. 确认同一事件 (或其在目标主机上对应的 Sysmon/agent 记录) 已进入 **Wazuh**。 4. 确认根据 Wazuh 告警**在 TheHive 中创建了案件**。 5. 确认 **Shuffle** 接收到该案件/告警并执行了配置的 playbook。 6. 确认 **Cortex** 针对附加到该案件的任何 observables 返回分析器结果。 如果所有六项检查都通过,则说明检测到响应的流水线已完全正常运行。 ## 🔒 安全声明 本仓库记录了一个**完全独立于生产网络运行的实验室环境,最好处于离线状态或受 NAT 限制与互联网隔离**。在部署或发布您自己的版本之前: - **切勿重用**在任何仪表板开箱即用的安装程序中显示的示例/默认凭据 —— 为每个服务 (Wazuh, TheHive, Shuffle, SafeLine, Nessus, AD 等) 设置唯一的强密码,并使其远离版本控制。 - **切勿将实验室管理接口** (SafeLine `:9443`, Nessus `:8834`, Wazuh dashboard 等) 暴露在公共互联网上。 - **FLARE-VM 和任何恶意软件样本**应始终保留在隔离的、不连接互联网的网段中。 - 本文档中的 IP 方案 (`192.168.x.0/24`) 用于私有的仅主机模式实验室 —— 应将其视为模板,而非生产设计。 - 如果您 fork 了这个仓库,请为任何导出的虚拟机配置、凭据或可能包含机密的 `.ova`/`.vmx` 文件添加 `.gitignore`。 ## 📄 许可证 本项目基于 [MIT 许可证](LICENSE) 授权 — 请随意 fork、改编并以此构建您自己的 SOC 实验室。
**⭐ 如果这帮助您构建了自己的 SOC 实验室,欢迎给本仓库点个 Star!**
标签:Metaprompt, SOAR, 安全运营, 实验室环境, 库, 应急响应, 扫描框架, 请求拦截