De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

Antecedentes

Hace poco descubrimos una nueva familia de puertas traseras multiplataforma para equipos de escritorio. Primero encontramos la variante de Linux y la información de su binario nos ayudó a conseguir la variante para los equipos de escritorio de Windows. Es más, la versión de Windows también estaba equipada con una firma válida para códigos. Analicemos ambas variantes.

DropboxCache, también conocido como Backdoor.Linux.Mokes.a

Esta puerta trasera para los sistemas operativos Linux viene empaquetada con UPX y equipada con muchas características para vigilar a sus víctimas, incluyendo códigos para capturar audios y hacer capturas de pantalla.

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

Después de su primera ejecución, el código binario revisa su propia ruta y, de ser necesario, se copia a sí mismo en alguna de las siguientes ubicaciones:

  • $HOME/$QT-GenericDataLocation/.mozilla/firefox/profiled
  • $HOME/$QT-GenericDataLocation/.dropbox/DropboxCache

Por ejemplo, esta ubicación: $HOME/.local/share/.dropbox/DropboxCache. Para mantenerse en el sistema, emplea un método muy poco discreto: crea un archivo .desktop en $HOME/.config/autostart/$filename.desktop. Esta es la plantilla que usa:

Dropbox_terminal_sp_2

Después, se conecta con el servidor C&C que tiene incluido en el código. De aquí en adelante, realiza una solicitud http cada minuto:

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

Esta solicitud periódica responde con una imagen de un byte. Para subir y recibir los datos y comandos, se conecta al puerto TCP433 usando un protocolo personalizado y cifrado AES. El binario incluye las siguientes llaves públicas integradas en el código:

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

Después, el programa malicioso recolecta la información de las capturas de teclado, de audio y de pantalla en /tmp/. A continuación, sube los datos recolectados al servidor C&C.

  • /tmp/ss0-DDMMyy-HHmmss-nnn.sst (Capturas de pantalla, JPEG, cada 30 seg.)
  • /tmp/aa0-DDMMyy-HHmmss-nnn.aat (Capturas de audio, WAV)
  • /tmp/kk0-DDMMyy-HHmmss-nnn.kkt (Llaves de registro)
  • /tmp/dd0-DDMMyy-HHmmss-nnn.ddt (Datos Arbitrarios)

DDMMyy = fecha: 280116 = 2016-01-28
HHmmss = hora: 154411 = 15:44:11
nnn = milisegundos.

Dropbox_terminal_sp_5

Esta parte del código permite capturar el audio del equipo de la víctima

Pero ni la captura de audio ni la de pantalla están activadas en el temporizador de eventos de este binario. Como los autores vincularon de manera estática libqt, xkbcommon (la biblioteca para administrar las descripciones de las capturas de teclado) y OpenSSL (1.0.2c) en el binario, su peso supera los 13MB. Los criminales tampoco se esforzaron por ofuscar el binario. Es más, contiene casi todos los símbolos, lo que resulta muy útil para analizarlo.

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

También hay referencias a los archivos fuente del autor:

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

Nombres de ficheros de los códigos fuente de Backdoor.Linux.Mokes.a

Al parecer, está escrito en C++ y Qt, un marco de aplicaciones multiplataforma. Los metadatos del binario indican que se compiló usando “GCC 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04)” en Ubuntu 14.04 LTS “Trusty Tahr”. La marca de tiempo qt_instdate indica que las fuentes Qt se configuraron por última vez el 26-09-2015 (qt/qtbase.git: obsoleto), lo que implica que la hora de compilación del malware no pasa de finales de septiembre de 2015.

Detectamos este tipo de malware como Backdoor.Linux.Mokes.a.

OLMyJuxM.exe, también conocido como Backdoor.Win32.Mokes.imv

Hace algunos días nos cruzamos con una muestra que se nos hacía conocida, aunque estaba compilada para equipos con Microsoft Windows. No tardamos en darnos cuenta de que era una variante de Backdoor.Linux.Mokes.a para Windows de 32 bits.

Después de ejecutarse, el programa malicioso elige una de las nueve ubicaciones diferentes en %AppData% para instalarse a sí mismo con la intención de mantenerse en el equipo el mayor tiempo posible. El binario también crea un fichero “versión” en la misma carpeta. Como su nombre indica, allí se almacena sólo la información de la versión y la ruta completa de instalación del programa malicioso:

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

Después, se crean las llaves de registro correspondientes en HKCU\Software\Microsoft\Windows\CurrentVersion\Run para asegurar la persistencia en el sistema.

