Sigma

Sigma - 日志规则 - 图1

Sigma

SIEM 系统的通用签名格式。

什么是Sigma

Sigma 是一种通用且开放的签名格式,可让您以直接的方式描述相关的日志事件。规则格式非常灵活,易于编写,适用于任何类型的日志文件。该项目的主要目的是提供一种结构化的形式,研究人员或分析师可以在其中描述他们曾经开发的检测方法,并使其与他人共享。
Sigma 用于日志文件,Snort用于网络流量,YARA用于文件。
该存储库包含:

  1. Wiki中的 Sigma 规则规范
  2. ./rules在子文件夹中打开 sigma 签名的存储库
  3. sigmac位于子文件夹中命名的转换器./tools/,可根据 Sigma 规则为不同的 SIEM 系统生成搜索查询

Sigma - 日志规则 - 图2

Hack.lu 2017 讲座

Sigma - 日志规则 - 图3

MITRE ATT&CK® 和 Sigma 上的 SANS 网络广播

Sigma 上的 SANS 网络广播包含 John Hubbart 从第 39 分钟开始对项目的非常好的 20 分钟介绍。(需要 SANS 帐户;注册是免费的)
MITRE ATT&CK and Sigma Alerting

  • Part 1: ‘MITRE ATT&CK and Sigma Alerting
  • Part 2: Alert Investigations in the SOC - Building Your Workflow
  • Part 3: ‘Sharing Alerts and Threat Intelligence

    用例

  • 在 Sigma 中描述您的检测方法以使其可共享

  • 在 Sigma 中编写您的 SIEM 搜索以避免供应商锁定
  • 在分析的附录中分享签名以及 IoC 和 YARA 规则
  • 在威胁情报社区中共享签名 - 例如通过 MISP
  • 为您自己的应用程序中的恶意行为提供 Sigma 签名

    为什么选择Sigma

    今天,大家收集日志数据进行分析。人们开始自己工作,处理大量白皮书、博客文章和日志分析指南,提取必要的信息并构建自己的搜索和仪表板。他们的一些搜索和相关性非常好并且非常有用,但是他们缺乏可以与他人分享他们的工作的标准化格式。
    其他提供了出色的分析,包括 IoC 和 YARA 规则来检测恶意文件和网络连接,但无法在日志事件中描述特定或通用的检测方法。
    Sigma 旨在成为一个开放标准,可以在其中定义、共享和收集此类检测机制,以提高每个人的检测能力。

    PPT

    请参阅我为 2017 年 1 月中旬的私人会议准备的第一个幻灯片《Sigma - 让安全监控再次伟大

    规格

    规范可以在Wiki中找到。

    入门

    规则创建

    Florian 编写了一个简短的规则创建教程,可以帮助您入门。

    规则用法

  1. 下载或克隆存储库
  2. 检查./rules子目录以了解规则库的概述
  3. python sigmac —help在文件夹中运行./tools以获取有关规则转换器的帮助
  4. sigmac使用like转换您选择的规则./sigmac -t splunk -c tools/config/generic/sysmon.yml ./rules/windows/process_creation/win_susp_whoami.yml
  5. 转换整个规则目录python sigmac -t splunk -r ../rules/proxy/
  6. 如果您的环境中需要自定义字段或日志源映射,请检查./tools/config文件夹和wiki

    故障/故障排除/帮助

    如果您需要特定支持的后端的帮助,您可以使用例如sigmac —backend-help elastalert-dsl. sigmac可以在专用的README.md中找到有关使用的更多详细信息。
    请务必查看有关sigmac 后端特定设置的指南

    例子

    Windows“安全”事件日志:使用特定访问掩码/对象类型访问 LSASS 进程(实验性) :
    Sigma - 日志规则 - 图4
    Sysmon:LSASS 进程中的远程线程创建:
    Sigma - 日志规则 - 图5
    Web 服务器访问日志:Web Shell 检测:Sigma - 日志规则 - 图6
    Sysmon:Web Shell 检测:Sigma - 日志规则 - 图7
    Windows“安全”事件日志:来自单一源工作站的可疑登录失败次数:Sigma - 日志规则 - 图8

    Sigma工具

    Sigmac

    Sigmac 将 sigma 规则转换为下列受支持目标的查询或输入。
    它充当 Sigma 库的前端,可用于将 Sigma 支持集成到其他项目中。此外,merge_sigma.py将 Sigma 规则集合的多个 YAML 文档合并为简单的 Sigma 规则。

    用法

    ```shell sigmac [-h] [—recurse] [—filter FILTER]
    1. [--target {sqlite,netwitness-epl,logpoint,graylog,netwitness,arcsight,carbonblack,es-rule,ala,elastalert-dsl,splunkxml,fieldlist,sysmon,arcsight-esm,kibana,csharp,qualys,powershell,es -qs,mdatp,humio,grep,qradar,logiq,sql,sumologic,ala-rule,limacharlie,elastalert,splunk,stix,xpack-watcher,crowdstrike,es-dsl,ee-outliers}]
    2. [--target-list] [--config CONFIG] [--output OUTPUT]
    3. [--backend-option BACKEND_OPTION] [--defer-abort]
    4. [--ignore-backend-errors] [--verbose] [--debug]
    5. [inputs [inputs ...]]

将 Sigma 规则转换为 SIEM 签名。

位置参数: inputs Sigma 输入文件(’-‘用于标准输入)

可选参数: -h , —help 显示此帮助信息并退出 —recurse, -r 使用目录作为输入(递归到子目录(尚未实施)) —filter FILTER, -f FILTER 定义必须匹配的逗号分隔过滤器(AND-链接)到要处理的规则。 有效过滤器:level<=x, level>=x, level=x, status=y, logsource=z, tag=t. x,等级:low, medium, high, critical y,状态:experimental, testing, stable z,日志源,出现在任意日志源属性中 t,标签,必须出现在规则标签列表中 不区分大小写的匹配,多个日志源规范是 AND 链接的。 —target {arcsight,es-qs,es-dsl,kibana,xpack-watcher,elastalert,graylog,limacharlie,logpoint,grep,netwitness,powershell,qradar,qualys,splunk,splunkxml,sumologic,fieldlist,mdatp,devo} , -t {arcsight,es-qs,es-dsl,kibana,xpack-watcher,elastalert,graylog,limacharlie,logpoint,grep,netwitness,powershell,qradar,qualys,splunk,splunkxml,sumologic,fieldlist,mdatp,devo}

输出目标格式: —target-list, -l 列出可用的输出目标格式 —config CONFIG, -c CONFIG 具有目标环境的字段名称和索引映射的配置。多个配置合并为一个。如果发生冲突,最后一个配置是权威的。 —output OUTPUT, -o OUTPUT 如果生成多个文件,则输出文件或文件名前缀 —backend-option BACKEND_OPTION, -O BACKEND_OPTION 传递到后端的选项和开关 —defer-abort, -d 不要中止解析或转换错误,继续下一条规则。 返回上一个错误的退出代码 —ignore-backend-errors, -I 仅返回解析错误的错误代码并忽略导致后端错误的规则的错误。 当您想获得尽可能多的查询时很有用。 —verbose, -v 详细 —debug, -D 调试输出

  1. <a name="mrKl0"></a>
  2. #### 单规则翻译
  3. 翻译单个规则:
  4. ```shell
  5. tools/sigmac -t splunk -c splunk-windows rules/windows/sysmon/sysmon_susp_image_load.yml

