heraclescap/sigwaz-cli

GitHub: heraclescap/sigwaz-cli

将 Sigma 检测规则转换为生产可用的 Wazuh XML 规则文件的命令行工具,支持批量处理和丰富的过滤配置。

Stars: 1 | Forks: 0

# SigWaz CLI 将 [Sigma](https://github.com/SigmaHQ/sigma) 检测规则转换为生产可用的 [Wazuh](https://wazuh.com) XML —— 通过命令行完成。 SigWaz 支持单条规则转换、递归批量目录处理、ZIP 压缩包以及完整的元数据过滤,所有操作均支持脚本化,无交互式提示。 ## 示例 **输入** — 一条标准的 Sigma 规则 (`rule.yml`): ``` title: Suspicious PowerShell Download Cradle status: stable description: Detects PowerShell download cradle patterns used for payload delivery author: SigWaz Example date: 2024/01/15 logsource: category: process_creation product: windows detection: selection: CommandLine|contains: - 'IEX (New-Object' - 'Invoke-Expression' - 'DownloadString(' condition: selection falsepositives: - Legitimate administrative scripts level: high tags: - attack.execution - attack.t1059.001 ``` **命令:** ``` python sigwaz.py convert rule.yml ``` **终端输出:** ``` ╭──────────────────────────────────────────╮ │ SigWaz v1.0.0 │ │ Sigma → Wazuh · State-of-the-art │ ╰──────────────────────────────────────────╯ ✓ Suspicious PowerShell Download Cradle Sigma ID : — Level : high Status : stable Wazuh IDs: 900001 Rules : 1 generated (1.4 ms) MITRE : T1059.001 ✓ XML validation passed (1 rule, 0 warnings) ``` **生成的 Wazuh XML** (`suspicious_powershell_download_cradle_rules.xml`): ``` 61603 (?i)IEX \(New\-Object|Invoke\-Expression|DownloadString\( Suspicious PowerShell Download Cradle no_full_log windows,process_creation, T1059.001 ``` 将其放入你的 Wazuh 管理节点的 `/var/ossec/etc/rules/` 目录中并重新加载 —— 即可完成。 ## 功能特性 - **单文件与批量转换** — 支持单个文件、目录树、多文档 YAML 或 ZIP 压缩包 - **递归目录扫描** — 自动遍历子目录,跳过 `deprecated/` 文件夹 - **高级元数据过滤** — 按状态 (`experimental`, `deprecated` 等)、最低严重级别或允许的产品进行过滤 - **XML 分割** — 自动将大型输出拆分为多个块,以防止导入时 Wazuh 发生 OOM - **稳定的规则 ID** — 可选的 ID 跟踪器可在多次运行之间持久化 Sigma GUID 到 Wazuh ID 的映射 - **配置文件支持** — 将所有参数存储在 YAML 或 JSON 配置文件中;在需要时可由 CLI 标志覆盖 - **ZIP 输出** — 将所有分割的 XML 文件打包成单个 `.zip` 文件,便于部署 - **XML 验证** — 每次转换后进行内置的结构验证 - **字段映射表** — 检查所有的 Sigma → Wazuh 解码器路径映射 - **无 TUI,完全支持脚本化** — 专为自动化和 CI 流水线设计 ## 前置条件 - Python 3.11 或更高版本 - pip ## 安装说明 ``` git clone https://github.com/your-org/sigwaz-cli.git cd sigwaz-cli pip install -r requirements.txt ``` 验证: ``` python sigwaz.py --help ``` 或者,如果作为软件包安装: ``` pip install -e . sigwaz --help ``` ## 用法 ### 转换单个规则 ``` # 打印 XML 至 stdout python sigwaz.py convert rule.yml # 保存至文件 python sigwaz.py convert rule.yml -o output/rule_rules.xml # Dry-run(仅分析不写入) python sigwaz.py convert rule.yml --dry-run # 自定义 rule ID base;同时包含 experimental rules(始终包含 stable) python sigwaz.py convert rule.yml -r 910000 -I experimental ``` ### 批量转换目录 ``` # 递归扫描目录,输出至 output/ python sigwaz.py batch rules/windows/ -o output/ # 拆分为最多 100 条 rules 的块 python sigwaz.py batch rules/ -o output/ --split 100 # Filter:medium+ 严重性,仅 stable rules(默认) — 无需额外添加 python sigwaz.py batch rules/ -o output/ --min-level medium # 在 stable 之上同时包含 experimental 和 test rules python sigwaz.py batch rules/ -o output/ -I experimental,test # 仅 Windows 和 Linux rules python sigwaz.py batch rules/ -o output/ --allowed-products windows,linux # 将输出打包为 ZIP archive python sigwaz.py batch rules/ -o output/ --zip # 从 YAML 文件的 ZIP archive 中 python sigwaz.py batch sigma-rules.zip -o output/ --split 50 ``` ### 使用配置文件 对于复杂的配置,你可以将所有参数存储在配置文件中,以避免冗长的命令行: ``` python sigwaz.py batch rules/ -o output/ --config config.yaml ``` 显式提供时,CLI 标志始终会覆盖配置文件中的设置: ``` # 使用 config.yaml 但强制 min-level 为 high python sigwaz.py batch rules/ -o output/ --config config.yaml --min-level high ``` #### `config.yaml` 示例 ``` rule_id_start: 900000 no_full_log: true email_alert: false email_levels: - critical - high excluded_statuses: - experimental - deprecated min_level: medium allowed_products: - windows - linux - aws split_size: 50 level_informational: 5 level_low: 7 level_medium: 10 level_high: 12 level_critical: 15 # 可选:针对各个 product 的 field path 覆盖 field_overrides: windows: CommandLine: win.eventdata.commandLine # 可选:在多次运行中保持 stable rule IDs id_file: ~/.sigwaz/ids.json ``` #### `config.json` 示例 ``` { "rule_id_start": 900000, "excluded_statuses": ["experimental", "deprecated"], "min_level": "medium", "split_size": 100 } ``` ### 验证现有 XML 文件 ``` python sigwaz.py check output/windows_rules.xml python sigwaz.py check /var/ossec/etc/rules/sigma_rules.xml ``` ### 检查字段映射 ``` # 所有 products python sigwaz.py fieldmaps # 单个 product python sigwaz.py fieldmaps windows # JSON 输出(pipe 至 jq 等) python sigwaz.py fieldmaps aws --json ``` ### 显示版本和支持的产品 ``` python sigwaz.py info python sigwaz.py sidmaps ``` ## 所有 CLI 选项 | 标志 | 简写 | 默认值 | 描述 | |------|-------|---------|-------------| | `--config` | `-c` | — | YAML 或 JSON 配置文件 | | `--output` | `-o` | — | 输出文件或目录 | | `--rule-id-start` | `-r` | `900000` | 起始 Wazuh 规则 ID | | `--split` | `-s` | `50` | 每个 XML 文件的最大规则数 (0 = 不分割) | | `--include-statuses` | `-I` | — | **除** `stable` **之外**还要转换的 Sigma 状态。默认:仅转换 stable 规则。示例:`-I experimental` 或 `-I experimental,test` | | `--min-level` | `-l` | — | 最低 Sigma 严重级别 (`low`/`medium`/`high`/`critical`) | | `--allowed-products` | `-p` | — | Logsource 产品白名单 (CSV) | | `--zip` | `-z` | 禁用 | 将输出的 XML 文件打包成 ZIP | | `--dry-run` | `-d` | 禁用 | 解析并报告而不写入文件 | | `--show-xml` | `-X` | 禁用 | 即使设置了 `--output`,也将 XML 打印到终端 | | `--id-file` | `-i` | — | ID 持久化 JSON 文件的路径 | | `--email-levels` | `-E` | `critical,high` | 触发电子邮件警报的级别 | | `--no-full-log / --full-log` | — | 启用 | 为规则追加 `no_full_log` 选项 | | `--email-alert / --no-email` | — | 禁用 | 为符合条件的规则追加 `alert_by_email` | | `--validate / --no-validate` | — | 启用 | 转换后运行 XML 验证 | | `--field-overrides` | — | — | JSON:按产品划分的字段映射覆盖 | | `--if-sid-overrides` | — | — | JSON:按产品划分的 if_sid 覆盖 | | `--if-group-overrides` | — | — | JSON:按产品划分的 if_group 覆盖 | | `--level-informational` | — | `5` | Sigma informational 规则对应的 Wazuh 级别 | | `--level-low` | — | `7` | Sigma low 规则对应的 Wazuh 级别 | | `--level-medium` | — | `10` | Sigma medium 规则对应的 Wazuh 级别 | | `--level-high` | — | `12` | Sigma high 规则对应的 Wazuh 级别 | | `--level-critical` | — | `15` | Sigma critical 规则对应的 Wazuh 级别 | ## 支持的产品 运行 `sigwaz info` 查看完整列表。核心覆盖范围包括: Windows、Sysmon、SysmonForLinux、Linux Auditd、SSH、PAM、Sudo、ClamAV、Apache、Nginx、IIS、AWS CloudTrail、Azure AD、GCP、Office 365、Okta、GitHub、Kubernetes、DNS、Network/Firewall、Palo Alto PAN-OS、Cisco ASA/FTD、Fortinet FortiGate、Check Point、OSQuery、Zeek/Bro。 ## SigWaz Web — 推荐体验 CLI 功能强大,但如果你需要进行**日常转换**、在 **SOC 团队**中工作,或者只想探索 Sigma 规则而无需记住各种标志,**SigWaz Web 界面**将是更合适的工具。 | | CLI | Web | |---|---|---| | 设置 | Python + pip | 打开浏览器 | | 单次转换 | ✓ | ✓ 实时,随打字转换 | | 批量 / ZIP | ✓ | ✓ 拖放 | | 输出下载 | 文件系统 | 一键下载 `.xml` 或 `.zip` | | 设置 | 标志 / 配置文件 | 图形面板 | | 语法高亮 | — | ✓ YAML 输入,XML 输出 | | 字段映射浏览器 | `sigwaz fieldmaps` | 内置浏览器 | **为什么团队更喜欢 Web 版本:** - **对最终用户零安装** — 只需要一个 URL,无需管理 Python 环境 - **即时反馈** — 转换错误会在你编辑 YAML 时实时显示,而不是在运行命令后才出现 - **可共享的结果** — 直接从浏览器下载 XML 并进行交接;无需共享文件系统 - **图形化设置** — 规则 ID 基数、严重级别映射、电子邮件警报级别、产品过滤器 —— 所有这些都可通过 UI 进行配置,无需查找命令标志 - **完全相同的输出** — Web 应用运行与此 CLI 完全相同的引擎;在浏览器中转换的规则会生成与 `sigwaz convert` 逐字节相同的 XML Web 应用可在 **[sigwaz.com](https://sigwaz.com)** 访问。 ## 许可证 MIT 许可证 — 详见 [LICENSE](LICENSE)
标签:AMSI绕过, Cloudflare, DevSecOps, MITRE ATT&CK, OpenCanary, Python, Sigma规则, Wazuh, XML生成, ZIP解压, 上游代理, 威胁检测, 字段映射, 安全检测规则, 安全编排与自动化响应, 开源安全工具, 恶意代码分析, 批量处理, 文档结构分析, 无后门, 目标导入, 脚本工具, 自动化转换, 规则转换器, 逆向工具, 逆向工程平台, 配置文件