- Nueva variante de XCSSET con ofuscación avanzada y persistencia múltiple (zshrc, Dock y LaunchDaemon).
- Expande el robo de datos a Firefox y añade clipper para desviar criptotransacciones desde el portapapeles.
- Infección de proyectos Xcode compartidos: AppleScripts run-only, módulos renombrados y exfiltración al C2.
- Recomendaciones: actualizar macOS, auditar proyectos antes de compilar y vigilar osascript/dockutil.
La familia de malware XCSSET para macOS ha vuelto a dar señales de vida con una variante mejorada, y no es precisamente una anécdota menor: Microsoft Threat Intelligence ha señalado cambios relevantes en técnicas de ofuscación, persistencia y robo de datos que elevan el listón de este viejo conocido. Si trabajas con Xcode o compartes proyectos entre equipos, te interesa estar al tanto de lo que está pasando.
Desde su descubrimiento en 2020, XCSSET ha ido adaptándose a los cambios del ecosistema Apple. Lo que ahora se observa es la primera variante nueva documentada públicamente desde 2022, detectada en ataques limitados pero con capacidades ampliadas. Hablamos de un malware modular que se cuela en proyectos de Xcode para ejecutar su carga cuando se compilan, y que en esta iteración incorpora tácticas más astutas para camuflarse y persistir.
Qué es XCSSET y por qué se propaga tan bien
En esencia, XCSSET es un conjunto de módulos maliciosos diseñado para infectar proyectos de Xcode y activar sus funciones durante el build. El vector de propagación más plausible es el intercambio de archivos de proyecto entre desarrolladores que colaboran en apps para macOS, lo que multiplica las oportunidades de ejecución en cada compilación.
Este malware ha sido capaz históricamente de explotar vulnerabilidades de día cero, inyectar código en proyectos y hasta introducir puertas traseras en componentes del ecosistema Apple como Safari. A lo largo de su evolución, también ha sumado compatibilidad con versiones más recientes de macOS y con arquitecturas Apple Silicon (M1), demostrando una notable capacidad de adaptación.
Sobre el terreno, XCSSET funciona como ladrón de información y de criptomonedas: es capaz de recolectar datos de programas populares (Evernote, Notas, Skype, Telegram, QQ, WeChat y más), exfiltrar archivos del sistema y de aplicaciones, y orientarse específicamente a billeteras digitales. Además, algunas variantes han mostrado funciones de captura de pantalla sin permisos, cifrado de archivos y despliegue de notas de rescate.
Lo nuevo en la última variante
Microsoft ha detallado que la última variante incorpora nuevos métodos de ofuscación, persistencia y estrategias de infección. Ya no hablamos solo de camuflar nombres o comprimir código: ahora hay una mayor aleatoriedad en la forma en la que genera sus payloads para contaminar proyectos de Xcode.
Un cambio llamativo es el uso combinado de técnicas de codificación. Mientras que iteraciones anteriores se apoyaban únicamente en xxd (hexdump), la nueva versión añade Base64 y aplica un número de iteraciones aleatorio, haciendo más difícil identificar y desentrañar la carga.
Los nombrecillos internos de los módulos también van más tapados que nunca: se ofuscan a nivel de código para ocultar su propósito. Esto complica el análisis estático y la correlación entre funciones y efectos observables en el sistema.
Persistencia: métodos “zshrc” y “dock”
Uno de los sellos de identidad de esta vuelta de XCSSET son dos caminos bien diferenciados para seguir vivo tras la infección. El método “zshrc” aprovecha la configuración del shell para autoejecutarse en cada sesión, y el método “dock” manipula accesos directos del sistema para ejecutar la carga maliciosa de forma transparente para el usuario.
En el enfoque “zshrc”, el malware crea un archivo llamado ~/.zshrc_aliases con la carga útil y, acto seguido, añade un comando dentro de ~/.zshrc que garantiza que ese archivo se cargue siempre que se abra una nueva sesión. Esta jugada asegura la persistencia en todas las terminales sin levantar sospechas evidentes.
El plan “dock” implica descargar desde el servidor de mando y control una herramienta firmada, dockutil, para gestionar elementos del Dock. A continuación, crea una aplicación falsa de Launchpad y sustituye en el Dock la ruta del Launchpad legítimo por esa app impostora. Resultado: cada vez que el usuario inicia Launchpad desde el Dock, se abre el verdadero y, en paralelo, se activa la carga maliciosa.
Como refuerzo, la variante introduce criterios nuevos para decidir en qué parte del proyecto de Xcode insertar la carga. Así se optimiza el impacto y se minimizan las probabilidades de que el desarrollador detecte algo raro al revisar el árbol del proyecto.
AppleScript, ejecución sigilosa y cadena de infección
La investigación de Microsoft describe que XCSSET utiliza AppleScripts compilados en modo run-only para ejecutar de forma silenciosa y evitar que un análisis directo revele su contenido. Esta técnica encaja con su objetivo de invisibilidad y de evadir herramientas que inspeccionan scripts.
En la fase cuarta de la cadena de infección, se observa que una aplicación AppleScript ejecuta un comando de shell para descargar la etapa final. Este último AppleScript recopila información del sistema comprometido y arranca submódulos invocando la función boot(), lo que organiza el despliegue modular de capacidades.
También se han detectado cambios de lógica: comprobaciones adicionales para el navegador Firefox y un método distinto para confirmar la presencia de la app de mensajería Telegram. No son detalles menores; indican una intención clara de hacer más fiable la recolección de datos y de ampliar el radio de acción.
Módulos renombrados y nuevas piezas
Con cada revisión, la familia XCSSET alteró ligeramente los nombres de sus módulos, un juego del gato y el ratón clásico para dificultar el rastreo de versiones y firmas. Aun así, su funcionalidad suele mantenerse coherente.
Entre los módulos destacados de esta variante aparecen identificadores como vexyeqj (antes seizecj), que descarga otro módulo llamado bnk y lo ejecuta mediante osascript. Este script añade funciones de validación de datos, cifrado, descifrado, obtención de contenido adicional desde el C2 y registro de eventos, e incluye el componente de “clipper”.
Asimismo, se menciona neq_cdyd_ilvcmwx, similar a txzx_vostfdi, que se encarga de exfiltrar ficheros al servidor de mando y control; el módulo xmyyeqjx que prepara la persistencia basada en LaunchDaemon; jey (antes jez) que configura una persistencia vía Git; y iewmilh_cdyd, responsable de sustraer datos de Firefox utilizando una versión modificada de la herramienta pública HackBrowserData.
- vexyeqj: módulo de información; descarga y usa bnk, integra clipper y cifrado.
- neq_cdyd_ilvcmwx: exfiltración de ficheros al C2.
- xmyyeqjx: persistencia por LaunchDaemon.
- jey: persistencia a través de Git.
- iewmilh_cdyd: robo de datos de Firefox con HackBrowserData modificado.
Es especialmente relevante el enfoque en Firefox, porque expande el alcance más allá de Chromium y Safari. Esto implica que el espectro de víctimas potenciales aumenta y que las técnicas de extracción de credenciales y cookies se perfeccionan para múltiples motores de navegador.
Robo de criptomonedas con “clipboard hijacking”
Una de las capacidades que más preocupan en esta evolución es el módulo “clipper”. Monitorea el portapapeles en busca de expresiones regulares que coincidan con direcciones de criptomonedas (distintos formatos de wallets). En cuanto detecta una coincidencia, sustituye de inmediato la dirección por otra controlada por el atacante.
Este ataque no necesita privilegios elevados para causar estragos: la víctima copia su dirección desde su wallet, pega para enviar fondos y, sin saberlo, transfiere al atacante. Como señaló el equipo de Microsoft, esto erosiona la confianza en algo tan básico como copiar y pegar.
La combinación de clipper y robo de datos de navegador convierte a XCSSET en una amenaza práctica para ciberdelincuentes centrados en criptoactivos. Pueden obtener cookies de sesión, contraseñas guardadas y, además, redirigir transacciones sin tocar el saldo visible para la víctima hasta que es tarde.
Otras tácticas de persistencia y camuflaje
Además de “zshrc” y “dock”, Microsoft describe que esta variante añade entradas de LaunchDaemon que ejecutan una carga en ~/.root. Este mecanismo asegura inicio temprano y estable, y se camufla entre la maraña de servicios del sistema que se cargan en segundo plano.
Se ha observado también la creación de una System Settings.app falsificada en /tmp, con la que el malware disimula su actividad bajo el paraguas de una app legítima del sistema. Este tipo de suplantación ayuda a evitar sospechas cuando se inspeccionan procesos o rutas en ejecuciones momentáneas.
En paralelo, el oficio de XCSSET en la ofuscación vuelve a estar presente: cifrado más sofisticado, nombres de módulo aleatorios y AppleScripts run-only. Todo apunta a alargar la vida útil de la campaña antes de ser neutralizada por firmas y reglas de detección.
Capacidades históricas: más allá del navegador
Mirando al retrovisor, XCSSET no se ha limitado a vaciar navegadores. Se documentó su habilidad para extraer datos de apps como Google Chrome, Opera, Telegram, Evernote, Skype, WeChat y aplicaciones propias de Apple como Contactos y Notas. Es decir, un abanico de fuentes que abarca mensajería, productividad y datos personales.
En 2021, informes como el de Jamf describieron cómo XCSSET explotaba CVE-2021-30713, un bypass del marco TCC, para tomar capturas de pantalla del escritorio sin solicitar permisos. Esa destreza encaja con un objetivo claro: espiar y recolectar material sensible con el mínimo roce para el usuario.
Con el paso del tiempo, el malware fue ajustándose para compatibilidad con macOS Monterey y con los chips M1, algo que subraya su continuidad y mantenimiento por parte de los atacantes. A día de hoy, el origen exacto de la operación sigue sin atribución pública clara.
Cómo se cuela en proyectos de Xcode
La distribución de XCSSET no está detallada al milímetro, pero todo indica que aprovecha el intercambio de proyectos de Xcode entre desarrolladores. Si un repositorio o paquete ya está comprometido, cualquier compilación posterior activa el código malicioso.
Este patrón convierte a los equipos de desarrollo en vectores privilegiados de propagación, especialmente en entornos con prácticas laxas de revisión de dependencias, scripts de build o plantillas compartidas. Es un recordatorio de que la cadena de suministro de software se ha convertido en un objetivo recurrente.
Ante este escenario, tiene sentido que la nueva variante refuerce la lógica para decidir dónde insertar payloads dentro del proyecto. Cuanto más “natural” parezca su ubicación, menos probabilidades habrá de que un desarrollador lo detecte en una revisión rápida.
Ergonomía del ataque: errores, etapas y señales
Microsoft ya había adelantado a inicios de año mejoras de XCSSET en gestión de errores y persistencia. Lo importante es que ahora encaja con una cadena de infección por etapas: un AppleScript que inicia un comando de shell, que descarga otro AppleScript final, que a su vez recopila info del sistema y lanza submódulos.
Si buscas señales, la presencia de ~/.zshrc_aliases, manipulaciones en ~/.zshrc, entradas sospechosas en LaunchDaemons, o una System Settings.app extraña en /tmp son indicadores a vigilar. Cualquier actividad anómala en el Dock (p. ej., rutas de Launchpad reemplazadas) también debería disparar alarmas.
En entornos gestionados, los SOC deberían calibrar reglas que persigan osascript inusual, invocaciones repetidas a dockutil y artefactos cifrados o codificados en Base64 vinculados a procesos de build de Xcode y usar herramientas para ver procesos en ejecución en macOS. El contexto del compilado es clave para reducir falsos positivos.
¿A quién apunta XCSSET?
El foco natural son quienes desarrollan o compilan con Xcode, pero el impacto puede extenderse a usuarios que instalan apps construidas a partir de proyectos contaminados. La pieza financiera aparece en el secuestro del portapapeles, especialmente relevante para quienes manejan criptomonedas de forma habitual.
En la esfera de datos, la exfiltración desde Firefox y otras apps hace que credenciales, cookies de sesión y notas personales corran riesgo. Si a esto sumamos las capacidades heredadas de capturas de pantalla, cifrado de ficheros y notas de rescate, el cuadro es más que completo.
Los ataques detectados por ahora parecen limitados en alcance, pero, como suele ocurrir, el verdadero tamaño de la campaña puede tardar en aflorar. La modularidad facilita iteraciones rápidas, cambios de nombre y ajustes finos para esquivar detección.
Recomendaciones prácticas para reducir el riesgo
Lo primero, disciplina de actualización: mantén macOS y las aplicaciones al día y considera soluciones antimalware. XCSSET ya explotó vulnerabilidades, incluso de tipo día cero, así que ir a la última versión reduce bastante la superficie de ataque.
En segundo lugar, inspecciona los proyectos de Xcode que descargues o clones de repositorios, y extrema la cautela con lo que compilas. Revisa scripts de build, Run Script Phases, dependencias y cualquier archivo que se ejecute en el proceso de construcción.
Tercero, cuidado con el portapapeles. Evita copiar/pegar direcciones de wallets sin verificar: comprueba a mano los primeros y últimos caracteres antes de confirmar transacciones. Es un gesto pequeño que puede ahorrarte un disgusto grande.
Cuarto, telemetría y hunting. Vigila osascript, dockutil, cambios en ~/.zshrc y LaunchDaemons. Si gestionas flotas, incorpora reglas de EDR que detecten AppleScripts compilados inusuales o cargas codificadas repetitivas en procesos de build.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.