导读:《取证实录》第13期上刊登了这篇文章。我这里又进行了一次修改,增加了一个“五、运用Sigma规则的工具举例。”部分,使“借助这个规则框架能够大大提升我们的现勘能力和水平”这个认识会更加具体到位。
继上某期介绍了《ATT&CK,网络攻击行为的定义框架》之后,再次介绍一个我们会经常碰到、非常重要、非常实用的规则框架Sigma;它是ATT&CK框架的一个具体分支和应用型框架,是日志分析的世界通用流行性框架规则。借助这个规则框架能够大大提升我们的现勘能力和水平。
整个文章分为五个段落:一、Sigma简介;二、规则建立;三、规则共享;四、Sigma规则库产品;五、运用Sigma规则的工具举例。
一、Sigma简介
(1)含义:
Sigma 是一种通用开放的签名格式,于 2017 年引入,用于描述日志事件中的相关活动;主要用于定义日志中的检测机制,以检测可疑或恶意活动;它通过一种灵活、简单的格式,能够适用于任何类型的日志文件,允许安全分析人员和研究人员编写检测规则并以标准化的方式共享这些规则。
Sigma 被认为是日志分析中的 "Snort"(用于网络流量检测)和 "YARA"(用于文件检测)的等价物,旨在通过标准化格式共享和收集检测规则,从而提升检测能力。
简单概括:Sigma用于日志文件,Snort用于网络流量,YARA用于文件。
(2)应用场景:
Sigma规则是一种用于网络安全事件检测的强大工具,尤其在SIEM(安全信息和事件管理)系统中广泛应用。以下是Sigma规则的一些典型应用场景:
1. 入侵检测
-
恶意软件活动:检测可疑的文件下载、执行或传播行为。
-
网络扫描:识别潜在的网络探测和扫描活动。
-
暴力破解尝试:监控登录失败次数过多或其他暴力破解迹象。
2. 异常行为分析
-
数据泄露:监测未授权的数据传输或访问敏感信息的尝试。
-
横向移动:检测攻击者在内部网络中的横向移动行为。
-
异常登录:识别来自不寻常地理位置或时间的登录尝试。
3. 合规性监控
-
政策违规:确保用户行为符合组织的安全政策和法规要求。
-
审计跟踪:记录和分析关键系统和应用程序的活动以满足合规性标准。
4. 资源滥用
-
DDoS攻击:检测分布式拒绝服务攻击的迹象。
-
滥用服务:监测对内部服务的恶意或不当使用。
5. 漏洞利用
-
已知漏洞:快速响应已知漏洞的利用尝试。
-
零日攻击:通过行为分析来识别未知的威胁和潜在的零日漏洞利用。
6. 日志分析和审计
-
事件响应:在安全事件发生时提供详细的日志分析和上下文信息。
-
操作审计:跟踪和分析系统管理员和其他关键人员的操作。
7. 威胁情报集成
-
外部威胁:结合外部威胁情报源来增强对新兴威胁的防御能力。
-
APT攻击:监测高级持续性威胁(APT)活动的特征。
8. 自动化响应
-
自动阻断:配置Sigma规则以在检测到特定威胁时自动触发阻断规则。
-
警报通知:设置警报阈值和通知机制以便及时响应潜在的安全事件。
(3)为什么选择 Sigma
当今,每个人都会收集日志数据进行分析,但缺乏可以与他人分享其工作的标准化格式。一些工具提供了性能很强的分析,包括 IOC 和 YARA 规则来检测恶意文件和网络连接,但无法描述日志事件中的特定或通用检测方法。这时,Sigma 旨在成为一个开放标准,可以在其中定义、共享和收集此类检测机制,以提高每个人的检测能力。
(4)主要特点
l 不断增长的检测和搜寻规则列表,由专业检测工程师社区进行同行评审。
l与供应商无关的检测规则。
l可轻松跨社区和报告共享
(5)下载地址
https://github.com/SigmaHQ/sigma
二、规则创建
1、模板
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)
2、模板含义:
每个规则 (yml) 都有以下部分:
l title(标题):规则的名称。Windows Cmd Delete File。
lid:唯一标识规则的UUID。
lstatus(状态):experimental或者normal,在这种情况下,它是一个experimental规则。experimental
ldescription(描述):解释规则的上下文。
lauthor(作者):关于规则创建者的元数据。
ldate(时间):规则的创建日期。
lreferences(参考):参考链接https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1070.004/T1070.004.md
llogsource(日志来源):用于范围搜索,支持各种组合。
lcategory(类别):描述规则类别。类别示例包括:防火墙、防病毒、EDR、Web。
ldetection(检测):包含一组搜索标识符,表示对日志数据的搜索及其各自的评估机制,由两个属性控制:selection(选择)和condition(条件)。
n selection(选择):在条件中链接的选择项。
ncondition(条件):判断满足哪些选择。
lfalsepositives(误报):描述字段,用于解释哪些事件或情况可能触发导致误报的规则。
llevel(级别):严重级别低、中、高或严重。low
ltags(标签):ATT&CK标签。
3、实例
我们来看个进程创建的例子:proc_creation_win_wsl_windows_binaries_execution.yml
title:Windows Binary Executed From WSL
id:ed825c86-c009-4014-b413-b76003e33d35
status:test
description: |
Detects the execution of Windows binaries from within a WSL instance.
This could be used to masquerade parent-child relationships
references:
- Internal Research
author:Nasreddine Bencherchali (Nextron Systems)
date:2023-02-14
tags:
- attack.execution
- attack.defense-evasion
- attack.t1202
logsource:
category: process_creation
product: windows
detection:
selection:
Image|re: '[a-zA-Z]:\'
CurrentDirectory|contains: '\\wsl.localhost' # Note: programs not supporting UNC paths (example: cmd.exe). Will default to another location
condition: selection
falsepositives:
- Unknown
level:medium
4、实战:用于检测创建本地用户账户的Sigma规则
MITRE ATT&CK中提到的创建用户,攻击者可能会创建一个本地帐户来维持对被攻击系统的访问。本地帐户是由组织配置供用户、远程支持、服务使用或用于管理单个系统或服务的帐户。
(1)使用net user /add命令创建本地用户帐户。
C:Windowssystem32>net user admin admin1 /add
命令成功完成。
(2)利用sigma构建一个框架:
title: 创建本地用户账户行为status: testdescription: 使用net user /add命令创建本地用户帐户references: - https://attack.mitre.org/techniques/T1136/001/date: 2022/06/27author: level: low
(3)分析windows安全日志,是否记录了用户账户创建。windows安全日志4720记录了已创建用户账户admin。
(4)可将windows安全事件ID4720作为条件,来检测是否存在创建本地用户账户行为。完整的规则如下:
title: 创建本地用户账户行为status: testdescription: 使用net user /add命令创建本地用户帐户references: - https://attack.mitre.org/techniques/T1136/001/date: 2022/06/27author: logsource: product: windows service: securitydetection: selection: EventID: 4720 #已创建用户帐户。 condition: selectionfields:- EventCode- AccountName- AccountDomainfalsepositives:- 域控制器日志- 由特权帐户管理工具管理的本地用户账户level: low
三、规则共享
1、Sigma规则转换为不同的SIEM平台支持的搜索查询语句格式,支持以下SIEM平台:
lSplunk
lElasticSearch Query Strings and DSL
lKibana
lMicrosoft Defender Advanced Threat Protection (MDATP)
lAzure Sentinel
lQRadar
lLogPoint
lQualys
lRSA NetWitness
lLimaCharlie
lArcSight
lPowerShell and Grep
l......
Sigma支持以下日志类型:
l 防火墙日志
lWeb应用程序日志
l代理/VPN网络日志
l操作系统日志
n 事件日志
n进程创建和审核日志
n系统事件
2、编译Sigma规则
为了将Sigma规则转换为任何SIEM平台所支持的搜索查询语句,必须使用Sigma编译器sigmac,这是Sigma本身附带的基于python的工具。
sigmac可以将规则转换为想要执行查询的SIEM平台支持的搜索查询语句,如Splunk、Qualys和Qradar等。sigmac还使用字段映射将规则中使用的字段转换为将要执行查询的平台内的实际字段。
要查看所有可用的目标、配置,运行以下命令即可:
python3 sigmac --lists
3、编译一个规则
为了转换为可支持的任何SIEM平台的搜索查询语句格式,可通过-t配置为可支持的任何SIEM平台,-c设置正确的字段映射:
$python3 sigmac -t splunk -c splunk-windows ~/sigma/rules/windows/process_creation/proc_creation_win_cmdkey_recon.yml
((Image="*\cmdkey.exe"OR OriginalFileName="cmdkey.exe")(CommandLine="* /l*"OR CommandLine="* -l*"))|table CommandLine,ParentCommandLine,User
这样就可以得到一个编译后的规则,在Splunk上查找cmdkey查看缓存凭证的执行情况。
可以选择监控这些类型的日志,并利用这些日志来检测攻击者:
l 操作系统日志
n 账户身份认证
u 大量的登录失败
u特殊账户的变更和使用,以及SID历史
n进程创建和执行
u 在非正常的位置执行
u可疑的进程关系
u具有未知哈希的已知可执行文件
u已知恶意哈希
n资源访问
nwindows事件
u 不常见的服务设施
u新的域信任关系
u网络:端口扫描,主机发现
n代理日志
u Web服务器访问日志
l 4xx 错误:可能是扫描探测行为
l5xx 错误:可能是利用行为
u应用程序错误日志
l 异常或其他特定的消息。eg:可疑的SQL错误消息
4、工具
CLI工具:https://github.com/SigmaHQ/sigma-cli
GUI工具:https://sigconverter.io/
四、Sigma规则库的产品
(1)存储库提供了3000多个不同类型的检测规则。目前,存储库提供三类规则:
l 通用检测规则 -威胁不可知论者,其目的是检测曾经、能够或将要被潜在威胁行为者使用的行为或技术或程序的实施情况。
l猎取威胁规则 -范围更广,目的是让分析师有一个出发点,搜寻潜在的可疑或恶意活动
l新出现的威胁规则 -涵盖特定威胁的规则,在某些时期是及时和相关的。这些威胁包括具体的APT运动、利用零日漏洞、攻击中使用的特定恶意软件。..等等
(2)产品列表
lalterix - Converts Sigma rules to the query language of CRYPTTECH's SIEM
lAttackIQ - Sigma Rules integrated in AttackIQ's platform, and SigmAIQ for Sigma rule conversion and LLM apps
lAtomic Threat Coverage (Since December 2018)
lConfluent Sigma - Kafka Streams supported Sigma rules
lIBM QRadar
lImpede Detection Platform
lJoe Sandbox
lLimaCharlie
lMISP (Since Version 2.4.70, March 2017)
lNextron's Aurora Agent
lNextron's THOR Scanner - Scan with Sigma rules on endpoints
lRANK VASA
lSekoia.io XDR - XDR supporting Sigma and Sigma Correlation rules languages
lsigma2stix - Converts the entire SigmaHQ Ruleset into STIX 2.1 Objects.
lA versioned archive of sigma2stix STIX 2.1 data is also available to download here.
lSIΣGMA - SIEM consumable generator that utilizes Sigma for query conversion
lSOC Prime
lTA-Sigma-Searches (Splunk App)
lTimeSketch
lypsilon - Automated Use Case Testing
(3)ATT&CK理解+sigma规则研究
Threathunting-book目前已覆盖46个TID,124个场景,主要涉及ATT&CK技术、场景测试、检测所需数据源、检测思路等。以AD域渗透技巧为中心+ATT&CK技术理解为主,可以借鉴学习。
五、运用sigma规则的工具举例
这样的例子太多太多。
1、如我前面的文章《Windows事件日志快速时间线生成和威胁搜寻》,介绍了Hayabusa(Windows事件日志快速时间线生成器和威胁搜寻工具),这是一个运用了Sigma规则库的典型工具(https://github.com/Yamato-Security/hayabusa)。
分析日志时使用的Sigma等规则的功能介绍
2、如我前面文章《工具:识别Windows事件日志中的威胁》,介绍了一个我的自研工具EvtxAnalyser,利用Sigma检测规则库快速识别Windows事件日志中的威胁内容,即通过事件日志关键字使用内置检测逻辑识别威胁。
原文始发于微信公众号(MicroPest):Sigma规则框架
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论