En esta oportunidad, analizaremos la dinámica maliciosa presente en una campaña detectada recientemente en Latinoamérica por los laboratorios de ESET (presente a nivel mundial desde hace ya un tiempo), que será utilizada como ejemplo para explicar cómo funcionan las amenazas distribuidas en distintas etapas. En este caso en particular, el objetivo principal de la misma es infectar con un ransomware el sistema de sus víctimas, y además hacer uso del mismo para el minado de criptomonedas. A partir del análisis de la campaña descubrimos algunos aspectos interesantes que compartimos a continuación.

Estructura de la campaña 

Esta campaña está compuesta por dos malware con finalidades muy marcadas: un downloader y un ransomware.

  • JS/TrojanDownloader.Nemucod.EGZ: script malicioso programado en javascript, este troyano se encarga de descargar y ejecutar otro malware. Cabe destacar que Nemucod es una familia que al menos desde el 2015 viene siendo utilizada para propagar diferentes tipos de malware.
  • Win32/Kryptik.GJFG: también conocido como Troldesh, se trata de un ransomware para sistemas Windows de 32bits, encargado de cifrar los archivos del usuario, pedir un rescate a cambio de ellos y minar criptomonedas simultáneamente.

Dinámica de la campaña

Mediante técnicas de ingeniería social combinadas con el envío de spam, los operadores detrás de esta campaña buscan que la víctima ejecute el código javascript. Una vez ejecutado, el script descargará y lanzará el ransomware, que posteriormente realizará su actividad maliciosa. Por lo tanto, el proceso de infección está conformado por esos dos pasos bien definidos.

Al buscar información sobre estas amenazas encontramos algunos de los sitios web desde los cuales se intenta descargar el ransomware y corroboramos que la estructura de la mayoría de estas URLs es similar a la de los sitios detectados durante el análisis de la muestra maliciosa:

  • http://xxxxxmedia.nl/wp-content/themes/startright/css/font-awesome/1c.jpg
  • http://xxxkans.dk/blogs/media/1c.jpg
  • http://www.xxxtan.at/templates/siteground-j15-55/admin/1c.jpg
  • https://f.xxxke99.website/wp-content/cache/1c.jpg
  • https://xxxxertech.hu/templates/szibertech012/images/1c.jpg
  • http://xxxion.nl/ag2017/1c.jpg
  • http://xxxdmin.convshop.com/Application/Runtime/Cache/Home/1c.jpg
  • http://www.xxxion.nl/wp-content/themes/dt-the7/css/compatibility/woo-fonts/1c.jpg
  • http://xxxxximerden.de/wp-content/themes/dreamy/loop/1c.jpg
  • http://www.xxxlas.sk/wp-content/themes/Corsa/fonts/1c.jpg
  • https://xxxsa.cl/wp-content/themes/my-religion/cmsmasters-c-c/filters/1c.jpg
  • http://xxxxxxeducations.org/wp-content/themes/poseidon/css/genericons/1c.jpg

Un factor común entre todas las URLs es que el objeto apuntado se llama 1c.jpg. Lo interesante de esto es el formato con el cual se almacenó el ransomware, ya que en lugar de ser un .exe, fue guardado como .jpg. Esto, en consistencia con las carpetas donde se lo aloja, es una clara estrategia por parte de los operadores detrás de esta campaña para que este archivo pase desapercibido a los ojos de los administradores de los sitios comprometidos y, a su vez, también puede servir para evadir otros controles de seguridad, ya que los archivos .exe suelen ser sospechosos.

Al analizar el contenido de los sitios puede apreciarse que estos no son maliciosos, sino que son sitios legítimos que fueron comprometidos. También puede observarse que todos ellos fueron desarrollados utilizando algún CMS, siendo Wordpress el más utilizado. Tiene sentido que se apunte a comprometer este tipo de sitios ya que los CMS no siempre son actualizados por sus administradores y, al ser estos sometidos a muchos análisis de vulnerabilidades dado su uso masivo, suelen existir muchos exploits disponibles para versiones antiguas de los mismos. A partir de esto puede llegarse a la conclusión de que los cibercriminales detrás de esta amenaza están apuntando a comprometer sitios web legítimos con el fin de alojar allí su ransomware y utilizarlos como una pieza más en la mecánica de sus campañas maliciosas.

