fredzirbel/SIGIL
GitHub: fredzirbel/SIGIL
一个完整的 Detection-as-Code 框架,用于 Sigma 规则的验证、SIEM 转换、测试和 MITRE ATT&CK 覆盖映射。
Stars: 0 | Forks: 0
# SIGIL — Sigma 智能治理与集成层
**用于编写、测试和部署 Sigma 检测规则的 Detection-as-Code 框架。**
[](https://python.org)
[](LICENSE)
[](#cicd-pipeline)
SIGIL 是一个完整的 Sigma 规则 Detection-as-Code 流水线。它根据 Sigma 规范验证规则语法,将规则转换为 Splunk SPL 和 Microsoft Sentinel KQL,使用 TP/FP/TN/FN 判定针对示例日志数据进行测试,将覆盖范围映射到 MITRE ATT&CK Enterprise 矩阵,并通过交互式 Web 仪表板可视化缺口。
## 功能特性
- **Schema Validation** — 根据 Sigma 规范验证必填字段、UUID 格式、ATT&CK 标签语法、检测结构以及 severity/status 枚举
- **SIEM Conversion** — 通过 pySigma backend 及 pipeline 转换,将 Sigma 规则转换为 Splunk SPL 和 Microsoft Sentinel KQL
- **Rule Testing** — 针对示例日志文件评估规则,得出真阳性 (TP)、假阳性 (FP)、真阴性 (TN) 和假阴性 (FN) 判定
- **ATT&CK Coverage Mapping** — 从规则中提取 technique 标签,并与 100+ 项技术的 Enterprise 矩阵进行交叉引用,以识别检测缺口
- **Web Dashboard** — 基于 FastAPI 的深色主题热力图,显示按战术 (tactic) 划分的覆盖范围,包含颜色编码的单元和规则验证状态
- **Full Pipeline** — 单个 CLI 命令链式执行验证、转换、测试和覆盖阶段,并返回用于 CI/CD 的通过/失败退出代码
- **8 Sample Rules** — 涵盖 Windows 进程创建、注册表、网络、Linux 进程创建和 AWS CloudTrail
- **CI/CD Ready** — GitHub Actions 工作流在每次推送时运行 linting 和测试
## 快速开始
### 本地安装
```
git clone https://github.com/fredzirbel/SIGIL.git
cd SIGIL
python -m venv .venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
pip install -e ".[dev]"
```
### 运行流水线
```
# 验证所有规则
sigil validate rules/
# 转换为 Splunk SPL
sigil convert rules/ -t splunk
# 转换为 Microsoft Sentinel KQL
sigil convert rules/ -t sentinel
# 使用示例日志测试规则
sigil test rules/ -l sample_logs/
# 显示 ATT&CK 覆盖摘要
sigil coverage rules/
# 运行完整 pipeline (validate + convert + test + coverage)
sigil pipeline rules/ -t splunk -l sample_logs/
# 启动 Web dashboard
sigil dashboard
```
### Docker
```
docker build -t sigil .
docker run -p 8000:8000 sigil
```
打开 **http://localhost:8000** 查看 ATT&CK 覆盖热力图。
### Docker Compose
```
docker compose up --build
```
## CLI 命令
| Command | Description |
|---------|-------------|
| `sigil validate
` | 根据 Sigma 规范验证 Sigma 规则 |
| `sigil convert -t ` | 将规则转换为目标 SIEM 查询语言 |
| `sigil test -l ` | 针对示例日志文件测试规则 (TP/FP/TN/FN) |
| `sigil coverage ` | 显示 MITRE ATT&CK 覆盖摘要 |
| `sigil pipeline -t -l ` | 端到端运行完整流水线 |
| `sigil dashboard [--host HOST] [--port PORT]` | 启动 FastAPI Web 仪表板 |
## 流水线阶段
`sigil pipeline` 命令按顺序执行四个阶段。每个阶段在终端中生成一个 Rich 格式的表格,并返回通过/失败的退出代码。
| Stage | What It Does |
|-------|-------------|
| **Validate** | 解析每个 `.yml` 文件,检查必填字段(`title`、`id`、`logsource`、`detection`、`level`、`status`),验证 UUID 格式、status/level 枚举以及 ATT&CK 标签语法 |
| **Convert** | 将每条规则通过目标 SIEM 的 pySigma backend 处理,生成带有字段映射 pipeline 的原生查询(SPL 或 KQL) |
| **Test** | 根据日志源将规则与示例日志 JSON 文件进行匹配,评估检测条件,并将结果分类为 TP/FP/TN/FN |
| **Coverage** | 提取 `attack.tXXXX` 标签,将其映射到 100+ 项技术的 Enterprise 矩阵,并报告按战术划分的覆盖情况及缺口识别 |
## 示例规则
SIGIL 附带 8 条检测规则,涵盖 Windows、Linux 和 AWS 云环境:
| Rule | Platform | Tactic | Technique | Level |
|------|----------|--------|-----------|-------|
| Mimikatz Credential Dumping | Windows | Credential Access | T1003.001 | Critical |
| LSASS Memory Access | Windows | Credential Access | T1003.001 | Critical |
| PowerShell Download Cradle | Windows | Execution, C2 | T1059.001, T1105 | High |
| Scheduled Task Creation | Windows | Persistence, Execution | T1053.005 | Medium |
| Registry Run Key Persistence | Windows | Persistence | T1547.001 | High |
| Suspicious Outbound Connection | Windows | Command and Control | T1071.001 | Medium |
| Linux Reverse Shell | Linux | Execution | T1059.004 | Critical |
| AWS Root Console Login | AWS | Initial Access | T1078.004 | Critical |
## ATT&CK 覆盖范围
Web 仪表板渲染一个横跨所有 14 个 Enterprise 战术的全宽热力图:
- **Green cells** — 该技术已被一个或多个 Sigma 规则覆盖
- **Red cells** — 检测缺口,没有规则映射到此技术
- **Per-tactic summary** 行显示已覆盖/总数统计
- **Coverage percentage** 显示在标题统计中
运行 `sigil dashboard` 后,通过 `http://localhost:8000` 访问热力图。
JSON 覆盖数据可通过 `GET /api/coverage` 获取,规则元数据可通过 `GET /api/rules` 获取。
## 架构
```
┌─────────────────────────────────────────┐
│ CLI (argparse + Rich) │
│ validate | convert | test | coverage │
└────────────────────┬────────────────────┘
│
┌─────────────────────────────┼─────────────────────────────┐
│ │ │
┌────────▼────────┐ ┌───────────▼──────────┐ ┌─────────▼────────┐
│ Validator │ │ Converter │ │ Tester │
│ (schema.py) │ │ (splunk / sentinel) │ │ (engine.py) │
├─────────────────┤ ├──────────────────────┤ ├──────────────────┤
│ Required fields │ │ pySigma backends │ │ Log loader │
│ UUID format │ │ Pipeline transforms │ │ Condition eval │
│ ATT&CK tags │ │ Field mappings │ │ TP/FP/TN/FN │
│ Detection block │ │ SPL + KQL output │ │ Verdict report │
└─────────────────┘ └──────────────────────┘ └──────────────────┘
│ │ │
└─────────────────────────────┼─────────────────────────────┘
│
┌────────────────────▼────────────────────┐
│ ATT&CK Coverage Mapper │
│ (100+ technique Enterprise matrix) │
└────────────────────┬────────────────────┘
│
┌────────────────────▼────────────────────┐
│ FastAPI Web Dashboard │
│ (Jinja2 heatmap + JSON API endpoints) │
└─────────────────────────────────────────┘
```
## API Endpoints
| Method | Endpoint | Description |
|--------|----------|-------------|
| `GET` | `/` | 包含 ATT&CK 覆盖热力图的仪表板 |
| `GET` | `/rules` | 规则列表页面 |
| `GET` | `/api/coverage` | JSON 覆盖数据(按战术细分、缺口) |
| `GET` | `/api/rules` | JSON 规则列表,包含验证状态和 ATT&CK 标签 |
## 技术栈
- **Backend:** Python 3.11, FastAPI, Uvicorn
- **Rule Parsing:** PyYAML, pySigma, pydantic
- **SIEM Backends:** pysigma-backend-splunk, pysigma-pipeline-sysmon
- **Frontend:** Jinja2 templates, vanilla CSS (dark theme)
- **CLI Output:** Rich tables and panels
- **CI/CD:** GitHub Actions (lint + test)
- **Container:** Docker, Docker Compose
## 开发
### 设置
```
git clone https://github.com/fredzirbel/SIGIL.git
cd SIGIL
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pre-commit install
```
### 运行测试
```
pytest
```
### Linting
```
ruff check src/ tests/
```
## CI/CD Pipeline
GitHub Actions 工作流(`.github/workflows/ci.yml`)在每次推送到 `main` 和 `dev` 时运行:
1. **Checkout** 检出仓库
2. **Setup** 设置 Python 3.11
3. **Install** 使用 `pip install -e ".[dev]"` 安装依赖
4. **Lint** 使用 ruff 对 `src/` 和 `tests/` 进行 lint
5. **Test** 使用 pytest 进行测试
第二个工作流(`.github/workflows/sigma-validate.yml`)独立验证 Sigma 规则语法。
## License
MIT标签:AMSI绕过, AV绕过, CI/CD 安全, Detection-as-Code, EDR, FastAPI, FTP漏洞扫描, GitHub Actions, HTTP/HTTPS抓包, MITRE ATT&CK 覆盖, Python, Sentinel KQL, SIEM 转换, Sigma 规则, Splunk SPL, Web 仪表盘, 代码管道, 域名分析, 威胁检测, 安全编排, 态势感知, 恶意代码分类, 数据投毒防御, 无后门, 检测即代码, 热力图, 网络安全, 脆弱性评估, 自动笔记, 规则测试, 规则验证, 请求拦截, 逆向工具, 隐私保护