Cuatro detectores de JavaScript que lo atrapan en las tiendas en línea



Casi todos utilizamos los servicios de tiendas en línea, lo que significa que tarde o temprano se arriesga a ser víctima de rastreadores de JavaScript, un código especial que los ciberdelincuentes inyectan en el sitio para robar información de tarjetas bancarias, direcciones, inicios de sesión y contraseñas de usuario.

Casi 400,000 usuarios del sitio web y la aplicación móvil de la aerolínea British Airways, así como los visitantes del sitio web británico del gigante deportivo FILA y el distribuidor estadounidense de boletos Ticketmaster, ya han sido afectados por los rastreadores.

El analista de Threat Intelligence Group-IB, Viktor Okorokov, habla sobre cómo los rastreadores están integrados en el código del sitio y roban información de facturación, así como a qué CRM atacan.



La amenaza fantasma


Resultó que durante mucho tiempo los detectores de JS permanecieron fuera de la vista de los analistas de antivirus, y los bancos y los sistemas de pago no vieron una amenaza grave en ellos. Y completamente en vano. Los expertos del Grupo IB analizaron 2.440 tiendas en línea infectadas cuyos visitantes, alrededor de 1,5 millones de personas al día, corrían el riesgo de comprometerse. Entre las víctimas se encuentran no solo usuarios, sino también tiendas en línea, sistemas de pago y bancos que emitieron tarjetas comprometidas.

El informe del Grupo IB fue el primer estudio del mercado de redes oscuras para los rastreadores, su infraestructura y las formas de monetizar, lo que les valió a sus creadores millones de dólares. Identificamos 38 familias de rastreadores, de los cuales solo 12 eran previamente conocidos por los investigadores.

Detengámonos en detalle en las cuatro familias de rastreadores estudiados durante el estudio.

ReactGet Family


Los rastreadores familiares ReactGet se utilizan para robar datos de tarjetas bancarias en sitios de tiendas en línea. Un sniffer puede funcionar con una gran cantidad de sistemas de pago diferentes utilizados en el sitio: un valor de parámetro corresponde a un sistema de pago, y las versiones individuales de sniffer detectadas pueden usarse para robar credenciales, así como para robar datos de tarjetas bancarias de formas de pago de varios sistemas de pago a la vez, como el llamado sniffer universal. Se descubrió que, en algunos casos, los atacantes realizan ataques de phishing a los administradores de tiendas en línea para obtener acceso al panel administrativo del sitio.

La campaña con esta familia de rastreadores comenzó en mayo de 2017, los sitios bajo el control de CMS y las plataformas Magento, Bigcommerce y Shopify fueron atacados.

Cómo se integra ReactGet en el código de la tienda en línea


Además de la implementación “clásica” de un script por referencia, la familia de sniffers ReactGet utiliza una técnica especial: mediante el código JavaScript, verifica si la dirección actual donde se encuentra el usuario cumple con ciertos criterios. El código malicioso solo se iniciará si la URL actual contiene el pago y envío de subcadenas o oneestepcheckout , onepage / , out / onepag , checkout / one , ckout / one . Por lo tanto, el código sniffer se ejecutará exactamente en el momento en que el usuario proceda a pagar las compras e ingrese la información de pago en el formulario del sitio.


Este sniffer utiliza una técnica no estándar. El pago y los datos personales de la víctima se recopilan juntos, se codifican con base64 , y luego la cadena resultante se usa como parámetro para enviar una solicitud al sitio de los atacantes. Muy a menudo, la ruta a la puerta simula un archivo JavaScript, por ejemplo, resp.js , data.js , etc., pero también se utilizan enlaces a archivos de imagen, GIF y JPG . La peculiaridad es que el sniffer crea un objeto de imagen con un tamaño de 1 por 1 píxel y utiliza el enlace obtenido previamente como parámetro src de la imagen. Es decir, para el usuario, dicha solicitud en el tráfico se verá como una solicitud de una imagen normal. Una técnica similar se utilizó en los rastreadores de la familia ImageID. Además, la técnica de usar una imagen de 1 por 1 píxel se usa en muchos scripts de análisis en línea legítimos, que también pueden confundir al usuario.


Análisis de versiones


Un análisis de los dominios activos utilizados por los operadores sniffer ReactGet reveló muchas versiones diferentes de la familia sniffer. Las versiones difieren en la presencia o ausencia de ofuscación, y además, cada sniffer está diseñado para un sistema de pago específico que procesa los pagos con tarjeta bancaria para las tiendas en línea. Después de ordenar el valor del parámetro correspondiente al número de versión, los especialistas del Grupo IB obtuvieron una lista completa de variaciones de sniffer disponibles, y por los nombres de los campos de formulario que cada sniffer busca en el código de página, determinaron los sistemas de pago a los que aspira el sniffer.

