Specificare il punteggio di rischio dell'entità nelle regole

Supportato in:

Questo documento descrive come utilizzare i punteggi di rischio delle entità nelle regole. Nelle regole, i codici di rischio delle entità si comportano in modo simile al contesto delle entità. Puoi scrivere regole YARA-L 2.0 per utilizzare i punteggi di rischio come metodo di rilevamento principale. Per maggiori informazioni sulle regole di analisi del rischio, vedi Creare regole per l'analisi del rischio. Per ulteriori informazioni su un contesto più basato sul rischio, consulta Creare analisi sensibili al contesto.

Per recuperare un punteggio di rischio dell'entità, unisci un'entità a un evento UDM e recupera il campo specificato da EntityRisk.

L'esempio seguente mostra come creare una regola per generare rilevamenti su qualsiasi nome host dell'entità il cui punteggio di rischio è superiore a 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
}

Questa regola di esempio esegue anche un'autoduplicazione utilizzando la sezione corrispondente. Se è possibile attivare il rilevamento di una regola, ma il nome host e il punteggio di rischio rimangono invariati in un periodo di 4 ore, non verranno creati nuovi rilevamenti.

Le uniche finestre di rischio possibili per le regole del punteggio di rischio dell'entità sono 24 ore o 7 giorni (rispettivamente 86.400 o 604.800 secondi). Se non includi la dimensione della finestra di rischio nella regola, la regola restituirà risultati inaccurati.

I dati del punteggio di rischio delle entità vengono archiviati separatamente dai dati del contesto delle entità. Per utilizzarli entrambi in una regola, la regola deve avere due eventi entità distinti, uno per il contesto dell'entità e uno per il punteggio di rischio dell'entità, come mostrato nell'esempio seguente:

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
}