El troyano modular de rápida evolución conocido como DanaBot, ha sufrido cambios adicionales, y en su última versión cuenta con un protocolo de comunicación completamente nuevo.  El protocolo, introducido a DanaBot a fines de enero de 2019, añade varias capas de cifrado a la comunicación con el C&C de DanaBot.

Además de los cambios en la comunicación, la arquitectura de DanaBot y los ID de la campaña también han sido modificados.

La evolución de DanaBot

Desde que fue descubierto en mayo de 2018 como parte de una campaña de spam dirigida a Australia, se ha visto mucha actividad de DanaBot; apareciendo en campañas de spam malicioso en Polonia, Italia, Alemania, Austria y Ucrania, así como también en los Estados Unidos. En las campañas europeas se ha podido ver cómo el troyano ha expandido sus capacidades con nuevos plugins y funcionalidades para el envío de spam.

El 25 de enero de 2019 notamos en la telemetría de ESET ejecutables relacionados a DanaBot inusuales. Luego de inspeccionarlos, pudimos revelar que estos binarios eran, de hecho, variantes de DanaBot, pero que utilizaban un protocolo de comunicación diferente para comunicarse con el servidor C&C. Desde el 26 de enero de 2019, los operadores de DanaBot dejaron de crear binarios con el antiguo protocolo.

Al momento de escribir este artículo, la nueva versión está siendo distribuidas en dos escenarios:

  • Como “actualizaciones” enviadas a víctimas de DanaBot existentes
  • A través 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 estaban cifrados de ninguna manera, como se puede apreciar en la Figura 1.

Figura 1 – Captura del paquete que muestra el antiguo protocolo con datos en texto plano

Siguiendo con los últimos cambios, DanaBot utiliza los algoritmos de cifrado AES y RSA en sus comunicaciones con el C&C. El nuevo protocolo de comunicación es complejo, ya que utiliza varias capas de cifrado. En la Figura 2 se describe el proceso de cifrado.

Figura 2 – Un diagrama del nuevo protocolo de comunicación de DanaBot

Estos cambios rompen firmas existentes basadas en la red y hacen que sea más difícil escribir nuevas reglas para los Sistemas de Prevención y Detección de Intrusos (IDPS, por sus siglas en inglés). También, sin acceso a las claves RSA correspondientes, es imposible decodificar paquetes enviados o recibidos; por lo tanto, archivos PCAP de sistemas de análisis basados en la nube (como ANY.RUN) se vuelven inutilizables para los investigadores.

Figura 3 – Estructura de un paquete con el nuevo protocolo de comunicación

El encabezado de cada paquete enviado por el cliente es de un byte de tamaño y su valor es de 24 (0x18):

Offset Size (bytes) Meaning
0x0 0x8 Size of the data after this header
0x8 0x8 Random value
0x10 0x8 Sum of first two fields

Para cada paquete, el encabezado es seguido por paquetes de datos cifrados en AES, los siguientes 4-bytes indican el tamaño del relleno de AES, y finalmente la llave AES cifrada en RSA. Cada paquete es cifrado con una clave AES diferente.

La respuesta del servidor utiliza el mismo formato. A diferencia de versiones previas, los paquetes de datos en las respuestas del servidor no siguen ningún diseño específico (salvo algunas excepciones).

Diseño de paquete de datos

El anterior diseño de paquete de datos fue detallado por Proofpoint en octubre de 2018. En la última versión de DanaBot el diseño está ligeramente modificado, tal como se puede apreciar en la Figura 4.

Figura 4 – Comparación del diseño de paquete de datos entre las versiones previas y las más recientes de DanaBot

Cambios en la arquitectura de DanaBot

Junto al cambio en el protocolo de comunicación, DanaBot también realizó algunos cambios en su arquitectura. En las versiones previas de DanaBot se incluía un componente que descargaba y ejecutaba el módulo principal. Luego, este módulo descargaba y ejecutaba plugins y configuraciones.

La última versión utiliza un nuevo componente loader para descargar todos los plugins junto con el módulo principal. La persistencia la logra al registrar el componente loader como servicio.

Figura 5 – Comparación de la arquitectura de versiones previas y actuales de DanaBot

Comandos

