muchdogesec/sigmahq2siemrules
GitHub: muchdogesec/sigmahq2siemrules
这是一个基于 GitHub Action 的上传器,能够自动将 SigmaHQ 仓库的最新检测规则增量同步至 SIEMRULES 平台。
Stars: 0 | Forks: 0
# 将 Sigmahq2siemrules 转换为 SIEM 规则
一个基于 GitHub Action 的上传器,用于将 Sigma 检测规则从 [SigmaHQ 仓库](https://github.com/SigmaHQ/sigma) 自动同步到 SIEMRULES API。
## 概述
该工具监控外部仓库中 Sigma 规则文件(`.yml`/`.yaml`)的更改,并自动将其上传到 SIEMRULES 实例。它会跟踪已处理的规则,并在后续运行中仅上传新增或修改的规则。
## 功能
- **增量处理**:跟踪上次处理的提交,避免重新上传未更改的规则
- **并发上传**:使用线程池进行高效的并行文件上传
- **作业监控**:自动监控上传作业状态直到完成
- **检测包集成**:可选择将上传的规则添加到特定的检测包
- **GitHub Actions 集成**:生成工作流摘要和工件
- **错误处理**:全面的错误跟踪和报告
- **废弃规则过滤**:可选择跳过废弃目录中的规则
## 环境变量
### 必需变量(Action 运行时)
| 变量 | 描述 | 示例 |
|----------|-------------|---------|
| `SIEMRULES_BASE_URL` | SIEMRULES API 的 Base URL | `https://api.siemrules.com` |
| `SIEMRULES_API_KEY` | 用于 SIEMRULES 身份验证的 API key | `your-api-key-here` |
| `DETECTION_PACK_ID` | 要添加规则到的检测包的 UUID | `550e8400-e29b-41d4-a716-446655440000` |
### 可选变量(本地运行时)
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `GITHUB_REPO_URL` | `https://github.com/SigmaHQ/sigma` | 要克隆和处理的外部仓库 URL |
| `PROCESS_DEPRECATED` | `false` | 是否处理 `deprecated` 或 `unsupported` 目录中的规则。设置为 `true`、`1`、`y` 或 `yes` 以启用 |
| `MAX_WORKERS` | `10` | 用于上传和状态检查的并发工作线程数 |
| `STATUS_CHECK_INTERVAL` | `10` | 作业状态检查之间的等待秒数 |
| `MAX_STATUS_CHECKS` | `180` | 超时前的最大状态检查轮数 |
## 使用方法
### 命令行参数
```
python actions/uploader.py [OPTIONS]
```
**选项:**
- `--start-commit`:用于 diff 比较的起始提交 SHA(默认为上次处理的提交或空树)
- `--end-commit`:用于 diff 比较的结束提交 SHA(默认为 HEAD)
### 使用示例
```
# 处理自上次运行以来的所有更改 (使用 last_commit.txt)
python actions/uploader.py
# 处理特定提交之间的更改
python actions/uploader.py --start-commit abc123 --end-commit def456
# 从特定提交处理到 HEAD
python actions/uploader.py --start-commit abc123
```
### GitHub Actions 工作流
## 工作原理
1. **仓库克隆**:克隆外部 Sigma 仓库
2. **差异计算**:比较上次处理的提交与 HEAD 以查找更改的 YAML 文件
3. **过滤**:可选择过滤掉 `deprecated` 或 `unsupported` 目录中的规则
4. **规则上传**:将每条规则上传到 SIEMRULES API(或修改现有规则)
5. **状态监控**:轮询作业状态,直到所有作业完成或超时
6. **检测包**:将成功上传的规则添加到指定的检测包
7. **工件**:将结果保存到 JSON 文件并生成 GitHub 工作流摘要
8. **提交跟踪**:保存当前提交 SHA 以供下次运行使用
## 生成的工件
- `artifacts/succeeded_jobs.json` - 成功上传的规则列表
- `artifacts/failed_jobs.json` - 失败的上传列表及错误详情
- `artifacts/badges.json` - 用于在 README 中显示的徽章数据
- `artifacts/last_commit.txt` - 上次处理的提交 SHA
## 依赖项
- `requests` - 用于 API 调用的 HTTP 客户端
- `PyYAML` - YAML 解析和操作
- `gitpython` - Git 仓库操作
## 退出码
- `0` - 成功(至少有一次成功上传 或 没有失败)
- `1` - 失败(没有成功上传 且 至少有一次失败)
- `19` - Git/文件检索错误
标签:AMSI绕过, API集成, Cybersecurity, DevSecOps, GitHub Actions, Python, 上传器, 上游代理, 可观测性, 同步工具, 增量处理, 威胁检测, 字符串匹配, 并行处理, 恶意代码分类, 无后门, 网络安全研究, 网络调试, 自动化, 自动笔记, 规则同步, 逆向工具