wahidhendrawan/yara-sigma-webui

GitHub: wahidhendrawan/yara-sigma-webui

将 YARA 规则自动转换为 Sigma 检测规则和七种主流 SIEM/EDR 平台原生查询的转换工具,提供 Web 工作台、CLI 和 Python 库。

Stars: 1 | Forks: 0

# 🛡️ YARA → Sigma 转换器 (`yar2sig`) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Python](https://img.shields.io/badge/python-3.9%2B-blue)](https://www.python.org/) [![Docker](https://img.shields.io/badge/docker-compose%20ready-2496ED?logo=docker&logoColor=white)](docker-compose.yml) [![Backends](https://img.shields.io/badge/SIEM%2FEDR%20backends-7-6366f1)](#-supported-backends) [![Tests](https://img.shields.io/badge/tests-11%20passing-brightgreen)](tests/) [![Version](https://img.shields.io/badge/version-3.0.0-informational)](pyproject.toml) 将 **YARA 规则**转换为 **Sigma 规则**和**原生 SIEM/EDR 查询** — 具备自动 IOC 分类、MITRE ATT&CK 标记、可配置的映射 pipeline、简洁的 CLI 以及专业的 Web 工作台。出厂即 **支持 Docker-Compose**,内置捆绑了 gunicorn 和 `sigma-cli`,可直接 开箱即用进行原生转换。 ``` docker compose up -d --build # → http://127.0.0.1:8000 ``` ## ✨ 功能 - **模块化库** (`yar2sig`) — parser、IOC 分类器、Sigma emitter 和 backend 查询生成器清晰地分离,可独立测试。 - **IOC 分类** — 模式会自动分类为 `url`、`ip`、`hash`、 `email`、`domain`、`registry`、`mutex`、`user_agent`、`named_pipe`、 `path_or_filename` 或 `generic`,并在每个 pipeline 中映射到正确的 Sigma 字段。 - **YARA 解析** — 处理文本、hex 和 regex 字符串、每个文件中的多个规则、规则标签 以及 `meta` 字段。 - **MITRE ATT&CK 标记** — 在 `meta` 中找到的技术 ID (`T1059.001`) 会自动转换为 `attack.t1059.001` 标签。 - **可配置的 pipeline** — `yar2sig/mappings/` 下的 YAML 映射规范 定义了 IOC 如何映射到每个日志源的字段。内置 **sysmon**、 **winsec**、**linux** 和 **proxy**。无需修改代码即可添加新规范。 - **7 种 SIEM/EDR backend** — Elastic、Splunk、Microsoft Sentinel/Defender (Kusto)、 QRadar、Carbon Black、SentinelOne、CrowdStrike。安装后会使用 `sigma-cli` 进行原生 转换;否则回退到通配符查询。 - **转换报告** — 每次转换都会说明每个模式是如何被 分类和映射的。 - **转换置信度** — 生成的规则包含一个 `x_yar2sig` 质量 块,带有置信度分数、警告和需要审查的状态。 - **更安全的回退查询** — backend 回退查询会转义引号、 反斜杠、Lucene 特殊字符以及类 SQL 的通配符。 - **YARA Sigma Studio** — 专注的 YARA 到 Sigma 工作台,支持 `.yar` 导入、 映射 pipeline 选择、SIEM 查询 backend 选择、Sigma/查询/报告 选项卡、置信度指标、复制/下载操作、示例规则以及 `Ctrl+Enter` 转换。 - **CLI** — 转换单个文件或整个目录;列出 pipeline;生成 backend 查询。 - **支持 Docker-Compose** — 加固的 container(非 root 用户、只读 FS、 降权 capabilities、资源限制)运行 gunicorn,并内置 `sigma-cli` 和 backend 插件。 ## 📦 安装 ### 🐳 Docker(推荐) 该镜像捆绑了 **gunicorn**(生产环境 WSGI)和 **sigma-cli** + backend 插件,因此原生查询转换开箱即用。 ``` docker compose up -d --build # 打开 http://127.0.0.1:8000 ``` 使用 `PORT=9000 docker compose up -d` 更改端口。使用 `docker compose down` 停止。健康检查:`curl localhost:8000/healthz`。 该 container 已经过加固:非 root 用户、只读 root FS、丢弃 Linux capabilities、`no-new-privileges`,以及 CPU/内存限制(1 CPU / 256 MB)。 ### 🐍 本地(Python) ``` git clone https://github.com/wahidhendrawan/yara-sigma-webui.git cd yara-sigma-webui pip install -r requirements.txt python app.py # dev server on http://127.0.0.1:5000 ``` 或者作为包安装(为您提供 `yar2sig` 命令): ``` pip install -e . ``` 如需包含 Web、生产服务器和原生 Sigma backend 转换支持的完整本地安装: ``` pip install -e ".[full]" ``` ## 🖥️ Web UI ``` docker compose up -d --build # http://127.0.0.1:8000 (recommended) # 或者,用于本地开发: python app.py # http://127.0.0.1:5000 ``` 粘贴或导入 `.yar` 规则,选择一个**映射 pipeline**和可选的 **查询 backend**,点击 **Convert**(或按 `Ctrl+Enter`)。Web UI 会在 独立的选项卡中返回 Sigma 规则、特定于 backend 的 SIEM/EDR 查询以及转换报告。 Web API 会验证 pipeline/backend 名称,并返回结构化的转换 元数据以及查询输出: ``` { "sigma": "title: Suspicious_Cmd...", "query": "_raw=\"*cmd.exe*\"", "quality": { "confidence": "medium", "confidence_score": 70, "review_required": true, "warnings": ["Complex YARA condition preserved only approximately: ..."] } } ``` ## ⌨️ CLI ``` # 列出可用的映射 pipelines python -m yar2sig pipelines # 转换单个文件(输出 YAML) python -m yar2sig convert samples/malware.yar -p sysmon # 将规则目录转换到输出文件夹中 python -m yar2sig convert rules/ -p winsec -o out/ -v # 生成原生 Splunk 查询 python -m yar2sig query samples/malware.yar -b splunk ``` 如果通过 `pip install -e .` 安装,请将 `python -m yar2sig` 替换为 `yar2sig`。 ## 🧩 库 API ``` from yar2sig import convert, generate_query, available_pipelines sigma_rule, report = convert(open("rule.yar").read(), pipeline="sysmon") print(available_pipelines()) # ['linux', 'proxy', 'sysmon', 'winsec'] # 针对 backend 的原生查询 from yar2sig.parser import parse_yara_rule parsed = parse_yara_rule(open("rule.yar").read()) print(generate_query("splunk", sigma_rule, parsed["strings"])) ``` ## 🗂️ 映射 Pipeline 每个 pipeline 都是 `yar2sig/mappings/` 中的一个 YAML 文件: ``` logsource: product: windows service: sysmon fallback_field: Image mappings: url: fields: [Image, CommandLine] op: contains ip: fields: [DestinationIp] op: equals # ... ``` 要添加新的 pipeline(例如用于 Zeek、Okta、AWS CloudTrail),只需在该目录中放入一个新的 `.yaml` 文件 — 它会自动被识别。 | Pipeline | 日志源 | 用例 | |---|---|---| | `sysmon` | Windows / Sysmon | 终端进程/网络/注册表事件 | | `winsec` | Windows 安全 | 4688 进程创建、登录 | | `linux` | Linux process_creation | Auditd / Sysmon-for-Linux | | `proxy` | Web 代理 | 基于 URL/domain/UA 的检测 | ## 🎯 支持的 Backend | Backend | 原生 (sigma-cli) | 回退字段 | |---|---|---| | Elastic (Lucene/KQL) | ✅ `lucene` | `message` | | Splunk SPL | ✅ `splunk` | `_raw` | | Microsoft Sentinel / Defender (KQL) | ✅ `kusto` | `ProcessCommandLine` | | IBM QRadar AQL | ✅ `qradar` | `payload` | | VMware Carbon Black | fallback | `process_cmdline` | | SentinelOne Deep Visibility | fallback | `SrcProcCmdLine` | | CrowdStrike Falcon | fallback | `CommandLine` | 安装 `sigma-cli` + 相关的 backend 插件以进行原生转换。 ## 🧪 测试 ``` pip install -e ".[web,dev]" pytest -q ``` 该仓库包含了针对 Python 3.9 和 3.12 的 GitHub Actions CI,外加 Docker 镜像构建检查。 ## ⚠️ 免责声明 YARA 和 Sigma 基于**不同的数据模型**运行 — YARA 匹配文件/内存 内容,Sigma 匹配日志事件。此工具生成的是一个**尽力而为的起点**, 而不是 1:1 的翻译。在部署之前,请务必检查生成的规则并针对您的环境调整字段、 操作符和误报情况。 ## 📄 许可证 [MIT](LICENSE) © Wahid Hendrawan
标签:AMSI绕过, EDR, OpenCanary, Python, YARA, 云资产可视化, 威胁检测, 无后门, 版权保护, 脆弱性评估, 请求拦截, 逆向工具