Dime Mi Nombre: Cómo MioLab está construyendo un Imperio de Stealers en MacOS
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
MioLab es un infostealer distribuido comercialmente para macOS dirigido a víctimas de alto valor como ingenieros de software, ejecutivos e inversores en criptomonedas. Se propaga a través de malvertising y una cadena de infección ClickFix, luego lanza un binario compacto basado en C que roba credenciales de navegador, registros de gestores de contraseñas, archivos de billeteras de criptomonedas y datos de Keychain de macOS. La información robada se coloca en un directorio temporal, se comprime en un archivo y se exfiltra con una solicitud curl POST a un dominio malicioso. La operación también incluye un panel de control basado en web, soporte de proxy y acceso a API adaptado para grandes grupos de cibercrimen.
Investigación
El informe detalla las características estáticas del malware, su comportamiento en tiempo de ejecución y la amplia gama de fuentes de datos objetivo, incluyendo Chrome, Firefox, Safari, Telegram, Discord, Apple Notes y aplicaciones de billeteras hardware. El análisis de infraestructura apunta a un hosting a prueba de balas en Rusia, rotación repetida de dominios y un backend compartido vinculado a una operación de phishing de airdrop de token Web3. Los investigadores también extrajeron indicadores clave como líneas de comando, rutas de carpetas temporales y URL de exfiltración.
Mitigación
Los defensores deben entrenar a los usuarios para reconocer mensajes falsos de credenciales, monitorear el abuso de binarios incorporados como dscl, osascript y curl, bloquear dominios maliciosos conocidos, aplicar firma de código, y restringir el acceso a los datos de perfiles de navegador y archivos de Keychain. La lógica de detección también debe centrarse en los patrones de ejecución de procesos del malware y en el comportamiento de almacenamiento previo a la compresión bajo /var/folders.
Respuesta
Si se detecta MioLab, aislar el Mac afectado, capturar artefactos de memoria volátil y sistema de archivos, bloquear los dominios e IPs del C2 relacionado, revocar credenciales expuestas y claves de billeteras de criptomonedas, y realizar una revisión forense completa de todas las ubicaciones de datos objetivo. El contenido de detección en el endpoint debe actualizarse con las líneas de comando observadas, y los equipos deben buscar cadenas de infección similares en todo el entorno.
"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc %% Malware node malware_miolab["<b>Malware</b> – <b>Nombre</b>: MioLab Infostealer<br/><b>Descripción</b>: Infostealer multitarea para macOS"] class malware_miolab malware %% Initial Access initial_access["<b>Acción</b> – <b>T1204.002 Ejecución de Usuario</b>: La víctima abre un DMG malicioso o ejecutable Unix entregado por ingeniería social"] class initial_access action %% Execution execution_unix_shell["<b>Acción</b> – <b>T1059.004 Shell Unix</b>: La carga útil ejecuta comandos shell vía sh, system y AppleScript"] class execution_unix_shell action %% Defense Evasion defense_evasion["<b>Acción</b> – <b>T1564.011 Ocultación de Artefactos</b>: Termina Terminal, elimina atributos de cuarentena y aplica ofuscación de cadenas XOR (T1027)"] class defense_evasion action %% Discovery discovery_info["<b>Acción</b> – <b>T1589 Recolección de Información del Host de la Víctima</b>: Utiliza <code>system_profiler</code> para recolectar detalles de hardware y OS"] class discovery_info action %% Credential Access credential_access["<b>Acción</b> – <b>T1056 Captura de Entrada</b> y <b>T1555.001/002 Volcado de Credenciales</b>: Muestra un diálogo falso de contraseña de Preferencias del Sistema via AppleScript, valida con dscl, descarga archivos de Keychain y extrae bases de datos de navegadores, cookies y tokens de sesión"] class credential_access action %% Collection collection_staging["<b>Acción</b> – <b>T1074.001 Preparación de Datos Locales</b> y <b>T1560 Archivo de Datos Recogidos</b>: Reúne archivos, notas y billeteras cripto, organiza en directorio temporal y comprime en archivo ZIP"] class collection_staging action %% Exfiltration exfiltration_curl["<b>Acción</b> – <b>T1041 Exfiltración Sobre Canal C2</b> y <b>T1102.003 Protocolos Web</b>: Sube archivo ZIP vía <code>curl</code> POST a servicio web malicioso"] class exfiltration_curl action %% Command and Control c2_proxy["<b>Acción</b> – <b>T1090.002 Proxy</b> y <b>T1659 Inyección de Contenido Dinámico</b>: Tráfico dirigido a través de proxies y dominios de inyección controlados por el atacante"] class c2_proxy action %% Tool nodes tool_applescript["<b>Herramienta</b> – <b>Nombre</b>: AppleScript<br/><b>Propósito</b>: Muestra la interfaz de solicitud de credenciales"] class tool_applescript tool tool_dscl["<b>Herramienta</b> – <b>Nombre</b>: dscl<br/><b>Propósito</b>: Valida las credenciales capturadas"] class tool_dscl tool tool_curl["<b>Herramienta</b> – <b>Nombre</b>: curl<br/><b>Propósito</b>: Envía el archivo recolectado al servidor remoto"] class tool_curl tool tool_system_profiler["<b>Herramienta</b> – <b>Nombre</b>: system_profiler<br/><b>Propósito</b>: Recupera información del sistema"] class tool_system_profiler tool %% Connections showing the attack flow malware_miolab –>|entrega| initial_access initial_access –>|desencadena| execution_unix_shell execution_unix_shell –>|permite| defense_evasion defense_evasion –>|habilita| discovery_info discovery_info –>|proporciona datos a| credential_access credential_access –>|utiliza| tool_applescript credential_access –>|utiliza| tool_dscl credential_access –>|conduce a| collection_staging collection_staging –>|comprime y organiza| exfiltration_curl exfiltration_curl –>|utiliza| tool_curl exfiltration_curl –>|envía datos a| c2_proxy c2_proxy –>|dirige a través de| tool_curl %% Styling assignments class initial_access,execution_unix_shell,defense_evasion,discovery_info,credential_access,collection_staging,exfiltration_curl,c2_proxy action class tool_applescript,tool_dscl,tool_curl,tool_system_profiler tool class malware_miolab malware "
Flujo de Ataque
Detecciones
Comando y Control Sospechoso por Solicitud DNS de Dominio de Nivel Superior (TLD) Inusual (via DNS)
Ver
IOCs (HashSha256) para detectar: Say My Name: Como MioLab está construyendo un Imperio de Infostealer MacOS
Ver
IOCs (HashMd5) para detectar: Say My Name: Como MioLab está construyendo un Imperio de Infostealer MacOS
Ver
IOCs (DestinationIP) para detectar: Say My Name: Como MioLab está construyendo un Imperio de Infostealer MacOS
Ver
IOCs (SourceIP) para detectar: Say My Name: Como MioLab está construyendo un Imperio de Infostealer MacOS
Ver
Actividad del Infostealer MioLab MacOS [Creación de Procesos en Linux]
Ver
Ejecución de Simulación
Prerrequisito: El Chequeo Previo de Telemetría y Línea Base debe haber sido aprobado.
Racional: 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 narrativas DEBEN reflejar directamente los TTPs identificados y apuntan a generar la telemetría exacta esperada por la lógica de detección.
-
Narrativa y Comandos de Ataque:
- Terminar la sesión de Terminal del usuario – El malware primero desactiva el indicador de comando estándar para forzar al usuario a un flujo de UI controlado.
killall Terminal - Presentar una solicitud de credencial falsa – Usando
osascript, el atacante muestra un diálogo de AppleScript que imita una advertencia de configuración del sistema, incitando al usuario a ingresar su contraseña.osascript -e 'display dialog "Necesitas configurar las configuraciones del sistema antes de ejecutar esta aplicación." default answer "" with hidden answer' - Validar credenciales capturadas – La contraseña capturada se verifica contra el servicio de directorio local con
dscl . -authonly. Un retorno exitoso confirma que la credencial es correcta.dscl . -authonly "$USER" "$HARVESTED_PASSWORD" - Preparar y comprimir la carga de exfiltración – El atacante archiva los datos recolectados (e.g.,
~/.ssh/id_rsa) en un archivo zip usandoditto, preparándolo para la carga.ditto -c -k --sequesterRsrc /var/folders/*/DataStaging /tmp/exfil.zip
- Terminar la sesión de Terminal del usuario – El malware primero desactiva el indicador de comando estándar para forzar al usuario a un flujo de UI controlado.
-
Guion de Prueba de Regresión: (Bash – ejecuta la secuencia exacta para activar la regla)
#!/usr/bin/env bash set -euo pipefail echo "[*] Iniciando simulación de MioLab..." # 1. Matar Terminal echo "[+] Terminando Terminal" killall Terminal # 2. Solicitud de AppleScript falsa (simulado – sin interacción del usuario) echo "[+] Mostrando solicitud de credencial falsa" osascript -e 'display dialog "Necesitas configurar las configuraciones del sistema antes de ejecutar esta aplicación." default answer "" with hidden answer' >/dev/null 2>&1 # 3. Verificación de credenciales (usando usuario actual y una contraseña de ejemplo) echo "[+] Verificando credenciales capturadas" HARVESTED_PASSWORD="P@ssw0rd!" # En un escenario real esto sería la contraseña robada dscl . -authonly "$USER" "$HARVESTED_PASSWORD" || true # ignorar fallo para la demostración # 4. Organización y compresión de datos echo "[+] Comprimiendo datos organizados" STAGING_DIR=$(mktemp -d) echo "dato de ejemplo" > "$STAGING_DIR/sample.txt" ditto -c -k --sequesterRsrc "$STAGING_DIR" /tmp/exfil.zip echo "[*] Simulación completa. Verificar alerta en SIEM." -
Comandos de Limpieza: (Elimina los artefactos generados y restaura la sesión)
#!/usr/bin/env bash set -euo pipefail echo "[*] Limpiando artefactos de simulación de MioLab..." # Eliminar el archivo zip falso rm -f /tmp/exfil.zip # Eliminar directorio temporal de staging si existe [[ -d "$STAGING_DIR" ]] && rm -rf "$STAGING_DIR" # Opcionalmente reiniciar Terminal para el usuario open -a Terminal echo "[*] Limpieza terminada."