¿Necesita Cloud Computing? Empiece ahora

Familias de DGA con semillas dinámicas: comportamiento inesperado en el tráfico DNS

Akamai Wave Blue

escrito por

Connor Faulkner y Stijn Tilborghs

September 06, 2023

Connor Faulkner

escrito por

Connor Faulkner

Connor Faulkner tiene experiencia en astrofísica y le mueve la curiosidad y su pasión por descifrar sistemas complejos. Es analista de datos especializado en el grupo de inteligencia sobre seguridad de Akamai que estudia el complejo panorama de la detección de amenazas.

Headshot of Stijn Tilborghs

escrito por

Stijn Tilborghs

Stijn Tilborghs es un ingeniero electrónico que decidió pasarse a la ciencia de datos en 2016. Obtuvo sus primeros ingresos vinculados a este campo fueron premios por competir en hackatones de aprendizaje automático. Después de trabajar como autónomo durante unos años, actualmente forma parte del equipo de investigación de amenazas de Akamai y busca soluciones innovadoras para el panorama de amenazas global y dinámico.

A closer look at the Pushdo and Necurs DGA families reveals that they output malicious domains both before and after their expected generation dates.

Comentario editorial y adicional de Tricia Howard y Lance Rhodes 

Resumen ejecutivo

  • Los investigadores de Akamai revelan y explican por qué, en los datos de tráfico del sistema de nombres de dominio (DNS), observamos un comportamiento de las familias de algoritmos de generación de dominios (DGA) con semillas dinámicas que es diferente de lo que parece sugerir su algoritmo de ingeniería inversa.

  • El comportamiento modificado sugiere que los agentes maliciosos están intentando aumentar aún más la capacidad de las familias de DGA para ampliar la vida útil de sus canales de comunicación de mando y control (C2), protegiendo así sus botnets.

  • Los investigadores de seguridad encuentran más complejo predecir los nombres de dominio generados en el futuro para los DGA con semillas dinámicas que para los DGA con semillas estáticas. 

  • Una mirada más cercana a las familias de DGA Pushdo y Necurs revela que producen dominios maliciosos tanto antes como después de sus fechas de generación previstas.

Introducción

En esta publicación del blog, proporcionaremos una breve descripción general de los DGA y, a continuación, compartiremos algunas conclusiones interesantes.

El grupo de inteligencia sobre seguridad de Akamai puede analizar registros anónimos de consultas DNS que se originan en servidores DNS CacheServe . Como parte de nuestros esfuerzos de detección de botnets, observamos y supervisamos el comportamiento real de más de 100 familias de DGA conocidas. 

Descubrimos que los DGA con semillas dinámicas (un subconjunto de los DGA) a menudo muestran un comportamiento muy diferente al que parece sugerir el propio algoritmo DGA de ingeniería inversa. Más precisamente, vemos que los nombres de dominio de DGA se activan antes de su fecha de generación prevista. 

¿Qué son los algoritmos de generación de dominios? 

El malware, como las botnets, a menudo necesitan comunicarse con un servidor centralizado para recibir comandos o actualizaciones. 

Los DGA son algoritmos utilizados en malware para generar un gran número de nombres de dominio de forma semialeatoria.

Un dispositivo infectado intentará conectarse regularmente a todo el conjunto de dominios generados algorítmicamente proporcionados por el DGA. Solo se debe alcanzar un dominio correctamente para establecer una conexión con el servidor C2. Esto dificulta a los investigadores de ciberseguridad la eliminación de la comunicación C2.

Cómo funciona

Por ejemplo, imagine una botnet que utilice una familia o variante hipotética de DGA que genere 500 nombres de dominio maliciosos al día.

Un dispositivo infectado que utilice esta familia de DGA consultará los 500 nombres de dominio cada día. El servidor C2 de la botnet generará los mismos 500 nombres de dominio cada día (asumimos que se está utilizando la misma semilla, de lo que hablaremos más adelante). Sin embargo, el agente malicioso solo necesita controlar 1 de esos 500 dominios para establecer la comunicación con las máquinas infectadas (bots).

