Desde el laboratorio de investigación de ESET Latinoamérica, hemos encontrado un código malicioso que afecta a los sistemas operativos Windows y se hace pasar por una extensión de seguridad para Google Chrome. Es detectado por las soluciones de ESET como JS/Spy.Banker.CV y se trata de un infostealer con capacidades de robar información sensible.

Este malware se propaga en la región, principalmente por México, mediante archivos adjuntos comprimidos en correos electrónicos que aparentar ser de instituciones financieras reconocidas. En su código se observan palabras nombres de variables y reemplazos en portugués, lo que evidencia que este tipo de amenazas trascienden fronteras.

Esta amenaza tiene la capacidad de detectar que el usuario se encuentra en una página financiera -hallando patrones comunes en este tipo de sitios- y cuando lo hace, puede modificar el DOM (Document Object Model) cambiando cómo se ve y funciona la página, sin que el usuario lo note. De esta forma, presenta formularios apócrifos con la apariencia real. Toda información ingresada en esos formularios es desviada a un servidor controlado por los cibercriminales.

Además, este malware tiene la capacidad de sustituir datos de billeteras de criptomonedas y bancarios del usuario por los de los cibercriminales, lo que habilitaría el desvío de fondos hacia los atacantes.

A continuación, procederemos a explicar el comportamiento de las funciones más importantes de este código malicioso.

Análisis

Durante la etapa de análisis, hemos visto que esta muestra se propaga sobre México mediante archivos adjuntos comprimidos enviados por correo electrónico. También hemos encontrado dentro de la extensión maliciosa dos archivos JavaScript con capacidades para robar datos sensibles, manipular visualmente sitios web y exfiltrar información a servidores de Comando y Control (C2).  

La Figura 1 muestra los archivos de la extensión maliciosa persistida en la máquina de una víctima.

malware-extension-chrome-robo-datos-bancarios-1
Figura 1 Identificación de los archivos maliciosos de la extensión maliciosa 

En la Figura 2 se puede ver el nombre con el que se instala la aplicación en el navegador, y en la Figura 3 la descripción en portugués de la extensión, haciéndose pasar por una herramienta de seguridad. 

malware-extension-chrome-robo-datos-bancarios-2
Figura 2. Visualización de la extensión de Chrome en el navegador 
malware-extension-chrome-robo-datos-bancarios-3
Figura 3. Se observa al instalar la extensión en el navegador que esta se hace pasar como una solución de seguridad. 

Tipos de ofuscación detectados

Las piezas de código malicioso utilizan técnicas de ofuscación para evitar que su código pueda ser legible o incluso evadir tecnologías de detección, algo que es frecuente en muchas campañas vistas en la región.

Durante el análisis de esta campaña, se destaca el uso de técnicas como la fragmentación de cadenas (ej.: "ep\xF3s" + "it") el uso de arrays y funciones indexadas para construir comandos dinámicamente y la inserción de funciones anónimas que se ejecutan asincrónicamente, todas técnicas comunes dentro las utilizadas por cibercriminales, pero que en su conjunto complican el análisis.

Manipulación visual de sitios bancarios

Del análisis del archivo GJJeSS.js detectado como JS./Sp y.Banker.CU (SHA1: 66722C6A38E60EA9557696BB9EDA028171241689) se encuentra que detecta patrones comunes en páginas relacionadas con bancos o pagos, como "CPF", "CNPJ", "valor", y modifica el DOM para engañar al usuario. Esto incluye el reemplazo de datos reales por datos controlados por los atacantes.

A continuación, procederemos a explicar el comportamiento de las funciones más importantes de este código malicioso.

Comportamiento de la función movedep()

Se ejecuta sobre el contenido del <body> de la página buscando patrones de texto relacionados con depósitos bancarios (por ejemplo “epósito”, “CPF”, “Valor”). Si detecta que la página contiene términos como “depósito”, “CPF/CNPJ” y “alor” (probablemente parte de “Valor”), procede a inyectar lógica maliciosa.

-Primero solicita datos remotos de un servidor de comando y control (dracolateama.info) usando peticiones $.get con distintos parámetros (?i=x , ? c=x , ?a=x , ?u=x).