Lista de rastreadores y sus correspondientes sistemas de pago.
Sniffer url
Sistema de pago
reactjsapi.com/react.jsAuthorize.Net
ajaxstatic.com/api.js?v=2.1.1Cardsards
ajaxstatic.com/api.js?v=2.1.2Authorize.Net
ajaxstatic.com/api.js?v=2.1.3Authorize.Net
ajaxstatic.com/api.js?v=2.1.4eWAY Rapid
ajaxstatic.com/api.js?v=2.1.5Authorize.Net
ajaxstatic.com/api.js?v=2.1.6Adyen
ajaxstatic.com/api.js?v=2.1.7USAePay
ajaxstatic.com/api.js?v=2.1.9Authorize.Net
apitstatus.com/api.js?v=2.1.1USAePay
apitstatus.com/api.js?v=2.1.2Authorize.Net
apitstatus.com/api.js?v=2.1.3Moneris
apitstatus.com/api.js?v=2.1.5USAePay
apitstatus.com/api.js?v=2.1.6Paypal
apitstatus.com/api.js?v=2.1.7Pago sabio
apitstatus.com/api.js?v=2.1.8Verisign
apitstatus.com/api.js?v=2.1.9Paypal
apitstatus.com/api.js?v=2.3.0Raya
apitstatus.com/api.js?v=3.0.2Realex
apitstatus.com/api.js?v=3.0.3Paypal
apitstatus.com/api.js?v=3.0.4Punto de enlace
apitstatus.com/api.js?v=3.0.5Paypal
apitstatus.com/api.js?v=3.0.7Paypal
apitstatus.com/api.js?v=3.0.8Datacash
apitstatus.com/api.js?v=3.0.9Paypal
asianfoodgracer.com/footer.jsAuthorize.Net
billgetstatus.com/api.js?v=1.2Authorize.Net
billgetstatus.com/api.js?v=1.3Authorize.Net
billgetstatus.com/api.js?v=1.4Authorize.Net
billgetstatus.com/api.js?v=1.5Verisign
billgetstatus.com/api.js?v=1.6Authorize.Net
billgetstatus.com/api.js?v=1.7Moneris
billgetstatus.com/api.js?v=1.8Pago sabio
billgetstatus.com/api.js?v=2.0USAePay
billgetstatus.com/react.jsAuthorize.Net
cloudodesc.com/gtm.js?v=1.2Authorize.Net
cloudodesc.com/gtm.js?v=1.3ANZ eGate
cloudodesc.com/gtm.js?v=2.3Authorize.Net
cloudodesc.com/gtm.js?v=2.4Moneris
cloudodesc.com/gtm.js?v=2.6
Pago sabio
cloudodesc.com/gtm.js?v=2.7Pago sabio
cloudodesc.com/gtm.js?v=2.8Chase Paymentech
cloudodesc.com/gtm.js?v=2.9Authorize.Net
cloudodesc.com/gtm.js?v=2.91Adyen
cloudodesc.com/gtm.js?v=2.92Psigate
cloudodesc.com/gtm.js?v=2.93Fuente cibernética
cloudodesc.com/gtm.js?v=2.95ANZ eGate
cloudodesc.com/gtm.js?v=2.97Realex
geisseie.com/gs.jsUSAePay
gtmproc.com/age.jsAuthorize.Net
gtmproc.com/gtm.js?v=1.2Authorize.Net
gtmproc.com/gtm.js?v=1.3ANZ eGate
gtmproc.com/gtm.js?v=1.5Paypal
gtmproc.com/gtm.js?v=1.6Paypal
gtmproc.com/gtm.js?v=1.7Realex
livecheckpay.com/api.js?v=2.0Pago sabio
livecheckpay.com/api.js?v=2.1Paypal
livecheckpay.com/api.js?v=2.2Verisign
livecheckpay.com/api.js?v=2.3Authorize.Net
livecheckpay.com/api.js?v=2.4Verisign
livecheckpay.com/react.jsAuthorize.Net
livegetpay.com/pay.js?v=2.1.2ANZ eGate
livegetpay.com/pay.js?v=2.1.3Paypal
livegetpay.com/pay.js?v=2.1.5Fuente cibernética
livegetpay.com/pay.js?v=2.1.7Authorize.Net
livegetpay.com/pay.js?v=2.1.8Pago sabio
livegetpay.com/pay.js?v=2.1.9Realex
livegetpay.com/pay.js?v=2.2.0Fuente cibernética
livegetpay.com/pay.js?v=2.2.1Paypal
livegetpay.com/pay.js?v=2.2.2Paypal
livegetpay.com/pay.js?v=2.2.3Paypal
livegetpay.com/pay.js?v=2.2.4Verisign
livegetpay.com/pay.js?v=2.2.5eWAY Rapid
livegetpay.com/pay.js?v=2.2.7Pago sabio
livegetpay.com/pay.js?v=2.2.8Pago sabio
livegetpay.com/pay.js?v=2.2.9Verisign
livegetpay.com/pay.js?v=2.3.0Authorize.Net
livegetpay.com/pay.js?v=2.3.1Authorize.Net
livegetpay.com/pay.js?v=2.3.2Primer portal global de datos
livegetpay.com/pay.js?v=2.3.3Authorize.Net
livegetpay.com/pay.js?v=2.3.4Authorize.Net
livegetpay.com/pay.js?v=2.3.5Moneris
livegetpay.com/pay.js?v=2.3.6Authorize.Net
livegetpay.com/pay.js?v=2.3.8Paypal
livegetpay.com/pay.js?v=2.4.0Verisign
maxstatics.com/site.jsUSAePay
mediapack.info/track.js?d=funlove.comUSAePay
mediapack.info/track.js?d=qbedding.comAuthorize.Net
mediapack.info/track.js?d=vseyewear.comVerisign
mxcounter.com/c.js?v=1.2Paypal
mxcounter.com/c.js?v=1.3Authorize.Net
mxcounter.com/c.js?v=1.4Raya
mxcounter.com/c.js?v=1.6Authorize.Net
mxcounter.com/c.js?v=1.7eWAY Rapid
mxcounter.com/c.js?v=1.8Pago sabio
mxcounter.com/c.js?v=2.0Authorize.Net
mxcounter.com/c.js?v=2.1Braintree
mxcounter.com/c.js?v=2.10Braintree
mxcounter.com/c.js?v=2.2Paypal
mxcounter.com/c.js?v=2.3Pago sabio
mxcounter.com/c.js?v=2.31Pago sabio
mxcounter.com/c.js?v=2.32Authorize.Net
mxcounter.com/c.js?v=2.33Paypal
mxcounter.com/c.js?v=2.34Authorize.Net
mxcounter.com/c.js?v=2.35Verisign
mxcounter.com/click.js?v=1.2Paypal
mxcounter.com/click.js?v=1.3Authorize.Net
mxcounter.com/click.js?v=1.4Raya
mxcounter.com/click.js?v=1.6Authorize.Net
mxcounter.com/click.js?v=1.7eWAY Rapid
mxcounter.com/click.js?v=1.8Pago sabio
mxcounter.com/click.js?v=2.0Authorize.Net
mxcounter.com/click.js?v=2.1Braintree
mxcounter.com/click.js?v=2.2Paypal
mxcounter.com/click.js?v=2.3Pago sabio
mxcounter.com/click.js?v=2.31Pago sabio
mxcounter.com/click.js?v=2.32Authorize.Net
mxcounter.com/click.js?v=2.33Paypal
mxcounter.com/click.js?v=2.34Authorize.Net
mxcounter.com/click.js?v=2.35Verisign
mxcounter.com/cnt.jsAuthorize.Net
mxcounter.com/j.jsAuthorize.Net
newrelicnet.com/api.js?v=1.2Authorize.Net
newrelicnet.com/api.js?v=1.4Authorize.Net
newrelicnet.com/api.js?v=1.8Pago sabio
newrelicnet.com/api.js?v=4.5Pago sabio
newrelicnet.com/api.js?v=4.6Payway Westpac
nr-public.com/api.js?v=2.0Payfort
nr-public.com/api.js?v=2.1Paypal
nr-public.com/api.js?v=2.2Authorize.Net
nr-public.com/api.js?v=2.3Raya
nr-public.com/api.js?v=2.4Primer portal global de datos
nr-public.com/api.js?v=2.5Psigate
nr-public.com/api.js?v=2.6Authorize.Net
nr-public.com/api.js?v=2.7Authorize.Net
nr-public.com/api.js?v=2.8Moneris
nr-public.com/api.js?v=2.9Authorize.Net
nr-public.com/api.js?v=3.1Pago sabio
nr-public.com/api.js?v=3.2Verisign
nr-public.com/api.js?v=3.3Moneris
nr-public.com/api.js?v=3.5Paypal
nr-public.com/api.js?v=3.6Punto de enlace
nr-public.com/api.js?v=3.7Payway Westpac
nr-public.com/api.js?v=3.8Authorize.Net
nr-public.com/api.js?v=4.0Moneris
nr-public.com/api.js?v=4.0.2Paypal
nr-public.com/api.js?v=4.0.3Adyen
nr-public.com/api.js?v=4.0.4Paypal
nr-public.com/api.js?v=4.0.5Authorize.Net
nr-public.com/api.js?v=4.0.6USAePay
nr-public.com/api.js?v=4.0.7EBizCharge
nr-public.com/api.js?v=4.0.8Authorize.Net
nr-public.com/api.js?v=4.0.9Verisign
nr-public.com/api.js?v=4.1.2Verisign
ordercheckpays.com/api.js?v=2.11Authorize.Net
ordercheckpays.com/api.js?v=2.12Paypal
ordercheckpays.com/api.js?v=2.13Moneris
ordercheckpays.com/api.js?v=2.14Authorize.Net
ordercheckpays.com/api.js?v=2.15Paypal
ordercheckpays.com/api.js?v=2.16Paypal
ordercheckpays.com/api.js?v=2.17Payway Westpac
ordercheckpays.com/api.js?v=2.18Authorize.Net
ordercheckpays.com/api.js?v=2.19Authorize.Net
ordercheckpays.com/api.js?v=2.21Pago sabio
ordercheckpays.com/api.js?v=2.22Verisign
ordercheckpays.com/api.js?v=2.23Authorize.Net
ordercheckpays.com/api.js?v=2.24Paypal
ordercheckpays.com/api.js?v=2.25Payfort
ordercheckpays.com/api.js?v=2.29Fuente cibernética
ordercheckpays.com/api.js?v=2.4PayPal Payflow Pro
ordercheckpays.com/api.js?v=2.7Authorize.Net
ordercheckpays.com/api.js?v=2.8Authorize.Net
ordercheckpays.com/api.js?v=2.9Verisign
ordercheckpays.com/api.js?v=3.1Authorize.Net
ordercheckpays.com/api.js?v=3.2Authorize.Net
ordercheckpays.com/api.js?v=3.3Pago sabio
ordercheckpays.com/api.js?v=3.4Authorize.Net
ordercheckpays.com/api.js?v=3.5Raya
ordercheckpays.com/api.js?v=3.6Authorize.Net
ordercheckpays.com/api.js?v=3.7Authorize.Net
ordercheckpays.com/api.js?v=3.8Verisign
ordercheckpays.com/api.js?v=3.9Paypal
ordercheckpays.com/api.js?v=4.0Authorize.Net
ordercheckpays.com/api.js?v=4.1Authorize.Net
ordercheckpays.com/api.js?v=4.2Pago sabio
ordercheckpays.com/api.js?v=4.3Authorize.Net
reactjsapi.com/api.js?v=0.1.0Authorize.Net
reactjsapi.com/api.js?v=0.1.1Paypal
reactjsapi.com/api.js?v=4.1.2Pedernal
reactjsapi.com/api.js?v=4.1.4Paypal
reactjsapi.com/api.js?v=4.1.5Pago sabio
reactjsapi.com/api.js?v=4.1.51Verisign
reactjsapi.com/api.js?v=4.1.6Authorize.Net
reactjsapi.com/api.js?v=4.1.7Authorize.Net
reactjsapi.com/api.js?v=4.1.8Raya
reactjsapi.com/api.js?v=4.1.9Cebra gorda
reactjsapi.com/api.js?v=4.2.0Pago sabio
reactjsapi.com/api.js?v=4.2.1Authorize.Net
reactjsapi.com/api.js?v=4.2.2Primer portal global de datos
reactjsapi.com/api.js?v=4.2.3Authorize.Net
reactjsapi.com/api.js?v=4.2.4eWAY Rapid
reactjsapi.com/api.js?v=4.2.5Adyen
reactjsapi.com/api.js?v=4.2.7Paypal
reactjsapi.com/api.js?v=4.2.8Servicios de comerciantes de QuickBooks
reactjsapi.com/api.js?v=4.2.9Verisign
reactjsapi.com/api.js?v=4.2.91Pago sabio
reactjsapi.com/api.js?v=4.2.92Verisign
reactjsapi.com/api.js?v=4.2.94Authorize.Net
reactjsapi.com/api.js?v=4.3.97Authorize.Net
reactjsapi.com/api.js?v=4.5Pago sabio
reactjsapi.com/react.jsAuthorize.Net
sydneysalonsupplies.com/gtm.jseWAY Rapid
tagsmediaget.com/react.jsAuthorize.Net
tagstracking.com/tag.js?v=2.1.2ANZ eGate
tagstracking.com/tag.js?v=2.1.3Paypal
tagstracking.com/tag.js?v=2.1.5Fuente cibernética
tagstracking.com/tag.js?v=2.1.7Authorize.Net
tagstracking.com/tag.js?v=2.1.8Pago sabio
tagstracking.com/tag.js?v=2.1.9Realex
tagstracking.com/tag.js?v=2.2.0Fuente cibernética
tagstracking.com/tag.js?v=2.2.1Paypal
tagstracking.com/tag.js?v=2.2.2Paypal
tagstracking.com/tag.js?v=2.2.3Paypal
tagstracking.com/tag.js?v=2.2.4Verisign
tagstracking.com/tag.js?v=2.2.5eWAY Rapid
tagstracking.com/tag.js?v=2.2.7Pago sabio
tagstracking.com/tag.js?v=2.2.8Pago sabio
tagstracking.com/tag.js?v=2.2.9
Verisign
tagstracking.com/tag.js?v=2.3.0Authorize.Net
tagstracking.com/tag.js?v=2.3.1Authorize.Net
tagstracking.com/tag.js?v=2.3.2Primer portal global de datos
tagstracking.com/tag.js?v=2.3.3Authorize.Net
tagstracking.com/tag.js?v=2.3.4Authorize.Net
tagstracking.com/tag.js?v=2.3.5Moneris
tagstracking.com/tag.js?v=2.3.6Authorize.Net
tagstracking.com/tag.js?v=2.3.8Paypal