规则集翻译

翻译整个规则目录并忽略所选后端(-t splunk)的规则转换中的后端错误(-I):

  1. tools/sigmac -I -t splunk -c splunk-windows -r rules/windows/sysmon/

仅翻译高级别或关键级别的规则

翻译整个规则目录并忽略所选后端(-t splunk)的规则转换中的后端错误(-I)并仅选择级别高和关键的规则:

  1. tools/sigmac -I -t splunk -c splunk-windows -f 'level>=high' -r rules/windows/sysmon/

使用自定义配置的规则集翻译

在转换期间应用您自己的配置文件(-c ~/my-elk-winlogbeat.yml),其中可以包含您的自定义字段和源映射:

  1. tools/sigmac -t es-qs -c ~/my-elk-winlogbeat.yml -r rules/windows/sysmon

通用规则集翻译

为 process_creation 规则 (-r rules/windows/process_creation) 使用配置文件,指示 sigmac 为 Sysmon 日志源(-c tools/config/generic/sysmon.yml)和 ElasticSearch 目标后端(-t es-qs):

  1. tools/sigmac -t es-qs -c tools/config/generic/sysmon.yml -r rules/windows/process_creation

使用自定义配置的通用规则集转换

为单个 process_creation 规则(./rules/windows/process_creation/win_susp_outlook.yml)使用配置文件,该规则指示 sigmac 为 Windows 安全事件日志中生成的进程创建事件创建查询 (-c tools/config/generic/windows-audit .yml) 和 Splunk 目标后端(-t splunk):

  1. tools/sigmac -t splunk -c ~/my-splunk-mapping.yml -c tools/config/generic/windows-audit.yml ./rules/windows/process_creation/win_susp_outlook.yml

