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` 网段。

| 组件 | 角色 | 操作系统 |
|---|---|---|
| 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
```

**检测:** 当扫描触碰到每个开放端口时,Suricata 的 Emerging Threats 规则集实时标记了多个与扫描相关和协议异常的特征码,包括 Metasploitable 暴露的 UnrealIRCd 服务上的流量(`ET CHAT IRC USER command`)。
**结果:** 在扫描完成后的几秒钟内,生成了 132+ 条 IDS 事件,并在 Wazuh 的 Threat Hunting(威胁狩猎)视图中被正确归类到 `ids, suricata` 规则组下。

### 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
```

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"
```

**重要性说明:** 这是在一台完全没有主机级日志记录的资产上,针对成功获取 root 权限的网络层确认——这正是该架构旨在处理的具体场景。
### 3. 凭据攻击 — FTP 暴力破解 (MITRE ATT&CK T1110)
**攻击:**
```
hydra -l msfadmin -P /tmp/quicklist.txt -t 4 ftp://192.168.0.138
```

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."]}}
```

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, 威胁检测, 安全运营中心, 漏洞靶场, 现代安全运营, 网络映射, 防御检测