Autor: Neil Tyagi
Resumen
McAfee Advanced Threat Research identificó una campaña activa que utiliza extensiones de navegador para robar criptomonedas al cambiar sigilosamente la dirección del wallet en el momento en que el usuario inicia una transacción. La campaña se lleva a cabo mediante programas de instalación no firmados, detectados tanto en versión .NET como Golang, cuya actividad consiste en desplegar una extensión maliciosa para Chromium que se hace pasar por una utilidad inofensiva llamada “Google Notes”.
Esta campaña está relacionada con un blog publicado anteriormente por McAfee Labs titulado “Sinkholing CountLoader: Insights into Its Recent Campaign“, ya que parece que el autor de ambas operaciones es el mismo. En aquella investigación, estudiamos la carga útil de un “criptoclipper” que se inyectaba directamente en la memoria. Aquí analizamos una variante diferente de la carga útil de la fase final: una extensión maliciosa para navegador diseñada para interceptar y manipular transacciones en criptomonedas.
En este reporte, explicamos cómo funciona la extensión y brindamos un análisis técnico de los mecanismos que otorgan a esta amenaza un carácter especialmente singular. La extensión funciona como un “criptoclipper” basado en el portapapeles: vigila las operaciones de copiar y pegar, identifica las direcciones de los wallets (o billeteras de criptomonedas) en múltiples cadenas de bloques, o blockchains, y las sustituye por direcciones que controla el atacante justo antes de que la víctima pegue el contenido. Como la mayoría de las transacciones en cadenas de bloques son irreversibles, basta con una sola ejecución ininterrumpida para provocar una pérdida económica permanente.
Hay dos características que agravan esta campaña frente a la amenaza del típico “clipper”:
- Uso indebido de la capa de confianza de Chromium. El instalador ingresa inadvertidamente una extensión maliciosa en los navegadores basados en Chromium, como Google Chrome, Brave y Microsoft Edge, modificando los archivos de configuración protegidos del navegador. Normalmente, estos navegadores guardan datos de verificación de seguridad (valores hash/HMAC) junto con los ajustes sensibles para detectar cambios no autorizados. Tras manipular los archivos, el malware vuelve a calcular y actualiza estos valores de seguridad para inducir al navegador a creer que la extensión maliciosa se instaló de forma legítima. De este modo, la extensión elude el proceso habitual de instalación a través de la tienda web de extensiones y se carga en segundo plano sin que el usuario tenga que dar su consentimiento. Aunque en las versiones actualizadas de Chrome y Edge la víctima debe activar a mano el modo de desarrollador para que la extensión se cargue correctamente, quienes tienen versiones obsoletas de navegadores basados en Chromium siguen corriendo un alto riesgo. Además, incluso en las versiones más recientes, los atacantes pueden recurrir a tácticas de ingeniería social para activar el modo de desarrollador.
- Sistema de mando y control basado en la cadena de bloques. La extensión no contiene un dominio C2 en el código. Para contrarrestarlo, consulta un endpoint RPC de una cadena de bloques pública, invoca un método con contrato inteligente de solo lectura y descodifica la respuesta en tiempo de ejecución para averiguar su servidor de mando y control (C2) activo, que durante el análisis identificamos como Zebregts[.]com.
Esta técnica, a menudo denominada “EtherHiding”, complica los esfuerzos de desactivación, ya que el atacante puede modificar la infraestructura actualizando el valor de un contrato inteligente en lugar de volver a desplegar el malware.
Los datos de telemetría de McAfee indican que esta infección está extendida por todo el mundo y muestran una concentración pronunciada en la India. La amplitud de la zona geográfica sugiere que se trata de un ataque oportunista dirigido a usuarios particulares de criptomonedas, más que de una operación específica para una región concreta.
Prevalencia geográfica

El análisis de los datos de telemetría indica que la infección está distribuida por todo el mundo, aunque en la India se observa una concentración considerablemente mayor en comparación con las demás regiones.
Esta amplia presencia geográfica pone de manifiesto el gran alcance de la campaña, lo que hace suponer que se trata de una estrategia de objetivos oportunistas más que de un ataque dirigido a una región concreta.
La extensión maliciosa: “Google Notes”
Este malware se hace pasar por una extensión de Google Notes aparentemente inofensiva.