De acuerdo a nuestros análisis, el componente loader utiliza los siguientes comandos:

  • 0x12C - Hola. Primer comando enviado por el cliente al servidor
  • 0x12D – Descargar el componente que ejecuta la amenaza de 32/64-bit
  • 0x12E – Solicitar lista de plugins y archivos de configuración
  • 0x12F – Descargar archivos de configuración/plugin

Los plugins y los archivos de configuración descargados están cifrados mediante el uso de claves AES provenientes del ID de cliente. Adicionalmente, los plugins son comprimidos en formato ZIP utilizando compresión LZMA, mientras que los archivos de configuración son comprimidos utilizando zlib.

Comandos con números de ID 0x130 - 0x134 son enviados por el módulo principal:

  • 0x130 – Subir información recolectada al servidor C&C (por ejemplo: capturas de pantalla de la computadora de la víctima; información del sistema)
  • 0x131 – Subir información recolectada al servidor C&C (por ejemplo: lista de archivos en el disco rígido de la víctima)
  • 0x132 – Solicitar al servidor C&C comandos adicionales. Hay cerca de 30 comandos típicos de backdoors disponibles, incluyendo ejecución de plugins, recopilación de información detallada del sistema y modificación de archivos en el sistema cliente
  • 0x133 – Actualizar la lista del servidor C&C a través del proxy de Tor
  • 0x134 – Propósito exacto desconocido; principalmente utilizado para comunicación entre plugins y el C&C

Cambios en los ID de la campaña

Investigaciones previas han sugerido que DanaBot se distribuye bajo varios ID de “afiliados” o “campañas”.

En la versión previa de DanaBot, fueron utilizados al menos 20 IDs de campaña diferentes. En la última versión, los ID de la campaña se han modificado ligeramente. A partir del 5 de febrero de 2019, hemos observado los siguientes ID activos:

  • ID=2 parece ser una versión de prueba, ofreciendo un número limitado de archivos de configuración y ningún webinject
  • ID=3 ha sido propagado de manera activa, dirigido a usuarios tanto de Polonia como de Italia, proporcionando todos los archivos de configuración y webinjects tanto para blancos de Polonia como de Italia
  • ID=5 proporciona archivos de configuración para blancos de Australia
  • ID=7 está siendo distribuido solo en Polonia, proporcionando webinjects para blancos de Polonia
  • ID=9 parece ser otra versión de prueba, con una distribución limitada y sin un blanco específico, proporcionando un número limitado de archivos de configuración y ningún webinject

Conclusión

En 2018, vimos a DanaBot expandirse tanto en su forma de propagarse como en sus funcionalidades. Durante el inicio del 2019 se ha visto que el troyano ha sido sometido a cambios “internos”, lo cual indica un desarrollo activo por sus autores. Las últimas actualizaciones sugieren que los autores están esforzándose para evadir la detección a nivel de red, y muy posiblemente prestando atención a las investigaciones publicadas y realizando cambios para no ser detectado.

Los sistemas de ESET detectan y bloquean todos los componentes y plugins de DanaBot bajo los nombres de detección listados en la sección IoCs.

Esta investigación fue llevada adelante por Kaspars Osis, Tomáš Procházka y Michal Kolář.

Indicadores de compromiso (IoCs)

Servidores C&C utilizados 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

Webinject y servidores redirigidos

  • 47.74.249[.]106
  • 95.179.227[.]160
  • 185.158.249[.]144

Ejemplo de hashes

Nótese que desde que los nuevos componentes de DanaBot fueron lanzados de forma regular, compartimos solo una muestra de hashes.

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

Plugins

Plugin SHA-1 ESET detection name
RDPWrap 890B5473B419057F89802E0B6DA011B315F3EF94 Win32/Spy.Danabot.H
Stealer (x86) E50A03D12DDAC6EA626718286650B9BB858B2E69 Win32/Spy.Danabot.C
Stealer (x64) 9B0EC454401023DF6D3D4903735301BA669AADD1 Win64/Spy.Danabot.E
Sniffer DBFD8553C66275694FC4B32F9DF16ADEA74145E6 Win32/Spy.Danabot.B
VNC E0880DCFCB1724790DFEB7DFE01A5D54B33D80B6 Win32/Spy.Danabot.D
TOR 73A5B0BEE8C9FB4703A206608ED277A06AA1E384 Win32/Spy.Danabot.G