JimmyZghendy/wazuh-log-generator
GitHub: JimmyZghendy/wazuh-log-generator
为 Wazuh SIEM 平台生成包含多种攻击场景的模拟日志,用于验证和测试检测规则的触发效果。
Stars: 0 | Forks: 0
# Wazuh 日志生成器
为测试 Wazuh 检测规则生成真实的示例日志,涵盖六种日志源。每个生成器都嵌入了经过校准的**特定攻击场景**,旨在触发默认的 Wazuh 规则集——包括单事件规则和频率/关联规则。
## 快速开始
```
python3 generate_logs.py --all # all sources, ~40 events each
python3 generate_logs.py --source ad # one source only
python3 generate_logs.py --source web --count 100
```
输出将写入 `./output/`:
| 文件 | 来源 | Wazuh decoder |
|-------------------------|-----------------------|---------------------|
| `active_directory.xml` | Windows AD events | `windows_eventchannel` |
| `mssql_audit.log` | MSSQL ERRORLOG | `mssql_log` |
| `mysql.log` | MySQL error + general | `mysql_log` |
| `paloalto.csv` | PAN-OS syslog | `paloalto` |
| `web_access.log` | Apache combined | `web-accesslog` |
| `auth.log` | Linux auth (sshd/sudo)| `sshd`, `sudo`, `pam` |
## 如何将其输入到 Wazuh
最简单的方法:将每个文件复制到 agent 监控的路径中,例如
```
# /var/ossec/etc/ossec.conf (在 agent 上)
apache
/var/log/wazuh-test/web_access.log
syslog
/var/log/wazuh-test/auth.log
syslog
/var/log/wazuh-test/mssql_audit.log
syslog
/var/log/wazuh-test/mysql.log
syslog
/var/log/wazuh-test/paloalto.csv
```
对于 Windows XML 文件,您可以通过 manager 上的 `wazuh-logtest` 传递单个事件,或者通过 PowerShell 将它们发送到 agent 的事件通道。
### 在 manager 上测试单个事件
```
# 选择单行并将其 pipe
sed -n '5p' output/auth.log | /var/ossec/bin/wazuh-logtest
# 对于 Apache 日志,您必须声明 format:
echo '' | /var/ossec/bin/wazuh-logtest
# (或使用 -U "rule_id:agent_id:user")
```
## 嵌入的攻击场景 → Wazuh 规则
每个生成器都至少嵌入了一种旨在触发*特定*规则链的攻击模式。下面提到的确切规则 ID 引用了 Wazuh 的默认规则集 (v4.x)。
### `active_directory.xml`
| 场景 | Event IDs | Wazuh 规则 (默认) |
|-----------------------|-------------------|-----------------------------|
| 正常登录 | 4624 | 60106 (info) |
| **暴力破解爆发** | 10× 4625(来自同一外部 IP) | 60122 → 60204 (frequency) |
| 账户锁定 | 4740 | 60123 |
| 创建新用户 | 4720 | 60103 |
| 添加到管理员组 | 4732 | 60112 |
| **AS-REP roasting 尝试** | 4768 PreAuth=0, rc4_hmac | custom / 92651 |
| **Kerberoasting** | 4769 rc4_hmac on SPN | custom / 92652 |
| 特殊权限 | 4672 | 60106 |
### `auth.log` (Linux)
| 场景 | 行 | Wazuh 规则 |
|-------------------------|-------|---------------------------|
| **SSH 暴力破解** | 20 条 Failed password + Invalid user(来自同一 IP) | 5710 → 5712 (frequency) |
| 暴力破解后的系统沦陷 | 1 条 Accepted password(来自同一攻击者 IP) | 5715 (correlated) |
| Root 登录被拒绝 | 3 | 5404 |
| Sudo 命令 | 8 | 5402 |
| **Sudo 失败** | 3 | 5401 |
| PAM 身份验证失败 | 4 | 5503 |
| **添加用户(系统沦陷后)** | 1 | 5902 |
### `mssql_audit.log`
| 场景 | 行 | Wazuh hook |
|--------------------------------|-------|-----------------------------|
| **针对 `sa` 的暴力破解** | 15 条 Login failed for 'sa' | mssql_log decoder, custom freq rule |
| 登录失败(无此用户) | 2 | sql_log auth-failure |
| **执行 xp_cmdshell** | 3 | high-risk: command exec via DB |
| **授予 sysadmin 角色** | 1 | privilege escalation |
| 针对系统 sql_logins 执行 UNION SELECT | 1 | SQLi indicator |
### `mysql.log`
| 场景 | 行 | Wazuh 规则族 |
|-----------------------------------|-------|-------------------------|
| **针对 root 的 Access denied 爆发** | 12 | mysql brute-force chain |
| **GRANT ALL ... WITH GRANT OPTION** | 1 | privilege escalation |
| **CREATE USER backdoor_*** | 1 | suspicious account creation |
| **DROP DATABASE production** | 1 | destructive DDL |
| UNION SELECT / SLEEP() / LOAD_FILE | 4 | SQLi behind app |
### `paloalto.csv`
| 场景 | Subtype | Wazuh 规则 |
|-----------------------|----------|------------------------------|
| 正常允许的流量 | TRAFFIC | 63100 (info) |
| **端口扫描** | TRAFFIC `deny` × 25(来自同一 IP,不同目标端口) | 63103 → 63152 (frequency) |
| **严重威胁 (THREAT critical)** | THREAT (vulnerability/spyware) | 63111 (critical severity) |
| Log4Shell / ZeroLogon / Cobalt Strike 特征 | THREAT | 63111 |
| **拦截恶意 URL** | THREAT url, block-url, malware/c2/phishing | 63115 |
### `web_access.log`
| 场景 | 模式 | Wazuh 规则 |
|-----------------------|--------------------------------------|-----------------|
| **SQL 注入** | `' OR '1'='1`, `UNION SELECT`, `SLEEP(5)` | 31103, 31106 |
| **XSS** | `