A veces la semilla cambia, lo que genera un nuevo conjunto de dominios, y el proceso comienza de nuevo. Esto dificulta que los investigadores de seguridad bloqueen el tráfico malicioso, ya que los dominios cambian con frecuencia y suelen ser dominios de aspecto aleatorio, como “ghlidae[.]com”.

Los dominios de nivel superior (TLD) están codificados y limitados principalmente a TLD que sean baratos de adquirir.

Existen muchos DGA diferentes. Una vez que la comunidad de seguridad descubre un nuevo algoritmo (y a veces logra aplicar ingeniería inversa), normalmente se le asigna un "nombre de familia". Algunas de las familias de DGA más conocidas son Conficker, Miraiy CryptoLocker.

La historia de los DGA 

El malware como las botnets, el crimeware y ransomware necesita comunicarse con sus dispositivos infectados. Antes de que existieran los DGA, los autores de malware simplemente codificaban el dominio, o una lista de dominios, en el código del malware. Los equipos infectados intentarían conectarse regularmente a estos dominios codificados para establecer comunicación con el servidor C2.

Una vez que los equipos de seguridad obtenían el código fuente del malware, era una tarea sencilla poner todos esos dominios codificados en una lista de bloqueo.

Investigadores: 1. Malos: 0.

La primera familia de malware en implementar los DGA fue la familia Kraken a principios de 2008. Sin embargo, más tarde ese mismo año, la familia Conficker haría populares a los DGA.

Conficker.A generaba 250 nombres de dominio por día. Con la llegada de Conficker.C se generaba la enorme cantidad de 50 000 dominios al día. Esto provocaba que los equipos de seguridad tuvieran que detectar y bloquear de repente hordas de nuevos dominios cada día. Los agentes maliciosos, por otro lado, necesitaban seguir controlando solo uno de esos nombres de dominio al día.

Investigadores: 1. Malos: 1.

Aumento de las comunicaciones C2 sólidas

Los DGA permitieron aumentar la solidez de la comunicación C2, lo que permitió un mayor desarrollo de: 

  • Ataques distribuidos de denegación de servicio (DDoS)

  • Criptominería

  • Venta de información confidencial desde dispositivos comprometidos

  • Spyware

  • Fraude publicitario y por correo electrónico

  • Autopropagación de malware

Estas son algunas de las campañas que siguen afectando a la comunidad de ciberseguridad hasta la fecha. Los DGA han demostrado ser muy eficaces.

¿Qué son las semillas dinámicas y las semillas estáticas?

Existen dos categorías principales de DGA: de semillas dinámicas y semillas estáticas. Para entender la diferencia, primero debemos entender el concepto de “semilla”.

La semilla es esencialmente una entrada inicial para un generador de números pseudoaleatorios (PRNG). La semilla tiene un impacto directo en la salida de cualquier algoritmo que utilice un PRNG.

Por ejemplo, una familia DGA específica que utilice una semilla de 42 siempre generará exactamente la misma lista de nombres de dominio. Si se cambia la semilla a otra cosa, como a 50, se producirá una salida completamente diferente.

Como puede imaginar, la semilla desempeña un papel fundamental para los DGA. Los dispositivos de botnet infectados no solo necesitan utilizar el mismo algoritmo DGA que los servidores C2 con los que deben ponerse en contacto, sino que también necesitan utilizar la misma semilla.

Las semillas de DGA pueden generarse de varias maneras y sobre la base de diversas fuentes.

Cuando las semillas de DGA no cambian con el tiempo (a menudo codificadas), los llamamos DGA con semillas estáticas.

Algunos DGA utilizan semillas que cambian con el tiempo. Se dice que estos DGA tienen semillas dinámicas.

DGA con semillas estáticas

Las semillas estáticas pueden ser números aleatorios, nombres de famosos, la Declaración de Independencia, un diccionario de palabras o cualquier cosa que un agente malicioso pueda intercambiar por otra cosa con facilidad.

Estas semillas suelen permanecer constantes durante un largo periodo de tiempo y generan una secuencia coherente de nombres de dominio.

