YARA-L のベスト プラクティス
このドキュメントでは、YARA-L でルールを記述するための Google Security Operations の推奨ベスト プラクティスについて説明します。
ゼロ値を除外する
ルールを実行するイベントで、フィールドが自動的に省略される場合があります。フィールドが省略されている場合、デフォルトでゼロ値になります。
たとえば、省略された文字列値のデフォルト値は ""
です。
省略された 2 つのフィールドを等価にすると、両方ともデフォルトでゼロ値になる可能性があります。これは、2 つのフィールドがゼロ値になるために一致してしまう意図しない一致につながる可能性があります。この動作を回避するには、ゼロ値を明示的に指定します。
たとえば、2 つのフィールドに基づいて 2 つのイベントを等価にするルールがある場合は、これらのフィールドの両方が空になっており、一致が発生する可能性があります。
$e1.field1 = $e2.field2
データで e1.field1
と e2.field2
の両方が省略されている場合は、"" = ""
が true になり、一致が発生します。
次の比較式では、e1.field1
と e2.field2
にデータが含まれていないため、一致することはありません。
$e1.field1 = $e2.field2
$e1.field != ""
ゼロ値と拡充に依存するルール
ルールがまだ更新されていない拡充データに依存している場合、値は null または 0 になることがあります。したがって、拡充に依存するルールではゼロ値を除外(null チェック)することをおすすめします。Google Security Operations がイベントデータとエンティティデータを拡充する方法と、ルールでコンテキストが強化されたデータを使用する方法を学習する。
イベントタイプ フィルタを追加する
次の例では、各 UDM イベントの IP アドレスが参照リストと照合され、大量のリソースが消費されます。
events:
// For every UDM event, check if the target.ip is listed in
// the suspicious_ip_addresses reference list.
$e.target.ip in %suspicious_ip_addresses
YARA-L ルールの検出対象が特定のイベントタイプの UDM イベントのみである場合は、イベントタイプ フィルタを追加すると、ルールで評価する必要があるイベントの数を減らすことでルールを最適化できます。
events: // NETWORK_DNS タイプの UDM イベントごとに、target.ip が suspicious_ip_addresses 参照リストに含まれているかどうかを確認します。$e.metadata.event_type = "NETWORK_DNS" $e.target.ip in %suspicious_ip_addresses
これらのフィルタをイベント セクションの先頭に追加します。また、正規表現やその他の比較の前に等式フィルタを配置する必要もあります。フィルタは、ルールで表示される順序で適用されます。
YARA-L の使用に関するコミュニティ ブログについては、以下をご覧ください。
- YARA-L の基本
- YARA-L ルール変数
- YARA-L の演算子と修飾子
- 正規表現を使用した単一のイベントルールの作成
- ルールでのイベントの集計
- 条件でのしきい値の設定
- ルールエディタのナビゲーション
- YARA-L ルールのオプション
- 単一のイベントルールの作成 - 文字列の一致
- 複数のイベントルールの作成 - イベントの結合
- マルチイベント ルールの作成 - イベントの順序付け
- マルチイベント ルールの作成 - 条件での複数の結合とカウント
- マルチイベント ルールの作成 - スライディング ウィンドウ
- 単一イベント ルールに結果を導入
- マルチイベント ルールの結果 - カウント
- マルチイベント ルールの結果 - 配列
- マルチイベント ルールの成果 - 最大値、最小値、合計
- 結果 - リスクスコア、条件付きロジック、数学演算子
- 関数 - strings.concat
- 関数 - strings.coalesce
- 関数 - ネットワーク
- リファレンス リスト
- CIDR リファレンス リスト
- 正規表現リファレンス リスト
- 文字列関数 - 大文字または小文字
- 正規表現関数 - re.regex
- 正規表現関数 - re.capture
- 文字列関数 - strings.base64_decode
- 正規表現関数 - re.replace
- 統計検索のスタートガイド
- 統計検索 - カウント以上