Sniffer de contraseña


Una de las ventajas de los rastreadores de JavaScript que funcionan en el lado del cliente del sitio es su versatilidad: el código malicioso incrustado en el sitio puede robar cualquier tipo de datos, ya sean datos de pago o el nombre de usuario y la contraseña de una cuenta de usuario. Los especialistas del Grupo IB descubrieron una muestra de un sniffer perteneciente a la familia ReactGet, diseñado para robar direcciones de correo electrónico y contraseñas de los usuarios del sitio.


Intersección con ImageID Sniffer


Un análisis de una de las tiendas infectadas reveló que su sitio estaba infectado dos veces: además del código malicioso de la familia sniffer ReactGet, se detectó un código sniffer de la familia ImageID. Esta intersección puede indicar que los operadores detrás del uso de ambos rastreadores utilizan técnicas similares para inyectar código malicioso.


Sniffer universal


Un análisis de uno de los nombres de dominio relacionados con la infraestructura sniffer ReactGet reveló que el mismo usuario había registrado otros tres nombres de dominio. Estos tres dominios simulaban dominios de sitios de la vida real y anteriormente se usaban para alojar rastreadores. Al analizar el código de tres sitios legítimos, se descubrió un sniffer desconocido, y un análisis posterior mostró que esta es una versión mejorada del sniffer ReactGet. Todas las versiones de rastreadores de esta familia con seguimiento previo tenían como objetivo un único sistema de pago, es decir, para cada sistema de pago se requería una versión especial del rastreador. Sin embargo, en este caso, se descubrió una versión universal del sniffer, capaz de robar información de formularios relacionados con 15 sistemas de pago diferentes y módulos de sitios de comercio electrónico para pagos en línea.

