Prácticas recomendadas de YARA-L

Compatible con:

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

Cómo filtrar los valores cero

Es posible que los campos se omitan automáticamente en los eventos en los que ejecutes tus reglas. Cuando se omiten los campos, se establecen de forma predeterminada en sus valores cero.

Por ejemplo, un valor de cadena omitido se establece de forma predeterminada en "".

Si igualas dos campos que se omiten, es posible que ambos tengan valores cero de forma predeterminada. Esto podría generar coincidencias no deseadas en las que dos campos coinciden porque ambos tienen valores cero. Para evitar este comportamiento, especifica explícitamente el valor cero.

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

$e1.field1 = $e2.field2

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

Las siguientes expresiones de comparación garantizan que no obtengas una 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 actualizaron, el valor puede ser nulo o cero. Por lo tanto, se recomienda filtrar los valores cero (verificaciones nulas) en las reglas que dependen de la enriquecimiento. Obtén información sobre cómo Google Security Operations enriquece los datos de eventos y entidades y cómo usar datos enriquecidos con contexto en las reglas.

Agrega un filtro de tipo de evento

En el siguiente ejemplo, las direcciones IP de cada evento de la AUA 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 de YARA-L solo detecta eventos UDM de un tipo determinado, agregar un filtro de tipo de evento puede ayudar a optimizarla, ya que reduce la cantidad de eventos que debe evaluar.

events: // Para cada evento de UDM de tipo NETWORK_DNS, verifica si target.ip se // encuentra en la lista de referencia suspicious_ip_addresses. $e.metadata.event_type = "NETWORK_DNS" $e.target.ip in %suspicious_ip_addresses

Agrega estos filtros al comienzo de la sección de eventos. También debes colocar los filtros de igualdad antes de la regex o de 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 recursos:

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