SOC Prime Bias: High

25 Sep 2026 08:15 UTC

PamStealer Muda para Swift com uma Cadeia de Descriptografia no Lado do Servidor

Author Photo
SOC Prime Team linkedin icon Seguir
PamStealer Muda para Swift com uma Cadeia de Descriptografia no Lado do Servidor
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

Uma nova variante do PamStealer para macOS introduz uma mudança arquitetural significativa de Rust para Swift. O malware atualizado depende de uma cadeia de descriptografia do lado do servidor movida por uma ferramenta personalizada chamada pkgunpack, exigindo interação ativa com C2 para descriptografar e executar a carga útil de segunda fase. Também utiliza mecanismos de persistência em camadas enquanto visa credenciais de navegador, dados do Keychain e metadados extensivos do sistema.

Investigação

O Jamf Threat Labs analisou a nova variante do PamStealer após identificá-la dentro de um instalador falso de carteira de criptomoeda chamado Wavel. A investigação revelou uma cadeia de execução em várias etapas começando com um dropper JXA compilado, seguido por uma etapa baseada em zsh que realiza trocas de chaves ao vivo, e uma segunda etapa baseada em Swift responsável pelo roubo de credenciais e impressão digital do sistema.

Mitigação

Os usuários devem evitar baixar aplicativos de fontes não oficiais, especialmente software que se faz passar por carteiras de criptomoeda. As organizações devem monitorar itens de fundo suspeitos no macOS e alterações não autorizadas em arquivos de configuração do shell, como .zshrc. Controles de segurança de endpoints capazes de detectar assinaturas de código ad hoc, reparentagem de processos anormais e execução incomum do shell podem reduzir ainda mais a exposição.

Resposta

Quando a atividade do PamStealer for detectada, isole o endpoint macOS afetado da rede para evitar mais comunicações de comando e controle e exfiltração de dados. Realize análise forense para determinar o escopo do roubo de credenciais, com atenção especial para dados de navegador e o Keychain do macOS. Revise os logs do sistema para a criação não autorizada de LaunchAgent, itens de fundo suspeitos e atividade inesperada do shell.

Fluxo de Ataque

Ainda estamos atualizando esta parte.

Detecções

Assinatura de Código Forçada de Pacote de Aplicativo Modificado (via linha de comando)

Equipe SOC Prime
24 Set 2026

Utilitário de Arquivo MacOS Apontando para Diretório Suspeito (via linha de comando)

Equipe SOC Prime
24 Set 2026

Uso Suspeito de Ditto para Arquivamento e Exfiltração de Arquivos no macOS (via criação_de_processos)

Equipe SOC Prime
24 Set 2026

Tentativa de Execução Suspeita do Curl [MacOS] (via linha de comando)

Equipe SOC Prime
24 Set 2026

Arquivo Criado na Pasta Temporária do MacOS (via evento_de_arquivo)

Equipe SOC Prime
24 Set 2026

Encerramento de Processos Auxiliares do Navegador para Desbloqueio de Credenciais [Criação de Processo no Windows]

Regras de IA do SOC Prime
24 Set 2026

Detectar Uso de xattr e codesign para Técnicas de Bypass na Variante PamStealer [Evento de Arquivo no Linux]

Regras de IA do SOC Prime
24 Set 2026

Execução de Script JXA do PamStealer via Zsh [Criação de Processo no Linux]

Regras de IA do SOC Prime
24 Set 2026

Execução de Simulação

  • Narrativa & Comandos do Ataque: O invasor busca implantar uma carga útil que evite a detecção em disco. Para conseguir isso, usam um comando que decodifica uma string codificada em Base64 e a envia diretamente para um zsh subshell usando o -s flag. Para evitar que um investigador facilmente relacione o processo malicioso à sessão de shell original, o invasor encapsula a carga útil em uma função chamada daemon_function, executa-a em segundo plano usando &, e sai imediatamente do shell atual para quebrar a ligação da árvore de processos.

  • Script de Teste de Regressão:

    #!/bin/bash
    # Simulação da execução de PamStealer JXA via zsh
    
    # Define a carga "maliciosa" como um nome de função e um comando
    # A carga é enviada para zsh -s para imitar o TTP
    PAYLOAD="daemon_function() { echo '[!] CARGA MALICIOSA EXECUTADA'; }; daemon_function & ; exit 0"
    
    # Execute a carga exatamente como a regra de detecção espera
    echo "$PAYLOAD" | zsh -s
  • Comandos de Limpeza:

    # A limpeza é mínima pois o comando é enviado e não cria arquivos persistentes.
    # Precisamos apenas garantir que nenhum processo em segundo plano da simulação ainda esteja em execução.
    pkill -f "daemon_function"