Imagen 1: esquema de la dinámica general de la amenaza analizada

Con el fin de comprender en mayor profundidad los detalles y comportamientos de los códigos maliciosos involucrados en esta campaña (Nemucod y Troldesh), a continuación se presentará un análisis particular para cada una de ellas.

Análisis del downloader Nemucod (variante EGZ)

Como se explicó anteriormente, este downloader está escrito en javascript y su objetivo es descargar y ejecutar otro malware, en este caso, el ransomware Troldesh. Por lo tanto, dado que nuestro interés es conocer cómo se realiza dicha actividad maliciosa, será necesario analizar el código de la misma.

Al abrir el archivo .js se observa un código difícil de leer, con strings codificadas en números hexadecimales, strings partidas almacenadas en múltiples variables y funciones que únicamente devuelven un string y tienen código inútil para confundir, en otras cosas.

Imagen 2: Código javascript levemente ofuscado

Si bien el código no se encuentra muy ofuscado, es necesario reacomodarlo un poco para facilitar su comprensión y pasar a formato ASCII todos los strings del mismo, ya que estos revelan información sobre su comportamiento. Por ejemplo, algunas de las strings encontradas que resultan importantes para el análisis son: “Scripting.FileSystemObject”, “SaveToFile”, “Write”, “cmd.exe /c”, “Wscript.Shell”, “run”.

Una vez teniendo el código en un formato más legible encontramos lo siguiente:

Nemucod comienza enviando un request HTML con un GET a la URL donde se encuentra alojado el ransomware con el fin de descargarlo. Como puede observarse en la imagen a continuación, en caso de que esta descarga fallara por algún motivo, el código cuenta con una URL de respaldo desde la cual intentará descargarlo:

Un detalle interesante es que el ransomware que se intenta descargar está alojado en los servidores comprometidos en formato .jpg, es decir, su descarga pasará desapercibida como si fuese un GET a un recurso ordinario.

Luego de que el request es respondido y se recibe el ransomware, el mismo se encuentra alojado en la memoria. Por lo tanto, el siguiente paso que realiza Nemucod es escribirlo en el sistema de la víctima mediante las siguientes instrucciones:

Aquí puede observarse que la primera acción que realiza es verificar si efectivamente el resultado del GET fue exitoso. Luego, el resto de la función se encarga de escribir el contenido recibido en un archivo. Algunas instrucciones particularmente importantes en esta función son:

Estas escriben el contenido recibido en el GET (“ResponseBody”) en un archivo que tendrá el nombre y ruta pasado como parámetro en “y1”. En este punto se cambia el formato de .jpg a .exe para que este pueda ser ejecutado fácilmente.

En este punto, Nemucod logró descargar el ransomware y escribirlo en el sistema de la víctima, por lo cual solo resta un paso: ejecutarlo. Para realizar esto utiliza el siguiente código:

Una parte fundamental de este malware es el componente ActiveXObject, el cual permite ejecutar diferentes aplicaciones en el sistema que está ejecutando el código javascript. En este caso, se lo utiliza para obtener una Shell de WScript, la cual permite ejecutar comandos directamente en el sistema. Como se puede observar en la segunda línea de la Imagen 7, se ejecuta en la Shell un comando que abre cmd.exe y hace que este ejecute el ransomware escrito previamente en la ruta contenida en la variable “y1”.

A partir de este punto el script finaliza y el ransomware comienza a ejecutar.

Es importante destacar que en todos los navegadores modernos ActiveXObject se encuentra deshabilitado por defecto dado su gran potencial malicioso. Esto quiere decir que Nemucod solo será efectivo en navegadores muy desactualizados o con parámetros de seguridad mal configurados.

Por último, hay que tener en cuenta que la muestra analizada solo contenía dos URLs desde las cuales descargaba el ransomware; sin embargo, tal como vimos al principio de este artículo, otros análisis han detectado este  ransomware alojado en al menos diez servidores más. Por lo tanto, es altamente probable que existan otras variantes de este mismo downloader que descarguen el ransomware desde las otras URLs que mencionamos anteriormente.

