Descripción general de YARA-L 2.0

Se admite en los siguientes sistemas operativos:

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 meta define 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 events define 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 coincidencia user (variables de marcador de posición).

  • La sección outcome define 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 match define 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 condition especifica que solo se devuelvan los usuarios que tengan más de cinco intentos de acceso con errores.

¿Qué sigue?

Información adicional

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