Estas combinaciones de DGA y semilla permanecen efectivas solo mientras al algoritmo no se le aplique ingeniería inversa y los investigadores de ciberseguridad no descubran la semilla. Cuando se alcanza ese punto, todos los nombres de dominio generados se colocarán rápidamente en listas de bloqueo. El agente malintencionado tendrá que cambiar la semilla para generar una nueva lista de nombres de dominio.

Internamente, nos referimos a los DGA con semillas estáticas simplemente como “DGA estáticos”, por lo que usaremos este término para el resto de esta publicación.

DGA con semillas dinámicas

Los DGA con semillas dinámicas (o simplemente “DGA dinámicos”) intentan complicar aún más la vida de los investigadores de seguridad.

Los DGA dinámicos utilizan semillas dependientes del tiempo. Lo más frecuente es usar la fecha actual. También hay DGA que utilizan tasas de cambio de divisas, temperaturas e incluso temas de tendencias de Google Trends o Twitter.

Cuando la semilla es predecible, los investigadores de seguridad podemos predecir qué nombres de dominio producirá el DGA en un momento determinado en el futuro. La condición es, por supuesto, que a la familia de DGA se le haya realizado una ingeniería inversa con éxito. 

Si la semilla se basa en la fecha, generalmente vemos el mismo conjunto de nombres de dominio en ventanas de 24 horas (es decir, cada día, justo después de la medianoche, se genera un nuevo conjunto de dominios).

Saber qué dominios de DGA se activarán mañana nos permite incluir estos dominios de forma proactiva en nuestras listas de bloqueo para proteger a los usuarios finales de las botnets.

Desafortunadamente, ese escenario no es posible con semillas impredecibles, como las tendencias de Google Trends, las temperaturas o las tasas de cambio de divisas. Incluso si tenemos el código fuente de la familia, no podemos predecir correctamente los nombres de dominio de DGA que se generarán en el futuro.

DGA dinámicos: expectativas frente a realidad

Nuestro equipo de investigación ha observado e investigado comportamientos inesperados en más de una docena de DGA. Veamos los comportamientos de dos especialmente interesantes.

Ambos ejemplos son familias de DGA dinámicos que utilizan la fecha como semilla. Esto significa que al combinar la semilla (la fecha) con el DGA de ingeniería inversa, deberíamos poder predecir qué nombres de dominio aparecerán, y cuándo, en los registros de consultas DNS.

Compararemos nuestras predicciones con lo que realmente vimos en los datos de tráfico de DNS.

En aras de la brevedad, en el resto de esta sección simplemente utilizaremos “DGA” o “familia de DGA” como abreviatura de “familias de DGA dinámicos que utilizan la fecha como semilla”.

Unique number of domains seen in traffic Fig. 1: A generalized view of DGAs in traffic

Una vista de los DGA en los datos de tráfico

La Figura 1 nos ofrece una vista general de los DGA en nuestros datos de tráfico. Para transmitir adecuadamente la intuición que hay detrás de esto, necesitamos un poco de contexto.

En primer lugar, vamos a definir los ejes.

  • El eje x representa la diferencia de tiempo (medida en número de días) entre la fecha esperada (la fecha semilla) y la fecha observada en la que vemos los nombres de dominio de la familia de DGA en los datos de tráfico DNS.

  • El eje y es el número único de dominios que se ven en los datos de tráfico.

Esperamos que la semilla cambie cada 24 horas; es decir, todos los días, justo después de la medianoche, el DGA activará un nuevo conjunto de nombres de dominio a partir de la nueva semilla. Eso sugeriría que tenemos una ventana del mismo conjunto de nombres de dominio durante 24 horas y que luego cambia. Esto se representa mediante la barra roja. La barra roja nos muestra lo que esperamos ver de estas familias de DGA en un mundo ideal sin latencia.

A la derecha, representada por la barra morada, es lo que esperamos ver cuando tenemos en cuenta la latencia en varias etapas, antes de que los datos de DNS lleguen a nuestros sistemas. La mayoría de las latencias solo provocarán un ligero desplazamiento hacia la derecha, normalmente medido en minutos u horas en lugar de en días, a menos que sea por diseño.

