jmoreira01/siem-lab-project
GitHub: jmoreira01/siem-lab-project
基于 Wazuh 的企业级 SIEM 实验室项目,实现了多平台文件完整性监控、YARA 恶意软件检测、暴力破解与 SQL 注入防御及自动化主动响应,并完成 MITRE ATT&CK 全链路映射。
Stars: 0 | Forks: 0
[](https://opensource.org/licenses/MIT)
[](https://wazuh.com/)
[](https://virustotal.github.io/yara/)
[](https://attack.mitre.org/)
# Wazuh SIEM 实验室 — 企业级威胁检测与自动响应
## 目录
1. [引言](#-introduction)
2. [项目架构](#-project-architecture)
3. [Wazuh 服务器](#-wazuh-server)
4. [Windows 机器](#-windows-machine)
5. [Linux 机器](#-linux-machine)
6. [模拟攻击](#-simulated-attacks)
7. [MITRE ATT&CK 映射](#-mitre-attck-mapping)
8. [获得的结果](#-results-obtained)
9. [结论](#-conclusion)
10. [技术文档](#-technical-documentation)
## 引言
使用 Wazuh 实现企业级 SIEM 解决方案的个人家庭实验室。
涵盖多平台 agent 部署(Windows + Linux)、文件完整性监控、
基于 YARA 的恶意软件检测、网络入侵检测以及自动化的主动响应。
所有攻击模拟均在隔离的实验室环境中进行。
### 项目目标
- **Wazuh SIEM 服务器的安装与配置**
- **在 Windows 和 Linux 上部署 agent**
- **配置文件完整性监控 (FIM)**
- **检测并拦截恶意远程访问**
- **集成 YARA 模块进行恶意软件检测**
- **模拟真实攻击**
- **与 MITRE ATT&CK 框架进行映射**
## 项目架构
### 基础设施组件
```
┌─────────────────────────────────────────────────────────────┐
│ WAZUH SERVER │
│ (Docker - Ubuntu 22.04) │
│ IP: 10.107.5.100 │
│ ┌──────────────┬──────────────┬──────────────┐ │
│ │ Manager │ Indexer │ Dashboard │ │
│ └──────────────┴──────────────┴──────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌───────────────┴──────────────┐
│ │
┌───────▼──────┐ ┌────────▼─────┐
│ WINDOWS │ │ LINUX │
│ AGENT │ │ AGENT │
│ │ │ │
│ • FIM │ │ • FIM │
│ • YARA │ │ • YARA │
│ • RDP │ │ • SSH │
│ • Active Rsp │ │ • Apache Mon │
└──────────────┘ └──────────────┘
```
### 技术规格
| 组件 | 操作系统 | IP | 服务 | Wazuh 版本 |
|-----------|------------------|-----|----------|---------------|
| **Wazuh Server** | Ubuntu 22.04 (Docker) | 10.107.5.100 | Manager, Indexer, Dashboard | v4.14.2 |
| **Windows Agent** | Windows 10/11 | 动态获取 | RDP, SMB, Share | Agent v4.14.2 |
| **Linux Agent** | Debian/Ubuntu | 动态获取 | Apache, SSH | Agent v4.14.2 |
| **Kali Attacker** | Kali Linux | 10.107.5.88 / 10.0.2.6 | Hydra, curl | N/A |
## Wazuh 服务器
### Docker 实现
该实现使用了 **Docker** 来创建一个具备以下特性的环境:
- **模块化** - 组件相互隔离
- **可复现** - 易于复制
- **可扩展** - 支持规模增长
### 主要组件
#### 1 Wazuh Manager
负责接收和分析 agent 发送的事件。
#### 2 Wazuh Indexer
用于安全数据的存储和索引。
#### 3 Wazuh Dashboard
用于可视化、告警分析和事件响应的图形界面。
### 网络架构
```
version: '3.9'
services:
wazuh-manager:
ports:
- "1514:1514" # Agent communication
- "1515:1515" # Agent enrollment
- "55000:55000" # API
wazuh-indexer:
ports:
- "9200:9200" # Indexer
wazuh-dashboard:
ports:
- "443:5601" # Web Interface
```
## Windows 机器
### 1. Wazuh Agent 安装
**方法:** 通过 Dashboard 部署新 agent
```
# 下载和安装
Invoke-WebRequest -Uri https://packages.wazuh.com/4.x/windows/wazuh-agent-4.14.2-1.msi `
-OutFile $env:tmp\wazuh-agent
msiexec.exe /i $env:tmp\wazuh-agent /q `
WAZUH_MANAGER='10.107.5.100' `
WAZUH_AGENT_NAME='windows'
# 启动服务
NET START Wazuh
```
**验证:**
```
Get-Service -Name "WazuhSvc"
# 状态:Running
```
### 2. 文件完整性监控 - FIM
**目标:** 监控关键文件的更改。
**配置:** `C:\Program Files (x86)\ossec-agent\ossec.conf`
```
no
43200
yes
C:\partilha
C:\Users\user
```
**参数:**
- `check_all="yes"` - 监控所有内容(大小、权限、哈希)
- `realtime="yes"` - 实时检测
**激活的规则:**
- **Rule 554** - 文件被添加
- **Rule 550** - 文件被修改
- **Rule 553** - 文件被删除
### 3. RDP 监控 + 恶意 IP 拦截
**目标:** 检测并拦截来自恶意 IP 的 RDP 访问尝试。
#### 3.1 启用 RDP 日志
```
Security
eventchannel
Event/System[EventID=4625 or EventID=4624]
```
- **EventID 4624** - 成功登录
- **EventID 4625** - 登录尝试失败
#### 3.2 恶意 IP CDB 列表 (服务器)
```
# 下载 AlienVault 列表
sudo wget https://iplists.firehol.org/files/alienvault_reputation.ipset \
-O /var/ossec/etc/lists/alienvault_reputation.ipset
# 添加攻击者 IP
sudo echo "10.0.2.6" >> /var/ossec/etc/lists/alienvault_reputation.ipset
# 转换为 CDB
sudo wget https://wazuh.com/resources/iplist-to-cdblist.py -O /tmp/iplist-to-cdblist.py
sudo /var/ossec/framework/python/bin/python3 /tmp/iplist-to-cdblist.py \
/var/ossec/etc/lists/alienvault_reputation.ipset \
/var/ossec/etc/lists/malicious-ip
```
#### 3.3 自定义规则
**服务器:** `/var/ossec/etc/rules/local_rules.xml`
```
```
**使用的默认规则:**
- **Rule 99919** - 来自恶意 IP 的登录失败
#### 3.4 主动响应 - 自动拦截
**服务器:** `/var/ossec/etc/ossec.conf`
```
no
netsh
local
99919
600
```
**结果:** IP 通过 Windows Firewall 被拦截 10 分钟。
### 4. YARA 模块 - 恶意软件检测
#### 4.1 在 Windows 上安装 YARA
```
# 下载:https://github.com/VirusTotal/yara/releases
# 文件:yara-v4.5.5-win64.zip
# 解压至:C:\Program Files\yara\
# 添加到系统 PATH
# 验证
yara --version
```
#### 4.2 YARA 规则
```
# 创建目录
mkdir C:\yara_rules
# 下载 Valhalla 规则
Invoke-WebRequest -Uri "https://valhalla.nextron-systems.com/api/v1/get" `
-Method POST `
-Body "demo=demo&apikey=1111...&format=text" `
-OutFile "C:\yara_rules\yara_rules.yar"
```
#### 4.3 主动响应脚本
**文件:** `C:\Program Files (x86)\ossec-agent\active-response\bin\yara.bat`
```
@echo off
setlocal
set /p INPUT_JSON=
for /f "tokens=2 delims=:" %%a in ('echo %INPUT_JSON% ^| findstr /i "path"') do set FILEPATH=%%a
set FILEPATH=%FILEPATH:"=%
set FILEPATH=%FILEPATH:}=%
set FILEPATH=%FILEPATH: =%
"C:\Program Files\yara\yara64.exe" -r ^
"C:\yara_rules\yara_rules.yar" ^
"%FILEPATH%" >> "C:\Program Files (x86)\ossec-agent\active-responses.log" 2>&1
exit /b 0
```
#### 4.4 服务器配置
**Decoders:** `/var/ossec/etc/decoders/local_decoder.xml`
```
wazuh-yara:
yara_decoder
wazuh-yara: (\S+) - Scan result: (\S+) (\S+)
log_type, yara_rule, yara_scanned_file
```
**Rules:** `/var/ossec/etc/rules/local_rules.xml`
```
550
C:\\partilha
File modified in C:\partilha directory.
554
C:\\partilha
File added to C:\partilha directory.
yara_decoder
Yara grouping rule
108000
wazuh-yara: INFO - Scan result:
File "$(yara_scanned_file)" is a positive match. Yara rule: $(yara_rule)
```
**主动响应:**
```
yara_windows
yara.bat
no
no
yara_windows
local
100303,100304
```
## Linux 机器
### 1. Wazuh Agent 安装
```
# 下载
wget https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.14.2-1_amd64.deb
# 安装
sudo WAZUH_MANAGER='10.107.5.100' WAZUH_AGENT_NAME='linux' \
dpkg -i ./wazuh-agent_4.14.2-1_amd64.deb
# 启用并启动
sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent
```
### 2. 文件完整性监控
**配置:** `/var/ossec/etc/ossec.conf`
```
no
/var/www/html
/home/root
/etc
```
**激活的规则:**
- **Rule 554** - 文件被添加
- **Rule 550** - 文件被修改
- **Rule 553** - 文件被删除
### 3. 恶意 IP 拦截 Apache
**Apache 日志配置:**
```
apache
/var/log/apache2/access.log
```
**自定义规则:**
```
web|attack|attacks
IP address found in AlienVault reputation database.
```
**主动响应:**
```
no
firewall-drop
local
100100
600
```
**添加的恶意 IP:** `10.107.5.88`
### 4. SSH 暴力破解检测
**使用的默认规则:**
- **Rule 99903** - 来自恶意 IP 的成功登录
- **Rule 99904** - 多次身份验证失败
**主动响应:**
```
no
firewall-drop
local
99903,99904
600
```
**攻击工具:** Hydra
```
hydra -l user -P passwords.txt IP_LINUX ssh -t 4
```
### 5. YARA 模块 Linux
#### 5.1 YARA 安装
```
# 依赖项
sudo apt install -y make gcc autoconf libtool libssl-dev pkg-config jq
# 下载和编译
sudo curl -LO https://github.com/VirusTotal/yara/archive/v4.5.5.tar.gz
sudo tar -xvzf v4.5.5.tar.gz -C /usr/local/bin/
cd /usr/local/bin/yara-4.5.5/
sudo ./bootstrap.sh
sudo ./configure
sudo make
sudo make install
```
#### 5.2 YARA 规则
```
sudo mkdir -p /tmp/yara/rules
sudo curl 'https://valhalla.nextron-systems.com/api/v1/get' \
-H 'Accept: text/html,application/xhtml+xml,application/xml' \
--data 'demo=demo&apikey=1111...&format=text' \
-o /tmp/yara/rules/yara_rules.yar
```
#### 5.3 yara.sh 脚本
**文件:** `/var/ossec/active-response/bin/yara.sh`
```
#!/bin/bash
LOCAL=`dirname $0`
cd $LOCAL && cd ../
LOG_FILE="/var/ossec/logs/active-responses.log"
read INPUT_JSON
YARA_PATH=$(echo $INPUT_JSON | jq -r .parameters.extra_args[1])
YARA_RULES=$(echo $INPUT_JSON | jq -r .parameters.extra_args[3])
FILENAME=$(echo $INPUT_JSON | jq -r .parameters.alert.syscheck.path)
${YARA_PATH}/yara -w -r ${YARA_RULES} ${FILENAME} >> ${LOG_FILE} 2>&1
```
#### 5.4 服务器配置
**Rules:**
```
550
/var/www/html
File modified in /var/www/html directory.
554
/tmp/yara/malware
File added to /var/www/html directory.
550
/root
File modified in /root directory.
554
/root
File added to /root directory.
```
**主动响应:**
```
yara_linux
yara.sh
-yara_path /usr/local/bin -yara_rules /tmp/yara/rules/yara_rules.yar
no
no
yara_linux
local
100300,100301,100306,100307
```
## 模拟攻击
### 1. SSH 暴力破解 (Linux)
**工具:** Hydra
**目标:** SSH 服务 (端口 22)
```
# 创建密码列表
cat > passwords.txt << EOF
123456
password
qwerty
admin
letmein
EOF
# 执行攻击
hydra -l user -P passwords.txt IP_LINUX ssh -t 4
```
**检测:**
- Rule 99904 - 多次身份验证失败
- 主动响应自动拦截了 IP
### 2. RDP 暴力破解 (Windows)
**工具:** Hydra / rdesktop
**目标:** 远程桌面协议 (端口 3389)
**检测:**
- Rule 99919 - 来自恶意 IP 的登录失败
- 主动响应通过 netsh 拦截了 IP
### 3. SQL 注入 (Linux Apache)
**使用的 Payload:**
```
curl -XGET "http://IP_LINUX/users/?id=SELECT+*+FROM+users"
curl -XGET "http://IP_LINUX/search?q=test'+UNION+SELECT+null--"
curl -XGET "http://IP_LINUX/login.php?id=1'+OR+'1'='1"
curl -XGET "http://IP_LINUX/login.php?user=admin'--"
```
**检测:**
- Rule 31106 (默认) - SQL 注入尝试
- Wazuh 分析了 Apache 日志
### 4. 恶意软件上传 (YARA)
**测试样本:**
- EICAR 测试文件
- 恶意软件样本 (用于教学目的)
**检测:**
- FIM 检测到文件创建 (Rule 554)
- YARA 分析了文件
- Rule 108001 - 检测到恶意软件
## MITRE ATT&CK 映射
### 映射表
| 攻击 | 战术 | 技术 | MITRE ID | Wazuh Rule | 主动响应 |
|--------|--------|-----------|----------|------------|-----------------|
| **SSH 暴力破解** | 凭证访问 | 暴力破解:密码猜测 | T1110.001 | 99904 | firewall-drop |
| **RDP 暴力破解** | 凭证访问 | 暴力破解:密码猜测 | T1110.001 | 99919 | netsh |
| **SQL 注入** | 初始访问 | 利用面向公众的应用程序 | T1190 | 31106 | firewall-drop |
| **恶意软件上传** | 执行 / 持久化 | 用户执行:恶意文件 | T1204.002 | 108001 | yara scan |
| **恶意 IP** | 命令与控制 | 应用层协议 | T1071 | 100100 | firewall-drop |
### 按技术分析
#### T1110.001 - 密码猜测
**描述:** 自动化的凭证猜测尝试
**Wazuh 缓解措施:** 关联多次失败尝试 + 自动拦截
**有效性:** ✅ 100% - 所有暴力破解攻击均被检测并拦截
#### T1190 - 利用面向公众的应用程序
**描述:** 利用 Web 应用程序中的漏洞
**Wazuh 缓解措施:** Apache 日志分析 + 恶意 SQL 模式
**有效性:** ✅ 100% - 所有 SQL 注入尝试均被检测
#### T1204.002 - 用户执行:恶意文件
**描述:** 执行恶意文件
**Wazuh 缓解措施:** FIM + YARA 签名
**有效性:** ✅ 100% - 实时检测到恶意软件
## 获得的结果
### 检测率
| 指标 | 结果 |
|--------|--------|
| **文件完整性监控** | ✅ 100% (实时) |
| **YARA 检测率** | ✅ 100% (所有样本) |
| **暴力破解检测** | ✅ 100% (SSH + RDP) |
| **SQL 注入检测** | ✅ 100% (所有 payload) |
| **IP 拦截 (主动响应)** | ✅ 100% (自动) |
| **平均响应时间** | ⚡ < 15 秒 |
## 结论
### 已实现的目标
- 使用 Wazuh 的 **功能性 SIEM 系统**
- Windows 和 Linux 的 **集中监控**
- 实时的 **文件完整性监控**
- 通过 YARA 进行 **恶意软件检测**
- 恶意 IP 的 **自动拦截**
- 对攻击的 **自动响应**
- **完整的 MITRE ATT&CK 映射**
### 主要收获
1. **组件集成:** FIM、主动响应和 YARA 协同工作
2. **自定义规则的重要性:** 针对特定环境进行调整
3. **主动响应的有效性:** 自动缓解措施减少了暴露窗口
4. **MITRE ATT&CK 的价值:** 用于威胁分析的通用框架
## 技术文档
### 有用的链接
- 📖 [Wazuh 官方文档](https://documentation.wazuh.com)
- 🦠 [YARA 文档](https://yara.readthedocs.io)
- 🎯 [MITRE ATT&CK](https://attack.mitre.org)
- 🔗 [AlienVault IP 信誉库](https://iplists.firehol.org)
## 许可证
本项目作为个人家庭实验室练习而开发。所有模拟均在隔离的实验室环境中进行。
-
etc/lists/malicious-ioc/malicious-ip
标签:AMSI绕过, ATT&CK映射, Cloudflare, Conpot, DNS 反向解析, Docker, DOE合作, Homelab, IP 地址批量处理, meg, MITRE ATT&CK, OISF, OpenCanary, Wazuh, Windows安全, x64dbg, YARA, 主动响应, 云资产可视化, 企业安全, 信息安全, 多平台代理, 威胁检测, 安全信息与事件管理, 安全实验室, 安全运营, 安全防御评估, 扫描框架, 搜索引擎爬取, 攻击模拟, 日志管理, 端点安全, 网络安全, 网络资产管理, 自动化响应, 补丁管理, 请求拦截, 速率限制处理, 隐私保护, 驱动签名利用