来源:https://www.loginsoft.com/blog/2020/06/17/threat-detection-with-sigma-rules/
sigma转换工具
https://uncoder.io/#
事件响应是您为恢复交付组织业务服务的能力而采取的操作。它也被称为IT事件,计算机事件,或安全事件。事故响应的主要目标是以一种限制损害和减少恢复时间和成本的方式处理这种情况。一个组织使用事件响应来响应和管理网络攻击。
Source: researchgate.net安全团队实时检测这些威胁,管理事件响应,并在网络上的不同点执行法医调查。
像ArcSight和Splunk这样的SIEM解决方案使分析师能够对其环境中的威胁有更广泛的了解。这使他们能够优化分类和补救。还可以加速检测,从而减少事件响应时间。
SIGMA是一个定义检测的开放标准平台。它支持在不同的组织之间重用和共享分析。
一、SIGMA
SIGMA是一种通用的开放签名格式,允许您以简单的方式描述SIEM系统中的相关日志事件。这种格式非常灵活,易于编写,适用于任何类型的日志文件。
Source: owasp.org二、为什么SIGMA:
支持多个SIEM工具,如Elasticsearch, IBM QRadar和Splunk。它用于处理与Snort类似的日志文件,Snort用于处理网络流量,YARA用于处理文件。
(1)它使分析能够在组织之间重用和共享。
(2)用于分析的高级通用语言
(3)最可靠的方法如解决日志签名问题
(4)纯文本YAML文件
(5)简单的模式
三、支持的格式
Splunk
QRadar
ArcSight
Elasticsearch (Elastalert, Query strings, DSL, Watcher, & Kibana)
Logpoint
四、规则的格式:
这些规则指定检测签名,它以一般形式描述对日志数据的搜索。每个规则指定满足检测条件所需的一组条件。
五、组件:
下面的部分解释组件属性。
标题(属性:Title):标题描述检测规则。
规则标识(属性:id,相关):基于id属性中唯一标识符的全局定义的SIGMA规则。
描述(可选)(属性:Description):此部分,描述规则和恶意活动。
引用(可选)(属性:reference):提供用于派生规则的信息源。
Author(可选)(属性:Author):规则的作者。
日志源(属性:logsource):本节描述sigma规则中的日志源定义。
它进一步包含下面部分讨论的3种类型的属性。
产品Product:描述匹配所有规则的产品。
服务Service:它应该限制为字段名被设置为产品日志的事件。
类别Category:此属性允许您选择属于产品组的所有日志文件。
检测(属性:detection):在本节中,在选择中列出日志数据特定字段的搜索值。
条件(属性:condition):这些选择在一个条件有关。
Level(属性:Level):描述匹配的严重程度,可用于过滤规则。
六、生成CVE-2009-3898的SIGMA规则
脆弱性分析:
Nginx容易受到“对受限目录的路径名的不当限制(路径遍历)”的攻击。Nginx是一个web服务器,它还可以用作反向代理、负载均衡器、邮件代理和HTTP缓存。Nginx在0.7.63之前和0.8.17之前的0.8.x,允许目录遍历,并且没有正确验证目录遍历字符(../),攻击者可以使用这些字符移动或复制文件到不同的目标。Nginx允许WebDAV组件使用复制和移动方法。这种攻击需要WebDAV的“上传”权限。
我们已经从这里下载了所需的版本。
现在让我们通过日志分析回到检测上来,下面是来自0.7.16漏洞版本的访问日志。
127.0.0.1 - - [20/May/2020:10:03:54 +0530] "COPY /index.html HTTP/1.1" 204 0 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0"
127.0.0.1 - - [20/May/2020:11:59:16 +0530] "MOVE /index.html HTTP/1.1" 204 0 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0"
以及0.7.17固定版本的错误日志
2020/05/20 13:51:31 [error] 18762#0: *5 client sent invalid "Destination" header:
"http://localhost/../var/www/abc.html", client: 127.0.0.1, server: localhost, request: "COPY /index.html HTTP/1.1", host: "localhost"
2020/05/20 13:52:59 [error] 18762#0: *6 client sent invalid "Destination" header: "http://localhost/../var/www/abc.html", client: 127.0.0.1, server: localhost, request: "MOVE /index.html HTTP/1.1", host: "localhost"
从上面的固定日志和漏洞日志中,我们可以得出以下检测模式。
在这个漏洞的部分,请求包含“复制”或“移动”方法,有204个响应代码。
在此固定部分中,错误日志包含以下消息。‘客户端发送了无效的‘目的地’头部’
这是一个关键的阶段,分析人员会发现很难为任何SIEM工具定义定制的规则。每个SIEM产品包含不同的签名,因此需要为任何SIEM工具编写通用的签名作为通用规则。在这种情况下,我们可以使用Sigma来定义固定和脆弱检测的规则作为一个单一的模式。
基于上述检测,我们已经编写了sigma规则。在这里,在我们的研究中,我们将使用Sigma格式来描述YAML文件中的检测。
Sigma Rule for CVE-2009-3898
title: CVE-2009-3898 Exploitation Attempt
id: cf98b0cf-0b0c-4af6-bd28-6cefabd58cf8
status: experimental
description: Detects the exploit attempt for Path Traversal Vulnerability
references:
- https://www.exploit-db.com/exploits/9829
author: Loginsoft Research unit
date: 2020/05/27
logsource:
product: nginx
category: webserver
detection:
selection:
sc-status: 204
cs-method:
- 'COPY'
- 'MOVE'
c-uri: '*index.html'
keywords:
- 'client sent invalid "Destination" header'
condition: selection or keywords
falsepositives:
- Unknown
level: medium
写完sigma规则后,我们可以使用uncoder或Sigmac将sigma规则转换为任何其他SIEM工具格式。
uncoder是一个用于SIEM搜索查询语言转换的开源工具。
Sigmac是一个python命令行工具,它执行从sigma规则到目标SIEM格式的转换。
在这个部分,我们已经使用uncoder工具和转换规则从sigma到Splunk查询如下。
Splunk Query for CVE-2009-3898
((sourcetype="nginx:plus:access" uri_path="*index.html" status="204" (http_method="COPY" OR http_method="MOVE")) OR (sourcetype="nginx:plus:error" "client sent invalid \"Destination\" header"))
执行上述查询后,我们将得到以下结果。
规则转换中的挑战:
不同字段名称的使用
从sigma规则到SIEM特定名称的字段名称映射。
规则引用特定于环境的值子集
占位符
SIGMA在事件响应中有什么用?
目前,由于存在多个异构环境,还缺乏一种标准化的描述格式来定义日志格式。sigma将规则转换为查询,这些查询可以转换为Splunk、ArcSight和许多其它公司的等效规则。
规则格式非常灵活,易于编写,适用于任何类型的日志文件。sigma的主要目标是提供一种自由结构的形式,在这种形式中开发人员或分析人员可以描述他们的检测方法,并使其可共享。
网友评论