saifbelaarbi/EVTX-Wazuh-rules
GitHub: saifbelaarbi/EVTX-Wazuh-rules
该项目是一个将真实攻击遥测数据与 Sigma 规则自动化转换为 MITRE ATT&CK 映射的生产级 Wazuh 检测规则集的生成与验证框架。
Stars: 0 | Forks: 0
# 🛡️ EVTX-Wazuh-Rules
### 将真实攻击遥测数据转化为生产级 Wazuh 检测规则集
基于 Windows EVTX 攻击样本与 SigmaHQ 构建、扩展并验证 **映射至 MITRE ATT&CK 的 Wazuh 规则数据库** —— 然后使用两个 Claude 代理接入*任何*新的日志源。
[](https://github.com/saifbelaarbi/EVTX-Wazuh-rules/actions/workflows/ci.yml)
[](https://github.com/saifbelaarbi/EVTX-Wazuh-rules/actions/workflows/docker-publish.yml)
[](https://saifbelaarbi.github.io/EVTX-Wazuh-rules/)
[](LICENSE)
[](pyproject.toml)
### 📊 [**实时覆盖率仪表板 →**](https://saifbelaarbi.github.io/EVTX-Wazuh-rules/) · 每次流水线运行时自动重建





[快速开始](#-quick-start) · [工作原理](#-how-it-works) · [资产接入代理](#-asset-onboarding-agents-part-two) · [CLI](#-cli-reference) · [Docker](#-docker)
## ✨ 你将获得什么
|
### 📦 3,260 条规则
源自 EVTX 生成 + SigmaHQ 转换,每条规则都映射至 MITRE ATT&CK,已分配级别,并与 Wazuh 默认规则去重。
|
### 🧪 已验证
208 个单元测试,0 个结构错误,整个数据库的**100% 离线模拟**通过率,并在 CI 中针对运行中的 Wazuh 管理器进行了完整的 Docker-Compose 集成测试。
|
### 🤖 代理接入
将 **decoder-agent** 指向任何日志文件夹 → 它将编写 Wazuh 解码器 + 字段 schema;**rule-agent** 随后将其转化为检测规则。
|
## 📊 当前数据库
| 指标 | 数值 | | 指标 | 数值 |
|--------|------:|---|--------|------:|
| 总规则数 | **3,260** | | MITRE 战术 | **12 / 12** |
| EVTX 生成 | 626 | | MITRE 技术 | **288** |
| Sigma 转换 | 2,630 | | 单元测试 | 208 |
| 复合/关联 | 4 | | 验证错误 | 0 |
| 离线模拟通过率 | **100%** (3,255/3,255) | | 不确定(需在线测试) | 5 |
战术与来源分布
| 战术 | 规则数 | | 来源 | 规则数 |
|--------|------:|---|--------|------:|
| 执行 | 1,119 | | Sysmon | 2,245 |
| 持久化 | 883 | | System | 588 |
| 权限提升 | 363 | | PowerShell | 211 |
| 凭证访问 | 290 | | Security | 152 |
| 命令与控制 | 191 | | Application | 60 |
| 发现 | 137 | | 复合规则 | 4 |
| 横向移动 | 72 | | | |
| 收集 | 51 | | | |
| 影响 | 44 | | | |
| 防御规避 | 42 | | | |
| 数据外传 | 36 | | | |
| 初始访问 | 32 | | | |
## 🚀 快速开始
```
pip install -e .
# 1 — 下载 EVTX 样本、Sigma 规则、Wazuh 默认设置
python -m collector download-all
python -m collector download-sigma
python -m collector download-defaults
# 2 — 生成 + 转换 + 验证
python -m generator generate --auto-approve
python -m generator convert-sigma --auto-approve --min-level medium
python -m generator validate
# 3 — 针对源事件进行测试
python -m generator logtest --mode simulate --save
# 4 — 部署到 Wazuh
python -m generator export --dest /var/ossec/etc/rules/ --view by_tactic
sudo systemctl restart wazuh-manager
```
## 🐳 Docker
整个流水线 —— Wazuh 管理器 + 规则生成 + **实时** logtest —— 只需一条命令:
```
docker compose up --build
```
或仅运行生成器:
```
docker run -v $(pwd)/database:/app/database saifbelaarbi/evtx-wazuh-rules
```
已发布的镜像:[`saifbelaarbi/evtx-wazuh-rules`](https://hub.docker.com/r/saifbelaarbi/evtx-wazuh-rules) · 通过 [部署到 GCP](.github/workflows/deploy-gcp.yml) 工作流,只需一键即可在 GCP 上运行(日志将流式传输到 GCS bucket + GitHub artifacts)。
## 🔍 工作原理
```
┌──────────── Part 1: Collector ────────────┐
7 EVTX repos ─┐ │ download → registry → data/ (gitignored) │
SigmaHQ ─┼──▶ └───────────────────┬───────────────────────┘
Wazuh defaults ─┘ │
┌──────────── Part 2: Generator ────────────┐
│ parse → analyze → MITRE map → build → │
│ correlate → level → validate → export │
└───────────────────┬───────────────────────┘
▼
database/rules/ (by_tactic · by_technique · by_source)
```
**Collector** 从 GitHub 拉取 EVTX 样本、SigmaHQ 规则和 Wazuh 默认规则集。
**Generator** 解析事件,通过语义指标映射对 ATT&CK 技术进行分类,构建 Wazuh XML,转换 Sigma YAML,针对现有及内置规则进行去重,分配严重性级别,并导出同一规则集的三个平行视图。
流水线模块
| 阶段 | 模块 | 职责 |
|-------|--------|------|
| 解析 | `evtx_parser.py` | EVTX/JSON/XML → 归一化事件 |
| 分析 | `event_analyzer.py` | 事件 → `DetectionPattern` 对象 |
| 映射 | `mitre_mapper.py` | 语义 ATT&CK 分类(指标 → 技术) |
| 构建 | `rule_builder.py` | 模式 → Wazuh `` XML |
| 关联 | `rule_correlator.py` | 对比数据库及 Wazuh 默认规则进行去重 |
| 级别 | `alert_leveler.py` | 严重性 3–15(战术 + 置信度 + 误报反馈) |
| 验证 | `validator.py` → `logtest_validator.py` | 结构化 + 事件重放验证 |
| 导出 | `exporter.py` | 3 个视图 + 版本控制 + 更新日志 |
| Sigma | `sigma_converter.py` / `sigma_analyzer.py` | Sigma YAML → Wazuh(完整修饰符集) |
## 🤖 资产接入代理(第二部分)
除了 Windows EVTX 外,你还可以接入 **任何** Wazuh 开箱即用无法解码其日志的资产 —— 例如防火墙、设备或应用程序 —— 通过 [`agents/`](agents/) 中两个协作的 **Claude Code 子代理** 实现。
```
raw log folder (one asset)
│
▼
┌─────────────────┐
_decoder.xml ┌──────────────┐ .xml
│ decoder-agent │──▶ + _schema.json ─▶│ rule-agent │──▶ Wazuh rules
└─────────────────┘ (field-schema └──────────────┘
parses fields contract) builds detections
```
```
Use the decoder-agent on data/raw_logs/cisco-asa/ (asset slug: cisco-asa)
Use the rule-agent on database/decoders/cisco-asa_schema.json
```
JSON **字段 schema** 是它们之间的契约,因此 rule-agent 只能引用 decoder 实际解析过的字段。代理的 `examples/` 文件夹中附带了一个完整的 Cisco ASA 示例。详见 [`agents/README.md`](agents/README.md)。
## 🗂️ 规则组织
相同的规则,提供三个视图 —— 根据你的部署需求进行选择:
```
database/rules/
├── by_tactic/ # one XML per ATT&CK tactic → broad deployment
├── by_technique/ # one XML per technique → surgical tuning
└── by_source/ # by Windows log source → Wazuh-native layout
```
每个视图还包含 `zz_composites.xml`,其中包含跨战术关联规则 —— 之所以这样命名是为了在加载时排在最后,因为 Wazuh 会按字母顺序加载规则文件,并丢弃对尚未加载规则的引用。
## 🧰 CLI 参考
Collector — python -m collector
| 命令 | 描述 |
|---------|-------------|
| `download-all` | 下载所有已注册的 EVTX 来源 |
| `download ` | 下载特定的 EVTX 来源 |
| `download-sigma` | 下载 SigmaHQ 规则 |
| `download-defaults` | 下载 Wazuh 默认规则 + 解码器 |
| `download-atomic` | 克隆 Atomic Red Team 以用于原子化摄取路径 |
| `status` / `list-sources` | 显示下载状态 / 已注册的来源 |
Generator — python -m generator
| 命令 | 描述 |
|---------|-------------|
| `generate [--source N] [--auto-approve] [--diff-only]` | 从 EVTX 生成规则 |
| `convert-sigma [--min-level LVL] [--platform ...] [--with-negation]` | 转换 Sigma → Wazuh |
| `generate-atomic` | 从克隆的 Atomic Red Team 仓库生成 |
| `build-composites` | 构建链式关联规则 |
| `logtest [--mode simulate\|live] [--save]` | 针对源事件验证规则(simulate 覆盖整个数据库;live 限制为 100 —— 使用 `EVTX_LOGTEST_LIVE_CAP` 覆盖) |
| `validate` | 结构验证(出现错误时以非零状态退出) |
| `navigator` | 导出 MITRE ATT&CK Navigator 层 JSON |
| `export-sigma` | 将 EVTX 派生规则反向转换为 Sigma YAML |
| `report-fp` / `fp-summary` | 误报追踪 + 级别建议 |
| `changelog` / `stats` / `review` / `approve` | 运维与审查辅助工具 |
| `serve` | 启动只读 Web 仪表板(`[web]` 扩展) |
| `export --dest PATH [--view VIEW]` | 导出规则用于 Wazuh 部署 |
部署与报告
```
python -m deployer deploy --src DIR --dest PATH # backup → deploy → health check → rollback
python generate_report.py # Markdown reports → docs/
python generate_excel_report.py # Excel tracker (needs openpyxl)
```
## 🛠️ 质量控制
- **ID** — Wazuh 自定义范围 `100000–119999`,按 ATT&CK 战术进行划分,原子化分配。
- **关联** — 每条规则均与数据库、Wazuh 默认规则及同战术同级规则进行比对检查。
- **级别** — 战术基础分 + 检测置信度 + 工具覆盖(mimikatz 13,meterpreter 14)。
- **MITRE 映射** — 指标表 → 事件 ID 默认值 → 路径提示(无需猜测文件夹名称)。
- **验证** — 格式良好性、必需元素、ID 唯一性、悬空的自定义范围父 SID 检测(`if_sid`/`if_matched_sid`)、T-ID 格式。
- **感知 OSRegex** — Wazuh 反转了 PCRE 的点语义(`.` 为字面量,`\.` 为任意字符);所有转义均已集中处理并保持同步。
## 📦 安装说明
```
pip install -e . # core
pip install -e ".[dev]" # + pytest, ruff, pre-commit
pip install -e ".[report]" # + openpyxl (Excel reports)
pip install -e ".[web]" # + fastapi, uvicorn (dashboard)
```
**需要** Python 3.10+ · `python-evtx` · `lxml` · `click` · `rich` · `pyyaml` · `requests`。
## 🙌 致谢
[SBousseaden](https://github.com/sbousseaden) ·
[mdecrevoisier](https://github.com/mdecrevoisier) ·
[Yamato Security](https://github.com/Yamato-Security) ·
[OTRF](https://github.com/OTRF) ·
[Fox-IT](https://github.com/fox-it) ·
[NVISO](https://github.com/NVISOsecurity) ·
[INE Labs](https://github.com/ine-labs) ·
[SigmaHQ](https://github.com/SigmaHQ) ·
[Wazuh Inc.](https://github.com/wazuh)
## 📄 许可证与作者
Apache License 2.0 — 详见 [LICENSE](LICENSE)。
由 **[Saif Eddinne Belaarbi](https://github.com/saifbelaarbi)** 构建。标签:AMSI绕过, Cloudflare, EVTX, MITRE ATT&CK, Wazuh, 威胁检测, 安全运营, 扫描框架, 请求拦截, 逆向工具