サイト内の現在位置

SIEMシステム用シグネチャフォーマット「Sigma」とSigmaルールの変換ツール「Uncoder.io」のご紹介

NECセキュリティブログ

2022年10月14日

NECサイバーセキュリティ戦略統括部セキュリティ技術センターの油布です。
Sentinel、Splunk、Arcsight、Kibana、SumoLogic等、複数のSIEMを導入しているため、各SIEMで異なるクエリを書かれている方はいらっしゃるのではないかと思います。
今回ご紹介するSIEMシステム用シグネチャフォーマット「Sigma」では、検知したい内容を「Sigma」ルールで書くことにより、各SIEM形式のルールに変換してくれます。また、「Sigma」ルールの変換ツールである「Uncoder.io」は、ブラウザ上で「Sigma」ルールから各SIEMのクエリに変換してくれるため、ソフトウェアのインストールなども必要ありません。
それでは、SIEMシステム用シグネチャフォーマットである「Sigma」と、「Sigma」ルールの変換ツールである「Uncoder.io」を紹介していきます。

「Sigma」について

「Sigma」とは、ログイベントをわかりやすく記述することができる、汎用的なシグネチャフォーマットです new window[1]。既存ツールとして、マルウェア等の悪意のあるファイルに対する検知ルールである「Yara」や、ネットワークトラフィックに対する検知ルールである「Snort」などがあります。しかし、これらの既存ツールでは、ログイベントに対する検知ルールを記述できません。「Sigma」は、SIEMを使って悪意のあるファイルやネットワーク接続を検出するためのメカニズムを、定義、共有、収集します。「Sigma」を使用することで、脅威のハンティングと検知を単一のプラットフォームに依存することがないため、技術の乗り換えや入れ替えが困難な状況を改善してくれます。

図1.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」ルールの構造について説明します new window[2]。「Sigma」ルールは、必須項目とオプション項目で構成されています。
詳細はGithubにドキュメントとしてまとめられております。

title
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」はオプション項目です。

図4.「Sigma」ルールの構造のイメージ図

また、表1で項目の説明を記載します。

項目名 項目の説明
Title ルールの内容を含む、ルールの簡単なタイトル(最大256文字)
id [optional] ルールの識別、ID(id属性にグローバルに一意な識別子を指定する)
related [optional]
   - type {type-identifier}
     id {rule-id}
関連するルールの情報
  関連するルール
  関連するルールのID
status [optional] ルールのステータス
description [optional] ルールと検出される悪意のあるアクティビティの説明
(最大65,535文字)
author [optional] ルールの作成者
references [optional] ルールの元となったソースの参照先
ブログ記事、技術論文、プレゼンテーション、ツイートなど
logsource
   category [optional]
   product [optional]
   service [optional]
   definition [optional]
   ...
ログソース(検知の対象となるログデータを記述する。ログソース、プラットフォーム、アプリケーション、検知に必要なタイプについて記述)
category - 例:ファイアウォール、ウェブ、アンチウィルス
product - 例: Windows、apache、check point fw1
service - 例: sshd, applocker
detection
   {search-identifier} [optional]
      {string-list} [optional]
      {map-list} [optional]
      {field: value} [optional]
   ...
   condition
検出(ログデータに対する検索のプロパティを表すSearch-Identifierのセット)
fields [optional] イベントの更なる分析において興味深い可能性があり、分析者に表示されるべきログフィールドのリスト
falsepositives [optional] 発生する可能性のある既知のfalse positiveのリスト
level [optional] レベル。5つで判定(informational,low,medium,high,critical)
tags [optional]
...
[arbitrary custom fields]
タグ。ルールをタグによって分類することが可能

表1.「Sigma」ルールの項目名と説明

「Uncoder.io」について

「Uncoder.io」とは、オンライン上で「Sigma」ルールを様々なSIEMやEDR、XDRに取り込める形式に変換することができるツールです new window[3]。「Uncoder.io」は、ブラウザ上で動くWebアプリのため、ソフトウェアやツールのインストールが必要なく、非常に使いやすいツールです。

「Uncoder.io」の使い方

「Uncoder.io」には、「Sigma」ルールを効率良く作成するためのテンプレートが複数用意されているため、これらのテンプレートから検出したい内容を導くことも可能です。
図5はテンプレートの一つであり、イベントログから“mimikatz”のキーワードを検出するルールです。