Entonces, al comienzo del trabajo, el rastreador buscó los campos base del formulario que contenía la información personal de la víctima: nombre completo, dirección física, número de teléfono.


Luego, el sniffer buscó más de 15 prefijos diferentes correspondientes a diferentes sistemas de pago y módulos para pagos en línea.


Además, los datos personales y la información de pago de la víctima se recopilaron y se enviaron al sitio controlado por el atacante: en este caso particular, se descubrieron dos versiones del succionador universal ReactGet ubicado en dos sitios pirateados diferentes. Sin embargo, ambas versiones enviaron los datos robados al mismo sitio pirateado zoobashop.com .


Un análisis de los prefijos utilizados por el rastreador para buscar los campos que contienen la información de pago de la víctima nos permitió determinar que este patrón rastreador estaba dirigido a los siguientes sistemas de pago:

  • Authorize.Net
  • Verisign
  • Primeros datos
  • USAePay
  • Raya
  • Paypal
  • ANZ eGate
  • Braintree
  • DataCash (MasterCard)
  • Pagos Realex
  • Psigate
  • Sistemas de pago Heartland

¿Qué herramientas se utilizan para robar información de facturación?


La primera herramienta descubierta durante el análisis de la infraestructura del atacante se utiliza para ofuscar scripts maliciosos responsables de robar tarjetas bancarias. Se descubrió un script bash en uno de los hosts atacantes utilizando la CLI javascript-ofuscador para automatizar la ofuscación del código sniffer.


