Uso ou na seção de condição

Compatível com:

Este documento explica como usar o operador or para escrever uma lógica de detecção flexível e concisa na seção condition da sua consulta.

Usar or entre variáveis de evento ou marcador de posição permite combinar várias condições, reduzindo a complexidade geral da sintaxe da consulta:

  • Verifica a presença de uma das variáveis especificadas. Por exemplo, $e1 or $e2 exige pelo menos uma instância de $e1 ou uma instância de $e2.

Sintaxe de or na seção de condição

Use a palavra-chave or diretamente entre as variáveis. O exemplo a seguir é equivalente a COUNT($e1)>0 or COUNT($e2)>0:

condition:
  $e1 or $e2  // True if $e1 exists or $e2 exists

Exemplo de regra: execução de IP arriscado ou hash ruim

A regra de exemplo a seguir detecta uma ameaça se um processo for iniciado de um endereço IP de risco ou se um hash ruim conhecido for executado:

rule MultiEventOr {
  meta:
    author = "google-secops"
  events:
    $e1.principal.ip = "1.1.1.1"
    $e1.metadata.event_type = "PROCESS_LAUNCH"
    $e2.target.file.sha256 = "badhash..."
    $user = $e1.principal.user.userid
    $user = $e2.principal.user.userid
  match:
    $user over 5m
  condition:
    $e1 or $e2
}

Exemplo de pesquisa: execução de IP arriscado ou hash incorreto

O exemplo a seguir mostra como reformatar a regra de exemplo como uma consulta de pesquisa.

$e1.principal.ip = "1.1.1.1"
$e1.metadata.event_type = "PROCESS_LAUNCH"
$e2.target.file.sha256 = "badhash..."
$user = $e1.principal.user.userid
$user = $e2.principal.user.userid

match:
  $user over 5m

condition:
  $e1 or $e2

Limitações conhecidas

  • Consumo de recursos: quando você usa or entre variáveis de evento, ele consome mais recursos do que and e pode resultar em tempos de execução de consulta mais longos.

  • Limite de variáveis de evento: para pesquisa e painéis, é possível usar no máximo três eventos na sintaxe or de vários eventos. Para regras, é possível usar no máximo dois eventos na sintaxe or de vários eventos.

  • Existência de evento obrigatória: as expressões que usam or não podem ser ilimitadas. A existência do evento precisa ser um requisito para que a cláusula seja verdadeira (por exemplo, $e1 ou #e1 > 0).

  • Mistura de tipos de variáveis: não é possível combinar variáveis que não são da UDM com variáveis de evento da UDM na mesma lista or.

  • Restrição de janela: não é possível usar janelas rotativas com a sintaxe or.

A seguir

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