-Tras un retraso (setTimeout), modifica el contenido de la página reemplazando textos bancarios comunes (por ejemplo, cambia “Ag:” por “Agência:”, homogeneiza “Conta Corrente:”), e inserta etiquetas como “(Nosso Parceiro)” en ciertos números de cuenta (Figura 4).  

-Además, sustituye nombres de bancos conocidos y sus códigos.

Este comportamiento sugiere que el script redirige valores de cuentas o números bancarios hacia cuentas del atacante al modificar el HTML de depósitos del banco.

Ejemplo de código de reemplazo en movedep()

malware-extension-chrome-robo-datos-bancarios-4
Figura 4: Reemplazo de nombres e identificadores bancarios en el contenido de la página.

Comportamiento de la función movewes()

Diseñada para buscar en la página referencias a pagos o direcciones de Bitcoin (Figura 5). Si detecta palabras clave como “QR” y “bitcoin”, ejecuta una expresión regular para identificar direcciones Bitcoin de 34 caracteres. Reemplaza cualquier coincidencia con una dirección fija del atacante, de modo que los pagos en criptomoneda podrían desviarse al monedero del atacante. Este reemplazo se ejecuta al detectar una dirección Bitcoin presente en el contenido HTML de la página, no al interceptar el portapapeles

malware-extension-chrome-robo-datos-bancarios-5
Figura 5: Detección de claves QR y reemplazo de direcciones Bitcoin

El engaño utilizado en la función movedep consiste en hacer pasar información bancaria o direcciones de pago falsas como legítimas. Por ejemplo, reemplazando el nombre de la entidad bancaria y cambiando los códigos de institución, el atacante busca desviar depósitos a cuentas que controla. En el caso de criptomonedas, como se ve en el código (Figura 5) sustituye automáticamente cualquier dirección de wallet reconocida por una propia.

Comportamiento de la función mgrtj4j4333dess():

-Recorre todos los formularios de la página (busca inputs de tipo “password” y otros campos textuales).

-A cada formulario con campo de contraseña le añade un listener submit para capturar credenciales al enviar el formulario (Figura 6).

-Al ocurrir el envío, recopila el valor de la contraseña y de otros campos de texto/email/teléfono, así como los textos de los <select> .

-Luego envía estos datos codificados (encodeURIComponent) por $.post a un servidor de exfiltración (appsalve.click/jjavascript/log3.php?logins=1).

-El payload enviado incluye el password (pass1), el usuario o correo (user1), la URL actual (href1), el host (host1), un encadenamiento de todos los campos (enc1) y un identificador id1 = "-" .

malware-extension-chrome-robo-datos-bancarios-6
Figura 6: Ejemplo de fragmento de exfiltración en mgrtj4j4333().

