0Pricing
Cyber Security Academy · 课时

编写 Sigma 规则

可移植的检测规则语法。

编写 Sigma 规则 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。

什么是西格玛

西格玛是一种通用且不依赖供应商的、用于基于日志进行检测的签名格式。您只需在 YAML 中编写一次检测逻辑,随后即可将其转换为斯普伦克 SPL、弹性查询、哨兵 KQL 以及许多其他后端所使用的查询。

西格玛之于日志检测,正如 YARA 之于文件检测:是一种可移植的通用语言。它让团队能够公开共享规则,并避免针对每个 SIEM 重写同一个思路。

规则的结构

西格玛规则是一个包含必需和可选部分的 YAML 文档。必不可少的部分是 title、logsource 和 detection。

title: Suspicious PowerShell Encoded Command
id: 7e3f3c1a-1f2b-4c3d-9a8b-1234567890ab
status: experimental
logsource:
  category: process_creation
  product: windows
detection:
  selection:
    Image|endswith: '\\powershell.exe'
    CommandLine|contains: '-enc'
  condition: selection
level: high

logsource 块

logsource 块告诉转换器规则适用于哪些日志。它不会直接查询数据,而是在转换过程中选择正确的字段映射和索引。

常见键:

  • product — 例如 windows、linux、aws
  • category — 例如 process_creation、network_connection、file_event
  • service — 例如 sysmon、security、sshd

请选择数据所支持的最具体组合,以便流水线正确映射字段。

选择项与搜索标识符

在 detection 中,您可以定义一个或多个命名的搜索标识符(选择项)。每个标识符都是一组字段到值的条件映射。一个选择项中的多个字段通过逻辑 AND 连接。

在这里,两个条件都必须为真,selection 才能匹配。

detection:
  selection:
    EventID: 4688
    NewProcessName|endswith: '\\whoami.exe'
  condition: selection

字段修饰符

修饰符可以细化值的匹配方式。它们位于字段名后的竖线之后。

  • contains — 子字符串匹配
  • startswith / endswith — 锚定匹配
  • all — 列表中的每个值都必须存在
  • re — 正则表达式
  • base64offset|contains — 匹配经过 base64 编码的子字符串

修饰符按从左到右的顺序串联,并依次应用。

detection:
  selection:
    CommandLine|contains|all:
      - 'Invoke-WebRequest'
      - 'DownloadString'
  condition: selection

列表与映射中的 OR / AND

选择项中的逻辑遵循两条规则:

  • 一个字段下的值列表表示 OR — 任意值匹配即可。
  • 包含多个字段的映射表示 AND — 所有字段都必须匹配。

在下面的示例中,Image 可以匹配任意一个二进制文件,而 User 还必须等于 SYSTEM。

detection:
  selection:
    Image|endswith:
      - '\\net.exe'
      - '\\net1.exe'
    User: 'SYSTEM'
  condition: selection

条件表达式

condition 使用布尔逻辑组合您命名的选择项。您可以在这里表达过滤条件和排除条件。

运算符包括 and、or、not、括号,以及 count() 等聚合函数。您还可以使用 1 of selection* / all of selection*,按前缀引用标识符组。

detection:
  selection:
    EventID: 4625
  timeframe: 5m
  condition: selection | count() by SourceIp > 10

过滤噪声

要抑制已知正常活动,请定义一个单独的标识符,并在条件中使用 not 将其排除。这样既能保持恶意逻辑清晰,也能明确列出排除项。

在这里,规则会在 rundll32 生成网络连接时触发,但已知的正常更新进程除外。

detection:
  selection:
    Image|endswith: '\\rundll32.exe'
  filter_legit:
    ParentImage|endswith: '\\MicrosoftEdgeUpdate.exe'
  condition: selection and not filter_legit

用于研判的元数据

除了逻辑之外,优质规则还应包含有助于响应人员快速采取行动、帮助工程师维护覆盖范围的元数据。

  • level — 信息、低、中、高、严重
  • tags — ATT&CK 技术,例如 attack.t1059.001
  • falsepositives — 已知的正常触发因素
  • references — 威胁报告或文档
  • author 和 date

编写这些字段只需几分钟,却能在事件期间节省数小时。

关联规则

单事件规则无法表达多步骤攻击。西格玛关联规则会在一段时间内组合多个基础规则,以捕获序列和模式。

支持的类型包括 event_count(时间窗口内的 N 次匹配)、value_count(不同值的数量,例如大量失败登录的用户)和 temporal(先匹配规则 A,再匹配规则 B)。这样,您就可以检测例如紧接在大量失败登录之后发生的成功登录。

name: bruteforce_then_success
correlation:
  type: temporal
  rules: [failed_logins, successful_login]
  group-by: [SourceIp, TargetUser]
  timespan: 10m

转换为后端

使用西格玛命令行工具,您可以将规则转换为目标查询语言。处理流水线会将西格玛字段名映射到您的实际架构。

输出结果是可以直接部署的查询,您可以将其粘贴到系统中,或通过 API 推送。

sigma convert -t splunk -p sysmon \
  -f default rule.yml

# Example output (Splunk SPL):
# Image="*\\powershell.exe" CommandLine="*-enc*"

快速检查

检查您对西格玛检测逻辑的掌握程度。

总结

现在,您已经能够编写可移植的西格玛规则:

  • logsource 选择适用的日志和字段映射
  • 选择项是命名的字段-值条件(字段 = AND,值列表 = OR)
  • 使用 contains、endswith、all、re 等修饰符细化匹配
  • condition 使用 and/or/not、过滤条件和聚合函数连接选择项
  • 单独的过滤标识符用于排除已知正常的噪声
  • 元数据(level、tags、falsepositives)可加快研判
  • sigma convert 将规则编译为您的 SIEM 后端所需的格式

接下来,您将使用 MITRE ATT&CK 将这些规则关联到对手技术。

常见问题解答

「编写 Sigma 规则」课时是免费的吗?

是的 — 「编写 Sigma 规则」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。

「编写 Sigma 规则」这节课中我会学到什么?

可移植的检测规则语法。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cyber Security Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「编写 Sigma 规则」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cyber Security Academy 课中编写并运行代码吗?

能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 检测即代码原则
  2. 编写 Sigma 规则
  3. 映射到 MITRE ATT&CK
  4. 测试与调优检测
← 返回 Cyber Security Academy