Pesquisadores de cibersegurança divulgaram detalhes de um novo ladrão de informações voltado para o macOS, escrito em Rust (linguagem de programação), chamado AmnesiaStealer, capaz de sequestrar navegadores web baseados em Chromium para roubar dados de sessão.
O malware, que opera em múltiplas etapas, é distribuído por meio de uma página falsa de download no GitHub intitulada "Download for macOS", que se passa por um publicador verificado. A página utiliza um mecanismo de atração no estilo ClickFix, que orienta os usuários a copiar e colar um comando codificado em Base64 (sistema de codificação de dados) no aplicativo Terminal do macOS.
A cadeia de ataque culmina na instalação do AmnesiaStealer por meio de um script dropper hospedado em um servidor remoto que, segundo o Jamf Threat Labs, é executado em três etapas distintas.
"A primeira é um script de shell que baixa e executa o payload (código malicioso)", afirmou o pesquisador de segurança Thijs Xhaflaire em um relatório compartilhado com o The Hacker News. "A segunda é um infostealer (ladrão de informações) em Rust que coleta dados do Chaveiro, navegadores, Notas da Apple e Telegram. A terceira é um stream_module, baixado sob comando, que fornece ao operador um controle oculto e interativo do navegador da vítima."
O script foi projetado para recuperar um arquivo ZIP protegido por senha e se autodestruir do sistema. Extraído do arquivo está o binário Mach-O (formato executável nativo do macOS) da primeira etapa, um ladrão de informações em Rust que inclui uma configuração criptografada embutida, a qual pode ser modificada no momento da compilação por meio da configuração, sem necessidade de alterações no código. Ele inclui os seguintes detalhes:
- Endpoints (pontos de conexão) de comando e controle (C2), por exemplo, "debug.allllowef[.]space/send/";
- Ativação ou desativação de um módulo de sequestro de área de transferência, conhecido como clipper, identificado como "CLIPPER_ENABLED", capaz de mirar criptomoedas como Bitcoin, Bitcoin Cash, Ethereum, TRON, Litecoin, Monero, Solana, Ripple e Cosmos (ATOM).
O payload em Rust também realiza reconhecimento do sistema e perfilamento de geolocalização, além de exibir um prompt (janela de solicitação) nativo para capturar a senha do sistema sob o pretexto de ser um instalador. A senha inserida é validada em relação ao serviço de diretório local via dscl (utilitário de linha de comando do macOS) para garantir que apenas a senha correta seja exfiltrada.
Se a verificação falhar, ele aciona um loop de diálogo com a mensagem "Senha incorreta. Tente novamente." até que a senha correta seja digitada. "Um caminho alternativo grava /tmp/tempAppleScript.scpt e invoca o osascript caso o alerta nativo falhe, embora em nosso sistema o caminho nativo tenha sido bem-sucedido e nenhum prompt do osascript tenha sido exibido", afirmou a Jamf.
"A senha capturada é então reutilizada ao longo da cadeia. Ela é canalizada para sudo -S para leituras privilegiadas, passada para security unlock-keychain -p e gravada em disco em texto puro, tanto no diretório de preparação como pwd quanto no diretório pessoal do usuário como ~/.pwd."
Vale notar que esse comportamento também foi observado em outra família de ladrões de dados para macOS chamada ClickLock Stealer, que tem mirado usuários localizados na Europa, América do Norte, Oriente Médio e África por meio de páginas de phishing (fraude eletrônica) que empregam a técnica ClickFix.
Também está presente um arquivo AppleScript que silencia o som do sistema e, em seguida, coleta dados do Notas da Apple, sessões do Telegram, Safari, arquivos com extensões específicas (.txt, .pdf, .rtf, .doc, .wallet, .key, .jpg, .png e .csv) nas pastas ~/Área de Trabalho, ~/Documentos e ~/Downloads, além do Chaveiro do iCloud, usando a senha do sistema capturada.
Algumas das outras ações executadas pelo ladrão de informações são as seguintes:
- Mirar 16 navegadores da família Chromium, incluindo Google Chrome, Brave, Arc e Microsoft Edge, para coletar Cookies, Dados de Login;
- Dados de Login para Conta, Dados da Web, Histórico, Favoritos, Estado Local, Preferências e o diretório de Extensões;
- Ler a senha do Chrome Safe Storage a partir do Chaveiro e usá-la para recuperar chaves mestras que protegem os dados armazenados na pasta de perfil do Chrome do usuário;
- Roubar cookies do Safari com base na versão do macOS, usando uma falha de bypass (contornamento) do TCC (Transparência, Consentimento e Controle, mecanismo de permissões da Apple) identificada como CVE-2020-9771, para atingir máquinas macOS rodando Catalina. A técnica também funciona no macOS 26, mas somente quando o malware possui Acesso Total ao Disco (Full Disk Access), o que não é o caso;
- Estabelecer persistência por meio de um LaunchDaemon (serviço de inicialização do sistema) com privilégios de root que se passa pelo serviço de relatório de falhas da Apple;
- Preparar os dados coletados em um diretório nomeado com 25 caracteres alfanuméricos aleatórios dentro de "/tmp" e, em seguida, compactá-los e exfiltrá-los.
Além disso, o comando "remote_stream" emitido pelo servidor C2 aciona o payload da primeira etapa a buscar e executar um segundo binário em Rust a partir da mesma infraestrutura, permitindo o controle remoto interativo por meio do Protocolo Chrome DevTools (CDP).
O módulo é compatível com sete navegadores da família Chromium: Chrome, Brave, Microsoft Edge, Arc, Opera, Vivaldi e Chromium, e inicia o executável do navegador em modo headless (sem interface gráfica) para roubar dados relacionados ao navegador. Ele também estabelece um canal de retransmissão usando WebSocket (protocolo de comunicação em tempo real) para aceitar comandos do operador e enviar o status de volta ao mesmo endpoint. Os comandos permitem que o agente malicioso controle remotamente o navegador, possibilitando o pressionamento de teclas, cliques do mouse, rolagem, navegação e gerenciamento de abas.
Para evitar que as sessões em modo headless sejam sinalizadas como automação pelos sites visitados pelo malware, o módulo injeta um script que corrige várias APIs (Interfaces de Programação de Aplicações) de fingerprinting (identificação digital) do navegador. Ele não possui persistência própria e é executado sob o payload principal.
"O operador recebe uma transmissão ao vivo da sessão em cerca de 3 quadros por segundo e pode conduzi-la com um conjunto completo de entradas: teclado, mouse, rolagem, navegação e gerenciamento de abas", afirmou a Jamf. "Esses comandos são traduzidos em chamadas CDP contra o navegador headless em tempo real. Trata-se de uma sessão oculta de navegador controlada manualmente via teclado, não de uma extração automatizada."
"Na prática, o comando remote_stream transforma um host infectado em um navegador ativo e controlado pelo operador, executando as sessões autenticadas da vítima, o que representa um nível materialmente diferente de acesso em relação à coleta de arquivos."
Embora os objetivos gerais do malware sejam consistentes com outros ladrões de dados como Atomic Stealer, MacSync e CrashStealer, três aspectos o diferenciam: uma configuração orientada por um builder (construtor de malware), lógica ramificada por versão do sistema operacional que busca bypasses do macOS já corrigidos pela Apple, e um segundo estágio de controle remoto que permite aos atacantes roubar cookies de usuários e evadir a detecção por meio de um script furtivo que corrige APIs de fingerprinting do navegador.
O nome AmnesiaStealer vem de uma página de login localizada na raiz do host C2 com o nome "Amnesia Panel". Uma tentativa de login malsucedida retorna uma mensagem de erro em russo, instando os usuários a fornecerem o login ou senha corretos para acessar o painel do operador.
"O AmnesiaStealer se propõe a coletar credenciais, dados de navegador e sessões ativas de usuários do macOS, e cumpre parte desses objetivos mais do que outros", disse a Jamf. "Um coletor funcional combinado com um estágio de sequestro de navegador funcional, envolto em alguns bypasses já antigos, é o que torna esse malware digno de acompanhamento."