La extensión instalada se presenta como una sencilla aplicación de notas de apariencia legítima denominada “Google Notes”, acompañada de un icono depurado y una interfaz de usuario funcional (y simple).
La tapadera está bien pensada: cuando un usuario abre la extensión manualmente, se encuentra con algo que funciona tal y como se anuncia, lo que disipa sus sospechas. La lógica maliciosa de la extensión está implementada en scripts “service worker” y scripts de contenido que se ejecutan en segundo plano, totalmente fuera de la vista de la interfaz de usuario.
La primera señal de alarma importante aparece al añadir la extensión, que solicita permisos de seguridad y acceso desproporcionados para una aplicación de notas convencional:
- Acceso a todas las URL, lo que permite la inyección de scripts en el contenido de cualquier sitio web que visite el usuario.
- Acceso al historial de navegación.
- Acceso de lectura y escritura al portapapeles.
Medidas de mitigación y recomendaciones
Para particulares
- Antes de confirmar cualquier transacción con criptomonedas, comprueba visualmente si los seis primeros y los seis últimos caracteres de la dirección del destinatario coinciden con el origen, preferentemente en otro dispositivo. Este simple hábito permite evitar la gran mayoría de los ataques con “clippers”.
- Instala extensiones de navegador solo desde la Chrome Web Store oficial, la tienda de complementos de Edge o cualquier otra tienda equivalente. Deben considerarse sospechosas las extensiones de tu lista de instaladas que no recuerdes claramente haber instalado.
- Revisa los permisos concedidos a cada extensión instalada. Las herramientas de notas no tienen ninguna necesidad legítima de acceder a todos los sitios web, al historial de navegación ni al portapapeles.
- Evita ejecutar archivos ejecutables no firmados obtenidos de fuentes poco confiables, sobre todo las que ofrecen versiones gratuitas o pirateadas de programas de pago, ya que suelen ser un vector de distribución habitual de este tipo de programas de instalación.
- Mantén actualizada y activada la protección de los dispositivos. Los clientes de McAfee están protegidos contra esta campaña específica, tal como se describe a continuación.
Las soluciones de seguridad de McAfee ayudan a proteger a los usuarios en múltiples niveles:
1. McAfee detecta esta amenaza con el nombre de CryptoStealer.NE y garantiza la protección de sus clientes

2. Protección contra descargas maliciosas
McAfee detecta y bloquea el comportamiento del instalador (descarga y ejecución de cargas útiles remotas) antes de que tenga lugar la infección. En nuestras pruebas, McAfee bloqueó todos los dominios y URL maliciosos.
3. Protección de la red
McAfee bloquea las conexiones a infraestructuras maliciosas conocidas (servidores C2), lo que impide la obtención de direcciones de wallets.
4. Información sobre amenazas en tiempo real
Teniendo en cuenta que esta amenaza está identificada en los datos de telemetría de McAfee, es posible activar rápidamente medidas de protección para:
- Bloquear variantes similares
- Detectar infraestructuras asociadas
- Proteger a los clientes en todo el mundo
Cómo funciona esta campaña de amenazas
Qué hace el malware
- Instala inadvertidamente una extensión de navegador (sideloading, o instalación de extensiones web procedentes fuentes distintas a la tienda oficial)
- Supervisa lo que copias y pegas (sobre todo criptodirecciones)
- Se activa cuando haces una transacción con criptomonedas
- Sustituye sigilosamente la dirección del wallet por la del atacante
- Tu dinero se envía al atacante en lugar de transferirse al destino previsto
Las transacciones con criptomonedas suelen ser irreversibles, por lo que las víctimas pueden perder sus fondos para siempre.

Principales funciones identificadas
1. Instalación inadvertida de una extensión
Este malware no utiliza la tienda oficial del navegador, sino que modifica directamente los archivos del navegador para que parezca que la extensión está instalada (sideloading de extensión de navegador). Este método elude las advertencias de seguridad habituales y escapa a la vigilancia del usuario.

