Otro día, otro ataque JavaScript del lado del cliente de alto perfil. Esta mañana, leímos que Cisco es la próxima víctima de código malicioso que se está cargando a través de un script de terceros.
El sitio web Cisco Merchant opera en el framework Magento Enterprise, que es ampliamente utilizado por sitios web de comercio electrónico. Magento ofrece una plataforma robusta y escalable, pero como cualquier sistema, es vulnerable a la explotación si no se aplican parches de seguridad y actualizaciones de manera oportuna. La versión exacta de Magento en uso al momento del ataque era Magento 2.4 (Enterprise).

Los ataques dirigidos a los frameworks de Magento han obtenido con el tiempo su propio apodo: ataques Magecart.
Los atacantes utilizan un script de terceros que inserta código malicioso, a menudo a través de un dominio, para robar información de tarjetas de crédito y datos personales. Los sitios de comercio electrónico son frecuentemente un objetivo en estos ataques.
Para obtener información más detallada sobre vulnerabilidades relacionadas con Magento, consulta estos enlaces:
El script malicioso decodificado
Durante nuestro análisis, descubrimos el siguiente script inyectado en el sitio web:

Este script, alojado en el dominio
rextension[.]net/za/, que está asociado con una dirección IP ubicada en Rusia (82.202.163.229), se encontró que estaba recuperando código ofuscado adicional. El dominio fue registrado recientemente el 30 de agosto de 2024, lo que lo hace tener solo 7 días de antigüedad al momento de nuestro análisis el 6 de septiembre de 2024.


Por qué esto importa
- El registro reciente del dominio levanta señales de alerta ya que podría indicar una operación efímera diseñada para una explotación rápida antes de ser abandonada.
- Scripts ofuscados como estos son difíciles de detectar sin monitoreo especializado, lo que los hace especialmente peligrosos tanto para los propietarios de sitios web como para sus clientes.
Cómo cside habría detenido este ataque
Si el sitio web de Cisco Merchant hubiera tenido cside implementado, nuestro motor de detección habría detectado este ataque. Uno de nuestros sistemas verifica dominios recién registrados, y en las pruebas nuestro motor detectó esto y alertó al usuario de esta anomalía. El script en sí fue bloqueado de cargarse en el navegador del usuario de prueba, deteniendo este ataque antes de que pudiera ocurrir. Aquí se puede ver cuándo se registró este dominio (enlace seguro).
Regístrate gratis y protege tu sitio en segundos.
Desofuscando el script paso a paso
El script recuperado estaba altamente ofuscado, lo que dificultaba su análisis. A continuación se muestra solo una porción del código ofuscado:

El script anterior es JavaScript ofuscado en múltiples capas, que fue cargado en un depurador.
La ofuscación es un método utilizado para hacer que el código sea difícil de entender, típicamente como un medio para ocultar su funcionalidad o proteger datos sensibles. Sin embargo, para analistas, desarrolladores o investigadores de seguridad, comprender la funcionalidad subyacente es esencial y legal.
Colocamos un punto de interrupción en:

Y ejecutamos el script y, después de un par de decodificaciones, obtuvimos dos JavaScripts decodificados intermedios.
El primer nivel de ofuscación es una función que toma un argumento (decodificado justo antes del script) y lo transforma usando varios métodos de JavaScript, como manipulación de cadenas y codificación de caracteres.

Una mirada más cercana revelará:

La versión final decodificada:
Este fragmento confirma que el script está enfocado en campos de tarjetas de pago, pero todavía está parcialmente ofuscado, con funciones como _0xDCAD y _0xDBA3. Estas funciones manipulan aún más el contenido, y después de más capas de decodificación, emerge el script final.


Aspectos clave del script
- Ofuscación: El script está fuertemente ofuscado, usando funciones como _0xDCAD, _0xDBB6, _0xDBC9 para crear múltiples niveles de codificación y ofuscación. Esto es típico de malware o scripts que intentan ocultar su funcionalidad real.
- Recopilación de Datos: El script recopila información de elementos de entrada HTML identificados por selectores CSS como #authnetcim-cc-number, #authnetcim-cc-exp-month, #authnetcim-cc-exp-year, y #authnetcim-cc-cid. Estos son típicamente campos donde los usuarios ingresarían información de pago sensible.
- Manejo de Datos:- Los datos recopilados (número de tarjeta de crédito, fecha de vencimiento, CVV, etc.) se reúnen en el objeto ffewq.
- El script luego encripta esta información usando encriptación AES (a través de funciones como encrypt, decrypt, round, etc.).
- Una vez encriptados, los datos se envían a un servidor usando llamadas jQuery.ajax() (vistas en la sección jQuery[_0xDB90[51]]).
- Encriptación: El script usa AES (Advanced Encryption Standard) para asegurar los datos antes de enviarlos. Esto incluye varias funciones que manejan la lógica de encriptación AES (addRoundKey, mixColumns, encrypt, etc.), que son componentes estándar en un proceso de encriptación AES.
- Ejecución Periódica: El script está diseñado para ejecutarse a intervalos regulares (setInterval(_0xDBA3, 100);) para verificar o enviar continuamente los datos recopilados.
Ten en cuenta que el panel de cside hace este proceso por ti, desofuscando scripts para hacerlos más fáciles de leer y analizar.

Qué sucedió en este ataque
Una de las posibles vulnerabilidades que pudo haber sido explotada en este ataque se conoce como CosmicSting. Esta es una explotación conocida en la plataforma Magento que ha sido documentada e investigada. Puedes leer más sobre ella en detalle en Investigación de SanSec sobre CosmicSting.
Los ataques del lado del cliente como este pueden ser devastadores tanto para las empresas como para los clientes, destacando la importancia de la vigilancia constante y la implementación de medidas de seguridad sofisticadas. Las empresas deben asegurarse de aplicar parches, monitorear actividad sospechosa y utilizar herramientas avanzadas como las que ofrece cside para mitigar riesgos.




