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:
- Como “actualizaciones” enviadas a víctimas existentes del troyano DanaBot.
- 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.
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.
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.
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.
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.
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 |