Nonso-cybersec/soc-lab-project

GitHub: Nonso-cybersec/soc-lab-project

基于 Wazuh、Suricata 与 Active Directory 搭建的 SOC 家庭实验室,用于威胁检测、攻击模拟与自动化事件响应演练。

Stars: 0 | Forks: 0

# Wazuh SIEM SOC 监控实验室 (VirtualBox) ## 项目概述 本项目展示了一个完整的 SOC 环境,使用 Wazuh SIEM 监控 Windows 和 Linux 终端节点,检测安全事件,并使用 Kali Linux 模拟攻击者行为。 ## 目标 * 使用 Wazuh 部署集中式 SIEM * 监控 Windows 和 Linux 终端节点 * 使用 Kali Linux 生成安全事件 * 在 Wazuh dashboard 中分析告警和日志 * 模拟真实的 SOC 监控、日志分析和入侵检测场景 ## 实验架构 ### 虚拟机 | 系统 | 角色 | | ------------ | --------------------------------------- | | Ubuntu 24.04 | Wazuh Manager, Indexer, Dashboard | | Windows Server 2019 | 受监控终端节点 (Wazuh Agent) | | Kali Linux | 攻击机与受监控终端节点 | ### 网络配置 * VirtualBox NAT Network * 所有虚拟机连接到同一虚拟网络 * Wazuh Manager IP: 10.0.2.4 ## Wazuh 安装说明 ### Ubuntu Server 下载并执行了 Wazuh 安装助手: ``` curl -sO https://packages.wazuh.com/4.14/wazuh-install.sh sudo bash ./wazuh-install.sh -a ``` ### 遇到的挑战 * 现有的 Wazuh agent 与 manager 安装发生冲突 * 包移除脚本损坏 * Wazuh manager 启动超时 * API 连接问题 * VirtualBox 网络配置故障排除 ### 解决方案 * 移除了现有的 Wazuh agent * 使用 dpkg 和 apt 修复了包数据库 * 将虚拟机内存从 4 GB 增加到 6 GB * 重启了 Wazuh 服务 * 通过使用单个 NAT Network 适配器简化了网络连接 ## Agent 部署 ### Kali Linux Agent 安装并成功连接到 Wazuh Manager。 状态:Active ### Windows Agent 使用 Wazuh MSI 包进行安装。 Manager IP: ``` 10.0.2.4 ``` Service: ``` Start-Service WazuhSvc ``` 状态:Active ## 结果 成功部署: * Wazuh Manager * Wazuh Indexer * Wazuh Dashboard * Kali Agent * Windows Agent 所有 agent 均已成功连接并进行报告。 ## 展示的技能 * SIEM 部署 * 安全监控 * Linux 管理 * Windows 终端节点监控 * VirtualBox 联网 * Wazuh Agent 管理 * 故障排除与事件解决 * SOC 实验室设计 ## 未来增强计划 * Sysmon 集成 * Suricata 集成 * Nmap 检测用例 * 暴力破解攻击检测 * 自定义 Wazuh 规则 * 威胁狩猎演练 ### Wazuh Dashboard - 活动 Agents ![Wazuh Dashboard](https://raw.githubusercontent.com/Nonso-cybersec/soc-lab-project/main/images/wazuh.png) 此图显示 Windows 和 Kali agent 已成功连接到 Wazuh SIEM。 * Wazuh Dashboard * Agent 摘要 * Active Agents * 安全事件 * 实验架构图 ## 模拟的检测场景 - 端口扫描 (Kali → Windows) - 身份验证失败 (Windows) - 终端节点日志监控 (Kali & Windows) - Wazuh SIEM 中的安全事件关联 - SOC 攻击模拟:隐藏进程检测 ## 目标 本项目演示了如何使用 Wazuh rootcheck 监控在 Linux 终端节点上检测隐藏进程和类 rootkit 行为。 目标是模拟隐蔽技术并观察 SIEM 如何检测异常活动。 ## 实验环境 - Ubuntu Linux (已安装 Wazuh Agent) - Wazuh Manager (SIEM Dashboard) - Kali Linux (可选攻击虚拟机) ## 步骤 1:系统准备 (Ubuntu 终端节点) 切换到 root 并更新系统包: ``` sudo -i apt update ``` ## 检测结果 — 2026年6月10日 ### 触发告警 在加载 Diamorphine 并隐藏 rsyslogd (PID 812) 后, Wazuh rootcheck 在几分钟内检测到了隐藏进程。 ### 告警详情 - **Rule ID:** 521 - **Rule Level:** 11 (高危) - **MITRE ATT&CK:** T1014 — Rootkit - **Tactic:** Defense Evasion - **Detection Message:** 进程 '812' 对 /proc 隐藏。可能是内核级 rootkit。 - **Fired Times:** 4 ### Wazuh 如何进行检测 Wazuh rootcheck 独立扫描 /proc,并将内核报告的内容与实际运行的进程进行比较。 两者不匹配 = 隐藏进程 = rootkit 告警。 ### 关键要点 内核 rootkit 会对操作系统本身进行隐藏,但无法躲避执行独立带外验证的 SIEM。 这就是终端节点监控至关重要的原因——当系统在内核级遭到入侵时,操作系统是不可信的。 ### Wazuh Dashboard - 活动 Agents ![Wazuh Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/dc4b9583d1234110.png) ### Rootkit 检测告警 ![Rootkit Detection](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/51575b1ffe234115.png) ### 内核 Rootkit 日志 ![Kernel Rootkit Logs](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/e6b21a4045234121.png) ## Suricata IDS 与 Wazuh SIEM 集成 ### 为什么安装 Suricata 单凭 Wazuh 只能监控主机级别的活动——日志文件、进程、文件更改。但它无法查看原始网络流量。威胁行为者扫描我的网络、探测端口或发送恶意数据包,单靠 Wazuh 是无法察觉的。 Suricata 填补了这一空白。它位于网络接口上,检查进出机器的每一个数据包。Wazuh 和 Suricata 结合在一起,提供了完整的可见性: - Suricata 监控网络层 - Wazuh 监控主机层 没有盲区。 ### 安装与规则 在 Ubuntu (Wazuh Manager 主机) 上安装了 Suricata 7.0.3。 使用 suricata-update 来管理 Emerging Threats Open 规则集——包含 50,571 条规则,涵盖已知的攻击模式、恶意软件签名和可疑行为。 关键配置: - HOME_NET: 10.0.2.4 (Ubuntu — 受保护的资产) - EXTERNAL_NET: any (其他所有内容,包括 Kali) - Interface: enp0s3 - Alert log: /var/log/suricata/eve.json Wazuh 实时读取 eve.json——每一条 Suricata 告警都会立即显示在 Wazuh dashboard 中。 ### 攻击模拟 — Nmap 端口扫描 **我的操作:** 从 Kali Linux (10.0.2.15) 向 Ubuntu (10.0.2.4) 运行了 Nmap SYN 扫描: ``` sudo nmap -sS 10.0.2.4 ``` **Suricata 检测到的内容:** - ET SCAN Suspicious inbound to MySQL port 3306 - ET SCAN Suspicious inbound to MSSQL port 1433 - ET SCAN Suspicious inbound to PostgreSQL port 5432 - ET SCAN Suspicious inbound to Oracle SQL port 1521 - ET SCAN Potential VNC Scan 5800-5820 **为什么这是一个 IOC (入侵指标)** 数据库端口 (3306, 1433, 5432, 1521) 绝不应能从外部或不受信任的来源访问。在生产环境中,只有应用服务器与数据库通信——绝不会是终端用户或外部机器。 外部来源扫描这些端口表明: - 威胁行为者正在进行主动侦察 - 正在寻找凭据薄弱且暴露的数据库 - 正在为数据窃取或勒索软件做准备 这是 PTES 的情报收集阶段——攻击者在发动攻击前正在对目标进行映射。 看到这些告警的 SOC 分析师应该: 1. 识别源 IP (10.0.2.15 — Kali) 2. 检查该 IP 是否进行了其他可疑连接 3. 确定是否确实开放了任何数据库端口 4. 立即在防火墙上阻止该源 IP 5. 如果该 IP 是外部/未知的,则进行上报 ### 我学到了什么 - Suricata 可检测 Wazuh 无法察觉的网络级威胁 - eve.json 是 Suricata 的结构化告警日志——Wazuh 会原生读取它 - 数据库端口扫描是高可信度的 IOC——合法用户永远不会直接接触这些端口 - Suricata + Wazuh 组合创建了从网络到主机的完整检测流水线 ### 截图 ![Suricata Port Scanning Alert](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/26cd21ba24234126.png) ![Suricata Detection Detail](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/1ac09816b6234131.png) ## VirusTotal Active Response 集成 ### 为什么构建此功能 Wazuh 告警非常有用,但它们需要人工来响应。在真实的 SOC 中,分析师会被海量告警淹没。对已确认的威胁自动执行响应,可将响应时间从几分钟缩短至几毫秒。 该项目为我的实验室增加了自动化的威胁清除功能——这是迈向全面 SOAR 实施的第一步。 ### 工作原理 1. 一个文件被投放到了受监控的 Ubuntu 终端节点上 2. Wazuh syscheck (实时) 立即检测到了该文件 3. Wazuh 将文件哈希发送给 VirusTotal API 4. VirusTotal 对照其安全厂商进行检查 5. 如果是恶意的——active response 脚本将其删除 6. Dashboard 中触发告警,确认已删除 ### 测试 — EICAR 文件 使用行业标准的 EICAR 测试文件来验证流水线。EICAR 是一个无害文件,每个防病毒引擎都将其识别为测试威胁。 **结果:** - 65/68 个 VirusTotal 引擎将其标记为恶意 - 检测到文件路径:/root/eicar.com - Wazuh 触发:"VirusTotal Alert - 65 engines detected" - Active response 自动删除了该文件 - Dashboard 中出现 "File deleted" 确认信息 ### 这证明了什么 - 具备实时检测的文件完整性监控 (FIM) - 通过 VirusTotal API 进行威胁情报丰富 - 自动化的主动响应 (基础 SOAR 行为) - 从检测到响应的完整流水线 ### MITRE ATT&CK - T1204 — 用户执行 (恶意文件) - 响应:通过 active response 自动删除 ### 截图 ![VirusTotal EICAR Analysis](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/9e0c595c4b234136.png) ![Wazuh VirusTotal Integration](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/8fddeb01fe234145.png)
标签:Active Directory, Plaso, Suricata, Terraform 安全, Wazuh, x64dbg, 安全实验室, 现代安全运营