Pesquisadores de cibersegurança identificaram uma nova versão do PamStealer cujo payload principal só pode ser recuperado por meio de uma cadeia de descriptografia em tempo real que depende do servidor de comando e controle (C2).
As amostras mais recentes, segundo o Jamf Threat Labs, continuam usando o mesmo mecanismo de dropper baseado em JavaScript for Automation (JXA), mas modificam a isca e o método de distribuição.
“Nas versões anteriores, o material de chave do payload era incorporado diretamente ao código-fonte JXA. Agora, a ameaça baixa um utilitário de descriptografia específico e realiza uma troca de chaves com o servidor antes de liberar o payload”, explicou o pesquisador de segurança Thijs Xhaflaire em uma análise. “Sem a cooperação do servidor, não é possível recuperar o payload por meio de análise estática.”
Outra mudança importante está na escolha da isca. As versões anteriores, observadas em julho e agosto de 2026, usavam sites falsos que imitavam o Maccy, o Scoppr e o Nancy Clipboard. Agora, as vítimas são atraídas por um site fraudulento, “wavel[.]app”, que anuncia um serviço inexistente de carteira de criptomoedas chamado Wavel.
Ao clicar no botão “Baixar para macOS” no site falso, a vítima baixa um arquivo de imagem de disco, “Wavel.dmg”, que contém um arquivo AppleScript compilado. Ao abrir o arquivo, o Editor de Scripts da Apple é iniciado e apresenta instruções para executar um dropper JXA.
“No Maccy, no Scoppr e no Nancy, o código-fonte JXA descriptografava com RC4 um payload incorporado, fazia chamadas a frameworks Objective-C por meio da ponte do JXA com Foundation e NSData e gerenciava todo o processo de download e preparação dos arquivos”, explicou Xhaflaire.
“No Wavel, o código-fonte JXA não contém nada disso. Toda a camada JXA agora funciona apenas como veículo. Quando o Editor de Scripts executa o arquivo, ele decodifica a sequência em Base64 e envia o resultado para /bin/zsh -s. Nesse processo, o zsh lê e executa os bytes decodificados pela entrada padrão. O processo JXA é encerrado imediatamente, enquanto o dropper zsh continua em segundo plano.”
O script zsh decodificado dá continuidade à infecção e executa as seguintes ações:
- Baixa e executa o utilitário de descriptografia “pkgunpack”, hospedado em “wavel.apple03cloudstore[.]com”.
- Realiza a troca de chaves X25519.
- Descriptografa e prepara o pacote do payload.
- Desativa as notificações do macOS que avisam quando um novo item de início de sessão em segundo plano é adicionado.
- Instala quatro métodos redundantes de persistência por meio de um LaunchAgent, de um script zsh de reparo que restaura o pacote do payload e o LaunchAgent caso estejam ausentes, e de um gancho de shell adicionado a ~/.zshrc. Esse gancho executa o script de reparo sempre que uma nova sessão interativa do zsh é iniciada.
- Verifica periodicamente o diretório de preparação e o envia como um arquivo ZIP.
### Geração de chaves efêmeras e troca ativa de DEK
Como o servidor mantém a chave privada necessária para concluir a troca de chaves, a chave de criptografia de dados (DEK) não pode ser recuperada sem a participação dele. Isso impede a descriptografia do payload. Além disso, como um novo par de chaves efêmeras é gerado a cada execução, não é possível reutilizar uma DEK capturada para extrair o conteúdo do payload.
Na prática, sem acesso a uma sessão ativa de C2, o payload criptografado se torna inútil para análise estática.
O script de reparo também é copiado para as pastas “post-checkout” e “pre-commit”, dentro de “~/Library/Application Support/System/.githooks/”. A configuração global do Git, “git config --global core.hooksPath”, é ajustada para apontar para esse diretório. Como resultado, qualquer operação de git checkout ou git commit em qualquer repositório do sistema comprometido ativa silenciosamente o script de reparo.
A etapa final é o componente de roubo de dados, escrito em Swift. A escolha representa uma mudança em relação à versão anterior, desenvolvida em Rust. Apesar da alteração na linguagem de programação, os objetivos continuam os mesmos:
- Capturar a senha do sistema exibindo uma falsa caixa de diálogo de falha e validar os dados digitados por meio de um método baseado em PAM.
- Enumerar e coletar itens do chaveiro.
- Roubar credenciais de navegadores baseados em Chromium e Firefox, incluindo Google Chrome, Microsoft Edge, Mozilla Firefox, Brave, Vivaldi, Opera, Opera GX, Arc, Zen, Waterfox, LibreWolf, Yandex Browser e Cốc Cốc.
- Criar uma impressão digital do sistema, coletar metadados detalhados e obter a foto de perfil do usuário.
- Coletar arquivos relacionados ao usuário, como .zsh_history, .zshrc, .bash_history e .gitconfig.
- Listar processos em execução e aplicativos instalados.
“A inclusão do Arc, do Zen e de navegadores regionais menos conhecidos ou voltados à privacidade amplia de forma notável a lista de alvos, que vai além do padrão observado em ladrões de dados comuns para macOS”, afirmou Xhaflaire.
“Esta versão do PamStealer demonstra um investimento deliberado na infraestrutura de distribuição. O utilitário pkgunpack introduz uma troca de chaves ativa que vincula a descriptografia do payload à disponibilidade do servidor. Sem a cooperação do C2, não é possível descriptografar o segundo estágio. Esse projeto dificulta significativamente a recuperação do payload por análise estática e transfere parte do controle operacional para quem administra o servidor.”
Publicidade
Vibecoding cria 10x mais sistemas, 20x mais vulneráveis. E quem ganha com isso é a galera do hacking ético e pentest. Quer ser pago para invadir sistemas? Então você tem que aprender com a Solyd que são os melhores do Brasil. Saiba mais...