Sintaxe da seção de correspondência

Compatível com:

Na YARA-L 2.0, a seção match fornece o mecanismo para correlação de vários eventos. Ela define a lógica para agrupar eventos em uma única detecção vinculando atributos comuns, como usuários, endereços IP ou hashes de arquivo, em um limite temporal específico.

Use a seção match para os seguintes casos de uso:

  • Vincule dois ou mais eventos distintos em uma regra.
  • Agregue dados na Pesquisa e nos painéis, como a contagem de tentativas de login com falha em um período específico.

Definir critérios de correlação

Use-o para definir os critérios dessa correlação especificando o seguinte:

  • Campos de agrupamento (chaves): variáveis (como $user ou $ip) que precisam ter valores idênticos em todos os eventos (definidos na seção events) para acionar uma correspondência.

  • Restrição de tempo: o período em que os eventos agrupados precisam ocorrer para atender à regra ou agregação. Em "Regras", isso define a janela de detecção. Em "Pesquisa e painéis", isso define a janela de agregação ou correlação.

Comparar os requisitos de recursos

A tabela a seguir detalha as comparações para regras de pesquisa e painéis.

Recurso Requisito de regras Suporte para pesquisa e painéis
Tipos de variáveis É necessário usar os marcadores de posição definidos na seção events. Aceita marcadores de posição e campos diretos da UDM.
Janela de tempo Define o limite de detecção. Define o bucket de agregação ou correlação.
Sintaxe over <number><m/h/d> (por exemplo, 10m, 2h, 1d) over <number><m/h/d>
Limites Mín.: 1m / Máx.: 48h Mín.: 1m / Máx.: 48h

Tipos de janela compatíveis

A YARA-L 2.0 usa diferentes comportamentos de janela para determinar como o tempo é dividido e como os eventos são agrupados. É possível agrupar campos de evento e marcadores de posição na seção match por uma granularidade de tempo especificada usando uma das seguintes janelas compatíveis.

Para detalhes sobre os tipos de janela compatíveis com YARA-L 2.0, consulte Lógica de janelas do YARA-L 2.0.

Entender o limite temporal

A seção match divide os eventos em grupos com base nas chaves de agrupamento. A duração especificada define o limite temporal de cada grupo:

  • Inclusão: apenas os eventos dentro da janela são transmitidos para a avaliação de condition dessa correspondência específica.
  • Exclusão: eventos fora da janela são ignorados para esse grupo de correspondência específico, evitando que eventos não relacionados acionem um falso positivo.

Valores zero na seção match

O Google SecOps filtra implicitamente os valores zero para todos os marcadores de posição usados na seção match ("" para string, 0 para números, false para booleanos, o valor na posição 0 para tipos enumerados).

Exemplo: filtrar valores zero

O exemplo a seguir ilustra consultas que filtram os valores zero.

rule ZeroValuePlaceholderExample {

events:
  // Because $host is used in the match section, the query behaves
  // as if the following predicate was added to the events section:
  // $host != ""
  $host = $e.principal.hostname

  // Because $otherPlaceholder was not used in the match,
  // there is no implicit filtering of zero values for $otherPlaceholder.
  $otherPlaceholder = $e.principal.ip

match:
  $host over 5m

condition:
  $e
}

No entanto, se um marcador de posição for atribuído a uma função, as consultas não vão filtrar implicitamente os valores zero dos marcadores usados na seção match.

Para desativar a filtragem implícita de valores zero, use a opção allow_zero_values na seção de opções. A opção allow_zero_values está disponível apenas em "Regras".

Exemplo: permitir valores zero

O exemplo a seguir ilustra consultas que não filtram implicitamente os valores zero de marcadores usados na seção match:

rule AllowZeroValuesExample {

events:
  // Because allow_zero_values is set to true, there is no implicit filtering
  // of zero values for $host.
  $host = $e.principal.hostname

  // Because $otherPlaceholder was not used in the match,
  // there is no implicit filtering of zero values for $otherPlaceholder.
  $otherPlaceholder = $e.principal.ip

match:
  $host over 5m

condition:
  $e

options:
  allow_zero_values = true
}

A seguir

Confira os recursos a seguir para continuar sua lógica YARA-L ou se aprofundar em funções de consulta avançadas:

Sintaxe e lógica

Referências e exemplos

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