La segunda herramienta detectada está diseñada para generar código responsable de cargar el sniffer principal. Esta herramienta genera un código JavaScript que verifica si el usuario está en la página de pago buscando en la dirección actual del usuario las líneas de pago , carrito, etc., y si el resultado es positivo, el código carga el sniffer principal del servidor del atacante. Para ocultar la actividad maliciosa, todas las líneas, incluidas las líneas de prueba para determinar la página de pago, así como un enlace al sniffer, se codifican con base64 .


Ataques de phishing


Al analizar la infraestructura de red de los atacantes, se descubrió que a menudo un grupo criminal usa el phishing para obtener acceso al panel administrativo de la tienda en línea de destino. Los atacantes registran un dominio que se ve visualmente similar al dominio de una tienda y luego implementan un formulario de inicio de sesión falso del panel de administración de Magento en él. Si tiene éxito, los atacantes obtendrán acceso al panel de administración de CMS Magento, que les permite editar los componentes del sitio e implementar un sniffer para robar información de la tarjeta de crédito.


La infraestructura
Dominio
Descubrimiento / Fecha de aparición
mediapack.info05/04/2017
adsgetapi.com15/06/2017
simcounter.com14/08/2017
mageanalytics.com22/12/2017
maxstatics.com16/01/2018
reactjsapi.com19/01/2018
mxcounter.com02/02/2018
apitstatus.com01/03/2018
orderracker.com20/04/2018
tagstracking.com25/06/2018
adsapigate.com07/12/2018
trust-tracker.com15/07/2018
fbstatspartner.com10/02/2018
billgetstatus.com10/12/2018
aldenmlilhouse.com20/10/2018
balletbeautlful.com20/10/2018
bargalnjunkie.com20/10/2018
payselector.com21.10.2018
tagsmediaget.com11/02/2018
hs-payments.com16/11/2018
ordercheckpays.com19/11/2018
geisseie.com24/11/2018
gtmproc.com29/11/2018
livegetpay.com18/12/2018
sydneysalonsupplies.com18/12/2018
newrelicnet.com
19/12/2018
nr-public.com01/03/2019
cloudodesc.com01/04/2019
ajaxstatic.com01/11/2019
livecheckpay.com21/01/2019
asianfoodgracer.com25/01/2019


