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)。
标签:恶意代码分类, 逆向工具