¿Qué son los DGA y cómo detectarlos?

Los algoritmos de generación de dominios (DGA) son una clase de algoritmos que generan de forma periódica y dinámica una gran cantidad de nombres de dominio. Normalmente, los dominios son utilizados por malware y redes de bots como puntos de encuentro para facilitar la devolución de llamadas a los servidores de comando y control del actor malintencionado. Los DGA permiten que el malware genere decenas de miles de dominios por día, la gran mayoría de ellos sin registrar. La enorme cantidad de dominios no registrados se utilizan para enmascarar los registrados, lo que permite que las botnets infectadas eludan la detección y la disuasión mediante sistemas de detección de seguridad basados ​​en firmas o reputación de IP.

La primera familia de malware conocida que utilizó un DGA fue Kraken en 2008. Más tarde ese año, el gusano Conflicker llevó la táctica DGA a la notoriedad. Incluso después de 10 años, todavía es posible encontrar Conflicker o una de sus variantes en algunas de las redes actuales.

Junto con la creciente proliferación de malware, el uso de DGA se ha vuelto más generalizado.

Los objetivos de la detección de DGA

Debido a que la actividad DGA es un indicador considerable de compromiso, es fundamental detectar dichas actividades en su red. Hay tres niveles de detección de DGA, y cada nivel subsiguiente se correlaciona con un aumento en la gravedad. La detección en niveles posteriores es más difícil, pero más crítica.

Si se detecta un DGA, significa que uno o más de sus sistemas han sido infectados por malware basado en DGA y se han convertido en botnets. Es necesario realizar algunas acciones. El primer objetivo es identificar los sistemas afectados, limpiándolos adecuadamente o poniéndolos en cuarentena para evitar una escalada.

El siguiente objetivo es determinar si un determinado nombre de dominio DGA está registrado. Si el dominio está registrado, se ha convertido en un servidor de Command & Control activo que presenta un gran riesgo para su red. Los sistemas infectados, ahora botnets, pueden usar estos servidores para llamar a casa y recibir comandos del atacante malintencionado. Por lo tanto, el segundo componente de un sistema de detección DGA eficaz es la capacidad de diferenciar los dominios registrados de los no registrados.

Por ejemplo, una DGA puede generar 1000 dominios, desde xyzwer1, xyzwer2…. a xyzwer1000. El hacker solo necesita registrar un dominio, es decir, xyzwer500, no los otros 999 dominios. Si se puede identificar el dominio registrado y su IP asociada, la información se puede utilizar para bloquear el canal de comunicación entre el sistema objetivo y el servidor de Command & Control. Además, la inteligencia debe propagarse a todos los demás sistemas de prevención o detección en el lugar para obstruir la devolución de llamada a ese servidor desde cualquier sistema en la red.

El último pero más crítico objetivo de un sistema de detección DGA es determinar si la devolución de llamada fue exitosa con los dominios registrados y si se estableció contacto entre los sistemas infectados y el servidor de Command & Control. Si se detecta tal actividad, es posible que ya se hayan producido algunos daños. Quizás se actualizó el malware en su red o se instaló nuevo malware. Es posible que se hayan extraído datos sensibles.

¿Cómo funciona la detección DGA?

La actividad DGA se detecta capturando y analizando paquetes de red, generalmente en cinco pasos generales.

Paso 1: detectar la aplicación DNS
La detección comienza a través de solicitudes de DNS y / o mensajes de respuesta. El DNS es un protocolo de Internet fundamental y la mayoría de los firewalls tienen una política para permitir el tráfico DNS saliente en su puerto reservado 53. Sin embargo, un pirata informático puede aprovechar el puerto 53 para enviar su tráfico sin cumplir con el formato de mensaje DNS estándar. Este ataque se llama tunelización de DNS. Se recomienda un motor de inspección profunda de paquetes (DPI) para identificar las aplicaciones DNS con mayor precisión.