Familia G-analytics


Esta familia de rastreadores se utiliza para robar tarjetas de clientes de tiendas en línea. El primer nombre de dominio utilizado por el grupo se registró en abril de 2016, lo que puede indicar el comienzo de la actividad del grupo a mediados de 2016.

En la campaña actual, el grupo usa nombres de dominio que imitan servicios de la vida real como Google Analytics y jQuery, enmascarando la actividad sniffer con scripts legítimos y similares a nombres de dominio legítimos. El ataque se ejecutó en sitios que ejecutan CMS Magento.

Cómo se integra G-Analytics en el código de la tienda en línea


Una característica distintiva de esta familia es el uso de varios métodos de robo de información de pago del usuario. Además de la implementación clásica del código JavaScript en la parte del cliente del sitio, el grupo criminal también utilizó la técnica de incrustar código en la parte del servidor del sitio, es decir, scripts PHP que procesan los datos ingresados ​​por el usuario. Esta técnica es peligrosa porque dificulta a los investigadores externos detectar códigos maliciosos. Los especialistas de Group-IB descubrieron una versión de un sniffer incrustado en el código PHP del sitio, utilizando el dominio dittm.org como puerta de entrada.


También se descubrió una versión anterior del sniffer, que utiliza el mismo dominio dittm.org para recopilar datos robados, pero esta versión ya está destinada a la instalación en el lado del cliente de la tienda en línea.


Más tarde, el grupo cambió sus tácticas y comenzó a prestar más atención al ocultamiento de la actividad maliciosa y al disfraz.

A principios de 2017, el grupo comenzó a usar el dominio jquery-js.com , disfrazado como CDN para jQuery: cuando redirige a un sitio de usuarios maliciosos, redirige al sitio legítimo jquery.com .

Y a mediados de 2018, el grupo adoptó el nombre de dominio g-analytics.com y comenzó a enmascarar las actividades del sniffer bajo el servicio legítimo de Google Analytics.



Análisis de versiones


Durante el análisis de los dominios utilizados para almacenar el código sniffer, se encontró que el sitio tiene una gran cantidad de versiones que difieren según la presencia de ofuscación, así como la presencia o ausencia de código inalcanzable agregado al archivo para distraer la atención y ocultar el código malicioso.

En total, se identificaron seis versiones de sniffers en jquery-js.com . Estos rastreadores envían los datos robados a la dirección ubicada en el mismo sitio que el rastreador: hxxps: // jquery-js [.] Com / latest / jquery.min.js :

  • hxxps: // jquery-js [.] com / jquery.min.js
  • hxxps: // jquery-js [.] com / jquery.2.2.4.min.js
  • hxxps: // jquery-js [.] com / jquery.1.8.3.min.js
  • hxxps: // jquery-js [.] com / jquery.1.6.4.min.js
  • hxxps: // jquery-js [.] com / jquery.1.4.4.min.js
  • hxxps: // jquery-js [.] com / jquery.1.12.4.min.js

El dominio posterior g-analytics.com , utilizado por el grupo en ataques desde mediados de 2018, sirve como depósito para un mayor número de rastreadores. Se descubrieron un total de 16 versiones de sniffer diferentes. En este caso, la puerta para enviar los datos robados se disfrazó como un enlace a una imagen GIF : hxxp: // g-analytics [.] Com / __ utm.gif? V = 1 & _v = j68 & a = 98811130 & t = pageview & _s = 1 & sd = 24-bit & sr = 2560x1440 & vp = 2145x371 & je = 0 & _u = AACAAEAB ~ & jid = 1841704724 & gjid = 877686936 & cid
= 1283183910.1527732071 :

  • hxxps: // g-analytics [.] com / libs / 1.0.1 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.10 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.11 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.12 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.13 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.14 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.15 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.16 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.3 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.4 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.5 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.6 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.7 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.8 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.9 / analytics.js
  • hxxps: // g-analytics [.] com / libs / analytics.js