有关更多信息,请参阅@blubbfiction 的博客文章

支持的目标

新的目标不断发展。您可以使用sigmac --lists或获取支持的目标列表sigmac -l

要求

Sigmac(Sigma Rule Converter)或底层库的使用需要 Python >= 3.5 和 PyYAML。

安装

它在 PyPI 上可用:

  1. pip3 install sigmatools

或者,如果从 Sigma Github 存储库中使用,可以使用Pipenv安装 Python 依赖项。运行以下命令以获取具有已安装要求的 shell:

  1. pipenv shell

对于开发(例如执行集成测试make和打包),需要进一步的依赖项,并且可以安装:

  1. pipenv install --dev
  2. pipenv shell

Sigma2MISP

将 Sigma 规则导入 MISP 事件。取决于 PyMISP。
不经常更改的参数 ( —url, —key) 可以不带前缀破折号—放入文件中,并包含@filename在命令行中的 as 参数中。
示例: misp.conf:

  1. url https://host key foobarfoobarfoobarfoobarfoobarfoobarfoo

将 Sigma 规则加载到 MISP 事件 1234:

  1. sigma2misp @misp.conf --event 1234 sigma_rule.py

将目录 sigma_rules/ 中的 Sigma 规则加载到一个新创建的 MISP 事件中,并将信息设置为Test Event:

  1. sigma2misp @misp.conf --same-event --info "Test Event" -r sigma_rules/

Evt2Sigma

Evt2Sigma可帮助您创建规则。它从日志条目生成 Sigma 规则。

Sigma2attack

从包含 sigma 规则的目录生成MITRE ATT&CK® Navigator热图。
要求:

  • 带有attack.tXXXX标签的 Sigma 规则(例如attack.t1086:)

使用示例:

  1. # Use the default "rules" folder
  2. ./tools/sigma2attack
  3. # ... or specify your own
  4. ./tools/sigma2attack --rules-directory ~/hunting/rules

导入 MITRE ATT&CK® Navigator(在线版)后的结果:
Sigma - 日志规则 - 图9

S2AN

Sigma2attack类似,S2AN是用于 Windows 和 GNU/Linux 的预编译二进制文件,可从 Sigma 规则目录生成MITRE ATT&CK® Navigator层。
S2AN 被开发用作独立工具或作为 CI/CD 管道的一部分,可以在没有外部依赖的情况下快速下载和执行。

贡献的脚本

该目录contrib包含社区贡献的脚本:

  • sigma2elastalert.py(i by David Routin):将 Sigma 规则转换为 Elastalert 配置的脚本。此工具使用sigmac并期望它在其路径中。

这些工具不是主要工具链的一部分,由其作者单独维护。

下一步

Sigma 在一些 Linux 发行版存储库中可用:
Sigma - 日志规则 - 图10

使用它并提供反馈

如果您使用它,请告诉我们哪些有效,哪些无效。
例如

  • 告诉我们误报(问题部分)
  • 尝试通过对该规则的拉取请求提供改进的规则(新过滤器)

    处理未解决的问题

    github 问题跟踪器是开始处理其他人向项目提出的一些问题的好地方。它可以像查看文档一样简单。

    提供后端/后端功能/错误修复

    请不要再为旧代码库提供后端。我们建议使用新的pySigma。我们正在编写有关如何为该新代码库编写新后端的文档。

    许可证

    此存储库的内容是根据以下许可发布的:

  • 工具链(下tools/的所有内容)均根据GNU 宽通用公共许可证获得许可

  • Sigma 规范是公共领域
  • rules/目录中包含的规则是根据检测规则许可证 (DRL) 1.1发布的

    Credits

    这是一个私人项目,主要由 Florian Roth 和 Thomas Patzke 开发,得到了许多分析师和朋友的反馈。规则是我们自己的,或者来自规则中引用的博客文章、推文或其他公共资源。

    信息图

    概述

    Sigma - 日志规则 - 图11

    覆盖图

    Sigma - 日志规则 - 图12