Paso 2: extraer nombres de dominio
Una vez que una aplicación de red se identifica como DNS, es necesario extraer los nombres de dominio en los mensajes de consulta y respuesta de DNS. Para extraer el nombre de dominio correcto, el contenido del mensaje DNS debe analizarse cuidadosamente y se requiere un motor DPI para realizar esta tarea.

Paso 3: detecta cualquier DGA
Es necesario realizar un análisis en los dominios extraídos de los mensajes DNS para determinar si son DGA. Este es quizás el paso más complicado. El desafío consiste en reducir tanto los falsos positivos como los falsos negativos. Los mecanismos de detección han evolucionado drásticamente en los últimos 10 años o más.
Algunos mecanismos se basan en la relativamente simple entropía de Shannon.
https://www.splunk.com/blog/2015/10/01/random-words-on-entropy-and-dns.html
Algunos mecanismos se basan en Ngrams más sofisticados como los presentó Fyodor en la conferencia de Hitb.
Últimamente, con la popularización del aprendizaje automático, sus metodologías también se han aplicado a la detección de DGA. El aprendizaje automático puede combinar las características de Ngrams, Shannon Entropy, así como la longitud de los nombres de dominio para influir en las decisiones. Se han probado varios modelos de aprendizaje automático. Hay una muy buena publicación de blog de Jay Jacobs en 2014 que describe el proceso.
Aquí hay otro detector DGA de código abierto basado en Machine Learning con Markov Chain:
https://github.com/exp0se/dga_detector

Paso 4: detectar dominios DGA registrados
Para detectar si un nombre de dominio DGA está registrado, es necesario verificar las respuestas de DNS. El mero seguimiento de las solicitudes de DNS no es suficiente; el sistema de detección debe rastrear toda la transacción para facilitar la correlación entre los datos.

Paso 5: detectar el tráfico a los dominios DGA registrados
Cuando la mayoría de los sistemas de detección DGA existentes se centran en detectar si un nombre de dominio es un dominio DGA, a menudo olvidan la última pregunta, la más importante: ¿hay algún tráfico que se haya enviado a los dominios DGA registrados? Para detectar esto de manera oportuna, la detección del dominio DGA debe estar estrechamente relacionada con la inspección del tráfico de la red. Los resultados deben enviarse al motor de inspección de tráfico inmediatamente antes de que se produzcan daños.

Paso 6: bloqueo del tráfico a dominios DGA registrados
Aunque técnicamente no es parte de la detección, si hay una integración con un sistema de prevención como un Firewall o IPS, se debe insertar una regla de inmediato para bloquear todo el tráfico a los dominios registrados.

Un gran sistema de detección DGA debería realizar los 5 pasos. Un excelente sistema de detección de DGA también debería incluir el Paso 6. Desafortunadamente, la mayoría de los sistemas de detección de DGA actuales se detienen en el paso 3 o el paso 4.

Conclusión
Debido a que los DGA son difíciles de detectar con un sistema de detección o prevención basado en firmas o reputación, se han vuelto bastante populares entre los desarrolladores de malware.
Se requiere un sistema de detección inteligente para realizar la detección. Un excelente sistema de detección de DGA debe extraer la información del nombre de dominio de las transacciones de DNS, realizar análisis exhaustivos para detectar el estado de DGA, verificar el estado de registro de los dominios sospechosos, correlacionar con la inspección del tráfico de la red para evaluar el nivel de compromiso e idealmente integrarse con los sistemas de prevención para evitar más compromiso. Para reducir tanto los falsos positivos como los falsos negativos, se debe considerar seriamente un aprendizaje automático. Solo con una inteligencia completa y omnipresente en cada etapa se puede mejorar realmente la amenaza.

Recursos

El repositorio en Github de Andrey Abakumove contiene algoritmos para generar nombres de dominio, así como diccionarios de nombres de dominio maliciosos.

Ir al Inicio