ESET descubre versiones mejoradas del troyano DanaBot

El troyano DanaBot, modular y de rápida evolución, ha sufrido varios cambios recientemente con una versión que dispone de un protocolo de comunicación completamente nuevo. Este protocolo, introducido en DanaBot a finales de enero de 2019, añade varias capas de cifrado a la comunicación entre este troyano y su C&C.

Además de los cambios en el protocolo de comunicación, su arquitectura y los identificadores de campaña también han sido modificados.

La evolución de DanaBot

Tras ser descubierto en mayo de 2018 como parte de una campaña de spam dirigido a usuarios de Australia, DanaBot ha aparecido en numerosas campañas posteriores en Polonia, Italia, Alemania, Austria y Ucrania, así como también en Estados Unidos. En las campañas dirigidas a países europeos se observó como el troyano aumentaba sus capacidades con nuevos complementos y características de envío masivo de spam.

La telemetría de ESET detectó el pasado 25 de enero de 2019 un número inusual de archivos ejecutables relacionados con DanaBot. Tras un análisis más detallado, se confirmó que estos binarios eran variantes de DanaBot pero que utilizaban un nuevo protocolo para comunicarse con su centro de mando y control. A partir del 26 de enero de 2019, los operadores de DanaBot dejaron de generar binarios con el antiguo protocolo.

En el momento de escribir este artículo, la nueva versión se está distribuyendo de la siguiente forma:

  1. Como “actualizaciones” enviadas a víctimas existentes del troyano DanaBot.
  2. Mediante campañas de spam malicioso en Polonia.

El nuevo protocolo de comunicación

En el protocolo de comunicación utilizado antes del 25 de enero los paquetes no se encontraban cifrados de ningún modo, tal y como podemos observar en la siguiente imagen.

Imagen 1 – Captura de paquetes mostrando el antiguo protocolo con los datos en texto plano

Siguiendo con los cambios más recientes, DanaBot utiliza los algoritmos de cifrado AES y RSA en su comunicación con el C&C. El nuevo protocolo de comunicación es complejo y utiliza numerosas capas de cifrado, tal y como se observa en la imagen a continuación.

Imagen 2 – Diagrama del nuevo protocolo de comunicación de DanaBot

Estos cambios inhabilitan las firmas basadas en las comunicaciones de red y hace más difícil escribir nuevas reglas para los sistemas de prevención y detección de intrusiones. De hecho, sin disponer de las claves RSA correspondientes no es posible descodificar los paquetes enviados o recibidos. Así pues, los archivos PCAP obtenidos desde sistemas de análisis basados en la nube (como ANY.RUN) se vuelven inútiles para los investigadores.

Imagen 3 – Captura de paquetes con el uso del nuevo protocolo de comunicación

Cada paquete enviado por el cliente tiene una cabecera 24 (0x18):

Offset Tamaño (en bytes) Significado
0x0 0x8 Tamaño de los datos tras su cabecera
0x8 0x8 Valor aleatorio
0x10 0x8 Suma de los dos primeros campos

En cada paquete, a la cabecera le sigue un paquete de datos cifrado en AES, luego un valor de 4 bytes indicando el tamaño del relleno AES y, finalmente, la clave AES cifrada con RSA. Cada paquete se encuentra cifrado con una clave AES diferente.

Las respuestas del servidor utilizan el mismo formato. Al contrario de versiones anteriores, el paquete de datos en las respuestas del servidor no sigue ningún diseño (con alguna excepción).

Diseño de los paquetes de datos

El diseño anterior de los paquetes de datos fue detallado por investigadores de Proofpoint en octubre de 2018. En la última versión de DanaBot, el diseño se modifico ligeramente, tal y como podemos ver en la siguiente imagen.

Imagen 4 – Comparación del diseño del paquete de datos en la versión anterior y actual de DanaBot

Cambios en la arquitectura de DanaBot

Además del cambio introducido en el protocolo de comunicación, DanaBot también ha sufrido varias modificaciones en su arquitectura. Las versiones previas de DanaBot incluyen un componente que descarga y ejecuta el módulo principal. Este módulo descarga y ejecuta una serie de complementos y configuraciones.

La última versión modifica ambas responsabilidades a un nuevo componente de carga, que es utilizado para descargar todos los complementos junto con el módulo principal. La persistencia se consigue el registrar el componente del cargador como un servicio en el sistema infectado.

Imagen 5 – Comparación de la arquitectura entre la versión anterior y la actual de DanaBot

Comandos

De acuerdo con el análisis de los investigadores de ESET el componente de carga utiliza los siguientes comandos:

  • 0x12C – Hola. Primer comando enviado por el cliente al servidor
  • 0x12D – Descarga el componente de carga de 32/64-bit
  • 0x12E – Solicita el listado de complementos y los ficheros de configuración
  • 0x12F – Descarga el complemento/fichero de configuración

Los complementos y ficheros de configuración descargados son cifrados utilizando una clave AES derivada del identificador del cliente. Los complementos son comprimidos en formato ZIP utilizando compresión LZMA, mientras que los ficheros de configuración se comprimen usando zlib.

