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

Disponible en:

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 (indicadas con $) se usan para representar puntos de datos específicos extraídos de eventos de UDM y otras fuentes de datos. Las funciones pueden operar en estos campos de eventos o en 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 campos de eventos.

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

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

Limitaciones

Hay dos limitaciones al usar la asignación de funciones a marcadores de posición:

  1. Cada marcador de posición de 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 las llamadas a funciones.

    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? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.