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

Compatível com:

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

Para recuperar uma pontuação de risco da entidade, faça a junção de uma entidade com um evento da UDM e recupere 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 cuja pontuação de risco seja 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 autodeduplicação usando a seção de correspondência. Se uma detecção de regra puder ser 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 as regras de pontuação de risco da entidade são 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 de pontuação de risco da entidade são armazenados separadamente dos dados de contexto da entidade. Para usar os dois 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, como 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
}

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.