wahidhendrawan/yara-sigma-webui
GitHub: wahidhendrawan/yara-sigma-webui
将 YARA 规则自动转换为 Sigma 检测规则和七种主流 SIEM/EDR 平台原生查询的转换工具,提供 Web 工作台、CLI 和 Python 库。
Stars: 1 | Forks: 0
# 🛡️ YARA → Sigma 转换器 (`yar2sig`)
[](LICENSE)
[](https://www.python.org/)
[](docker-compose.yml)
[](#-supported-backends)
[](tests/)
[](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, 云资产可视化, 威胁检测, 无后门, 版权保护, 脆弱性评估, 请求拦截, 逆向工具