Análisis del ransomware Troldesh (variante detectada como Win32/Kryptik.GJFG)

Al tratarse de un ransomware, este código malicioso tiene como finalidad cifrar todos o gran parte de los archivos del sistema infectado y luego pedir un rescate a cambio de descifrarlos.

Imagen 3: fondo de pantalla de sistema infectado por el ransomware Win32/Kryptik.GJFG en el que se despliega el mensaje del atacante

Como se puede observar en la imagen, luego de cifrar los archivos en el equipo de la víctima, este ransomware cambia el fondo de pantalla y le indica al usuario que lea las instrucciones que debe seguir para recuperarlos, las cuales se encuentran en los archivos README.txt.

Como se puede apreciar en la imagen que sigue, las instrucciones que debe seguir la víctima están en ruso y en inglés:

Imagen 4: Contenido del archivo README.txt que contiene instrucciones que debe seguir la víctima del ransomware

Este mensaje contiene tres detalles interesantes: el primero es que le indica al usuario que envíe un código, el cual supuestamente es utilizado por el atacante para identificar a la víctima. El segundo es que no se pide directamente un rescate en bitcoins u otra criptomoneda, sino que se pide que el usuario se identifique a sí mismo mediante el código para poder recibir las instrucciones de rescate. El tercero es que, en caso de que la comunicación vía email fallara, se provee un método de respaldo para poder comunicarse con el atacante a través de un sitio web en la red Tor:

Imagen 5: sitio web Tor utilizado como un medio de comunicación de respaldo entre la víctima y el atacante

Es posible que la intención detrás de esta dinámica sea que el atacante tenga tiempo para analizar quien es la víctima y ajustar el monto del rescate en base a esto, cobrando mayores montos a empresas u organizaciones.

Análisis técnico de Troldesh

A continuación, se describen algunos aspectos interesantes sobre el comportamiento o las características de este ransomware.

Análisis del ejecutable 

Al analizar el ejecutable con diversas herramientas puede advertirse que el mismo fue compilado con Microsoft Visual C++ y que utiliza la API isDebuggerPresent para establecer mecanismos de protección anti debugging con el fin de dificultar su análisis. Sin embargo, no cuenta con protección anti-VM. También puede advertirse que está firmado con un certificado digital gratuito, con el objetivo de intentar esquivar controles de seguridad dando la impresión de que es un ejecutable confiable.

Las bibliotecas que importa son:

  • KERNEL32.dll
  • USER32.dll
  • GDI32.dll
  • ADVAPI32.dll
  • SHLWAPI.dll

En este punto el código malicioso presenta una particularidad, ya que dentro de los recursos del ejecutable está presente una biblioteca llamada madExcept, la cual sirve para capturar excepciones y, cuando estas ocurren, permite al usuario enviar reportes de error con información sobre las mismas al desarrollador. Por lo tanto, es muy probable que esté utilizando esta biblioteca para capturar excepciones producidas por incompatibilidades de dependencias o versiones y, en lugar de que el usuario vea estas excepciones, ocultarlas para pasar desapercibido.

Cómo logra la persistencia

El mecanismo utilizado para lograr la persistencia en el sistema no es particularmente sofisticado y consta de dos pasos:

  1. Copiarse a sí mismo a la dirección: “C:\ProgramData\Windows\” con el nombre csrss.exe
  2. Agregar una entrada al registro para que su copia se ejecute al iniciar el sistema: “HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Client Server Runtime Subsystem” con el valor: "C:\ProgramData\Windows\csrss.exe"

Actividades en el registro

Se lee el contenido de muchas entradas, especialmente las relacionadas a configuración de red del sistema operativo. Por otro lado, algunas de las entradas modificadas más interesantes son las siguientes:

  • HKCU\Software\Classes\VirtualStore\MACHINE\SOFTWARE\System32\Configuration\xi

Donde el malware escribe el código hexadecimal de 20 caracteres que el atacante le pide al usuario para que se identifique.

  • HKCU\Software\Classes\VirtualStore\MACHINE\SOFTWARE\System32\Configuration\xpk

