一致セクションの構文

以下でサポートされています。

YARA-L 2.0 では、match セクションでマルチイベントの関連付けを行うことができます。このセクションでは、特定の 時間枠内でユーザー、IP アドレス、ファイル ハッシュなどの共通属性をリンクすることで、イベントを 1 つの検出にグループ化するロジックを定義します。

match セクションは、次のようなユースケースで使用します。

  • ルール内で 2 つ以上の異なるイベントをリンクする。
  • 検索とダッシュボードでデータを集計する(特定の期間にログインに失敗した回数をカウントするなど)。

関連付けの条件を定義する

次の項目を指定して、この関連付けの条件を定義します。

  • グループ化フィールド(キー): 一致をトリガーするには、イベント(events セクションで定義)間で同じ値を持つ必要がある変数($user$ip など)。

  • 時間制約: グループ化されたイベントがルールまたは集計を満たすために発生する必要がある期間ウィンドウ。ルールでは、これが検出ウィンドウを定義します。検索とダッシュボードでは、これが集計または関連付けウィンドウを定義します。

機能要件を比較する

次の表に、ルールと検索、ダッシュボードの比較を示します。

機能 ルールの要件 検索とダッシュボードのサポート
変数タイプ events セクションで定義されたプレースホルダを使用する必要があります。 プレースホルダと直接 UDM フィールドの両方をサポートします。
期間 検出境界を定義します。 集計または関連付けバケットを定義します。
構文 over <number><m/h/d>(例: 10m2h1d over <number><m/h/d>
上限 最小: 1m / 最大: 48h 最小: 1m / 最大: 48h

サポートされているウィンドウ タイプ

YARA-L 2.0 では、さまざまなウィンドウ処理動作を使用して、時間のスライス方法とイベントのグループ化方法を決定します。サポートされている次のいずれかのウィンドウを使用して、指定した時間粒度match セクションのイベント フィールドとプレースホルダをグループ化できます。

YARA-L 2.0 でサポートされているウィンドウ タイプの詳細については、YARA-L 2.0 のウィンドウ処理ロジックをご覧ください。

時間境界について

match セクションでは、グループ化キーに基づいてイベントがグループに分割されます。指定した期間によって、各グループの時間境界が定義されます。

  • 包含: ウィンドウ内のイベントのみが、特定の照合の condition 評価に渡されます。
  • 除外: ウィンドウ外のイベントは、特定の照合グループでは無視されます。これにより、無関係なイベントが誤検出をトリガーするのを防ぎます。

match セクションのゼロ値

Google SecOps は、match セクションで使用されているすべてのプレースホルダのゼロ値を暗黙的に除外します(文字列の場合は ""、数値の場合は 0、ブール値の場合は false、列挙型の場合は位置 0 の値)。

例: ゼロ値を除外する

次の例は、ゼロ値を除外するクエリを示しています。

rule ZeroValuePlaceholderExample {

events:
  // Because $host is used in the match section, the query behaves
  // as if the following predicate was added to the events section:
  // $host != ""
  $host = $e.principal.hostname

  // Because $otherPlaceholder was not used in the match,
  // there is no implicit filtering of zero values for $otherPlaceholder.
  $otherPlaceholder = $e.principal.ip

match:
  $host over 5m

condition:
  $e
}

ただし、プレースホルダが関数に割り当てられている場合、match セクションで使用されているプレースホルダのゼロ値がクエリによって暗黙的に除外されません。

ゼロ値の暗黙的なフィルタリングを無効にするには、 allow_zero_values オプションを [オプション] セクションで使用します。allow_zero_values オプションは、ルールでのみ使用できます。

例: ゼロ値を許可する

次の例は、match セクションで使用されているプレースホルダのゼロ値を暗黙的に除外しないクエリを示しています。

rule AllowZeroValuesExample {

events:
  // Because allow_zero_values is set to true, there is no implicit filtering
  // of zero values for $host.
  $host = $e.principal.hostname

  // Because $otherPlaceholder was not used in the match,
  // there is no implicit filtering of zero values for $otherPlaceholder.
  $otherPlaceholder = $e.principal.ip

match:
  $host over 5m

condition:
  $e

options:
  allow_zero_values = true
}

次のステップ

YARA-L ロジックを続行するか、高度なクエリ関数について詳しく調べるには、次のリソースをご覧ください。

構文とロジック

リファレンスと例

さらにサポートが必要な場合コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。