2. Acceso completo al navegador


La extensión maliciosa solicita permisos excesivos, como:
- Acceder a todos los sitios web
- Consultar el historial de navegación
- Leer y modificar el contenido del portapapeles
3. Interceptación de criptodirecciones
La extensión incluye una lógica para detectar direcciones de wallets de múltiples criptomonedas, entre ellas: 
Figura 7. Expresiones regulares (Regex) de criptomonedas y dirección alternativa definidas en el código.
- Las direcciones alternativas de wallets que aparecen en el código no se utilizan en todas las transacciones, sino que sirven como mecanismo de respaldo cuando falla la recuperación dinámica de la dirección desde el servidor que controla el atacante.
- En condiciones operativas normales, la extensión obtiene las direcciones alternativas de un servidor remoto, lo que permite una asignación dinámica de wallets, posiblemente específica para cada víctima.
- Las direcciones de respaldo aseguran la funcionalidad del ataque incluso si la infraestructura de mando y control no está disponible temporalmente o está bloqueada.

- Esta función se encarga de obtener la dirección alternativa del wallet que controla el atacante asignada a la dirección original de la víctima.
- La función envía al servidor del atacante la dirección de wallet interceptada y utiliza la respuesta para sustituir dinámicamente la dirección original.
- Si falla la solicitud al servidor backend, la función recurre a una dirección de wallet predefinida en el código para asegurar que la actividad maliciosa no se vea interrumpida.
- 3J98t1Wxxxx es la dirección copiada en el portapapeles
4. Elusión de la detección e invisibilidad

- La configuración incluye en el código una clave API que la extensión utiliza para autenticar la comunicación con la infraestructura del hacker.
- El atacante se vale de una URL RPC que apunta a un nodo de una cadena de bloques pública para obtener de forma dinámica la información del servidor backend, lo que le permite ocultar infraestructuras críticas detrás de sistemas descentralizados.
- La presencia de un método y una dirección de contrato inteligente indica que el malware obtiene su dominio de mando y control (C2) de forma indirecta a través de consultas en la cadena de bloques, lo que dificulta su neutralización y su seguimiento.
- La lista de dominios bloqueados contiene una lista de sitios web relacionados con la inspección de cadenas de bloques en los que la extensión no funciona. Esto se hace para no alertar a la víctima mientras intenta pegar su propia dirección y ver el saldo de su wallet o consultar sus transacciones.


- El análisis dinámico revela que el malware obtiene su dominio de mando y control a través de un contrato inteligente en una cadena de bloques que devuelve el dominio devops-offensive[.]cc en tiempo de ejecución.
- La respuesta de la cadena de bloques se descodifica en tiempo de ejecución y revela el dominio C2 activo (devops-offensive.cc).
- Este dominio no está definido en el código, lo que permite al ciberdelincuente actualizar la infraestructura sin modificar el malware.
- El dominio obtenido se almacena en la caché local para mantener la persistencia y reducir las consultas repetidas a la red.

Esta cadena codificada larga se descodifica utilizando esta función para obtener el dominio final del ciberatacante.

