Especificar a pontuação de risco da entidade nas regras

Compatível com:

Este documento descreve como usar as pontuações de risco de entidade nas regras. Nas regras, as pontuações de risco de entidade se comportam de maneira semelhante ao contexto da entidade. É possível escrever regras da YARA-L 2.0 para usar as pontuações de risco como o método de detecção principal. Para mais informações sobre regras de análise de risco, consulte Criar regras para a Análise de Risco. Para mais informações sobre o contexto baseado em risco, consulte Como criar análises com base no contexto.

Para extrair uma pontuação de risco da entidade, una uma entidade a um evento do UDM e extraia o campo especificado de EntityRisk.

O exemplo a seguir mostra como criar uma regra para gerar detecções em qualquer nome de host de entidade com pontuação de risco maior que 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
}

Essa regra de exemplo também realiza uma autoduplicação usando a seção de correspondência. Se uma detecção de regra for acionada, mas o nome do host e a pontuação de risco permanecerem inalterados em um período de quatro horas, nenhuma nova detecção será criada.

As únicas janelas de risco possíveis para regras de pontuação de risco da entidade são de 24 horas ou 7 dias (86.400 ou 604.800 segundos, respectivamente). Se você não incluir o tamanho da janela de risco na regra, ela vai retornar resultados imprecisos.

Os dados da pontuação de risco da entidade são armazenados separadamente dos dados do contexto da entidade. Para usar ambos em uma regra, ela precisa ter dois eventos de entidade separados, um para o contexto da entidade e outro para a pontuação de risco da entidade, conforme mostrado no exemplo a seguir:

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
}