Sintaxis de la sección de coincidencias

Se admite en los siguientes sistemas operativos:

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 vinculando atributos comunes, como usuarios, direcciones IP o hashes de archivos, dentro de un límite temporal específico.

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

  • Vincula dos o más eventos distintos dentro de una regla.
  • Agregamos datos en la Búsqueda y los paneles, como el recuento de intentos de acceso fallidos durante un período específico.

Define los criterios de correlación

Úsalo para definir los criterios de esta correlación. Para ello, especifica lo siguiente:

  • Campos de agrupación (claves): Son 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 Reglas, define el período de detección; en Búsqueda y Paneles, 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 las reglas con la búsqueda y los paneles.

Función Requisito de las reglas Compatibilidad con la búsqueda y los paneles
Tipos de variables Se deben usar los marcadores de posición definidos en la sección events. Admite marcadores de posición y campos de 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 ventanas admitidos

YARA-L 2.0 usa diferentes comportamientos de ventanas para determinar cómo se divide el tiempo y cómo se agrupan los eventos. Puedes agrupar los campos y marcadores de posición de eventos en la sección match según una granularidad temporal especificada con una de las siguientes ventanas admitidas.

Para obtener detalles sobre los tipos de ventanas compatibles con YARA-L 2.0, consulta Lógica de ventanas de YARA-L 2.0.

Comprende el límite temporal

La sección match divide los eventos en grupos según tus 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 de forma implícita 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, el valor en la posición 0 para tipos enumerados).

Ejemplo: Filtra los valores cero

En el siguiente ejemplo, se ilustran las 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 búsquedas no filtran de forma implícita 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 Reglas.

Ejemplo: Permite valores de cero

En el siguiente ejemplo, se ilustran las búsquedas que no filtran de forma implícita 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.