Spécifier le score de risque de l'entité dans les règles

Compatible avec:

Ce document explique comment utiliser les scores de risque des entités dans les règles. Dans les règles, les scores de risque des entités se comportent de manière similaire au contexte des entités. Vous pouvez écrire des règles YARA-L 2.0 pour utiliser des scores de risque comme méthode de détection principale. Pour en savoir plus sur les règles d'analyse des risques, consultez Créer des règles pour l'analyse des risques. Pour en savoir plus sur le contexte basé sur les risques, consultez Créer des analyses basées sur le contexte.

Pour récupérer un score de risque d'entité, associez une entité à un événement UDM et récupérez le champ spécifié à partir de EntityRisk.

L'exemple suivant montre comment créer une règle pour générer des détections sur n'importe quel nom d'hôte d'entité dont le score de risque est supérieur à 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 and risk score across a 4 hour window.
    $hostname, $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
}

Cet exemple de règle effectue également une déduplication automatique à l'aide de la section de correspondance. Si une détection de règle peut se déclencher, mais que le nom d'hôte et le score de risque restent inchangés dans un délai de quatre heures, aucune nouvelle détection ne sera créée.

Les seules périodes de risque possibles pour les règles de score de risque des entités sont 24 heures ou 7 jours (86 400 ou 604 800 secondes respectivement). Si vous n'incluez pas la taille de la fenêtre de risque dans la règle, celle-ci renverra des résultats inexacts.

Les données de score de risque des entités sont stockées séparément des données de contexte des entités. Pour utiliser les deux dans une règle, celle-ci doit comporter deux événements d'entité distincts, l'un pour le contexte de l'entité et l'autre pour le score de risque de l'entité, comme illustré dans l'exemple suivant:

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
}