Técnicas de persistencia y evasión
La estrategia de persistencia y evasión de la campaña es deliberada y tiene varias capas. Está claro que el hacker ha optimizado el sistema en dos aspectos: baja visibilidad ante el usuario final y alta resistencia a la neutralización y el análisis estático.
Persistencia
- El registro de la extensión mediante la manipulación de los archivos Secure Preferences asegura la carga de la extensión cada vez que se inicia el navegador sin necesidad de ningún mecanismo auxiliar de persistencia de Windows, ni claves Run del Registro, ni tareas programadas, ni servicios que suelen inspeccionar los cazadores de amenazas en los endpoints.
- El modo de desarrollador se activa cuando es necesario mediante código, lo que permite que las extensiones descomprimidas persistan sin que se active el flujo periódico de “advertencia de extensiones descomprimidas” que muestra Chromium para disuadir el sideloading.
- El dominio C2 almacenado en caché permite que la extensión siga funcionando con un servidor backend legítimo conocido aun cuando el endpoint RPC de la cadena de bloques no está disponible durante un breve periodo de tiempo.
Evasión
- La identidad visible de la extensión, una sencilla aplicación de notas llamada “Google Notes”, constituye una tapadera bastante convincente ante una inspección superficial de la lista de extensiones instaladas.
- Los valores HMAC recalculados satisfacen la verificación de integridad de Chromium, lo que impide que aparezca la advertencia de “extensión instalada de una fuente desconocida” que, de otro modo, alertaría al usuario.
- El instalador se borra automáticamente tras ejecutarse, lo que elimina el indicio inicial más evidente en el disco de que el sistema ha sido comprometido.
- La obtención del C2 a través de una cadena de bloques pública implica que no hay ningún dominio C2 persistente observable en el propio paquete de malware; las detecciones basadas en red y diseñadas a partir de indicadores de código no se activan hasta que se obtiene el dominio y se establece contacto con él.
- Las variantes multilingües del instalador (.NET y Golang) reducen la eficacia de las firmas de los artefactos de compilación y las características binarias.
- La sustitución dinámica de wallets por una dirección significa que las direcciones publicadas por los atacantes caducan rápidamente y no se convierten en entradas permanentes de las listas de bloqueo; el equipo de seguridad debe bloquear el servicio backend mismo, no las direcciones que este genera.
Lógica de sustitución de wallets
La lógica del clipper se divide en dos capas: una capa de script de contenido que supervisa la actividad del portapapeles y los campos de entrada del DOM en todos los sitios visitados, y una capa en segundo plano que se comunica con el backend del atacante para obtener las direcciones alternativas.
Cuando la extensión observa un evento de copia, aplica a la carga útil del portapapeles un conjunto de expresiones regulares específicas de la criptomoneda. Si se encuentra una coincidencia, la dirección interceptada se transmite al backend mediante una solicitud autenticada (con la clave API integrada en la configuración). El backend responde con una dirección alternativa específica para la original enviada, dirección que se vuelve a copiar en el portapapeles sobrescribiendo la dirección legítima antes de que la víctima pueda pegarla.
Las pruebas realizadas con un cliente backend reconstruido, creado al reimplementar en Python el formato de solicitud y la lógica de descodificación de respuestas de la extensión, generaron un perfil de comportamiento muy revelador:
- Bitcoin(BTC), Ethereum, Bitcoin Cash, Ripple y Dash: cada dirección enviada se asigna a una dirección única controlada por el atacante. Cada vez que se reenvía la misma dirección original, se devuelve la misma dirección alternativa, lo que indica que el servidor mantiene una correspondencia determinista entre pares únicos.
- Solana: todas las direcciones enviadas se resumen en una única dirección del atacante, lo que sugiere que la función de asignación por víctima se implementa de forma selectiva según la cadena.
Análisis de los wallets de criptomoneda del atacante
A partir de fragmentos del código de la extensión web encargada de obtener las direcciones alternativas, se creó un script en Python para extraer programáticamente las direcciones de los wallets del hacker. La carga útil se elaboró utilizando el propio código del atacante y el fragmento de código “get replacement address” se extrajo de él directamente. En el script también se volvió a implementar fielmente la lógica que utilizaba el ciberdelincuente para descodificar los datos recibidos del servidor C2.
A continuación, se ejecutó el script utilizando las direcciones de varios wallets Bitcoin (BTC) de prueba. Los resultados demostraron que, por cada dirección Bitcoin introducida, se obtenía como respuesta una dirección Bitcoin única, y que todas esas direcciones obtenidas eran wallets BTC válidos. Esto significa que, por cada dirección BTC facilitada, el atacante genera dinámicamente un nuevo wallet vinculado a esa dirección concreta. Además, cuando se volvió a introducir la misma dirección, se obtuvo la misma dirección BTC, lo que confirma que cada dirección BTC de una víctima está vinculada de forma determinista a una única dirección específica controlada por el delincuente. Aunque algunos de estos wallets pertenecientes al hacker contenían fondos y otros estaban vacíos, el hecho de que se desconozca el número total de wallets del atacante dificulta un cálculo confiable de la cantidad total de criptomonedas robadas.
Con Ethereum se observó el mismo comportamiento: para cada entrada se devolvían direcciones de wallets diferentes. Curiosamente, cuando se probó el script con direcciones Solana, solo se obtuvo una única dirección, independientemente del número de entradas distintas introducidas. Esto parece indicar que el hacker solo ha implementado la función de asignación por dirección con determinadas criptomonedas, mientras que con otras recurre a un único wallet estático para la recolección. Como la dirección Solana es común a todas las víctimas, en su saldo se observa un aumento considerable. Además, se descubrió que una de las direcciones identificadas de Ethereum contenía fondos por valor de unos 1,902 USD.
En resumen, las criptomonedas para las que se generan direcciones de wallet únicas por cada víctima son Bitcoin, Ethereum, Bitcoin Cash, Ripple y Dash.
Figura 13. La carga útil se diseñó como código malicioso.


