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

Compatível com:

Neste documento, descrevemos como usar pontuações de risco da entidade em regras. Nas regras, as pontuações de risco de entidade se comportam de maneira semelhante ao contexto da entidade. Você pode escrever YARA-L 2.0 Regras para usar pontuações de risco como o principal método de detecção. Para mais informações sobre regras de análise de risco, consulte Criar regras para a Análise de risco. Para mais informações em um contexto mais baseado em risco, consulte Como criar Analytics.

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 qualquer nome do 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, 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
}

Esta regra de exemplo também realiza uma autoeliminação de duplicação usando a expressão nesta seção. Se uma detecção de regra for acionada, mas o nome do host e a pontuação de risco permanecem inalterados em uma janela de 4 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 parâmetro tamanho da janela de risco na regra, ela retornará resultados imprecisos.

Os dados da pontuação de risco da entidade são armazenados separadamente dos dados de 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
}