Sigma
Sigma
什么是Sigma
Sigma 是一种通用且开放的签名格式,可让您以直接的方式描述相关的日志事件。规则格式非常灵活,易于编写,适用于任何类型的日志文件。该项目的主要目的是提供一种结构化的形式,研究人员或分析师可以在其中描述他们曾经开发的检测方法,并使其与他人共享。
Sigma 用于日志文件,Snort用于网络流量,YARA用于文件。
该存储库包含:
- Wiki中的 Sigma 规则规范
- ./rules在子文件夹中打开 sigma 签名的存储库
- sigmac位于子文件夹中命名的转换器./tools/,可根据 Sigma 规则为不同的 SIEM 系统生成搜索查询
Hack.lu 2017 讲座
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 编写了一个简短的规则创建教程,可以帮助您入门。规则用法
- 下载或克隆存储库
- 检查./rules子目录以了解规则库的概述
- python sigmac —help在文件夹中运行./tools以获取有关规则转换器的帮助
- sigmac使用like转换您选择的规则./sigmac -t splunk -c tools/config/generic/sysmon.yml ./rules/windows/process_creation/win_susp_whoami.yml
- 转换整个规则目录python sigmac -t splunk -r ../rules/proxy/
- 如果您的环境中需要自定义字段或日志源映射,请检查./tools/config文件夹和wiki
故障/故障排除/帮助
如果您需要特定支持的后端的帮助,您可以使用例如sigmac —backend-help elastalert-dsl. sigmac可以在专用的README.md中找到有关使用的更多详细信息。
请务必查看有关sigmac 后端特定设置的指南。例子
Windows“安全”事件日志:使用特定访问掩码/对象类型访问 LSASS 进程(实验性) :
Sysmon:LSASS 进程中的远程线程创建:
Web 服务器访问日志:Web Shell 检测:
Sysmon:Web Shell 检测:
Windows“安全”事件日志:来自单一源工作站的可疑登录失败次数:Sigma工具
Sigmac
Sigmac 将 sigma 规则转换为下列受支持目标的查询或输入。
它充当 Sigma 库的前端,可用于将 Sigma 支持集成到其他项目中。此外,merge_sigma.py将 Sigma 规则集合的多个 YAML 文档合并为简单的 Sigma 规则。用法
```shell sigmac [-h] [—recurse] [—filter FILTER][--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}]
[--target-list] [--config CONFIG] [--output OUTPUT]
[--backend-option BACKEND_OPTION] [--defer-abort]
[--ignore-backend-errors] [--verbose] [--debug]
[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 调试输出
<a name="mrKl0"></a>
#### 单规则翻译
翻译单个规则:
```shell
tools/sigmac -t splunk -c splunk-windows rules/windows/sysmon/sysmon_susp_image_load.yml
规则集翻译
翻译整个规则目录并忽略所选后端(-t splunk
)的规则转换中的后端错误(-I
):
tools/sigmac -I -t splunk -c splunk-windows -r rules/windows/sysmon/
仅翻译高级别或关键级别的规则
翻译整个规则目录并忽略所选后端(-t splunk
)的规则转换中的后端错误(-I
)并仅选择级别高和关键的规则:
tools/sigmac -I -t splunk -c splunk-windows -f 'level>=high' -r rules/windows/sysmon/
使用自定义配置的规则集翻译
在转换期间应用您自己的配置文件(-c ~/my-elk-winlogbeat.yml
),其中可以包含您的自定义字段和源映射:
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
):
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
):
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 的博客文章
支持的目标
- Splunk(plainqueries 和仪表板)
- ElasticSearch 查询字符串
- ElasticSearch 查询 DSL
- Kibana
- Elastic X-Pack Watcher
- Logpoint
- Microsoft Defender 高级威胁防护 (MDATP)
- Azure 哨兵/Azure 日志分析
- Sumologic
- ArcSight
- QRadar
- Qualys
- RSA NetWitness
- PowerShell
- 具有 Perl 兼容正则表达式支持的Grep
- LimaCharlie
- ee-outliers
- 结构化威胁信息表达 (STIX)
- LOGIQ
- uberAgent ESA
- Devo
- LogRhythm
-
目前正在进行的工作
新的目标不断发展。您可以使用sigmac --lists
或获取支持的目标列表sigmac -l
。
要求
Sigmac(Sigma Rule Converter)或底层库的使用需要 Python >= 3.5 和 PyYAML。
安装
它在 PyPI 上可用:
pip3 install sigmatools
或者,如果从 Sigma Github 存储库中使用,可以使用Pipenv安装 Python 依赖项。运行以下命令以获取具有已安装要求的 shell:
pipenv shell
对于开发(例如执行集成测试make和打包),需要进一步的依赖项,并且可以安装:
pipenv install --dev
pipenv shell
Sigma2MISP
将 Sigma 规则导入 MISP 事件。取决于 PyMISP。
不经常更改的参数 ( —url, —key) 可以不带前缀破折号—放入文件中,并包含@filename在命令行中的 as 参数中。
示例: misp.conf:
url https://host key foobarfoobarfoobarfoobarfoobarfoobarfoo
将 Sigma 规则加载到 MISP 事件 1234:
sigma2misp @misp.conf --event 1234 sigma_rule.py
将目录 sigma_rules/ 中的 Sigma 规则加载到一个新创建的 MISP 事件中,并将信息设置为Test Event:
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:)
使用示例:
# Use the default "rules" folder
./tools/sigma2attack
# ... or specify your own
./tools/sigma2attack --rules-directory ~/hunting/rules
导入 MITRE ATT&CK® Navigator(在线版)后的结果:
S2AN
与Sigma2attack类似,S2AN是用于 Windows 和 GNU/Linux 的预编译二进制文件,可从 Sigma 规则目录生成MITRE ATT&CK® Navigator层。
S2AN 被开发用作独立工具或作为 CI/CD 管道的一部分,可以在没有外部依赖的情况下快速下载和执行。
贡献的脚本
该目录contrib包含社区贡献的脚本:
- sigma2elastalert.py(i by David Routin):将 Sigma 规则转换为 Elastalert 配置的脚本。此工具使用sigmac并期望它在其路径中。
下一步
- 完成并推广新的pySigma代码库
新“Sigma 相关规则”的描述(可通过 pySigma 获得)
使用 Sigma 的项目或产品
MISP(自 2.4.70 版起,2017 年 3 月)
- Atomic Threat Coverage(自 2018 年 12 月起)
- SOC Prime - Sigma 规则编辑器
- uncoder.io - SIEM 搜索的在线翻译器
- THOR - 在端点上使用 Sigma 规则扫描
- Joe Sandbox
- ypsilon - 自动化用例测试
- RANK VASA
- TA-Sigma-Searches(Splunk 应用程序)
- TimeSketch
- SIΣGMA - 利用 Sigma 进行查询转换的 SIEM 消耗品生成器
使用它并提供反馈
如果您使用它,请告诉我们哪些有效,哪些无效。
例如
- 告诉我们误报(问题部分)
-
处理未解决的问题
github 问题跟踪器是开始处理其他人向项目提出的一些问题的好地方。它可以像查看文档一样简单。
提供后端/后端功能/错误修复
请不要再为旧代码库提供后端。我们建议使用新的pySigma。我们正在编写有关如何为该新代码库编写新后端的文档。
许可证
此存储库的内容是根据以下许可发布的:
工具链(下tools/的所有内容)均根据GNU 宽通用公共许可证获得许可
- Sigma 规范是公共领域
- rules/目录中包含的规则是根据检测规则许可证 (DRL) 1.1发布的
Credits
这是一个私人项目,主要由 Florian Roth 和 Thomas Patzke 开发,得到了许多分析师和朋友的反馈。规则是我们自己的,或者来自规则中引用的博客文章、推文或其他公共资源。信息图
概述
覆盖图