来源:https://blog.sekoia.io/improving-threat-detection-with-sigma-correlations/
https://github.com/D0d3cah3dr0n/Dagger/tree/main/rules/sigma
http://kth.diva-portal.org/smash/get/diva2:1589698/FULLTEXT01.pdf
https://maciejszymczyk.medium.com/ksqldb-real-time-sql-magic-in-the-cybersecurity-scenario-part-1-3232fa711442
https://github.com/D0d3cah3dr0n/Dagger/blob/main/sigma-transf/main.py
https://bradleyjkemp.dev/sigmadoc/rules/proxy/proxy_ursnif_malware_c2_url.yml/
今天,我们将Sigma关联性( Correlations)支持到SEKOIA-IO威胁检测能力!在这篇文章中,我们将讨论如何使用它,以及为什么需要它。
一、STIX和STIX模式的局限性
当我们第一次创建威胁检测引擎时,我们查看了现有的数据格式,以确定是否可以使用其中一种。由于我们的愿景是网络威胁情报对威胁检测至关重要,我们转向STIX,发现它是一个很好的候选者:
1、观察数据对象可用于描述事件
2、STIX模式可以描述检测规则
但是随着我们的产品和用例的发展,我们不得不面对一些限制。
首先,我们用来表示事件的观察数据对象远非理想。我们面临着正确索引事件和STIX模型不适合搜索的问题。出于这些原因,我们决定改用Elastic公共模式(ECS)。
然后,我们尝试基于多个事件设计复杂的检测场景。例如,假设我们想要快速连续地检测几个侦察命令的使用。单独的每一个命令都不可疑,但放在一起可能表明有侦察活动:
([process:command_line LIKE ‘quser%’] AND [process:command_line LIKE ‘dir%’] AND [process:command_line LIKE ‘net%’]) WITHIN 30 SECONDS
乍一看,这个模式似乎正在做我们想要的事情。但是有一个主要的问题:STIX Patterning没有办法限制此检测逻辑适用的事件范围。当我们监控整个周边时,这真正的意思是:“quser”anywhere和“dir”anywhere和“net”anywhere在30秒内。我们真正想要的是将此逻辑应用于相同的主机名和可能相同的用户。
不要误解我们,我们仍然认为STIX是模拟威胁情报的最好方法,我们的威胁情报平台正在密集使用它。但为了强大的检测,我们还需要别的东西。
二、Sigma来拯救我们!
在那时候,似乎没有明显的替代者能够提供我们所设想的所有功能,直到这款游戏出现:
Sigma已经是检测规则中最常用的格式,所以这些相关特征的添加使其成为我们寻找的完整选项。这开启了将我们的检测逻辑转换为Sigma的漫长过程,随着SEKOIA.IO中原生Sigma相关性支持的发布,这个过程在本周结束。与STIX模式相比,Sigma相关性的主要改进是增加了“分组”功能。我们前面的例子可以用以下规则修复:
name:quser_recon
detection:
selection:
process.command_line|startswith:quser
condition:selection
–––
name:dir_recon
detection:
selection:
process.command_line|startswith:dir
condition:selection
–––
name:net_recon
detection:
selection:
process.command_line|startswith:net
condition:selection
–––
action:correlation
type:temporal
rule:
-quser_recon
-dir_recon
-net_recon
group-by:
-user.name
-log.hostname
timespan:30s
ordered:false
这依赖于匹配事件序列的“时间”相关规则。下面是我们实验室中由该规则生成的一个警报示例。如您所见,警报是在几秒钟内创建的。
Sigma correlation还支持“event_count”类型来匹配几个类似的事件。以“user.name”在5分钟内登录失败超过5次为例:
最后,“value_count”关联类型可用于根据字段中唯一值的数量创建检测规则。例如,这里有一个规则来检测当一个“user.name”登录失败超过5个不同的“日志”。在5分钟内输入主机名:
三、显著的差异
我们很高兴现在支持SEKOIA.IO中的Sigma和Sigma相关。也就是说,有几点使我们的实现与典型的Sigma支持不同,值得一提:
我们直接在规则中使用来自ECS格式的规范化字段。
Sigma相关规范还没有包含在Sigma的当前版本中。据我们所知,我们是第一个支持它的。
我们添加了一个“aliases”属性来覆盖更复杂的用例。
虽然Sigma通常用于将规则转换为查询语言,但我们的实时检测引擎中就建立了对Sigma的支持。这意味着更快的检测,使您能够对网络攻击作出快速反应。