Prácticas recomendadas de YARA-L

Disponible en:

En este documento se describen las prácticas recomendadas de Google Security Operations para escribir reglas en YARA-L.

Excluir los valores cero

Es posible que los campos se omitan automáticamente en los eventos con los que ejecutes las reglas. Cuando se omiten campos, se les asigna el valor cero de forma predeterminada.

Por ejemplo, si se omite un valor de cadena, se asigna el valor predeterminado "".

Si iguala dos campos que se han omitido, es posible que ambos se definan de forma predeterminada con el valor cero. Esto puede provocar coincidencias no deseadas en las que dos campos coincidan porque ambos tienen el valor cero. Para evitar este comportamiento, especifica explícitamente el valor cero.

Por ejemplo, si tienes una regla que equipara dos eventos en función de dos campos, es posible que ambos campos estén vacíos, lo que provocaría una coincidencia:

$e1.field1 = $e2.field2

Si se omiten e1.field1 y e2.field2 en los datos, "" = "" será verdadero, lo que provocará una coincidencia.

Las siguientes expresiones de comparación aseguran que no se obtenga ninguna coincidencia porque e1.field1 y e2.field2 no incluyen ningún dato:

 $e1.field1 = $e2.field2
 $e1.field != ""

Valores cero y reglas dependientes del enriquecimiento

Si una regla depende de datos enriquecidos que aún no se han actualizado, el valor puede ser nulo o cero. Por lo tanto, es recomendable filtrar los valores cero (comprobaciones de valores nulos) en las reglas que dependen del enriquecimiento. Consulta cómo enriquece Google SecOps los datos de eventos y entidades y cómo usar los datos enriquecidos con contexto en las reglas.

Añadir un filtro de tipo de evento

En el siguiente ejemplo, las direcciones IP de cada evento de UDM se comparan con la lista de referencia, lo que consume muchos recursos:

events:
// For every UDM event, check if the target.ip is listed in
// the suspicious_ip_addresses reference list.
$e.target.ip in %suspicious_ip_addresses

Si tu regla YARA-L solo detecta eventos de UDM de un determinado tipo de evento, añadir un filtro de tipo de evento puede ayudarte a optimizar la regla, ya que se reduce el número de eventos que debe evaluar.

events:
// For every UDM event of type NETWORK_DNS, check if the target.ip is
// listed in the suspicious_ip_addresses reference list.
$e.metadata.event_type = "NETWORK_DNS"
$e.target.ip in %suspicious_ip_addresses

Añade estos filtros al principio de la sección de eventos. También debes colocar los filtros de igualdad antes de las expresiones regulares u otras comparaciones. Los filtros se aplican en el orden en que aparecen en la regla.

Para ver blogs de la comunidad sobre cómo trabajar con YARA-L, consulta los siguientes artículos:

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