來源:https://www.loginsoft.com/blog/2020/06/17/threat-detection-with-sigma-rules/
sigma轉換工具
https://uncoder.io/#
事件響應是您為恢復交付組織業務服務的能力而采取的操作。它也被稱為IT事件,計算機事件,或安全事件。事故響應的主要目標是以一種限制損害和減少恢復時間和成本的方式處理這種情況。一個組織使用事件響應來響應和管理網絡攻擊。
安全團隊實時檢測這些威脅,管理事件響應,并在網絡上的不同點執行法醫調查。
像ArcSight和Splunk這樣的SIEM解決方案使分析師能夠對其環境中的威脅有更廣泛的了解。這使他們能夠優化分類和補救。還可以加速檢測,從而減少事件響應時間。
SIGMA是一個定義檢測的開放標準平臺。它支持在不同的組織之間重用和共享分析。
一、SIGMA
SIGMA是一種通用的開放簽名格式,允許您以簡單的方式描述SIEM系統中的相關日志事件。這種格式非常靈活,易于編寫,適用于任何類型的日志文件。
二、為什么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的主要目標是提供一種自由結構的形式,在這種形式中開發人員或分析人員可以描述他們的檢測方法,并使其可共享。