Prácticas recomendadas de YARA-L
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:
- Conceptos básicos de YARA-L
- Variables de reglas de YARA-L
- Operadores y modificadores de YARA-L
- Crear una regla de un solo evento con una expresión regular
- Agregar eventos en reglas
- Definir un umbral en las condiciones
- Navegación por el editor de reglas
- Opciones de reglas de YARA-L
- Crear una regla de un solo evento: coincidencia de cadena
- Crear una regla de varios eventos: combinar eventos
- Crear una regla de varios eventos: ordenar eventos
- Crear una regla de varios eventos: varias combinaciones y recuentos en las condiciones
- Crear una regla de varios eventos: ventanas deslizantes
- Presentamos los resultados en una regla de evento único
- Resultados de una regla de varios eventos: recuentos
- Resultados de las reglas de varios eventos: matrices
- Resultados de una regla de varios eventos: máximo, mínimo y suma
- Resultados: puntuación de riesgo, lógica condicional y operadores matemáticos
- Funciones: strings.concat
- Funciones: strings.coalesce
- Funciones - Red
- Lista de referencias
- Listas de referencia de CIDR
- Listas de referencia de expresiones regulares
- Función de cadenas: mayúsculas o minúsculas
- Función de expresión regular: re.regex
- Función de expresión regular: re.capture
- Función de cadena: strings.base64_decode
- Función de expresión regular: re.replace
- Empezar a usar la búsqueda estadística
- Búsqueda estadística: más que un recuento
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.