Descripción general de YARA-L 2.0

Disponible en:

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 meta se 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 events define 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 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: cuenta los inicios de sesión fallidos y la hora en la que se produjo el primer error.

  • En la sección match se 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 condition especifica que solo se devuelvan los usuarios que hayan intentado iniciar sesión sin éxito cinco o más veces.

Siguientes pasos

Información adicional

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.