0Pricing
Cyber Security Academy · レッスン

Sigmaルールの記述

移植可能な検知ルールの構文を学びます。

「Sigmaルールの記述」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。

Sigmaとは

Sigmaは、ログベースの検知向けの汎用的でベンダー中立なシグネチャ形式です。検知ロジックを YAML で一度記述すると、それを Splunk SPL、Elastic クエリ、Sentinel KQL など、さまざまなバックエンド向けに変換できます。

Sigma は、ファイル検知における YARA のような、移植可能な共通言語です。チーム間でルールを公開して共有でき、SIEM ごとに同じアイデアを書き直す必要がなくなります。

ルールの構造

Sigma ルールは、必須セクションと任意セクションを備えた YAML ドキュメントです。基本となるのは title、logsource、detection です。

title: Suspicious PowerShell Encoded Command
id: 7e3f3c1a-1f2b-4c3d-9a8b-1234567890ab
status: experimental
logsource:
  category: process_creation
  product: windows
detection:
  selection:
    Image|endswith: '\\powershell.exe'
    CommandLine|contains: '-enc'
  condition: selection
level: high

logsourceブロック

logsource ブロックは、ルールを適用するログの種類をコンバーターに伝えます。データを直接クエリするのではなく、変換時に適切なフィールドマッピングとインデックスを選択します。

一般的なキー:

  • product — 例:windows、linux、aws
  • category — 例:process_creation、network_connection、file_event
  • service — 例:sysmon、security、sshd

データが対応できる範囲で最も具体的な組み合わせを選び、パイプラインがフィールドを正しくマッピングできるようにします。

選択と検索識別子

detection 内では、1つ以上の名前付き検索識別子(選択)を定義します。それぞれが、フィールドと値の条件をマップとして表します。1つの選択内にある複数のフィールドは、論理 AND で結合されます。

ここでは、selection が一致するには両方の条件が真でなければなりません。

detection:
  selection:
    EventID: 4688
    NewProcessName|endswith: '\\whoami.exe'
  condition: selection

フィールド修飾子

修飾子を使うと、値の照合方法を細かく指定できます。フィールド名の後にパイプ記号を付けて記述します。

  • contains — 部分文字列による一致
  • startswith / endswith — 先頭または末尾を固定した一致
  • all — リスト内のすべての値が存在することを要求
  • re — 正規表現
  • base64offset|contains — Base64 でエンコードされた部分文字列に一致

修飾子は左から右へ連結され、記述順に適用されます。

detection:
  selection:
    CommandLine|contains|all:
      - 'Invoke-WebRequest'
      - 'DownloadString'
  condition: selection

OR / AND としてのリストとマップ

選択内のロジックには、次の2つのルールがあります。

  • 1つのフィールドに対する値のリストは OR です。いずれかの値が一致すればよいことを意味します。
  • 複数のフィールドを含むマップは AND です。すべてのフィールドが一致しなければなりません。

以下では、Image はいずれかのバイナリに一致し、User は SYSTEM と等しくなければなりません。

detection:
  selection:
    Image|endswith:
      - '\\net.exe'
      - '\\net1.exe'
    User: 'SYSTEM'
  condition: selection

condition式

condition は、名前付きの選択をブール論理で組み合わせます。ここでフィルターや除外条件を表現します。

演算子には、and、or、not、括弧、count() のような集約があります。また、1 of selection* / all of selection* を使って、プレフィックスで識別子のグループを参照することもできます。

detection:
  selection:
    EventID: 4625
  timeframe: 5m
  condition: selection | count() by SourceIp > 10

ノイズの除外

既知の正常なアクティビティを抑制するには、別の識別子を定義し、not を使って condition で差し引きます。これにより、悪意のあるロジックを読みやすく保ちながら、除外条件を明示できます。

ここでは、既知の正規の更新プロセスを除き、rundll32 がネットワーク接続を生成したときにルールが発火します。

detection:
  selection:
    Image|endswith: '\\rundll32.exe'
  filter_legit:
    ParentImage|endswith: '\\MicrosoftEdgeUpdate.exe'
  condition: selection and not filter_legit

トリアージ用メタデータ

優れたルールはロジックだけでなく、対応担当者が迅速に行動し、エンジニアがカバレッジを維持するのに役立つメタデータも備えています。

  • level — informational、low、medium、high、critical
  • tags — ATT&CK のテクニック。例:attack.t1059.001
  • falsepositives — 既知の無害なトリガー
  • references — 脅威レポートやドキュメント
  • author と date

これらのフィールドの記述には数分しかかからず、インシデント時には数時間分の作業を省けます。

相関ルール

単一イベントのルールでは、複数ステップの攻撃を表現できません。Sigma の相関ルールは、複数の基本ルールを時間軸に沿って組み合わせ、連続したイベントやパターンを検知します。

対応している種類には、event_count(時間枠内で N 件一致)、value_count(個別の値。例:多数の失敗ユーザー)、temporal(ルール A の後にルール B)が含まれます。これにより、たとえば大量の失敗の直後に成功したログインが発生したことを検知できます。

name: bruteforce_then_success
correlation:
  type: temporal
  rules: [failed_logins, successful_login]
  group-by: [SourceIp, TargetUser]
  timespan: 10m

バックエンドへの変換

sigma-cliを使うと、ルールを対象のクエリ言語に変換できます。処理パイプラインによって、Sigma のフィールド名が実際のスキーマにマッピングされます。

出力は、そのまま貼り付けるか API 経由でプッシュできる、すぐにデプロイ可能なクエリです。

sigma convert -t splunk -p sysmon \
  -f default rule.yml

# Example output (Splunk SPL):
# Image="*\\powershell.exe" CommandLine="*-enc*"

理解度チェック

Sigma の検知ロジックを理解できているか確認します。

まとめ

これで、移植可能な Sigma ルールを作成できるようになりました。

  • logsource は、適用するログとフィールドマッピングを選択します
  • 選択は、名前付きのフィールドと値の条件です(フィールドは AND、値のリストは OR)
  • 修飾子(contains、endswith、all、re など)で照合方法を細かく指定します
  • condition は、and/or/not、フィルター、集約を使って選択を結合します
  • 個別のfilter識別子によって、既知の正常なノイズを差し引きます
  • メタデータ(level、tags、falsepositives)によってトリアージを迅速化します
  • sigma convert によって、ルールを SIEM バックエンド向けにコンパイルします

次は、MITRE ATT&CK を使ってこれらのルールを攻撃者のテクニックに関連付けます。

よくある質問

「Sigmaルールの記述」レッスンは無料ですか?

はい。「Sigmaルールの記述」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。

「Sigmaルールの記述」で何を学びますか?

移植可能な検知ルールの構文を学びます。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cyber Security Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「Sigmaルールの記述」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCyber Security Academyレッスンでコードを書いて実行できますか?

はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Detection-as-Codeの原則
  2. Sigmaルールの記述
  3. MITRE ATT&CKへのマッピング
  4. 検知のテストとチューニング
← Cyber Security Academyに戻る