SuperAPI AI 工具集

building-detection-rules-with-sigma

安全与审计

查看项目

更新于 10-15 14:00

技能介绍

用途

本技能用于构建厂商无关的检测规则,采用 Sigma 规则格式(基于 YAML),可编译为多种 SIEM 平台专用查询,包括 Splunk、Elastic 和 Microsoft Sentinel。适用于以下场景:SOC 工程师需要创建可跨多个 SIEM 平台移植的检测规则;威胁情报报告描述了需要新增检测覆盖的 TTP;现有厂商特定规则需要标准化为可共享格式;团队在 CI/CD 管道中采用 Sigma 作为检测即代码标准。

不适用于实时流式检测(Sigma 用于批处理/计划搜索),也不适用于目标 SIEM 具有 Sigma 无法表达的原生检测功能(例如 Splunk RBA 风险评分)的情况。

主要能力

  • 从威胁情报或 ATT&CK 技术出发定义检测逻辑,编写 Sigma YAML 规则。
  • 使用 pySigma 及验证器校验规则语法。
  • 通过后端和管道将 Sigma 规则转换为 Splunk SPL、Elastic Lucene/EQL、Microsoft Sentinel KQL 等目标查询。
  • 将规则映射到 MITRE ATT&CK 技术 ID,并生成 ATT&CK Navigator 覆盖层。
  • 使用测试框架或样本数据验证规则,评估误报率。
  • 将转换后的查询部署为计划搜索或关联规则。
  • 通过 Git 和 CI/CD 实现规则版本控制与自动化测试。

使用方式

前置条件

  • Python 3.8+,安装 pySigma 及相应后端(pySigma-backend-splunk、pySigma-backend-elasticsearch、pySigma-backend-microsoft365defender)。
  • 克隆 Sigma 规则仓库:git clone https://github.com/SigmaHQ/sigma.git
  • 了解 MITRE ATT&CK 框架以进行技术映射。
  • 理解目标 SIEM 日志源字段映射。

工作流

步骤 1:从威胁情报定义检测逻辑

以检测 Mimikatz 凭据转储(T1003.001 — LSASS 内存)为例,编写 Sigma 规则,包含 title、id、status、level、description、references、author、date、modified、tags、logsource、detection、falsepositives 等字段。示例规则中 logsource 为 category: process_access、product: windows,detection 使用 selection 匹配 TargetImage 以 \lsass.exe 结尾且 GrantedAccess 包含特定值,并用 filter_main_svchost、filter_main_csrss、filter_main_wininit 排除合法进程,condition 为 selection and not 1 of filter_main_*。

步骤 2:校验 Sigma 规则语法

安装 pySigma 和验证器:pip install pySigma pySigma-validators-sigmaHQ,然后运行 sigma check rule.yml。也可用 Python 代码通过 SigmaRule 和 SigmaValidator 进行校验。

步骤 3:转换为目标 SIEM 查询

使用 pySigma 后端和管道转换。例如转换为 Splunk SPL 时,导入 SplunkBackend 和 splunk_windows_pipeline,创建管道和后端,读取规则并调用 convert_rule。转换为 Elastic Lucene 时使用 LuceneBackend 和 ecs_windows_pipeline。转换为 Microsoft Sentinel KQL 时使用 Microsoft365DefenderBackend。

步骤 4:映射到 MITRE ATT&CK 并添加覆盖元数据

在 tags 字段中标记 ATT&CK 技术 ID,如 attack.credential_access、attack.t1003.001、attack.t1003。可使用 Python 脚本遍历 Sigma 规则目录,解析技术标签并生成 ATT&CK Navigator 层 JSON 文件。

步骤 5:使用样本数据测试规则

使用 sigma test rule.yml --target splunk --pipeline splunk_windows 测试,或在 Splunk 中手动上传样本数据测试。通过在生产数据上运行非告警保存搜索来验证误报率。

步骤 6:部署到生产 SIEM

将转换后的查询部署为计划搜索或关联规则。示例包括 Splunk ES 关联搜索、Elastic Security 规则(TOML 格式)等。

步骤 7:版本控制与 CI/CD 集成

将规则存储在 Git 中,使用 GitHub Actions 工作流自动校验和转换。示例工作流安装 pySigma 和验证器,运行 sigma check rules/ 和 sigma convert -t splunk -p splunk_windows rules/ > /dev/null。

关键概念

  • Sigma:厂商无关的检测规则格式(基于 YAML),通过后端编译为 SIEM 专用查询。
  • pySigma:替代旧版 sigmac 的 Python 库,用于规则转换、验证和管道处理。
  • Backend:pySigma 插件,将 Sigma 检测逻辑翻译为目标平台查询语言(SPL、KQL、Lucene)。
  • Pipeline:字段映射配置,将通用 Sigma 字段名转换为 SIEM 专用字段名。
  • Logsource:Sigma 规则部分,定义目标数据的类别(process_creation、network_connection)和产品(windows、linux)。
  • Detection-as-Code:在版本控制中管理检测规则,配合 CI/CD 测试和自动部署的实践。

工具与系统

  • SigmaHQ:官方 Sigma 规则仓库,GitHub 上有 3000+ 社区维护的检测规则。
  • pySigma:基于 Python 的 Sigma 规则处理框架,具有模块化后端和管道。
  • ATT&CK Navigator:MITRE 工具,用于可视化映射到 ATT&CK 技术的检测覆盖。
  • Uncoder.IO:基于 Web 的 Sigma 规则转换器,支持 30+ SIEM 平台快速翻译。

适用场景

  • 新 CVE 检测:为利用指标编写 Sigma 规则(例如 Web 日志中的 Log4Shell JNDI 查找模式)。
  • 狩猎规则提升:将临时 Splunk 狩猎查询转换为 Sigma 规则以持续自动检测。
  • 多 SIEM 迁移:将 500+ Splunk 关联搜索转换为 Sigma,以迁移到 Elastic Security。
  • 紫队输出:将红队发现转换为 Sigma 规则以立即获得防御覆盖。
  • 威胁情报运营化:将基于 IOC 的威胁报告转化为行为 Sigma 规则。

限制

  • 不适用于实时流式检测,Sigma 用于批处理/计划搜索。
  • 当目标 SIEM 具有 Sigma 无法表达的原生检测功能(如 Splunk RBA 风险评分)时不适用。
  • 需要理解目标 SIEM 的日志源字段映射,否则转换可能不准确。
  • 规则需针对生产数据回测以评估误报率。