Descripción general de YARA-L 2.0
YARA-L 2.0 es un lenguaje especializado en Google Security Operations que opera en los datos de registro de la empresa para permitir que los profesionales de seguridad exploren esos datos, investiguen amenazas y creen reglas de detección.
En este documento, se explica YARA-L y su sintaxis, y se muestra cómo puedes usarlo para expresar desde una consulta de filtro básica hasta una regla que busca patrones complejos. Usa las secciones en una consulta de YARA-L para admitir funciones agregadas, lógica de condiciones y agregar contexto a través de uniones, coincidencias de patrones y mucho más.
Descripción general de la sintaxis de YARA-L 2.0
Para crear una regla o consulta de YARA-L, te recomendamos que te familiarices con la estructura y la sintaxis para especificar declaraciones, definiciones y uso de variables, y que las comprendas.
Estructura de la regla
Las reglas de YARA-L contienen las siguientes secciones y deben especificarse en el siguiente orden:
| Pedido | Sección | Reglas | Búsqueda/Paneles | Descripción |
|---|---|---|---|---|
| 1 | meta | Obligatorio | N/A | Describe la regla y puede incluir valores como autor, gravedad, descripción y prioridad. Consulta la sintaxis de la sección Meta. |
| 2 | eventos | Obligatorio | Obligatorio | Define cómo filtrar y unir eventos. Consulta la sintaxis de la sección Eventos. |
| 3 | coincidencia | Opcional | Opcional | Especifica los campos por los que se agruparán los resultados cuando se agreguen. Consulta la sintaxis de la sección de coincidencia. Nota: Si excluyes una sección match, la regla puede coincidir con un solo evento. |
| 4 | resultado | Opcional | Opcional | Define qué datos se deben generar cuando se ejecuta o activa una regla. Consulta Sintaxis de la sección de resultados. |
| 5 | de transición | Obligatorio | Opcional | Contiene la lógica que determina si se activa una regla. Consulta Sintaxis de la sección de condiciones. |
| 6 | opciones | Opcional | Opcional | Permite habilitar o inhabilitar el comportamiento de una regla específica. Consulta Sintaxis de la sección de opciones. |
En el siguiente ejemplo, se ilustra la estructura genérica de una regla:
rule <rule name>
{
meta:
// Stores arbitrary key-value pairs of the rule details, such as who wrote
// it, what it detects on, version control, etc.
events:
// Defines which events to filter and the relationship between events.
match:
// Values to return when matches are found.
outcome:
// Define the output of each rule and security alert.
condition:
// Condition to check events and the variables used to find matches.
options:
// Options to turn on or off while executing this rule. The `options` syntax is only valid for rules.
}
A medida que creas reglas, Google SecOps realiza una verificación de tipos en tu sintaxis de YARA-L y muestra los errores para ayudarte a revisar la regla de modo que funcione correctamente. En los siguientes ejemplos, se muestran los errores que se presentan cuando se usa una sintaxis no válida:
// $e.target.port is of type integer which cannot be compared to a string.
$e.target.port = "80"
// "LOGIN" is not a valid event_type enum value.
$e.metadata.event_type = "LOGIN"
Esta regla de ejemplo encuentra 5 intentos de acceso fallidos consecutivos por usuario en ventanas de 10 minutos.
rule failed_logins
{
meta:
author = "Security Team"
description = "Detects multiple failed user logins within 10-minute windows."
severity = "HIGH"
events:
$e.metadata.event_type = "USER_LOGIN"
$e.security_result.action = "FAIL"
$user = $e.target.user.userid
match:
$user over 10m
outcome:
$failed_login_count = count($e.metadata.id)
$first_fail_time = min($e.metadata.event_timestamp.seconds)
condition:
#e >= 5
}
La regla se define de la siguiente manera:
- La sección
metadefine el autor de la regla (equipo de seguridad), la descripción (detecta varios accesos de usuarios fallidos en períodos de 10 minutos) y la gravedad (alta).
Detecta varios accesos de usuarios fallidos en períodos de 10 minutos
La sección
eventsdefine los eventos que se deben hacer un seguimiento: accesos de usuarios, accesos fallidos de usuarios (variables de eventos) y vínculos a la variable de coincidenciauser(variables de marcador de posición).La sección
outcomedefine los cálculos que se deben realizar en el evento y las variables de marcador de posición: contar los intentos de acceso fallidos y la hora en que ocurrió el primer error.La sección
matchdefine la variable por la que se agrupan los eventos ($user) y el período (10m) durante el cual deben ocurrir esos eventos para considerarse una coincidencia.La sección
conditionespecifica que solo se devuelvan los usuarios que tengan más de cinco intentos de acceso con errores.
¿Qué sigue?
- Sintaxis de la sección de metadatos
- Sintaxis de la sección Eventos
- Sintaxis de la sección de coincidencias
- Sintaxis de la sección de resultados
- Sintaxis de la sección de condiciones
- Sintaxis de la sección de opciones
Información adicional
- 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.