Asignación de función a marcador de posición
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óneventsy 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:
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.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.