Ejecución del script con algunas direcciones de wallets Bitcoin de prueba 
Figura 16. Por cada dirección Bitcoin se devolvió una dirección Bitcoin única, y todas las direcciones son direcciones de wallets BTC válidos.


Afortunadamente, con Solana solo obtenemos una dirección cuando suministramos varias. Esto demuestra que el ciberdelincuente solo ha implementado esta función de asignación de direcciones con determinadas criptomonedas.


Análisis técnico de un archivo .net (instalador de extensión)


- El malware incluye un archivo JSON de configuración completo directamente en el archivo binario, lo que elimina la necesidad de obtener los datos de configuración iniciales de fuentes externas.
- Esta configuración integrada incluye datos indispensables, como las claves API, la URL del servidor backend, las extensiones del wallet seleccionado y el archivo manifest completo de la extensión con todos los permisos.

- El instalador obtiene y valida un archivo ZIP remoto (google-services[.]cc/base[.]zip) que sirve como carga útil principal para desplegar la extensión de navegador maliciosa y marca la transición de la infección inicial a la vulneración del navegador.


- El instalador evalúa varios navegadores basados en Chromium, como Chrome, Edge, Opera y Brave, para identificar los perfiles de usuario disponibles en el sistema.
- Por cada perfil detectado, el malware fuerza el cierre del proceso del navegador para modificar de forma segura los archivos de configuración sin interferencias.
- A continuación, inyecta la extensión maliciosa modificando directamente los archivos Secure Preferences y Preferences, lo que permite cargar la extensión sin interaccionar con el usuario.

- El malware identifica las rutas de instalación del navegador consultando los directorios estándar del sistema, lo que le permite localizar las carpetas de datos del usuario de Chrome, Edge, Opera y Brave.
- Enumera sistemáticamente los perfiles del navegador y busca específicamente si hay un archivo Secure Preferences, que guarda datos críticos de la configuración del navegador y sus extensiones.
- Al centrarse en los perfiles que tienen Secure Preferences, el malware se asegura de modificar únicamente entornos de navegador válidos, lo que aumenta la confiabilidad de la inyección de la extensión.


- El malware lee y modifica el archivo Secure Preferences del navegador, que controla las extensiones instaladas y su nivel de confianza.
- Inyecta la extensión maliciosa en la configuración e intenta volver a firmar los datos modificados para que los cambios parezcan legítimos ante las comprobaciones de integridad del navegador.
- A continuación, la configuración actualizada se guarda de nuevo en el disco, lo que asegura la carga automática de la extensión y su persistencia incluso tras reiniciar el navegador.


- En navegadores como Brave y Opera, el malware inyecta la extensión maliciosa directamente en la configuración del navegador añadiendo entradas en la sección extensions.settings (o extensions.opsettings).
- También actualiza los campos relacionados con la integridad (protection.macs) para que el navegador considere que la extensión inyectada es de confianza.
- Además, el malware intenta activar el modo de desarrollador mediante código, lo que permite ejecutar extensiones descomprimidas con menos restricciones.

