Entendiendo el algortimo de Generación de Dominios (DGA)

Locky debutó en febrero de 2016, y desde su aparición se han detectado al menos hasta 3 versiones de este virus Ransomware, cada una mejor que la anterior. Casi a razón de una nueva versión por mes, increíble. Evidentemente es un negocio rentable.

Hoy no les voy hablar de Locky, sino del sistema que utiliza para esconder el C2 (C&C), que no es más que el command and control server. El panel web, en donde se conecta el virus al infectar el ordenador y entre otras cosas, enviarle al C2 la clave de cifrado de la víctima junto a su ID para poder pedir rescate por los datos cifrados.

Este sistema es muy usado por los Malware para esconder el C&C de los investigadores y la policía, aún así los C&C son verdaderas setas, aparecen y desaparecen con gran facilidad. Recordar que en concreto Locky al ejecutarse, sino logra contactar con su C&C automáticamente se autoelimina.

Por este motivo, en la primera versión de Locky que apreció en febrero, tan solo generaba dominios pseudo-alaeatorios utilizando la fecha y hora del sistema + claves embebidas en el sistema(seed). Era capaz de generar hasta 6 dominios únicos en 2 días.

En la segunda versión que encontramos de Locky, el DGA ahora es capaz de generar hasta 8 dominios únicos en dos días.

Por último la tercera versión de Locky que trae algunas mejoras, como detectar herramientas de volcado de memoria, procesos de análisis, variando la entrada del registro de la clave Locky, etc, es capaz de generar cerca de 8 dominios en dos días.

Bueno, genial, pero… ¿qué es DGA?

Imagina que todo el tráfico de tu red pasa por un Firewall, uno de esos (todo en 1) como Fortinet, Sony wall, Chekpoint, Cyberoam, etc.. y estos cuentas con un sistema de reputación de IPs y dominios, donde cada vez que se realiza una petición a un dominio o IP desde la intranet el firewall consulta una lista negra que se actualiza varios veces al día, para saber si permite o no ese tráfico.

Estaría claro que las muestras encontradas de Malware irían reportando los C2 y reportados automáticamente su IP en las listas negras. Por lo que por ejemplo, nuestro amigo Locky sería ya incapaz de infectar una máquina. Tal como demostramos en el laboratorio de Dolbuck, si Locky no conecta con el C2, se suicida 😛 .

Así que los ingenieros del malware han tenido que buscar una forma de eludir esto. Y la solución se llama DGA (Domain Generation Algorithm).

La idea es generar de forma dinámica dominios donde se alojarán los servidores de C2, esta técnica junto a la de Fluxing permiten a un virus generar por ejemplo 1000 dominios donde puede estar alojado el servidor C2 y a los cuales poder conectarse el malware.-

El atacante lo único que tiene que hacer es registrar uno de esos dominios generados aleatoriamente, realizar una serie de operaciones y volver a des-registrar el dominio.

Como el atacante ha creado la semilla, es capaz de predecir los dominios que se generarán, por lo que se anticipa y genera de forma aleatoria alguno de ellos, los activa, espera a conectar con algunos nodos y los desactiva (des-registra) y vuelta a empezar.

Esto hace que el C2 sea difícil de localizar. Por eso es tan importante, una vez que se encuentra una muestra, realizar un reversing para poder encontrar la semilla y generar los dominios.

Así que cada operación que quiera realizar el atacante sobre la botnet puede utilizar un dominio diferente, y por tanto una IP diferente, los sistemas de detección basados en listas negras, listas de reputación y filtros web pueden ser evadidos sin problemas, ya que aunque hoy se catalogue como de baja reputación mañana el servidor de C&C tendrá otro dominio y otra IP, y por tanto se permitirá el acceso.

Algunos de los malwares que utilizan esta técnica son el Conficker, Cryptolocker, Zeus, Murofet, BankPatch, Bonnana, Locky, Bobax, etc cada día son más…

Aquí les dejo un resumen de las fases que son 4:

 

 

 

 

 

 

Explicación:

1) Se genera una «seed» semilla que será utilizada por el malware o troyano para generar dominios aleatorios. Lo más común es usar la hora del sistema y la fecha.

2) Luego se incrusta el algoritmo DGA en el troyano para que utilizando la semilla genere 1000 dominios todos los días.

3) El equipo infectado intentará conectarse a cada uno de los dominios donde están, pero solo uno será válido y que habrá sido registrado previamente de forma «manual» por el atacante, con datos falsos y pagados con una tarjeta robada.

4) El atacante tendrá control sobre la botnet y podrá tener siempre acceso al C2 con total garantías de que este nunca será detectado, ya que puede ser tan dinámico como quiera.

¿Bien, y ahora qué?

Los firewalls( todo en uno)  que nos han vendido con sistemas de seguridad antimalware, se vuelven a quedar obsoletos e inútiles frente a este nuevo sistema. Así que habría que usar herramientas SIEM, analizar todo el tráfico incluso el SLL, para identificar reverse shell y comportamientos anómalos o resoluciones masivas de DNS. De vez en cuando no estaría mal, tirar un Wireshark y ver las resoluciones DNS que hay en la red.

Cada día es más importante contar con herramientas de análisis de red, IDS, SIEM, etc. Y claro, un buen analista de seguridad.

Ahora bien, pensar en las Pymes, y se comprenderá que el malware tiene negocio millonario por años. Dicho de otra manera. Se pueden contar las victimas por centenas de millones.

Ejemplo de código para generar dominios.

 Fuente:

https://en.wikipedia.org/wiki/Domain_generation_algorithm

Enlaces de interés:

http://garage4hackers.com/blog.php?b=3091

http://unaaldia.hispasec.com/2014/08/estudio-del-algoritmo-de-generacion-de.html

Reverse Engineering GameoverZeus DGA code Tutorial. 

http://www.garage4hackers.com/entry.php?b=3081

https://www.damballa.com/downloads/r_pubs/RN_DGAs-and-Cyber-Criminals-A-Case-Study.pdf

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *