NECサイバーセキュリティ戦略統括部セキュリティ技術センターの油布です。
Sentinel、Splunk、Arcsight、Kibana、SumoLogic等、複数のSIEMを導入しているため、各SIEMで異なるクエリを書かれている方はいらっしゃるのではないかと思います。
今回ご紹介するSIEMシステム用シグネチャフォーマット「Sigma」では、検知したい内容を「Sigma」ルールで書くことにより、各SIEM形式のルールに変換してくれます。また、「Sigma」ルールの変換ツールである「Uncoder.io」は、ブラウザ上で「Sigma」ルールから各SIEMのクエリに変換してくれるため、ソフトウェアのインストールなども必要ありません。
それでは、SIEMシステム用シグネチャフォーマットである「Sigma」と、「Sigma」ルールの変換ツールである「Uncoder.io」を紹介していきます。
「Sigma」について
「Sigma」とは、ログイベントをわかりやすく記述することができる、汎用的なシグネチャフォーマットです [1]。既存ツールとして、マルウェア等の悪意のあるファイルに対する検知ルールである「Yara」や、ネットワークトラフィックに対する検知ルールである「Snort」などがあります。しかし、これらの既存ツールでは、ログイベントに対する検知ルールを記述できません。「Sigma」は、SIEMを使って悪意のあるファイルやネットワーク接続を検出するためのメカニズムを、定義、共有、収集します。「Sigma」を使用することで、脅威のハンティングと検知を単一のプラットフォームに依存することがないため、技術の乗り換えや入れ替えが困難な状況を改善してくれます。
「Sigma」では、以下の製品をサポートしています。(2022/10/07時点)
<サポートされている製品>
- Splunk (plainqueries and dashboards)
- ElasticSearch Query Strings
- ElasticSearch Query DSL
- Kibana
- Elastic X-Pack Watcher
- Logpoint
- Microsoft Defender Advanced Threat Protection (MDATP)
- Azure Sentinel / Azure Log Analytics
- Sumologic
- ArcSight
- QRadar
- Qualys
- RSA NetWitness
- PowerShell
- Grep with Perl-compatible regular expression support
- LimaCharlie
- ee-outliers
- Structured Threat Information Expression (STIX)
- LOGIQ
- uberAgent ESA
- Devo
- LogRhythm
- Datadog Logs
- FortiSIEM
- HAWK.io MDR
図2.「Sigma」でサポートされている製品一覧
「Sigma」ルールについて
「Sigma」ルールの構造について説明します [2]。「Sigma」ルールは、必須項目とオプション項目で構成されています。
詳細はGithubにドキュメントとしてまとめられております。
id [optional]
related [optional]
- type {type-identifier}
id {rule-id}
status [optional]
description [optional]
author [optional]
references [optional]
logsource
category [optional]
product [optional]
service [optional]
definition [optional]
...
detection
{search-identifier} [optional]
{string-list} [optional]
{map-list} [optional]
{field: value} [optional]
...
condition
fields [optional]
falsepositives [optional]
level [optional]
tags [optional]
...
[arbitrary custom fields]
図3.「Sigma」ルールの構造
図4は、「Sigma」ルールの構造を示したものになります。
図4中の「required」は必須項目であり、「optional」はオプション項目です。
また、表1で項目の説明を記載します。
related [optional]
- type {type-identifier}
id {rule-id}
関連するルール
関連するルールのID
(最大65,535文字)
ブログ記事、技術論文、プレゼンテーション、ツイートなど
category [optional]
product [optional]
service [optional]
definition [optional]
...
category - 例:ファイアウォール、ウェブ、アンチウィルス
product - 例: Windows、apache、check point fw1
service - 例: sshd, applocker
{search-identifier} [optional]
{string-list} [optional]
{map-list} [optional]
{field: value} [optional]
...
condition
...
[arbitrary custom fields]
表1.「Sigma」ルールの項目名と説明
「Uncoder.io」について
「Uncoder.io」とは、オンライン上で「Sigma」ルールを様々なSIEMやEDR、XDRに取り込める形式に変換することができるツールです [3]。「Uncoder.io」は、ブラウザ上で動くWebアプリのため、ソフトウェアやツールのインストールが必要なく、非常に使いやすいツールです。
「Uncoder.io」の使い方
「Uncoder.io」には、「Sigma」ルールを効率良く作成するためのテンプレートが複数用意されているため、これらのテンプレートから検出したい内容を導くことも可能です。
図5はテンプレートの一つであり、イベントログから“mimikatz”のキーワードを検出するルールです。
図6に”mimikaz”を検出するテンプレートを載せました。図6を参考に「Sigma」ルールの解説をします。
description: This method detects mimikatz keywords in different Eventlogs (some of them only appear in older Mimikatz version that are however still used by different threat groups)
author: Florian Roth
logsource:
product: windows
detection:
keywords:
- mimikatz
- mimilib
- <3 eo.oe
- eo.oe.kiwi
- privilege::debug
- sekurlsa::logonpasswords
- lsadump::sam
- mimidrv.sys
condition: keywords
falsepositives:
- Naughty administrators
- Penetration test
level: critical
図6.「Sigma」ルールのテンプレート文(mimikatzの検出)
図6の内容を項目ごとに説明します。
Title
「Sigma」ルールで検知したい内容のタイトルになります。
Description
「Sigma」ルールの検知したい内容の説明になります。
ここでは、以下のように説明しております。
“この方法では、様々なイベントログからmimikatzのキーワードを検出する(そのうちのいくつかは、古いMimikatzのバージョンのみが現れるが、古いバージョンでも様々な脅威グループが使用している)。”
author
「Simga」ルールを書いた人の名前が記述されています。
logsource
product: windows
検知の対象となるログデータを記述します。上記では、Windowsのログを対象にしています。
detection
keywords:
- mimikatz
- mimilib
- <3 eo.oe
- eo.oe.kiwi
- privilege::debug
- sekurlsa::logonpasswords
- lsadump::sam
- mimidrv.sys
condition: keywords
検出したい内容を記述します。
“keywords”では、指定している文字列を検出します。
“condition”では、検出したい条件を記述します。
“keywords”にある内容を検出するため、“condition: keywords”と記述しています。
また今回のテンプレートではありませんでしたが、“detection”で検知したい内容を“condition”で組み合わせて指定する場合は、以下のようにand/orで記載します。
selection:
EventID: 4656
ProcessName: ‘C:\Windows\System32\hoge.exe’
keywords:
- mimikatz
condition: selection and keywords
falsepositives
- Naughty administrators
- Penetration test
発生する可能性のある誤検出のリストを記述します。
“Penetration test”で、“mimikatz”を使用することがあるので、誤検出のリストに記述しています。
level
「Sigma」ルールの内容をレベル付けします。
5段階で分類します。
informational:情報提供。
low:低。注目すべきイベントだが、インシデントになることはほとんどない。
medium:中。より頻繁に手動でレビューする必要がある関連性の高いイベント。
high:高。内部警告を発するべき関連性の高い事象で、迅速なレビューが必要。
critical:クリティカル。インシデントを示す関連性の高いイベントで、直ちにレビューが必要。
検証
ここでは、「Unicoder.io」上でWindowsのセキュリティログの削除を検出する「Sigma」ルールを記述します。ここで記述した「Sigma」ルールは、Splunk [4]用に変換します。検証環境として、「Detecionlab」[5]を使用しております。「Detecionlab」については、NECセキュリティブログ“「DetectionLab」で手軽にWindowsラボ環境を構築”で説明しております。
検証用のルール
description: Some threat groups tend to delete the local 'Security' Eventlog using certain utitlities
author: Yufu
references: hxxps://jpn.nec.com/cybersecurity/blog/
logsource:
product: windows
service: security
detection:
selection:
EventID:
- 517
- 1102
condition: selection
level: high
図7.検証用の「Sigma」ルール
(*注:referencesは、NECのセキュリティブログのURLを記述しており、本ルール内容と関連があるURLではありません。)
検証用のルールでは、“logsource”で、Windowsのセキュリティログを対象にしています。
また、“detection”では、Windowsのセキュリティログの削除を示すEventID(512,1102)を表記しております。
記述した「Sigma」ルールを変換したいSIEMやEDR、XDRを選択し、「Translate」ボタンをクリックすると、変換後のクエリが記載されます。
図9.「Uncoder.io」でSplunkに変換後のクエリ
図9のクエリは、「EventCode=”517”」となっておりますが、SplunkでWindowsのEventIDを指定する際は、「“EventID”=517」と記述する必要があります。そのため、図10のように一部修正を行いました。
`comment("Uncoder.IO::source="WinEventLog:Security"AND (EventCode="517" OR EventCode="1102") ")`
図10.「Unicoder.io」の結果を参考にしたクエリ
図10のクエリを使ってSplunkでサーチをした結果、図11のようにWindowsのセキュリティログの削除を検出することができました。
まとめ・感想
今回は、関連するログイベントをわかりやすく記述することができる「Sigma」と、「Sigma」ルールの変換ツールである「Uncoder.io」を紹介しました。実際に使用してみた感想として、ログイベントの検出方法の参考になりました。私は業務において複数のSIEMを使用することがありますが、「Uncoder.io」を使用すると、各SIEMで利用できる形式に変換してくれるので、各SIEMのクエリを調査する時間も減少しました。
業務の用途によっては、使用するSIEMやEDR、XDRが増加する、もしくは乗り換えることも想定されます。利用するSIEMやEDR、XDRを増設や製品を変更した場合に、ぜひ「Sigma」や「Uncoder.io」の導入を検討してみるのはいかがでしょうか。
参考情報
[1] https://github.com/SigmaHQ/sigma (Florian Roth and Thomas Patzke)
[2] https://github.com/SigmaHQ/sigma/wiki/Specification
[3] https://Uncoder.io/(SOC Prime)
[4] https://www.splunk.com/ja_jp
[5] https://group.nec/jp/ja/solutions/cybersecurity/blog/210416
執筆者プロフィール
油布 翔平(ゆふ しょうへい)
セキュリティ技術センター リスクハンティングチーム
監視サービスの導入・EDR製品の検証・インシデントレスポンス対応に従事。