Cómo especificar la puntuación de riesgo de entidad en las reglas

Compatible con:

En este documento, se describe cómo usar las puntuaciones de riesgo de la entidad en las reglas. En las reglas, las puntuaciones de riesgo de la entidad se comportan de manera similar al contexto de la entidad. Puedes escribir reglas de YARA-L 2.0 para usar las puntuaciones de riesgo como el método de detección principal. Para obtener más información sobre las reglas en el análisis de riesgos, consulta Crea reglas para el análisis de riesgos. Para obtener más información sobre el contexto basado en el riesgo, consulta Cómo crear análisis basados en el contexto.

Para recuperar la puntuación de riesgo de una entidad, une una entidad con un evento del UDM y recupera el campo especificado de EntityRisk.

En el siguiente ejemplo, se muestra cómo crear una regla para generar detecciones en cualquier nombre de host de entidad cuyo puntaje de riesgo sea superior 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
}

Esta regla de ejemplo también realiza una deduplicación automática con la sección de coincidencias. Si es posible que se active una detección de regla, pero el nombre de host y la puntuación de riesgo permanecen sin cambios en un período de 4 horas, no se crearán nuevas detecciones.

Los únicos períodos de riesgo posibles para las reglas de puntuación de riesgo de la entidad son de 24 horas o 7 días (86,400 o 604,800 segundos, respectivamente). Si no incluyes el tamaño de la ventana de riesgo en la regla, esta devolverá resultados inexactos.

Los datos de la puntuación de riesgo de la entidad se almacenan por separado de los datos de contexto de la entidad. Para usar ambos en una regla, esta debe tener dos eventos de entidad separados, uno para el contexto de la entidad y otro para la puntuación de riesgo de la entidad, como se muestra en el siguiente ejemplo:

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
}

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.