SOC Prime Bias: High

25 Sep 2026 08:15 UTC

PamStealer se Muda a Swift con una Cadena de Desencriptación del Lado del Servidor

Author Photo
SOC Prime Team linkedin icon Seguir
PamStealer se Muda a Swift con una Cadena de Desencriptación del Lado del Servidor
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Una nueva variante de PamStealer, un infostealer de macOS, introduce un cambio arquitectónico importante de Rust a Swift. El malware actualizado depende de una cadena de descifrado del lado del servidor impulsada por una utilidad personalizada llamada pkgunpack, que requiere interacción activa de C2 para descifrar y ejecutar la carga útil de segunda etapa. También utiliza mecanismos de persistencia en capas mientras apunta a credenciales de navegador, datos de Keychain y metadatos extensos del sistema.

Investigación

Jamf Threat Labs analizó la nueva variante de PamStealer tras identificarla dentro de un instalador falso de monedero de criptomonedas llamado Wavel. La investigación descubrió una cadena de ejecución en varias etapas que comienza con un dropper JXA compilado, seguido de una etapa basada en zsh que realiza intercambios de claves en vivo, y una segunda etapa basada en Swift responsable del robo de credenciales y la impresión digital del sistema.

Mitigación

Los usuarios deben evitar descargar aplicaciones de fuentes no oficiales, en particular software que se hace pasar por monederos de criptomonedas. Las organizaciones deben monitorear elementos de fondo sospechosos en macOS y cambios no autorizados en archivos de configuración de shell como .zshrc. Los controles de seguridad en el endpoint capaces de detectar firma de código ad-hoc, reparentización de procesos anormales y ejecución inusual de shell pueden reducir aún más la exposición.

Respuesta

Cuando se detecte actividad de PamStealer, aísle el endpoint de macOS afectado de la red para evitar más comunicación de comando y control y exfiltración de datos. Realice un análisis forense para determinar el alcance del robo de credenciales, prestando especial atención a los datos del navegador y el Keychain de macOS. Revise los registros del sistema para detectar la creación no autorizada de LaunchAgent, elementos de fondo sospechosos y actividad inesperada del shell.

Flujo de Ataque

Todavía estamos actualizando esta parte.

Detecciones

Firma de Código Forzada de Paquete de Aplicación Modificado (vía línea de comandos)

Equipo de SOC Prime
24 Sep 2026

Utilidad de Archivo de MacOS Apuntando a Directorio Sospechoso (vía línea de comandos)

Equipo de SOC Prime
24 Sep 2026

Uso Sospechoso de Ditto para Archivado y Exfiltración de Archivos en macOS (vía creación de procesos)

Equipo de SOC Prime
24 Sep 2026

Intento de Ejecución de Curl Sospechoso [MacOS] (vía línea de comandos)

Equipo de SOC Prime
24 Sep 2026

Se Creó un Archivo en la Carpeta Temporal de MacOS (vía evento de archivo)

Equipo de SOC Prime
24 Sep 2026

Terminación de Procesos Auxiliares del Navegador para Desbloqueo de Credenciales [Creación de Procesos de Windows]

Reglas AI de SOC Prime
24 Sep 2026

Detectar Uso de xattr y codesign para Técnicas de Evasión en Variante PamStealer [Evento de Archivo de Linux]

Reglas AI de SOC Prime
24 Sep 2026

Ejecución de Script JXA de PamStealer vía Zsh [Creación de Procesos de Linux]

Reglas AI de SOC Prime
24 Sep 2026

Ejecución de Simulación

  • Narrativa del Ataque y Comandos: El atacante busca desplegar una carga útil que evite la detección en disco. Para lograr esto, usan un comando que decodifica una cadena codificada en Base64 y la pasa directamente a un zsh subshell usando el -s flag. Para evitar que un investigador vincule fácilmente el proceso malicioso a la sesión de shell original, el atacante envuelve la carga útil en una función llamada daemon_function, la ejecuta en segundo plano usando &, y sale inmediatamente del shell actual para romper el enlace del árbol de procesos.

  • Script de Prueba de Regresión:

    #!/bin/bash
    # Simulación de ejecución JXA de PamStealer vía zsh
    
    # Definir la carga útil "maliciosa" como un nombre de función y un comando
    # La carga útil se pasa por zsh -s para imitar el TTP
    PAYLOAD="daemon_function() { echo '[!] CARGA MALICIOSA EJECUTADA'; }; daemon_function & ; exit 0"
    
    # Ejecutar la carga útil exactamente como espera la regla de detección
    echo "$PAYLOAD" | zsh -s
  • Comandos de Limpieza:

    # La limpieza es mínima ya que el comando se pasa y no crea archivos persistentes.
    # Solo necesitamos asegurarnos de que no haya procesos en segundo plano de la simulación aún corriendo.
    pkill -f "daemon_function"