Sintaxis de la sección match

Compatible con:

En YARA-L 2.0, la sección match proporciona el mecanismo para la correlación de varios eventos. Define la lógica para agrupar eventos en una sola detección mediante la vinculación de atributos comunes, como usuarios, direcciones IP o hashes de archivos, dentro de un límite temporal específico.

Puedes usar la sección match para los siguientes casos de uso:

  • Vincular dos o más eventos distintos dentro de una regla
  • Agregar datos en Search y Dashboards, como contar los intentos de acceso fallidos durante un período específico

Define los criterios de correlación

Úsala para definir los criterios de esta correlación especificando lo siguiente:

  • Campos de agrupación (claves): Variables (como $user o $ip) que deben tener valores idénticos en todos los eventos (definidos en la sección events) para activar una coincidencia

  • Restricción de tiempo: Es el período durante el cual deben ocurrir los eventos agrupados para satisfacer la regla o la agregación. En Rules, esto define el período de detección; en Search y Dashboards, define el período de agregación o correlación.

Compara los requisitos de las funciones

En la siguiente tabla, se detallan las comparaciones de Rules con Search y Dashboards.

Función Requisito de Rules Compatibilidad con Search y Dashboards
Tipos de variables Debe usar marcadores de posición definidos en la sección events. Admite marcadores de posición y campos UDM directos.
Período Define el límite de detección. Define el bucket de agregación o correlación.
Sintaxis over <number><m/h/d> (por ejemplo, 10m, 2h, 1d) over <number><m/h/d>
Límites Mín.: 1m / Máx.: 48h Mín.: 1m / Máx.: 48h

Tipos de períodos admitidos

YARA-L 2.0 usa diferentes comportamientos de períodos para determinar cómo se segmenta el tiempo y cómo se agrupan los eventos. Puedes agrupar campos de eventos y marcadores de posición en la sección match por una granularidad de tiempo especificada con uno de los siguientes períodos admitidos.

Para obtener detalles sobre los tipos de períodos compatibles con YARA-L 2.0, consulta la lógica de períodos de YARA-L 2.0.

Comprende el límite temporal

La sección match divide los eventos en grupos según las claves de agrupación. La duración especificada define el límite temporal para cada grupo:

  • Inclusión: Solo los eventos dentro del período se pasan a la evaluación de condition para esa coincidencia específica.
  • Exclusión: Los eventos fuera del período se ignoran para ese grupo de coincidencias específico, lo que evita que los eventos no relacionados activen un falso positivo.

Valores cero en la sección match

Google SecOps filtra implícitamente los valores cero para todos los marcadores de posición que se usan en la sección match ("" para cadenas, 0 para números, false para booleanos y el valor en la posición 0 para tipos enumerados).

Ejemplo: Filtra los valores cero

En el siguiente ejemplo, se muestran consultas que filtran los valores cero.

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
}

Sin embargo, si se asigna un marcador de posición a una función, las consultas no filtran implícitamente los valores cero de los marcadores de posición que se usan en la sección match.

Para inhabilitar el filtrado implícito de valores cero, puedes usar la opción allow_zero_values en la sección de opciones. La opción allow_zero_values solo está disponible en Rules.

Ejemplo: Permite valores cero

En el siguiente ejemplo, se muestran consultas que no filtran implícitamente los valores cero de los marcadores de posición que se usan en la sección 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
}

¿Qué sigue?

Explora los siguientes recursos para continuar con tu lógica de YARA-L o profundizar en las funciones de consulta avanzadas:

Sintaxis y lógica

Referencias y ejemplos

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.