, , . , , , google-analytics.cm , cardz.vc . cardz.vc Cardsurfs (Flysurfs), AlphaBay , .


analytic.is , , , , Group-IB , Cookie-, , , . iozoz.com , , 2016 . , . email- kts241@gmail.com , cardz.su cardz.vc , Cardsurfs.

, , G-Analytics Cardsurfs , , .

La infraestructura
Dominio
Descubrimiento / Fecha de aparición
iozoz.com08/04/2016
dittm.org10/09/2016
jquery-js.com02.01.2017
g-analytics.com31.05.2018
google-analytics.is21.11.2018
analytic.to04.12.2018
google-analytics.to06.12.2018
google-analytics.cm28.12.2018
analytic.is28.12.2018
googlc-analytics.cm17.01.2019


Illum


Illum — , -, CMS Magento. , , .

, , , , , . , , , 2016 .

Illum -


. cdn.illum[.]pw/records.php , base64 .


, — records.nstatistics[.]com/records.php .


Willem de Groot, , , CSU.



Group-IB , .


, , Linux: , Linux Privilege Escalation Check Script, (Mike Czumak), CVE-2009-1185.

- : core_config_data CVE-2016-4010, RCE CMS Magento, -.


, . , , CMS . , segapay_standart.js segapay_onpage.js , Sage Pay.

sr.illum [.]pw/mjs_special/visiondirect.co.uk.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/mjs_special/topdierenshop.nl.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/tiendalenovo.es.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/pro-bolt.com.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/plae.co.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/ottolenghi.co.uk.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/oldtimecandy.com.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/mjs_special/mylook.ee.js//cdn.illum[.]pw/records.php
sr.illum [.]pw/mjs_special/luluandsky.com.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/mjs_special/julep.com.js//cdn.illum[.]pw/records.php
sr.illum [.]pw/mjs_special/gymcompany.es.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/grotekadoshop.nl.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/fushi.co.uk.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/mjs_special/fareastflora.com.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/mjs_special/compuindia.com.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs/segapay_standart.js//cdn.illum[.]pw/records.php
sr.illum [.]pw/mjs/segapay_onpage.js//cdn.illum[.]pw/records.php
sr.illum [.]pw/mjs/replace_standart.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/mjs/all_inputs.js//cdn.illum[.]pw/records.php
sr.illum [.]pw/mjs/add_inputs_standart.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/magento/payment_standart.js//cdn.illum[.]pw/records.php
sr.illum [.]pw/magento/payment_redirect.js//payrightnow[.]cf/?payment=
sr.illum [.]pw/magento/payment_redcrypt.js//payrightnow[.]cf/?payment=
sr.illum [.]pw/magento/payment_forminsite.js//paymentnow[.]tk/?payment=


paymentnow[.]tk , payment_forminsite.js , subjectAltName , CloudFlare. , evil.js . , CVE-2016-4010, footer CMS Magento. request.requestnet[.]tk , , paymentnow[.]tk .



. - .


— PayPal, .

La infraestructura

/
cdn.illum.pw27/11/2016
records.nstatistics.com06/09/2018
request.payrightnow.cf25/05/2018
paymentnow.tk16/07/2017
payment-line.tk01/03/2018
paymentpal.cf04/09/2017
requestnet.tk28/06/2017


CoffeMokko


CoffeMokko, -, 2017 . , Group 1, RiskIQ 2016 . CMS, Magento, OpenCart, WordPress, osCommerce, Shopify.

CoffeMokko -


: src js . .


, . , , .


, : , , .


/savePayment/index.php /tr/index.php . , , . base64 , :

  • «e» «:»
  • «w» «+»
  • «o» «%»
  • «d» «#»
  • «a» «-»
  • «7» «^»
  • «h» «_»
  • «T» «@»
  • «0» «/»
  • «Y» «*»

base64 , .

, :




, -. TLD. , .

, jQuery ( slickjs[.]org , slick.js ), ( sagecdn[.]org , Sage Pay).

, , .


Cada dominio correspondía al sitio en el que se creó el directorio / js o / src . Los scripts de sniffer se almacenaron en este directorio: un sniffer por cada nueva infección. El sniffer se inyectó en el código del sitio a través de un enlace directo, pero en casos raros, los atacantes modificaron uno de los archivos del sitio y le agregaron código malicioso.

Análisis de código


El primer algoritmo de ofuscación


En algunas muestras de sniffer detectadas de esta familia, el código se ofuscó y contenía los datos cifrados necesarios para que el sniffer funcione: en particular, la dirección de la puerta del sniffer, una lista de campos de formulario de pago y, en algunos casos, un código de formulario de pago falso. En el código dentro de la función, los recursos se cifraron usando XOR usando la clave, que fue pasada por el argumento de la misma función.


Después de descifrar la cadena con la clave correspondiente, única para cada muestra, puede obtener una cadena que contenga todas las líneas desde el código sniffer a través del carácter delimitador.


