Asignación de función a marcador de posición

Se admite en los siguientes sistemas operativos:

En YARA-L, el proceso de usar funciones para procesar datos y almacenar el resultado se denomina asignación de función a marcador de posición. Las variables de marcador de posición (denotadas con $) se usan para representar datos específicos extraídos de eventos del UDM y otras fuentes de datos. Luego, las funciones pueden operar en estos campos de eventos o combinaciones de campos, y los resultados de estas operaciones se asignan a las variables de marcador de posición para usarse en otras partes de la consulta, como las secciones match, condition y outcome.

  • Funciones: YARA-L proporciona funciones de métricas que pueden realizar cálculos o transformaciones de datos en los campos de eventos.

  • Variables de marcador de posición: Son variables, indicadas con un signo de dólar precedente (como $user, $ip), que pueden contener valores derivados de campos de eventos o resultados de funciones. Se definen en la sección events y se pueden usar en toda la regla.

  • Asignación: El resultado de la función se asigna a una variable de marcador de posición.

Limitaciones

Existen dos limitaciones cuando se usa la función de asignación de funciones a marcadores de posición:

  1. Cada marcador de posición en la asignación de función a marcador de posición debe asignarse a una expresión que contenga un campo de evento.

    Ejemplos válidos

    $ph1 = $e.principal.hostname
    $ph2 = $e.src.hostname
    
    // Both $ph1 and $ph2 have been assigned to an expression containing an event field.
    $ph1 = strings.concat($ph2, ".com")
    
    $ph1 = $e.network.email.from
    $ph2 = strings.concat($e.principal.hostname, "@gmail.com")
    
    // Both $ph1 and $ph2 have been assigned to an expression containing an event field.
    $ph1 = strings.to_lower($ph2)
    

    Ejemplo no válido

    $ph1 = strings.concat($e.principal.hostname, "foo")
    $ph2 = strings.concat($ph1, "bar") // $ph2 has NOT been assigned to an expression containing an event field.
    
  2. La llamada a la función debe depender de exactamente un evento. Sin embargo, se puede usar más de un campo del mismo evento en los argumentos de la llamada a la función.

    Ejemplo válido

    $ph = strings.concat($event.principal.hostname, "string2")

    $ph = strings.concat($event.principal.hostname, $event.src.hostname)

    Ejemplo no válido

    $ph = strings.concat("string1", "string2")

    $ph = strings.concat($event.principal.hostname, $anotherEvent.src.hostname)

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