Donde el malware escribe la clave pública RSA con la cual cifró los datos del sistema infectado. Esto es consistente con el mensaje encontrado en el sitio web Tor, tal como se puede observar en la siguiente imagen, donde se advierte al usuario que sus datos fueron cifrados con RSA-3072 y que la única forma de descifrarlos es con la clave privada que solo el atacante posee:

Imagen 6: explicación del atacante sobre el método utilizado para cifrar los archivos

  • HKCU\Control Panel\Desktop\Wallpaper

Aquí se escribe la ruta a la imagen que el malware escribe en el sistema y que posteriormente configura como fondo de pantalla: C:\Users\userName\AppData\Roaming\B06A677FB06A677F.bmp

Actividades de red

Minado de criptomonedas

Al analizar el tráfico de red generado por este malware descubrimos un paquete sin cifrar cuyo contenido tenía una estructura consistente con Stratum Mining Protocol, un protocolo para realizar pooled mining de criptomonedas. Este paquete era parte de una comunicación con la ip 172.65.200.16, la cual es reconocida como una ip relacionada a estas actividades y está presente en algunas blacklists.

Conexiones Tor

La mayoría de sus comunicaciones son realizadas a través de la red Tor y las mismas son cifradas utilizando TLSv1.2. Las direcciones IP a las que se conecta son consistentes con consultas DNS realizadas y, al buscar información sobre ellas, pudimos observar que efectivamente se trata de nodos de la red Tor y que algunas están relacionadas a actividades maliciosas.

Siguiendo este análisis, también observamos que se escriben los siguientes archivos:

  • C:\Users\userName\AppData\Local\Temp\6893A5D897\cached-certs.tmp
  • C:\Users\userName\AppData\Local\Temp\6893A5D897\cached-microdescs-concensus.tmp
  • C:\Users\userName\AppData\Local\Temp\6893A5D897\cached-microdescs.tmp
  • C:\Users\userName\AppData\Local\Temp\6893A5D897\cached-microdescs.new
  • C:\Users\userName\AppData\Local\Temp\6893A5D897\state.tmp

Estos son archivos de cache de Tor, utilizados para acelerar operaciones de conexión y otras configuraciones y los mismos revelan que la versión de Tor utilizada por este ransomware es la 0.2.5.10.

Requests HTTP

Se realizan dos request HTTP GET a los siguientes sitios:

  • whatsmyip.net
  • whatismyipaddress.com

Estos son sitios legítimos que proveen un servicio que permite al usuario conocer su IP pública, por lo que este dato podría resultar de interés para el atacante o para el desarrollo de las funciones maliciosas del ransomware, por ejemplo, para geolocalizar el ataque y así saber qué tan fuerte es la moneda del país de la víctima y cobrar un rescate acorde a ello.

Indicadores de compromiso (IoCs)

Hash (SHA-1) Detección de ESET
78652C07D2F5B0AD998E894D17E6EC616A908383 JS/TrojanDownloader.Nemucod.EGZ
AE094C72B8C774CD9E573E12500C0869ECE074AA Win32/Kryptik.GJFG

Técnicas de MITRE ATT&CK

JS/TrojanDownloader.Nemucod.EGZ

Táctica ID Nombre Descripción
Execution T1204 User Execution El usuario debe ejecutar el archivo .js
Execution T1059 Command-Line Interface Utiliza cmd para lanzar el ranswomare
Execution T1064 Scripting Utiliza WScript para lanzar cmd

Win32/Kryptik.GJFG

Táctica ID Nombre Descripción
Persistence T1060 Registry Run Keys / Startup Folder Se modifica la entrada “HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Client Server Runtime Subsystem” para persistencia
Adversary Opsec T1306 Anonymity services Utiliza Tor para proteger sus comunicaciones
Impact T1491 Defacement Modifica el fondo de pantalla cambiándolo por otro con un mensaje con instrucciones para el usuario
Impact T1486 Data Encrypted for Impact Cifra los archivos del sistema y pide un rescate en criptomonedas a cambio de descifrarlos
Impact T1496 Resource Hijacking Utiliza el sistema comprometido para minar criptomonedas