A la izquierda, sin embargo, hay algo inesperado, representado por la barra verde. ¿Qué está pasando aquí? ¡Observamos los nombres de dominio DGA antes de sus fechas teóricas de generación!

Este extraño comportamiento sugiere que los agentes maliciosos han modificado estos DGA para complicar aún más la detección y proteger sus actividades maliciosas.

Tráfico de la familia Pushdo

Unique number of domains seen in traffic Fig. 2: Pushdo malware family

Para la familia Pushdo, esperamos ver todos los dominios consultados en una ventana de 24 horas entre 0 y 1 días en el eje x (Figura 2). Esto se representa mediante el área sombreada en rojo.

Lo que realmente observamos es una distribución de nombres de dominio únicos en el tráfico de −50 a +50 días a partir de su fecha prevista. El pico se encuentra en 10 000, justo antes de la marca cero.

Parece que la semilla (la fecha) fue desplazada hasta 50 días a través de algo que parece una distribución normal.

El código Python para esto podría tener el siguiente aspecto:

  import numpy as np
  import pandas as pd
  from datetime import datetime

seed = datetime.now().date()
shift = np.random.normal(loc=0, scale=15, size=1).astype(int)[0]
modified_seed = seed + pd.to_timedelta(f'{shift} days')

Interpretamos esto como el intento de un agente malicioso de frustrar o confundir a los investigadores de seguridad.

Afortunadamente, ¡no nos confunde!  Nuestros sistemas de detección de DGA cubren todo el espectro visible en la Figura 2.

Tráfico de la familia Necurs

Unique number of domains seen in traffic Fig. 3: Necurs malware family

Para la familia Necurs, vemos una distribución de nombres de dominio únicos de −7 a +7 días (Figura 3). También hay un pico mucho más pequeño alrededor de la marca de +12-días, pero es lo suficientemente grande como para ser considerado producto del diseño.

Esto sugiere que un subconjunto de agentes maliciosos espera lo suficiente para utilizar el mismo conjunto de dominios, pero cambia su uso hasta después de 7 días de su fecha prevista, lo que retrasa los nombres de dominio en esos 7 días.

Conclusión

Al analizar la actividad de los DGA con semillas dinámicas en las solicitudes de DNS, observamos un comportamiento inesperado. Concluimos que estas anomalías se pueden atribuir a agentes maliciosos que modifican las semillas de DGA de varias maneras. Las dos familias de DGA que hemos examinado, Pushdo y Necurs, producen dominios maliciosos tanto antes como después de su fecha de generación prevista, que van hasta 50 días antes y después de la fecha de generación prevista.

Nuestro análisis sugiere que esto se está haciendo como un intento de evitar los sistemas de detección de DGA y complicar el trabajo de los equipos de investigación de seguridad. Aunque los agentes maliciosos siguen buscando formas de proteger sus botnets y ampliar la vida útil de sus canales de comunicación C2, es tarea de los investigadores de seguridad contrarrestar estas medidas e identificar mejor lo que es real frente a lo que se espera.

No se lo pierda

Puede encontrar nuestra investigación de seguridad de última generación en tiempo real si nos sigue en Twitter.



Akamai Wave Blue

escrito por

Connor Faulkner y Stijn Tilborghs

September 06, 2023

Connor Faulkner

escrito por

Connor Faulkner

Connor Faulkner tiene experiencia en astrofísica y le mueve la curiosidad y su pasión por descifrar sistemas complejos. Es analista de datos especializado en el grupo de inteligencia sobre seguridad de Akamai que estudia el complejo panorama de la detección de amenazas.

Headshot of Stijn Tilborghs

escrito por

Stijn Tilborghs

Stijn Tilborghs es un ingeniero electrónico que decidió pasarse a la ciencia de datos en 2016. Obtuvo sus primeros ingresos vinculados a este campo fueron premios por competir en hackatones de aprendizaje automático. Después de trabajar como autónomo durante unos años, actualmente forma parte del equipo de investigación de amenazas de Akamai y busca soluciones innovadoras para el panorama de amenazas global y dinámico.