5、规则创建指南

来源:https://github.com/SigmaHQ/sigma/wiki/Rule-Creation-Guide

https://github.com/SigmaHQ/sigma/wiki/Taxonomy

Sigma是一个非常灵活的标准,有很多可选领域。本指南将帮助您创建一个Sigma规则,它与我们存储库中的其他社区规则保持一致。

一、规则模板

最好的方法是使用与您计划编写的内容相近的现有规则。

确保以下字段在你想推送到公共存储库的规则中设置:

title: a short capitalised title with less than 50 characters

id: generate one here https://www.uuidgenerator.net/version4

status: experimental

description: A description of what your rule is meant to detect

references:

    - A list of all references that can help a reader or analyst understand the meaning of a triggered rule

tags:

    - attack.execution  # example MITRE ATT&CK category

    - attack.t1059      # example MITRE ATT&CK technique id

    - car.2014-04-003  # example CAR id

author: Michael Haag, Florian Roth, Markus Neis  # example, a list of authors

date: 2018/04/06  # Rule date

logsource:                      # important for the field mapping in predefined or your additional config files

    category: process_creation  # In this example we choose the category 'process_creation'

    product: windows            # the respective product

detection:

    selection:

        FieldName: 'StringValue'

        FieldName: IntegerValue

        FieldName|modifier: 'Value'

    condition: selection

fields:

    - fields in the log source that are important to investigate further

falsepositives:

    - describe possible false positive conditions to help the analysts in their investigation

level: one of five levels (informational, low, medium, high, critical)

二、常见缺点

1、标题

不要在标题中使用像“检测”这样的前缀。

使用少于50个字符的短标题作为警示名称

为描述保留任何解释

使用标题大小写(例如:'可疑的PowerShell命令行'Suspicious PowerShell CommandLine而不是'可疑的PowerShell命令行'Suspicious powershell commandline)

坏的例子:

在不应该包含可执行文件的Windows文件夹中检测进程执行 Detects a process execution in a Windows folder that shouldn't contain executables(不必要的前缀,太长,全部小写,包含解释)

检测进程注入 Detects process injection (不必要的前缀,太通用,首字符小写)

好的例子:

Process Injection Using Iexplore.exe

Suspicious PowerShell Cmdline with JAB

Certutil Lolbin Decode Use

2、ID

没有任何已知的陷阱。我们在repo中使用可选字段id来提供一个永不更改的惟一标识符,而该规则的所有其他字段值可能会随着时间的推移而更改。您可以简单地在此网页上以UUID的形式创建一个ID。

3、状态Status

每一个新规则都是实验性的。经过几个月的高效使用,并且没有任何来自社区的负面反馈,它得到了状态测试。在使用了大约1年之后,除了过滤器没有进行重大修改,我们将规则归为稳定规则。

4、描述Description

最好的描述从检测....开始。请不要只使用选定的标题。试着尽可能好地描述当规则触发时它意味着什么。看到这种规则触发的分析师应该很好地理解匹配可能表明什么。

坏的例子:

规则检测w3wp.exe生成bitsadmin.exe

新的whoami进程开始

好的例子:

检测IIS web服务器服务可疑执行后台传输服务

检测whoami的执行,它可能是管理活动的一部分,但也经常被利用某些本地特权升级或远程代码执行漏洞的攻击者使用。whoami命令显示当前用户上下文。管理员通常知道他们使用哪个用户登录。攻击者在成功利用后通常需要评估用户上下文。

5、参考文献References

值必须是一个列表。

只使用网页或文档的链接。

不要链接到EVTX文件,PCAPs或其他原始内容

不包括MITRE ATT&CK技术的链接(我们使用标签)

列表中使用的链接可以是:

链接到博客文章或tweet

链接到某个hack工具的项目页面

链接到一个内置Windows工具的手册页

报告的链接

链接到更好地解释检测到的威胁的讨论

6、作者Author

作者字段是字符串,而不是列表

用逗号分隔的多个作者组合

如果你使用特殊字符@作为twitter的句柄,你必须使用上引号,例如author: '@cyb3rops'

你可在括号内加上供款类别,例如:作者:“约翰·高尔(想法),弗洛里安·罗斯(规则)”

7、日期

我们在公共规则中使用可选字段date来显示规则的创建日期,而不需要使用git-log。更改一个已经在主分支中发布的规则,需要使用一个名为modified的新字段来指示初始规则的修改。

我们使用格式YYYY/MM/DD或%Y/%m/%d作为Python的strftime指令。

更改修改日期的原因:

改变标题

变化检测部分

改变等级

改变logsource(罕见)

对于所有其他字段值的更改,不需要更改修改日期。

8、标签

在我们的公共规则集中,我们使用MITRE ATT&CK、CAR和CVE数字标签。

例子

标签:

——attack.credential_access

——attack.t1003.002

——car.2013 - 07 - 001

——cve.2020.10189

只使用小写标记

我们使用。或-作为标签名称中的分隔符

将空格替换为下划线_

9、日志源

这部分比较难。有两种选择:

(1)日志源已经存在

(2)在我们的repo中没有一条针对该日志源的规则

