Orevic21/wazuh-home-soc

GitHub: Orevic21/wazuh-home-soc

一个基于 Wazuh + Suricata 的家庭 SOC 实验室,通过检测真实漏洞利用和暴力破解攻击来展示检测工程技能,并用自定义规则弥补默认 IDS 签名的盲区。

Stars: 0 | Forks: 0

# 家庭 SOC:Wazuh + Suricata 威胁检测实验室 一个自建的 Security Operations Center(安全运营中心)实验室,旨在使用 Wazuh 作为 SIEM、Suricata 作为基于网络的 IDS 传感器,检测针对故意暴露的漏洞靶机的真实攻击技术。其构建目的是为了展示检测工程技能——而不仅仅是工具部署。 ## 概述 现代 SOC 的工作不仅仅是“安装一个 SIEM 然后盯着仪表盘”。它还需要理解检测盲区存在的*原因*,并知道如何弥补它。这个实验室模拟了一个小型的、真实的环境:一台攻击机,一台没有原生日志支持且充满漏洞的靶机,以及一套必须利用网络层可见性而非主机 agent 来应对这一限制的 SIEM 技术栈。 **核心架构决策:** 靶机(Metasploitable 2)运行的操作系统过于陈旧,无法支持现代的 Wazuh agent,甚至无法运行具备互联网访问权限的 syslog 转发器。该项目并没有将此视为阻碍,而是转向通过 Suricata 实现完全基于网络的检测——对于无法直接安装监控工具的传统、IoT(物联网)或 OT(运营技术)资产来说,这是一种非常贴合现实的模式。 ## 架构 ``` ┌─────────────┐ attacks ┌──────────────────────┐ │ Kali VM │ ────────────────────────▶│ Metasploitable 2 │ │ (attacker + │ │ (unmonitored victim, │ │ Suricata │ │ no agent, no │ │ sensor + │ │ internet access) │ │ Wazuh agent│ └──────────────────────┘ └──────┬──────┘ │ eve.json (Suricata alerts/events) │ forwarded via Wazuh agent ▼ ┌─────────────────────┐ │ Wazuh Manager │ │ (Amazon Linux 2023)│ │ Indexer + Dashboard│ └─────────────────────┘ ``` 所有三台虚拟机均运行在 VirtualBox 上,通过 NAT 网络连接在 `192.168.0.0/24` 网段。 ![Agents 概览](https://static.pigsec.cn/wp-content/uploads/repos/cas/32/3211b0dc180adf3ced616d2f84875e551cd9a92e99b707e80a0829aac34dccb6.png) | 组件 | 角色 | 操作系统 | |---|---|---| | Wazuh Manager | SIEM:indexer、dashboard、规则引擎 | Amazon Linux 2023 | | Kali Linux | 攻击机 + Suricata 网络传感器 + Wazuh agent | Kali (基于 Debian) | | Metasploitable 2 | 漏洞靶机,未被监控 | Ubuntu 8.04 (旧系统) | ## 为什么 Suricata 运行在攻击机上 Suricata 需要能够监测攻击者和靶机之间的流量。目前有两个选项:一台配有混杂/镜像接口的专用传感器虚拟机,或者在已经处于流量路径上的两台主机之一上运行传感器。由于 Wazuh manager(Amazon Linux 2023)不支持 EPEL,导致在其中安装 Suricata 变得不切实际,而靶机根本无法运行任何 agent,因此 Suricata 直接运行在了 Kali 机器上。这意味着它能够 100% 直接通过自身的接口捕获攻击流量,而无需使用混杂模式或 span port(镜像端口),并通过已经在 Kali 上注册的 Wazuh agent 将事件发送给 manager。 ## 检测项 ### 1. 侦察 — Nmap 扫描检测 **攻击:** ``` nmap -sV -A 192.168.0.138 ``` ![Nmap 扫描](https://static.pigsec.cn/wp-content/uploads/repos/cas/fb/fbe982f035455854e39d72b41f6e9d6d1c24fd0c108d05db268dbdcd4584b770.png) **检测:** 当扫描触碰到每个开放端口时,Suricata 的 Emerging Threats 规则集实时标记了多个与扫描相关和协议异常的特征码,包括 Metasploitable 暴露的 UnrealIRCd 服务上的流量(`ET CHAT IRC USER command`)。 **结果:** 在扫描完成后的几秒钟内,生成了 132+ 条 IDS 事件,并在 Wazuh 的 Threat Hunting(威胁狩猎)视图中被正确归类到 `ids, suricata` 规则组下。 ![Suricata 扫描告警](https://static.pigsec.cn/wp-content/uploads/repos/cas/c8/c8b1560dde9e8961c2712ef4657a202043ae6d079f33fa11007e34d350fb8bd5.png) ### 2. 漏洞利用 — vsftpd 2.3.4 后门 (CVE-2011-2523) **攻击:** ``` msf6 > use exploit/unix/ftp/vsftpd_234_backdoor msf6 > set RHOSTS 192.168.0.138 msf6 > set LHOST 192.168.0.200 msf6 > run ``` ![vsftpd 漏洞利用成功](https://static.pigsec.cn/wp-content/uploads/repos/cas/22/224e75d1f85b6e1802da39ee4b4c86cc9dbf848112d79c4695722c347773da1e.png) Metasploitable 的 vsftpd 2.3.4 包含一个由畸形 FTP 登录字符串触发的后门,它会在 TCP 端口 6200 上生成一个 root shell。漏洞利用顺利执行并返回了一个权限为 `root` 的 Meterpreter 会话。 **检测:** Suricata 的 `GPL ATTACK_RESPONSE id check returned root` 特征码(SID `2100498`)在 shell 生成 11 秒后被触发,匹配到了当 shell 的命令输出通过端口 6200 在网络中传输时的明文 `uid=0(root)` 字符串。 ``` "signature": "GPL ATTACK_RESPONSE id check returned root", "signature_id": 2100498, "src_ip": "192.168.0.138", "src_port": 6200, "dest_ip": "192.168.0.200", "direction": "to_client" ``` ![vsftpd root 告警](https://static.pigsec.cn/wp-content/uploads/repos/cas/fa/fad7829cb6c18e5966b216b557aafd537e621b9298f983118da1c725c9ed1699.png) **重要性说明:** 这是在一台完全没有主机级日志记录的资产上,针对成功获取 root 权限的网络层确认——这正是该架构旨在处理的具体场景。 ### 3. 凭据攻击 — FTP 暴力破解 (MITRE ATT&CK T1110) **攻击:** ``` hydra -l msfadmin -P /tmp/quicklist.txt -t 4 ftp://192.168.0.138 ``` ![Hydra FTP 成功](https://static.pigsec.cn/wp-content/uploads/repos/cas/ff/ffce1b55a65b8f67ad571a773a22f23cb3dc0521b18c7c795d04da7b16c75872.png) Hydra 尝试快速连续进行多次 FTP 登录,在几次失败的尝试后,成功识别出有效的凭据对 `msfadmin:msfadmin`。 **检测状态:** Suricata 的 FTP 协议解析器在 `eve.json`(`event_type: ftp`)中捕获了每一次单独的 `USER`/`PASS` 命令和服务器响应代码,这已在 manager 的原始事件归档中得到确认: ``` {"event_type":"ftp","src_ip":"192.168.0.200","dest_ip":"192.168.0.138", "dest_port":21,"ftp":{"command":"PASS","command_data":"root", "completion_code":["530"],"reply":["Login incorrect."]}} ``` ![FTP 暴力破解被捕获](https://static.pigsec.cn/wp-content/uploads/repos/cas/08/08818795331a218e74853ff585e969e3fc7d4f840601bbf2e1187f16fd1398ce.png) Suricata 的默认规则集没有专门针对 FTP 暴力破解的特征码,因为它属于一种协议模式,而不是已知的恶意字符串。**为了弥补这一空白,我们编写了一条自定义的 Wazuh 关联规则:** ``` 86600 ^ftp$ ^PASS$ Suricata: FTP password attempt detected on $(data.dest_ip) 100100 Suricata: Possible FTP brute force attack detected - multiple password attempts within 60 seconds T1110 ``` **状态:** 进行中 —— 已确认底层的的事件数据成功到达 manager,并且规则语法已通过 `wazuh-logtest` 验证,但关联规则(`100101`)尚未实现可靠的端到端触发。下一步的调试工作是使用实时样本,通过 `wazuh-logtest` 确认在解析时分配给嵌套的 Suricata FTP 字段的解码器字段路径。此项已归入下文的未来工作中进行跟踪。 ## 经验总结 - **老旧靶机改变了你的架构,而不仅仅是你的命令。** Metasploitable 2 过时的工具排除了使用现代 Wazuh agent 甚至基本的 syslog 转发(没有 rsyslog,没有互联网访问)的可能性。该项目没有强行采用基于主机的方法,而是转向了基于网络的检测——对于现实世界中的传统/IoT 资产来说,这可以说是一种更符合现实的模式。 - **软件包生态系统不能互相替换。** Wazuh manager 的 Amazon Linux 2023 基础系统不支持经典的 EPEL,这阻碍了在此直接安装 Suricata。将传感器转移到已经处于流量路径中、基于 Debian 的 Kali 机器上,彻底避开了这个问题。 - **默认的 IDS 规则集是基于特征码的,而不是基于行为的。** Suricata 之所以能瞬间捕获 vsftpd 漏洞利用,是因为存在已知的特征码;但它对 FTP 暴力破解却束手无策,因为这是一种*模式*,而不是静态字符串。这正是为什么要在 SIEM 中编写自定义关联规则,而不是仅仅依赖开箱即用的 IDS 内容的真正原因。 - **`archives.log`/`archives.json` 默认情况下并未启用**(`logall`/`logall_json` 出厂默认均为 `no`),它们对于调试 SIEM 到底接收到了什么,以及 SIEM 选择对什么进行告警是至关重要的。 ## 未来工作 - 端到端完成 FTP 暴力破解关联规则(100100/100101)的调试 - 将 UnrealIRCd 后门漏洞利用(CVE-2010-2075)添加为第四个检测项,因为 Suricata 已经在标记靶机上的 IRC 流量 - 将 Samba `usermap_script` RCE(CVE-2007-2447)添加为第五种技术 - 将高危告警接入 TheHive 或 Shuffle 以实现自动创建案件 - 添加主动响应,以便在检测到多次暴力破解时自动封禁攻击者 IP ## 使用的工具 - [Wazuh](https://wazuh.com/) 4.14.6 — SIEM(manager、indexer、dashboard) - [Suricata](https://suricata.io/) 8.0.5 — 网络 IDS - [Metasploit Framework](https://www.metasploit.com/) / Hydra / Nmap — 攻击模拟 - VirtualBox — 实验室虚拟化 ## MITRE ATT&CK 映射 | 技术 | ID | 状态 | |---|---|---| | 主动扫描 | T1595 | ✅ 已检测到 | | 利用面向公众的应用 | T1190 | ✅ 已检测到 | | 暴力破解 | T1110 | 🔶 进行中 |
标签:AMSI绕过, CISA项目, CTI, IP 地址批量处理, Metaprompt, Suricata, Wazuh, 威胁检测, 安全运营中心, 漏洞靶场, 现代安全运营, 网络映射, 防御检测