- El malware intenta volver a calcular las firmas de integridad del navegador generando nuevos valores MAC (código de autenticación de mensajes) para el archivo Secure Preferences modificado.
- Utiliza identificadores específicos del sistema, como el SID del equipo, combinados con un valor generador para imitar el mecanismo de verificación interno de Chrome.
- Al volver a calcular estas comprobaciones de integridad (macs y super_mac), el malware intenta que sus modificaciones no autorizadas le parezcan legítimas al navegador.

- El malware incluye un mecanismo de autoeliminación diseñado para borrar el archivo ejecutable del instalador una vez ejecutado correctamente.
- Inicia un proceso oculto en la línea de comandos que retrasa un poco la ejecución antes de borrar el archivo original del disco.
Conclusión
Esta campaña es un claro ejemplo de la dirección que ha tomado el robo de criptomonedas diseñado para particulares. El operador usa la categoría más antigua y simple de criptomalware (el clipper) y mejora discretamente tres de sus eslabones más débiles. Las direcciones estáticas del atacante se han sustituido por una asignación específica para cada víctima en el lado del servidor. Los dominios de mando y control, que eran frágiles y estaban definidos en el código, se han sustituido por una búsqueda en cadena de bloques que el operador puede modificar con una sola transacción. Además, se ha reemplazado un dropper inestable por una extensión de Chromium integrada en la aplicación en la que más confía el usuario y que se carga con la firma de integridad propia del navegador.
McAfee seguirá vigilando esta campaña y la infraestructura correspondiente. Nuestros clientes están protegidos por los sistemas de detección actuales y recibirán actualizaciones basadas en datos de telemetría a medida que se identifiquen nuevas variantes e infraestructuras modificadas.
Indicadores de compromiso (IOC)
| Tipo | Categoría | Valor |
| SHA-256 | Instalador .NET (BaseZipInstaller) | 2735e12030c195fb5454e4736c51b55b59664b93cae9f4bd5317afcd9c2af0bf 053620962047f50a91c6e8d1a6519eccc41fab51473f033086b4d816abe8bcb0 |
| SHA-256 | Variante del instalador compilada en Golang | 11be4c47ff049322de41743f62544cafd32d67e24ad653b7ebedf8ebd63e0962 1432393691b415d0cd4680d9cee73e60896fbe63300d9f0355c96e91817e4b1d |
| URL | Distribución de la carga útil | hxxps://google-ser vices[.]cc/base[.]zip |
| Dominio | Mando y control (obtenido mediante contrato inteligente) | devops-offensive[.]cc Zebregts[.]com |
| Wallet BTC | Wallet de criptomoneda | 3JvDBvKbS6YYMKjV3R9e9Zfd67f467fNLy 1BbhVBxpniuZuAL1gGZnEMdQhmz9JGWpyT 3AcPNVh7NyESwX3ECymy3rkdH4Ke2c26Tj 1BVTrB47erypG3tevi1U9Fv6BbNUBEiuiX |
| Artefacto | Destino de sideloading | Archivo Secure Preferences de Chromium (perfiles de Chrome, Edge, Brave y Opera) |
| Archivos de extensión | manifest.json crypto-patterns.js Interceptor.js content-script.j cache.js domain-resolver.js service-worker.js api-client.js | ed2599d6a8f30d5eaf14ad7f855aece0acdf7efa4a148eb18e4d9f0d8e2cd90c daf82c67e8e5df6bbd5370172ac9374aa7dce48af05496e8ec3dba7b602c619b 6eb2f07265dd95cacd39dfcf0705786b97f3e173cf4e9b3dfe7bad141c9a9dd5 a2ffdbedc5c9f5400a2b1cf5d35f5ec1df06a74d0345f1035bcf75d36ed73e01 eb84ba4a0cd95655a021865d4fec93ae3393f86cc9848810ed0b49035b1c5e2c 6aaba685669d779ef8be8f7f4231096cfafd0ef386f3897c5e2106c177724fc8 2599064901308a97540af29197ed0b38702bbee38d6dbbfa61cf9eb5878353f3 ab450927b37e1b68e2be68832c354ac600e86e2545a904d4ca0ea283f2600cc2 |
Presentamos McAfee+
Protección contra robo de identidad y privacidad para tu vida digital