図5.「Unicoder.io」の「Sigma」ルールのテンプレート画面(mimikatzの検出)

図6に”mimikaz”を検出するテンプレートを載せました。図6を参考に「Sigma」ルールの解説をします。

title: Mimikatz Use
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

title: Mimikatz Use

「Sigma」ルールで検知したい内容のタイトルになります。

Description

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)

「Sigma」ルールの検知したい内容の説明になります。
ここでは、以下のように説明しております。
“この方法では、様々なイベントログからmimikatzのキーワードを検出する(そのうちのいくつかは、古いMimikatzのバージョンのみが現れるが、古いバージョンでも様々な脅威グループが使用している)。”

author

author: Florian Roth

「Simga」ルールを書いた人の名前が記述されています。

logsource

logsource:
    product: windows

検知の対象となるログデータを記述します。上記では、Windowsのログを対象にしています。

detection

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で記載します。

detection:
    selection:
        EventID: 4656
        ProcessName: ‘C:\Windows\System32\hoge.exe’
    keywords:
        - mimikatz
    condition: selection and keywords

falsepositives

falsepositives:
    - Naughty administrators
    - Penetration test

発生する可能性のある誤検出のリストを記述します。
“Penetration test”で、“mimikatz”を使用することがあるので、誤検出のリストに記述しています。

level

level: critical

「Sigma」ルールの内容をレベル付けします。
5段階で分類します。
informational:情報提供。
low:低。注目すべきイベントだが、インシデントになることはほとんどない。
medium:中。より頻繁に手動でレビューする必要がある関連性の高いイベント。
high:高。内部警告を発するべき関連性の高い事象で、迅速なレビューが必要。
critical:クリティカル。インシデントを示す関連性の高いイベントで、直ちにレビューが必要。

検証

ここでは、「Unicoder.io」上でWindowsのセキュリティログの削除を検出する「Sigma」ルールを記述します。ここで記述した「Sigma」ルールは、Splunk new window[4]用に変換します。検証環境として、「Detecionlab」[5]を使用しております。「Detecionlab」については、NECセキュリティブログ“「DetectionLab」で手軽にWindowsラボ環境を構築”で説明しております。

検証用のルール

title: Security Eventlog Cleared
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)を表記しております。

図8.「Uncoder.io」で検証用の「Sigma」ルールの変更

記述した「Sigma」ルールを変換したいSIEMやEDR、XDRを選択し、「Translate」ボタンをクリックすると、変換後のクエリが記載されます。

source="WinEventLog:Security" AND (EventCode="517" OR EventCode="1102")

図9.「Uncoder.io」でSplunkに変換後のクエリ

図9のクエリは、「EventCode=”517”」となっておりますが、SplunkでWindowsのEventIDを指定する際は、「“EventID”=517」と記述する必要があります。そのため、図10のように一部修正を行いました。

source="test_audit.csv" AND ("Event ID"=1102 OR "Event ID"=512)
`comment("Uncoder.IO::source="WinEventLog:Security"AND (EventCode="517" OR EventCode="1102") ")`

図10.「Unicoder.io」の結果を参考にしたクエリ

図10のクエリを使ってSplunkでサーチをした結果、図11のようにWindowsのセキュリティログの削除を検出することができました。

図11.Splunkのサーチ結果

まとめ・感想

今回は、関連するログイベントをわかりやすく記述することができる「Sigma」と、「Sigma」ルールの変換ツールである「Uncoder.io」を紹介しました。実際に使用してみた感想として、ログイベントの検出方法の参考になりました。私は業務において複数のSIEMを使用することがありますが、「Uncoder.io」を使用すると、各SIEMで利用できる形式に変換してくれるので、各SIEMのクエリを調査する時間も減少しました。
業務の用途によっては、使用するSIEMやEDR、XDRが増加する、もしくは乗り換えることも想定されます。利用するSIEMやEDR、XDRを増設や製品を変更した場合に、ぜひ「Sigma」や「Uncoder.io」の導入を検討してみるのはいかがでしょうか。

参考情報

執筆者プロフィール

油布 翔平(ゆふ しょうへい)
セキュリティ技術センター リスクハンティングチーム

監視サービスの導入・EDR製品の検証・インシデントレスポンス対応に従事。

執筆者の他の記事を読む

アクセスランキング