fredzirbel/SIGIL

GitHub: fredzirbel/SIGIL

一个完整的 Detection-as-Code 框架,用于 Sigma 规则的验证、SIEM 转换、测试和 MITRE ATT&CK 覆盖映射。

Stars: 0 | Forks: 0

# SIGIL — Sigma 智能治理与集成层 **用于编写、测试和部署 Sigma 检测规则的 Detection-as-Code 框架。** [![Python 3.11+](https://img.shields.io/badge/python-3.11+-3776AB?logo=python&logoColor=white)](https://python.org) [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE) [![CI](https://img.shields.io/badge/CI-GitHub_Actions-2088FF?logo=githubactions&logoColor=white)](#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 仪表盘, 代码管道, 域名分析, 威胁检测, 安全编排, 态势感知, 恶意代码分类, 数据投毒防御, 无后门, 检测即代码, 热力图, 网络安全, 脆弱性评估, 自动笔记, 规则测试, 规则验证, 请求拦截, 逆向工具, 隐私保护