Los comandos con los números de identificación 0x130 – 0x134 son enviados por el módulo principal:

  • 0x130 – Envía la información recopilada al servidor C&C (p.ej. capturas de pantalla del sistema de la víctima o información del sistema)
  • 0x131 – Envía información recopilada al servidor C&C (p.ej. listado de ficheros en el disco duro de la víctima)
  • 0x132 – Solicita comandos adicionales al C&C. Existen alrededor de 30 comandos disponibles típicos en los backdoors, incluyendo complementos de lanzamiento, recopilación detallada de información o modificación de archivos en el sistema cliente.
  • 0x133 – Actualiza el listado de servidores C&C mediante un proxy en la red Tor.
  • 0x134 – Se desconoce el propósito exacto aunque todo apunta a que es utilizado para la comunicación entre los complementos y el C&C.

Cambios en los identificadores de campaña

Investigaciones anteriores sugieren que DanaBot ha sido distribuido por un sistema de “afiliados” o identificadores de “campañas”.

En la versión anterior de DanaBot se utilizaron casi 20 identificadores de campaña. En la última versión, éstos se han modificado ligeramente. A fecha de 5 de febrero de 2019, se están observando los siguientes identificadores que se están utilizando de forma activa:

  • ID=2 parece ser una versión de prueba, que distribuye un número limitado de ficheros de configuración y sin inyecciones web.
  • ID=3 está siendo propagado de forma activa y apunta a usuarios tanto en Polonia como en Italia y está distribuyendo todos los ficheros de configuración e inyecciones web a víctimas en ambos países.
  • ID=5 distribuye los ficheros de configuración para objetivos en Australia.
  • ID=7 se está utilizando únicamente en Polonia, y distribuye inyecciones web a usuarios polacos.
  • ID=9 parece ser otra versión de prueba, con propagación limitada y sin objetivos específicos.  Se distribuye a un número limitado de ficheros de configuración y ninguna inyección web.

Conclusión

EN 2018 observamos como DanaBot ampliaba tanto su distribución como su funcionalidad. El comienzo de 2019 ha supuesto cambios internos en este troyano, e indica un desarrollo activo por parte de sus creadores. Las últimas actualizaciones sugieren que sus creadores están haciendo un esfuerzo para evadir la detección a nivel de red, posiblemente debido a las investigaciones ya publicadas, y están realizando modificaciones adicionales para estar por delante de los sistemas de detección.

Las soluciones de seguridad de ESET detectan y bloquean todos los componentes y complementos de DanaBot con los nombres indicados en la sección de IoCs.

Indicadores de compromiso (IoCs)

Servidores C&C usados por la nueva versión de DanaBot
  • 84.54.37[.]102
  • 89.144.25[.]243
  • 89.144.25[.]104
  • 178.209.51[.]211
  • 185.92.222[.]238
  • 192.71.249[.]51
Servidores Webinject y de redirección
  • 47.74.249[.]106
  • 95.179.227[.]160
  • 185.158.249[.]144
Hashes de ejemplo

Se debe tener en cuenta de que nuevas variantes de los componentes de DanaBot se están publicando regularmente por lo que solo proporcionamos unos cuantos ejemplos de hashes.

Componente SHA-1 Nombre asignado
Dropper 98C70361EA611BA33EE3A79816A88B2500ED7844 TrojanDropper.Danabot.O
Loader (x86), campaign ID=3 0DF17562844B7A0A0170C9830921C3442D59C73C Spy.Danabot.L
Loader (x64), campaign ID=3 B816E90E9B71C85539EA3BB897E4F234A0422F85 Spy.Danabot.G
Loader (x86), campaign ID=9 5F085B19657D2511A89F3172B7887CE29FC70792 Spy.Danabot.I
Loader (x64), campaign ID=9 4075375A08273E65C223116ECD2CEF903BA97B1E Spy.Danabot.F
Main module (x86) 28139782562B0E4CAB7F7885ECA75DFCA5E1D570 Spy.Danabot.K
Main module (x64) B1FF7285B49F36FE8D65E7B896FCCDB1618EAA4B Spy.Danabot.C

Complementos

Complemento SHA-1 Nombre asignado
RDPWrap 890B5473B419057F89802E0B6DA011B315F3EF94 Spy.Danabot.H
Stealer (x86) E50A03D12DDAC6EA626718286650B9BB858B2E69 Spy.Danabot.C
Stealer (x64) 9B0EC454401023DF6D3D4903735301BA669AADD1 Spy.Danabot.E
Sniffer DBFD8553C66275694FC4B32F9DF16ADEA74145E6 Spy.Danabot.B
VNC E0880DCFCB1724790DFEB7DFE01A5D54B33D80B6 Spy.Danabot.D
TOR 73A5B0BEE8C9FB4703A206608ED277A06AA1E384 Spy.Danabot.G

Josep Albors

ESET descubre el primer malware Clipper para Android en Google Play