一致セクションの構文
YARA-L 2.0 では、match セクションでマルチイベントの関連付けのメカニズムが提供されます。これは、特定の時間的境界内のユーザー、IP アドレス、ファイル ハッシュなどの共通属性をリンクして、イベントを単一の検出にグループ化するロジックを定義します。
match セクションは、次のユースケースで使用します。
- ルール内で 2 つ以上の異なるイベントをリンクする。
- 検索とダッシュボードでのデータの集計(特定の期間内のログイン試行の失敗回数のカウントなど)。
相関関係の基準を定義する
これを使用して、次の項目を指定してこの相関の条件を定義します。
グループ化フィールド(キー): 一致をトリガーするために、イベント間で同じ値を持つ必要がある変数(
$userや$ipなど)。(eventsセクションで定義)。時間制約: ルールまたは集計を満たすために、グループ化されたイベントが発生する必要がある期間ウィンドウ。ルールでは、検出ウィンドウを定義します。検索とダッシュボードでは、集計または相関ウィンドウを定義します。
機能要件を比較する
次の表に、ルールと検索およびダッシュボードの比較の詳細を示します。
| 機能 | ルール要件 | 検索とダッシュボードのサポート |
|---|---|---|
| 変数タイプ | events セクションで定義されたプレースホルダを使用する必要があります。 |
プレースホルダと直接 UDM フィールドの両方をサポートします。 |
| 期間 | 検出境界を定義します。 | 集計または相関関係バケットを定義します。 |
| 構文 | over <number><m/h/d>(例: 10m、2h、1d) |
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 セクションの値が 0
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 のプロフェッショナルから回答を得ることができます。