ルールでエンティティ リスクスコアを指定する
このドキュメントでは、ルールでエンティティ リスクスコアを使用する方法について説明します。ルールでは、エンティティ リスクスコアは、エンティティ コンテキストと同じように動作します。主な検出方法としてリスクスコアを使用する YARA-L 2.0 ルールを作成できます。リスク分析のルールの詳細については、リスク分析のルールを作成するをご覧ください。よりリスクベースのコンテキストの詳細については、コンテキストアウェア分析の作成をご覧ください。
エンティティ リスクスコアを取得するには、エンティティを UDM イベントと結合し、指定されたフィールドを EntityRisk から取得します。
次の例は、リスクスコアが 100 を超えるエンティティ ホスト名に対して検出を生成するルールを作成する方法を示しています。
rule EntityRiskScore {
meta:
events:
$e1.principal.hostname != ""
$e1.principal.hostname = $hostname
$e2.graph.entity.hostname = $hostname
$e2.graph.risk_score.risk_window_size.seconds = 86400 // 24 hours
$e2.graph.risk_score.risk_score >= 100
// Run deduplication across the risk score.
$rscore = $e2.graph.risk_score.risk_score
match:
// Dedup on hostname, risk window, and score across a 4 hour window.
$hostname, $rwindow, $rscore over 4h
outcome:
// Force these risk score based rules to have a risk score of zero to
// prevent self feedback loops.
$risk_score = 0
condition:
$e1 and $e2
}
この例のルールでは、一致セクションを使用して自己重複除去も実行します。ルール検出がトリガーされても、4 時間の時間枠内でホスト名とリスクスコアが変更されない場合、新しい検出は作成されません。
エンティティ リスクスコア ルールのリスク時間枠は、24 時間または 7 日(それぞれ 86,400 秒または 604,800 秒)のみです。ルールにリスク ウィンドウ サイズを含めないと、不正確な結果が返されます。
エンティティ リスクスコア データは、エンティティ コンテキスト データとは別に保存されます。両方を 1 つのルールで使用するには、ルールに 2 つの個別のエンティティ イベント、1 つはエンティティ コンテキスト用、もう 1 つはエンティティ リスクスコア用が必要です。次に例を示します。
rule EntityContextAndRiskScore {
meta:
events:
$log_in.metadata.event_type = "USER_LOGIN"
$log_in.principal.hostname = $host
$context.graph.entity.hostname = $host
$context.graph.metadata.entity_type = "ASSET"
$risk_score.graph.entity.hostname = $host
$risk_score.graph.risk_score.risk_window_size.seconds = 604800
match:
$host over 2m
outcome:
$entity_risk_score = max($risk_score.graph.risk_score.normalized_risk_score)
condition:
$log_in and $context and $risk_score and $entity_risk_score > 100
}