在案例1中,请使用这些规则中的一个作为模板。在情况2中,检查不同文件夹中的现有规则,以了解在本节中可以使用的三个标识符的使用情况:

产品(如linux、windows、cisco)

服务(如sysmon, ldapd, dhcp)

类别(如process_creation)

请注意,这些标识符是在sigmac(旧)或[pySigma](https://github.com/SigmaHQ/pySigma/)(新)使用的。/tools/config中的配置文件中使用的,用于将特定日志源的字段映射到规则中使用的字段。如果你创建了一个新的日志源,如果你能在所有当前配置文件中为不同的后端(qradar, helk, splunk等)添加适当的映射,那就太好了。否则其他用户或我们的维护者就得这么做。

10、检测

检测部分是非常灵活的,但是我们在这个部分中看到了一些常见的错误或样式问题,这些问题需要维护者重新定义。

如果列表只包含一个元素,则不要使用列表(参见下面的示例)

只使用小写标识符

如果你喜欢的话,可以把注释放在行中(使用两个空格来分隔表达式和注释,例如- 'cmd.exe' # command line)

不要使用正则表达式,除非你真的必须(例如,代替CommandLine|re: '\\payload。*\skeyset'使用CommandLine|包含|所有的值\有效负载和keyset)。

在新的源中使用日志源中出现的字段名称,删除空格并保留连字符(例如SAMUserAccount变成SAMUserAccount)

不要在您的条件中使用特定于SIEM的逻辑

创建一个拉请求(所有的拉请求都会被自动检查是否有语法错误、是否符合我们的标准以及是否有误报)

11、反斜杠

反斜杠在Sigma中有两个功能:

(1)反斜杠作为普通值

(2)反斜杠作为前缀来转义具有特殊含义的字符:反斜杠\本身,以及通配符*和?。

以这种方式处理反斜杠有一个好处,即包含单个反斜杠(常见情况)的值可以以普通方式表示。另一方面,一些极端情况需要额外的转义:

只包含单个反斜杠的值可以用普通方式表示:C:\Windows\System32\cmd.exe

不要用反斜杠转义单个反斜杠,从前面的例子中写入普通值,而不是C:\\Windows\\System32\\cmd.exe。

如果你想表达两个普通的反斜杠,可以使用其中的四个:\\\\foo\bar的结果值为\\foo\bar。

如果你想要两个反斜杠,可以写\\\\

如果你想要一个普通的通配符*作为结果值,写\*。

如果您想要一个普通的反斜杠后跟一个通配符*作为结果值,那么写入\\*。

如果你想要一个纯反斜杠后跟一个纯*作为结果值,写\\\*。

请注意,反斜杠在正则表达式中有特殊的语义。在某些情况下,像普通值一样需要更多的反斜杠。例子:

CommandLine|re: ...\\Microsoft...

结果:转义的M (\M)。在许多目标系统使用的perl兼容的正则表达式中,这是无效的,并会在新的Sigmatools中导致错误。解决办法:

CommandLine|re: ...\\\\Microsoft...

12、值修饰符

尽管在技术上可以任意链接值修饰符,但并不是所有的组合都有意义。应遵循以下排序规则:

添加通配符的修饰符(以with开头、以with结尾和包含)后面不能跟着编码修饰符(base64, base64offset),因为它们自己也会对通配符进行编码,导致其特殊功能的丢失。

值修饰符链不能以字符集编码修饰符(utf16, utf16le, utf16be和wide)结束。产生的值在内部表示为字节序列而不是文本字符串,并且包含在查询中通常难以处理的空字符。因此,后面应该有一个编码修饰符(base64, base64offset)。

通常,将re类型修饰符与其他修饰符组合在一起是没有意义的。

一般来说,所有修饰符都可以放在任意位置,因为所有修饰符都可以处理单值和列表,但按照惯例,这个修饰符应该放在末尾。

一些常见的组合是:

|contains|all:列表中的所有值都包含在日志值中。这对于以顺序无关的方式表示命令行参数非常有用。

|utf16|base64offset|包含:value是Base64编码的utf16,可以包含在值的任何位置(例如作为更大的Base64值的一部分)。

13、字段

这些字段在评估某一事件时非常有用。例如,知道一个进程的父进程的命令行参数中包含可疑字符串是有帮助的。

这些字段可以自动提取并呈现给分析人员,以加快分析速度。

14、假阳性

想想可能会触发规则的假阳性条件。这个列表应该包含对分析师有用的提示。例如,注释“删除影子副本的合法进程”可以提示分析师检查该系统上的备份进程,或询问任何涉及删除本地卷影子副本的异常管理活动。

15、等级

现有的四个级别可以进一步分为两类。

具有信息特征的规则,应该以列表或条形图的形式显示(低、中)

应该触发专用警报(高,严重)的规则

设置级别时请遵循以下原则:

关键级别的规则不应该触发假阳性,并具有高度相关性

对于需要人工审查的高相关性威胁的高级别触发规则(需要很少的假阳性>基线)

级别高和关键的规则表示事件(如果不是假阳性)

低级别和中等级别的规则表示可疑活动和违反策略

信息级规则具有信息性质,通常用于遵从性或相关性目的

16、工具

我们推荐使用visual Studio Codewith sigma Extension。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容