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 YARA-L 2.0 pour utiliser les scores de risque comme principale méthode de détection. Pour plus sur les règles d'analyse des risques, voir Créer des règles pour Analytics. Pour plus d'informations sur un contexte davantage axé sur les risques, consultez la section Créer des applications données analytiques.

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

L'exemple suivant montre comment créer une règle pour générer des détections sur tout 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, 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
}

Cet exemple de règle effectue également une auto-déduplication à l'aide de la règle de correspondance . Si une détection de règles peut se déclencher, mais que le nom d'hôte et le score de risque restent inchangées pendant une période de quatre heures, aucune 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
}