Descripción general de YARA-L 2.0
YARA-L 2.0 es un lenguaje especializado de Google Security Operations que opera con datos de registros empresariales para permitir a los profesionales de seguridad explorar esos datos, investigar amenazas y crear 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 busque patrones complejos. Usa las secciones de una consulta YARA-L para admitir funciones agregadas, lógica de condiciones y añadir contexto mediante combinaciones, coincidencias de patrones y más.
Descripción general de la sintaxis de YARA-L 2.0
Para crear una regla o una consulta YARA-L, te recomendamos que te familiarices con la estructura y la sintaxis para especificar declaraciones, definiciones y usos de variables.
Estructura de la regla
Las reglas de YARA-L contienen las siguientes secciones y deben especificarse en el orden que se indica a continuación:
| Ordenar | 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 combinar eventos. Consulta la sintaxis de la sección Events. |
| 3 | coincidencia | Opcional | Opcional | Especifica los campos por los que se agruparán los resultados. Consulta la sintaxis de la sección Match. 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 se activa una regla. Consulta la sintaxis de la sección Outcome. |
| 5 | condición | Obligatorio | Opcional | Contiene la lógica que determina si se activa una regla. Consulta la sintaxis de la sección de condiciones. |
| 6 | configuración | Opcional | Opcional | Permite habilitar o inhabilitar el comportamiento de reglas específicas. Consulta la sintaxis de la sección "Options". |
En el siguiente ejemplo se muestra 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.
}
Mientras creas reglas, Google SecOps comprueba los tipos de datos de tu sintaxis YARA-L y muestra los errores para ayudarte a revisar la regla de forma que funcione correctamente. En los siguientes ejemplos se muestran los errores que se producen 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 busca 5 inicios de sesión 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:
- En la sección
metase definen el autor de la regla (equipo de seguridad), la descripción (Detecta varios inicios de sesión de usuario fallidos en ventanas de 10 minutos) y la gravedad (alta).
Detecta varios inicios de sesión de usuario fallidos en ventanas de 10 minutos
La sección
eventsdefine los eventos que se deben registrar: inicios de sesión de usuarios, inicios de sesión de usuarios fallidos (variables de evento) y enlaces 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: cuenta los inicios de sesión fallidos y la hora en la que se produjo el primer error.En la sección
matchse define la variable por la que se agrupan los eventos ($user) y el periodo (10m) durante el que deben producirse esos eventos para que se consideren una coincidencia.La sección
conditionespecifica que solo se devuelvan los usuarios que hayan intentado iniciar sesión sin éxito cinco o más veces.
Siguientes pasos
- Sintaxis de la sección meta
- Sintaxis de la sección "Events"
- 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 usados en YARA-L 2.0
- Funciones de YARA-L 2.0
- Crear reglas de detección compuestas
- Ejemplos: consultas de YARA-L 2.0
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.