Tras definir estas funciones, el script las invoca periódicamente (por ejemplo, tras 3.1 segundos ejecuta mgrtj4j4333dess() y movewes() para asegurar el seguimiento continuo de las acciones del usuario.

Captura de Datos por Medio de Formularios 

El otro archivo, whvLon.js, SHA1: 8EE5BCA8E671587940B89D4CDC22BEEDA2EDE958 inspecciona todos los campos <input> de las páginas visitadas en el navegador en busca de aquellos que contengan datos sensibles como contraseñas, correos electrónicos y teléfonos. En el caso de encontrar este tipo de campos (Figura 7) y una vez que el usuario los ha completado, los datos son codificados mediante la función encodeURIComponent (una codificación URL estándar)

malware-extension-chrome-robo-datos-bancarios-7
Figura 7: Captura de campos sensibles del formulario usando JavaScript.

A su vez, se recolecta información adicional proveniente de menús desplegables (Figura 8) 

malware-extension-chrome-robo-datos-bancarios-8
Figura 8: Recolección de valores de menús select en formularios

Estos datos recolectados se envían mediante una solicitud POST, a un servidor (C2 - appsalve.click) controlado por los ciberatacantes (Figura 9).

malware-extension-chrome-robo-datos-bancarios-9
Figura 9: Exfiltración de datos sensibles al servidor de comando y control.

Persistencia y Evasión

Durante el análisis hemos notado que la extensión maliciosa de Internet Google Chrome, persiste en la maquina victima sobre la ruta C: \Users\<NOMBRE_USUARIO>\Chrome\1.9.6., Las muestras que contienen la extensión operan de manera sincronizada. Mientras una recolecta datos sensibles, la otra manipula el entorno visual del usuario para inducir a errores o desviar transferencias. Todas las interacciones son canalizadas a dominios maliciosos comunes: 

- https[:]//appsalve.click/jjavascript/log3.php

- https[:]//dracolateama.info/test/index.php?[i|c|a|u]=x

Es importante mencionar que esta persistencia actúa sobre el navegador afectado, puntualmente el malware se va a ejecutar cada vez que el mismo este en uso por la víctima.

Aunque el concepto tradicional de persistencia implica la supervivencia a reinicios o sesiones (como en malware instalado en el sistema), en este caso se refiere a una persistencia dentro de la sesión del navegador. El código detectado reinserta dinámicamente eventos maliciosos tras actualizaciones del DOM causadas por navegación dinámica o recargas parciales. Esto asegura que la funcionalidad maliciosa continúe activa mientras el usuario interactúa con la página web afectada que vuelve a insertar los eventos incluso tras actualizaciones parciales del DOM.

Análisis Dinámico

Para el análisis dinámico,  ingresamos datos falsos dentro de uno de los sitios afectados para observar efectivamente la captura de datos

malware-extension-chrome-robo-datos-bancarios-10
Figura 10: Loguin con datos falsos para observar la captura de datos.
malware-extension-chrome-robo-datos-bancarios-11
Figura 11: Acción del script malicioso al efectuarse el Loguin.

Al intentar loguearnos en uno de los sitios que la extensión maliciosa se propone comprometer, y más tarde seguir su actividad, podemos ver cómo se efectúa la exfiltración de datos al dominio (C2) perteneciente a los atacantes.

malware-extension-chrome-robo-datos-bancarios-12
Figura 12: Trackeo de la actividad y evidencia de la captura de datos.

Conclusión y Recomendaciones 

El análisis precedente surge estamos ante un infostealer que posee capacidades para robar información sensible de una víctima cuando completa un formulario en una página de internet. Con capacidad de modificar la wallet y otros datos de pagos de la víctima es una clara demostración de los cibercriminales buscan un rédito financiero.  

El uso de capacidades avanzadas de manipulación visual, dirigidas principalmente a usuarios en entornos financieros, así como su arquitectura modular y las técnicas de evasión que obligan a implementar medidas específicas para lograr su detección.

Estamos ante una amenaza que trasciende fronteras y aprovecha la reputación de instituciones financieras en toda la región.

Ante el contexto de este tipo de amenazas es importante verificar las extensiones instaladas en los sistemas y también que las fuentes sean confiables antes de instalar cualquier aplicación.

Indicadores de compromiso (IoC): 

Dominios: appsalve.click, dracolateama.info 

Wallet BTC: bc1q53usjwlwwpt40mwqtzldxj69gs8qsqsqfz49at 

ID fijo en exfiltración: 123461125631441562314 

GJJeSS.js -  JS/Spy.Banker.CU - 66722C6A38E60EA9557696BB9EDA028171241689  

 whvLon.js - JS/Spy.Banker.CV -  8EE5BCA8E671587940B89D4CDC22BEEDA2EDE958

Técnicas de MITRE ATT&CK

Táctica ID Nombre Descripción
Initial access T1056.001 Phishing - Link Los atacantes pueden enviar correos electrónicos de phishing selectivo con un enlace malicioso para intentar acceder a los sistemas de las víctimas
Credential access TA0006 Credentials in file or input forms Los adversarios pueden buscar archivos con contraseñas en sistemas de archivos locales y recursos compartidos remotos
Modify Authentication Process (opcional) T1556 Credential Access (si aplica) Los adversarios pueden modificar los mecanismos y procesos de autenticación para acceder a las credenciales de los usuarios o permitir un acceso no autorizado a las cuentas
Obfuscated Files or Information T1027 Defense Evasion Los adversarios pueden intentar hacer que un archivo o archivo ejecutable sea difícil de descubrir o analizar, cifrando, codificando u ofuscando de otro modo su contenido en el sistema o en tránsito
Masquerading T1036 Defense Evasion Los adversarios pueden intentar manipular las características de sus artefactos para hacerlos parecer legítimos o benignos para los usuarios y/o las herramientas de seguridad
Deobfuscate/Decode Files or Info T1140 Defense Evasion Los adversarios pueden usar archivos o información ofuscados para ocultar del análisis los artefactos de una intrusión