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 |