stephennotw/SigmaForge

GitHub: stephennotw/SigmaForge

SigmaForge:通用检测规则转换器,简化YARA、Sigma和Suricata之间的转换。

Stars: 0 | Forks: 0

# SigmaForge **通用检测规则转换器 — YARA ↔ Sigma ↔ Suricata,多SIEM输出** SigmaForge在YARA、Sigma和Suricata格式之间转换检测规则,并同时为多个SIEM/EDR平台生成可用的查询。无需AI,无云依赖 — 纯确定性解析和转换。 ## 功能 - **双向转换** — YARA → Sigma,Sigma → YARA,Sigma → Suricata,Suricata → Sigma - **多SIEM后端输出** — Elasticsearch,Splunk SPL,Microsoft Defender KQL,SentinelOne Deep Visibility,IBM QRadar AQL - **字段感知映射** — 分析规则上下文(PE导入、注册表、网络、文件系统)以选择适当的Sigma字段,而不是默认使用CommandLine - **自动MITRE ATT&CK标记** — 基于关键词的技术映射与置信度评分(覆盖30+技术) - **完整的YARA解析器** — 处理文本、十六进制和正则表达式模式以及复杂条件 - **Sigma验证** — 对生成的规则进行SigmaHQ模式验证 - **批量转换** — 上传多个规则文件,一次性转换所有文件,下载为ZIP - **CLI模式** — `sigmaforge --from yara --to sigma --input rules/` 用于CI/CD管道 - **Web UI** — 现代深色主题界面,带有CodeMirror编辑器和实时预览 ## 快速开始 ``` # Clone git clone https://github.com/stephennotw/sigmaforge.git cd sigmaforge # 安装依赖 python -m venv venv venv\Scripts\activate # Windows # source venv/bin/activate # Linux/macOS pip install -r requirements.txt # 运行 Web UI python run.py # 打开 http://127.0.0.1:5000 ``` ## CLI使用 ``` # 单文件转换 python cli/sigmaforge_cli.py --from yara --to sigma -i rule.yar -o output.yml # 带 SIEM 后端查询 python cli/sigmaforge_cli.py --from yara --to sigma -i rule.yar --backends elastic splunk defender --json # 批量转换(目录) python cli/sigmaforge_cli.py --from yara --to sigma -i ./yara_rules/ -o ./sigma_rules/ # 带 ATT&CK 标签 python cli/sigmaforge_cli.py --from yara --to sigma -i rule.yar --tag ``` ## API端点 | 方法 | 端点 | 描述 | |------|----|--------| | POST | `/api/convert` | 转换单个规则 | | POST | `/api/batch` | 批量转换多个文件 | | POST | `/api/batch/download` | 将批量结果下载为ZIP | | POST | `/api/validate` | 验证Sigma规则 | | GET | `/api/backends` | 列出可用的SIEM后端 | | GET | `/api/formats` | 列出支持的转换路径 | ### 转换API示例 ``` curl -X POST http://127.0.0.1:5000/api/convert \ -H "Content-Type: application/json" \ -d '{ "source_format": "yara", "target_format": "sigma", "source_rule": "rule test { strings: $s1 = \"malware\" condition: $s1 }", "backends": ["elastic", "splunk", "defender"], "auto_tag": true }' ``` ## 支持的转换 | 从 | 到 | 状态 | |------|----|--------| | YARA | Sigma | 完整(文本 + 十六进制 + 正则表达式模式) | | Sigma | YARA | 完整(检测块提取) | | Sigma | Suricata | 网络类别规则 | | Suricata | Sigma | 内容匹配提取 | ## SIEM后端 | 后端 | 查询语言 | 输出 | |---------|---------------|--------| | Elasticsearch | Lucene / KQL | Field:value查询 | | Splunk | SPL | index=搜索查询 | | Microsoft Defender | KQL | DeviceEvents表查询 | | SentinelOne | Deep Visibility | ContainsCIS查询 | | IBM QRadar | AQL | SELECT FROM events查询 | ## 项目结构 ``` sigmaforge/ ├── app/ │ ├── __init__.py # Flask app factory │ ├── routes.py # Web UI + REST API routes │ ├── models.py # Data models │ ├── parsers/ # YARA, Sigma, Suricata parsers │ ├── converters/ # Conversion engines │ ├── backends/ # SIEM query generators │ └── tagger/ # ATT&CK auto-tagger ├── cli/ # Command-line interface ├── templates/ # HTML templates ├── static/ # CSS + JS ├── mappings/ # Field mapping configs ├── requirements.txt └── run.py # Entry point ``` ## 技术栈 - **后端:** Python 3.10+,Flask - **前端:** Vanilla JS,CodeMirror 5,受Tailwind启发的自定义CSS - **解析:** plyara(YARA),PyYAML(Sigma),正则表达式(Suricata) - **无AI/ML依赖** ## 许可证 MIT许可证 — 有关详细信息,请参阅[LICENSE](LICENSE)。
标签:恶意代码分类, 逆向工具