akeemmckenzie/sigmagen
GitHub: akeemmckenzie/sigmagen
这是一个基于 RAG 技术的 AI 驱动工具,能够根据 MITRE ATT&CK 技术 ID 或攻击描述快速生成生产级的 Sigma SIEM 检测规则。
Stars: 0 | Forks: 0
SigmaGen
基于 RAG 驱动,从 MITRE ATT&CK 技术 ID 或原始攻击遥测数据生成生产级 Sigma 检测规则。
快速开始 • 工作原理 • CLI 参考 • REST API • 贡献
## 问题所在 CISA 和各主要威胁情报框架一致认为:企业安全中的首要短板是新技术在野出现与 SIEM 中落地检测规则之间的时间差。大多数 SOC 团队缺乏足够的检测工程师。从零开始编写高质量的 Sigma 规则(包括正确的 logsource、字段映射、误报过滤器和 ATT&CK 标签)每个技术需要 30-60 分钟。 ## 解决方案 SigmaGen 弥补了这一差距。提供一个技术 ID 或描述攻击行为,它会在几秒钟内生成可部署的 Sigma YAML: ``` $ sigmagen generate --technique T1059.001 ``` ``` ──────────────────── SigmaGen Rule Generation ──────────────────── Retrieving context from knowledge base... Retrieved 5 techniques, 5 existing rules Generating rules via anthropic... LLM returned 3 rule(s) ──────────────────────── Rule 1 ──────────────────────────────── title: Suspicious PowerShell Encoded Command Execution id: 7f3a2c1e-84b6-4d9f-a031-5e8c7b2f9d14 status: experimental logsource: category: process_creation product: windows detection: selection_image: Image|endswith: - '\powershell.exe' - '\pwsh.exe' selection_encoded: CommandLine|contains: - ' -EncodedCommand ' - ' -enc ' - ' -EC ' filter_known_tools: ParentImage|endswith: '\msiexec.exe' condition: selection_image and selection_encoded and not filter_known_tools level: medium Validation: PASSED ──────────────────────── Summary ─────────────────────────────── 3 rules generated | 3 passed | 0 failed Output: output/ v suspicious_powershell_encoded_command_execution.yml [medium] v powershell_suspicious_download_cradle_execution.yml [high] v powershell_amsi_bypass_attempt_detected.yml [high] ``` 每个生成的规则都包含带有字段值条件的特定检测逻辑、误报过滤器、ATT&CK 标签和 logsource 映射——绝非通用模板。 ## 工作原理 SigmaGen **不是**一个简单的“帮我写个 Sigma 规则”的包装器。它是一个 RAG pipeline,从本地向量存储检索真实的 ATT&CK 检测指导和现有的 Sigma 规则,然后利用这些上下文让 LLM 的输出基于生产模式。 ``` User Input Knowledge Base (T1059.001 or text) ┌──────────────────┐ │ │ ATT&CK (691) │ ▼ │ Sigma (3110) │ ┌────────────────┐ └────────┬─────────┘ │ Retriever │◄────────────────────┘ │ (ChromaDB) │ cosine similarity └───────┬────────┘ + metadata filter │ ▼ ┌────────────────┐ │ Prompt Builder │ packs ATT&CK context │ │ + 3 best Sigma examples └───────┬────────┘ │ ▼ ┌────────────────┐ │ Claude / GPT │ generates 1-3 rules └───────┬────────┘ │ ▼ ┌────────────────┐ │ Validator │ schema + field checks └───────┬────────┘ │ ▼ .yml files in output/ ``` **摄入** —— ATT&CK STIX bundle(690+ 个包含检测指导、数据源、战术的技术)和 SigmaHQ 的稳定规则(3100+ 个社区规则)被解析,并使用 `all-MiniLM-L6-v2` 嵌入到 ChromaDB 中。 **检索** —— 技术优先命中精确的元数据过滤器,然后对相关上下文进行语义相似性搜索。自由文本查询跨越两个集合使用纯语义搜索。结果经过去重和排序。 **生成** —— 提示词包含 ATT&CK 技术的检测指导、数据源和平台,以及多达 3 个现有 Sigma 规则作为结构示例。系统提示词强制执行特定的检测条件——不允许 `selection: *` 或全匹配模式。 **验证** —— 每个规则都会检查必填字段、有效的级别/状态、UUID 格式、logsource 结构、检测逻辑(必须具有命名的 selections + condition)以及 ATT&CK 标签。 ## 快速开始 ### 安装 ``` git clone https://github.com/sigmagen-project/sigmagen.git cd sigmagen python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -e ".[dev]" ``` ### 配置 配置向导处理一切: ``` $ sigmagen init ``` ``` ╭─ SigmaGen Setup Wizard ─╮ ╰────────────────────────╯ Step 1/3 Checking API key... v ANTHROPIC_API_KEY is set (provider: anthropic) Step 2/3 Checking knowledge base... v ATT&CK techniques: 691 v Sigma rules: 3110 Knowledge base is ready. Step 3/3 Verifying setup... v Everything looks good! ╭─ Next steps ──────────────────────────────────────────╮ │ Ready to generate. │ │ │ │ sigmagen generate --technique T1059.001 │ │ sigmagen generate --description "certutil download" │ ╰───────────────────────────────────────────────────────╯ ``` 或手动操作: ``` cp .env.example .env # add your ANTHROPIC_API_KEY or OPENAI_API_KEY sigmagen ingest all # one-time, ~5 min ``` ### 生成 三种生成规则的方式: ``` # 按 technique ID(支持 tab 补全) sigmagen generate --technique T1059.001 # 按 description sigmagen generate --description "attacker used certutil to download a payload" # 交互式 — 直接运行,按提示操作 sigmagen generate ``` ``` Input type (technique, description, telemetry): technique Technique ID (e.g. T1059.001): T1059.001 How many rules? (1-5) [1]: 3 ``` ### 搜索知识库 查询哪些 ATT&CK 技术和现有的 Sigma 规则与你的输入匹配: ``` $ sigmagen retrieve --query "credential dumping lsass" ``` ``` ATT&CK Techniques ┌───────────┬───────────────────────┬───────────────────┬───────┐ │ ID │ Name │ Tactics │ Score │ ├───────────┼───────────────────────┼───────────────────┼───────┤ │ T1003.001 │ LSASS Memory │ credential-access │ 0.631 │ │ T1003.004 │ LSA Secrets │ credential-access │ 0.607 │ │ T1547.008 │ LSASS Driver │ persistence │ 0.540 │ │ T1003 │ OS Credential Dumping │ credential-access │ 0.512 │ │ T1110.004 │ Credential Stuffing │ credential-access │ 0.480 │ └───────────┴───────────────────────┴───────────────────┴───────┘ Sigma Rules ┌─────────────────────────────────────┬──────────┬───────────┬───────┐ │ Title │ Level │ Technique │ Score │ ├─────────────────────────────────────┼──────────┼───────────┼───────┤ │ Credential Dumping Via LSASS │ medium │ T1003.001 │ 0.787 │ │ LSASS Process Clone │ critical │ T1003 │ 0.765 │ │ Credential Dumping By Python Tool │ high │ T1003.001 │ 0.763 │ │ LSASS SilentProcessExit Technique │ critical │ T1003.001 │ 0.741 │ │ Password Dumper Activity on LSASS │ high │ T1003.001 │ 0.739 │ └─────────────────────────────────────┴──────────┴───────────┴───────┘ ``` ### 验证 ``` $ sigmagen validate output/suspicious_powershell_encoded_command.yml ``` ``` ──── Validating suspicious_powershell_encoded_command.yml ──── Validation PASSED ``` ### 状态仪表板 ``` $ sigmagen status ``` ``` SigmaGen v0.1.0 ─────────────────────────────────────────────────────── Knowledge Base Documents Status attack_techniques 691 v Ready sigma_rules 3110 v Ready LLM Provider anthropic API Key v Set Model claude-sonnet-4-6 Embedding Model all-MiniLM-L6-v2 ─────────────────────────────────────────────────────── Ready to generate. Run: sigmagen generate --technique T1059.001 ``` ### 错误处理 无效输入会被尽早捕获并提供清晰的指导: ``` $ sigmagen generate --technique fdsb x 'fdsb' is not a valid ATT&CK technique ID. Expected format: T1059 or T1059.001 $ sigmagen generate --technique T1059.001 # before running ingest x Knowledge base is not ready. - attack_techniques collection is empty Run: sigmagen ingest all $ sigmagen generate # without an API key x No API key found. Add ANTHROPIC_API_KEY to your .env file. Run: cp .env.example .env ``` ## CLI 参考 ``` sigmagen ├── init First-run setup wizard ├── ingest │ ├── attack Download and embed ATT&CK techniques [--force] │ ├── sigma Clone and embed Sigma rules [--force] [--full-corpus] │ └── all Both [--force] [--full-corpus] ├── generate Generate Sigma rules via RAG + LLM │ ├── -t T1059.001 by technique ID (tab-completable) │ ├── -d "description" by free text │ ├── -T ./log.xml by telemetry file │ ├── -o ./output output directory │ ├── -n 3 number of rules (1-5) │ └── -p openai override LLM provider ├── retrieve Search the knowledge base -q "query" [-n 5] ├── validate Validate a Sigma YAML file标签:AMSI绕过, Anthropic, CIS基准, Cloudflare, Conpot, IPv6, LLM, MITRE ATT&CK, Petitpotam, PowerShell, RAG, REST API, Sigma规则, Unmanaged PE, Windows安全, 威胁情报, 威胁检测, 安全运营, 开发者工具, 扫描框架, 生成式AI, 目标导入, 索引, 网络安全, 网络测绘, 网络调试, 自动化, 逆向工具, 隐私保护