Segundo algoritmo de ofuscación


En muestras posteriores de rastreadores de esta familia, se utilizó un mecanismo de ofuscación diferente: en este caso, los datos se cifraron mediante un algoritmo autoescrito. Una cadena que contiene los datos cifrados necesarios para que el sniffer funcione se pasó como argumento a la función de descifrado.


Con la consola del navegador, puede descifrar los datos cifrados y obtener una matriz que contiene recursos sniffer.


Enlace a los primeros ataques de MageCart


Un análisis de uno de los dominios utilizados por el grupo como puerta para recopilar datos robados reveló que el dominio tiene una infraestructura de robo de tarjeta de crédito idéntica a la utilizada por el Grupo 1, uno de los primeros grupos descubiertos por especialistas de RiskIQ.

Se encontraron dos archivos en el host de la familia sniffer CoffeMokko:

  • mage.js : archivo que contiene el código sniffer del Grupo 1 con la dirección de puerta js-cdn.link
  • mag.php : secuencia de comandos PHP responsable de recopilar datos robados por sniffer

Contenido del archivo Mage.js

También se descubrió que los primeros dominios utilizados por el grupo detrás de la familia sniffer CoffeMokko se registraron el 17 de mayo de 2017:

  • enlace-js [.] enlace
  • enlace info-js [.]
  • enlace track-js [.]
  • enlace map-js [.]
  • enlace smart-js [.]

El formato de estos nombres de dominio es el mismo que el de los nombres de dominio del Grupo 1 utilizados en los ataques de 2016.

En base a los hechos descubiertos, se puede suponer que existe una conexión entre los operadores de sniffer CoffeMokko y el grupo criminal del Grupo 1. Presumiblemente, los operadores de CoffeMokko podrían tomar prestado herramientas y software de robo de tarjetas de sus predecesores. Sin embargo, es más probable que el grupo criminal detrás del uso de la familia de sniffers CoffeMokko sean las mismas personas que llevaron a cabo los ataques como parte de las actividades del Grupo 1. Después de la publicación del primer informe sobre las actividades del grupo criminal, todos sus nombres de dominio fueron bloqueados, y las herramientas se estudiaron en detalle y son descritos El grupo se vio obligado a tomar un descanso, refinar sus herramientas internas y reescribir el código sniffer para continuar con sus ataques y pasar desapercibido.

La infraestructura
DominioDescubrimiento / Fecha de aparición
link-js.link17/05/2017
info-js.link17/05/2017
track-js.link17/05/2017
map-js.link17/05/2017
smart-js.link17/05/2017
adorebeauty.org09/03/2017
security-payment.su09/03/2017
braincdn.org09/04/2017
sagecdn.org09/04/2017
slickjs.org09/04/2017
oakandfort.org10/09/2017
citywlnery.org15/09/2017
dobell.su10/04/2017
childsplayclothing.org31/10/2017
jewsondirect.com11/05/2017
shop-rnib.org15/11/2017
closetlondon.org16/11/2017
misshaus.org28/11/2017
battery-force.org12/01/2017
kik-vape.org12/01/2017
greatfurnituretradingco.org12/02/2017
etradesupply.org12/04/2017
replacemyremote.org12/04/2017
all-about-sneakers.org12/05/2017
mage-checkout.org12/05/2017
nililotan.org12/07/2017
lamoodbighats.net12/08/2017
walletgear.org12/10/2017
dahlie.org12/12/2017
davidsfootwear.org20/12/2017
blackriverimaging.org23/12/2017
exrpesso.org01/02/2018
parks.su01/09/2018
pmtonline.su01/12/2018
ottocap.org15/01/2018
christohperward.org27/01/2018
coffetea.org31/01/2018
energycoffe.org31/01/2018
energytea.org31/01/2018
teacoffe.net31/01/2018
adaptivecss.org01/03/2018
coffemokko.com01/03/2018
londontea.net01/03/2018
ukcoffe.com01/03/2018
labbe.biz20/03/2018
batterynart.com03/04/2018
btosports.net09/04/2018
chicksaddlery.net16/04/2018
paypaypay.org05/11/2018
ar500arnor.com26/05/2018
authorizecdn.com28/05/2018
slickmin.com28/05/2018
bannerbuzz.info06/03/2018
kandypens.net06/08/2018
mylrendyphone.com15/06/2018
freshchat.info01/07/2018
3lift.org07/02/2018
abtasty.net07/02/2018
mechat.info07/02/2018
zoplm.com07/02/2018
zapaljs.com02/09/2018
foodandcot.com15/09/2018
freshdepor.com15/09/2018
swappastore.com15/09/2018
verywellfitnesse.com15/09/2018
elegrina.com18/11/2018
majsurplus.com19/11/2018
top5value.com19/11/2018

Source: https://habr.com/ru/post/451792/


All Articles