Sintaxis de la sección match
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
$usero$ip) que deben tener valores idénticos en todos los eventos (definidos en la secciónevents) para activar una coincidenciaRestricció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
conditionpara 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
- Expresiones, operadores y construcciones que se usan en YARA-L 2.0
- Funciones en YARA-L 2.0
- Cómo compilar reglas de detección compuestas
- Ejemplos: Consultas de YARA-L 2.0
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.