Cuando el malware ejecuta su propia copia en la nueva ubicación, el API SetWindowsHook se utiliza para establecer una funcionalidad de capturador de teclado, registrar las acciones del cursor y los mensajes internos publicados en la lista de espera de mensajes.

La siguiente etapa de la operación consiste en ponerse en contacto con el servidor C&C integrado en el código. Tienen comportamientos idénticos, sus únicas diferencias están en las direcciones IP y llaves de cifrado.

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

Esta variante se implementa con algunas diferencias e intenta conseguir la cadena predeterminada de agente de usuario de Windows.

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

Si no lo logra, utiliza su versión integrada en el código:

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

Se conecta con su servidor C&C de la misma manera que su variante de Linux: cada minuto envía una señal periódica mediante HTTP (GET /v1). Para recibir los comandos o subir o bajar recursos adicionales, utiliza el Puerto TCP 433.

Utiliza plantillas de nombres de archivo que son casi iguales para guardar las capturas de pantalla, de audio, de teclado y otros datos arbitrarios. El capturador de teclado de este ejemplar está activo, a diferencia de su variante de Linux. Abajo puedes ver un fichero de registro de las teclas que se pulsaron, ubicadas en %TEMP% y creadas por esta variante:

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

Otra vez encontramos códigos inesperados. La siguiente captura de pantalla muestra referencias a códigos que pueden capturar imágenes de una cámara conectada, como una cámara web integrada.

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

Tal como en la versión de Linux, el autor dejó algunas cadenas de caracteres sospechosas en el binario. La siguiente cadena tiene una honestidad sorprendente:

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

Desde el punto de vista del criminal, es importante que el programa parezca legítimo y que Windows no pida al usuario una confirmación para ejecutar programas desconocidos. En Windows, esto se logra con certificados para autentificar códigos de confianza. En este caso en particular, el criminal firmó el binario con un certificado de confianza de “COMODO RSA Code Signing CA”.

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

Detectamos este tipo de malware como Backdoor.Win32.Mokes.imv.

Predicciones

Como este programa se diseñó para ser independiente de las plataformas, no nos sorprendería ver ejemplares para Mac OS X en el futuro.

Actualización

(01-02-2016 10:45 UTC): Acabamos de recibir Backdoor.Win32.Mokes.imw. Es la primera vez que vemos una variante de Mokes que viene con el módulo de captura de audio activado. El programa malicioso crea un nuevo archivo de audio cada 5 minutos.

De Linux a Windows: se descubre una nueva familia de puertas traseras multiplataforma para equipos de escritorio

IOCs

Backdoor.Linux.Mokes.a

c9e0e5e2aeaecb232120e8573e97a6b8

$HOME/$QT-GenericDataLocation/.mozilla/firefox/profiled
$HOME/$QT-GenericDataLocation/.dropbox/DropboxCache
$HOME/.config/autostart/profiled.desktop
$HOME/.config/autostart/DropboxCache.desktop

/tmp/ss0-$date-$time-$ms.sst

Backdoor.Win32.Mokes.imv & .imw

f2407fd12ec0d4f3e82484c027c7d149 (imw)
91099aa413722d22aa50f85794ee386e (imv)

%AppData%\Skype\SkypeHelper.exe
%AppData%\Skype\version
%AppData%\Dropbox\bin\DropboxHelper.exe
%AppData%\Dropbox\bin\version
%AppData%\Google\Chrome\nacl32.exe
%AppData%\Google\Chrome\version
%AppData%\Google\Chrome\nacl64.exe
%AppData%\Google\Chrome\version
%AppData%\Mozilla\Firefox\mozillacache.exe
%AppData%\Mozilla\Firefox\version
%AppData%\Hewlett-Packard\hpqcore.exe
%AppData%\Hewlett-Packard\version
%AppData%\Hewlett-Packard\hpprint.exe
%AppData%\Hewlett-Packard\version
%AppData%\Hewlett-Packard\hpscan.exe
%AppData%\Hewlett-Packard\version
%AppData%\Adobe\Acrobat\AcroBroker.exe
%AppData%\Adobe\Acrobat\version

%TEMP%\aa$n-$date-$time-$ms.aat (imw)
Donde $n es un valor hash decimal calculado a partir del nombre de la tarjeta de sonido

/tmp/ss0-$date-$time-$ms.sst
/tmp/ss0-$date-$time-$ms.sst
%TEMP%\kk$date.kkt

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run “%PERSISTENT-FILENAME%”, “%PERSISTENT-FILEPATH%”

Donde %PERSISTENT-FILENAME% es uno de los nombres de fichero de arriba
y %PERSISTENT-FILEPATH% es la ruta correspondiente

Publicaciones relacionadas

Deja un comentario

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