Um implante e ladrão de informações para macOS, baseado em Rust e nunca antes documentado, foi descoberto com um payload de injeção de prompt criado para enganar ferramentas de inteligência artificial (IA) usadas por analistas de malware, induzindo-as a abortar ou se recusar a analisar o artefato.
O malware recebeu o codinome Gaslight em razão desse comportamento enganoso. A ferramenta foi atribuída com alta confiança a agentes de ameaça alinhados à Coreia do Norte.
"Sua característica mais notável é uma cascata embutida de mensagens fabricadas de falha do sistema, projetada para fazer um agente de triagem assistido por LLM (modelo de linguagem de grande porte) duvidar da própria sessão", afirmou o pesquisador da SentinelOne, Phil Stokes, em um relatório técnico. "Ele ataca a percepção do agente, e não a sandbox na qual ele é executado."
No centro da arquitetura do malware está um canal de comando e controle (C2) baseado na API (interface de programação de aplicativos) de bot do Telegram, que entra em um loop de sondagem, permitindo ao operador emitir instruções por meio de um shell interativo e retornar os resultados da execução. Caso duas instâncias do mesmo token de bot realizem a sondagem ao mesmo tempo, uma resposta de "conflito" é emitida, fazendo com que a segunda cópia seja encerrada.
O shell oferece seis comandos principais, que concedem um acesso persistente ao host infectado:
- help, para exibir a ajuda de comandos;
- id, para identificar o implante para o operador;
- shell, para executar um comando de shell via execvp (função da família exec que executa um programa substituindo o processo atual);
- kill, para encerrar um processo-alvo pelo PID (identificador de processo);
- upload, para exfiltrar um arquivo pelo mecanismo "attach://" do Telegram;
- stop, para interromper a execução do implante.
A SentinelOne afirmou ter identificado indícios da presença de um sétimo comando chamado "focus", embora sua funcionalidade ainda permaneça indeterminada nesta fase. Para obter persistência, o Gaslight utiliza um LaunchAgent (mecanismo do macOS para executar programas automaticamente no login do usuário) que usa o rótulo "com.apple.system.services.activity" em seu arquivo .plist (arquivo de configuração em formato de lista de propriedades usado no macOS).
Também embutido no malware está um script em Python de 6,6 KB codificado em Base64 (esquema de codificação que converte dados binários em texto ASCII), que funciona como um conjunto de coleta de informações responsável por extrair históricos de comandos do Terminal, listas de aplicativos instalados, snapshots de processos em execução, perfil de hardware e software do sistema, banco de dados do Keychain do macOS (sistema nativo de armazenamento de credenciais) e dados dos navegadores Chrome, Brave, Firefox e Safari. Os dados coletados são, em seguida, compactados em um arquivo ZIP ("temp/collected_data.zip") e enviados pelo Telegram.
O ladrão de informações em Python, por sua vez, é implantado por meio de um instalador em bash de 2 KB codificado em Base64, que deposita um interpretador cpython-3.10.18 a partir do projeto "astral-sh/python-build-standalone". A presença de emojis e cabeçalhos extensos de comentários indica que ele provavelmente foi gerado usando um LLM (modelo de linguagem de grande porte).
O que chama a atenção no Gaslight é que os detalhes relacionados ao token do bot, o ID do chat (tg_room_id) e o restante da configuração do operador não estão hard-coded (gravados de forma fixa no código) na amostra, sendo fornecidos em tempo de execução. "O próprio implante se autocensura no seu output de tempo de execução, negando o token do bot do Telegram a qualquer pessoa que capture logs ou artefatos de falhas", acrescentou Stokes.
Além disso, o malware tenta se evadir da detecção baseada em IA ao incorporar um bloco delimitado em Markdown (linguagem de marcação leve usada para formatação de texto) contendo 38 mensagens fabricadas de "sistema", projetadas para induzir um agente de segurança a abortar, truncar ou se recusar a fazer a análise.
"O esqueleto contém falsas mensagens de sistema sobre expiração de tokens, encerramentos por falta de memória, esgotamento de disco e falhas repetidas de operação. Também planta avisos falsos sobre vulnerabilidades de injeção e sinalizações de análise estática", afirmou a SentinelOne, classificando o caso como uma "tentativa de transformar em arma os pipelines de triagem assistidos por LLM que, cada vez mais, fazem parte do ciclo de engenharia reversa".