Um atacante de língua francesa invadiu uma pequena empresa automotiva na França, instalou um keylogger (programa que registra teclas digitadas) e roubou credenciais bancárias e de e-mail.
Cenário comum, até um movimento perto do final da operação.
Antes de seu servidor de comando e controle (conhecido como C2) ser desativado, ele instalou OpenSSH (ferramenta de acesso remoto seguro) e Tailscale (solução de rede privada virtual baseada em malha) na máquina da vítima, criando um caminho de retorno que não passava pelo C2. Quando o servidor Havoc ficou offline no dia seguinte, o acesso dele continuou de pé. Dezoito dias depois, o C2 voltou, seus agentes se reconectaram sozinhos e ele seguiu operando.
A Cato Networks capturou a operação inteira, comando por comando, 339 deles ao longo de 33 dias, depois que o operador deixou suas chaves SSH e um manual passo a passo em um bucket de armazenamento aberto. O relato, publicado na terça-feira pelo pesquisador Vitaly Simonovich, da Cato CTRL, é uma visão rara de uma invasão vista pelo teclado do operador, e não pelos vestígios forenses.
A lição dos pesquisadores é direta: derrubar um servidor C2 não é remediação se o invasor já construiu uma porta separada.
O ator, com apelido "Poisson", não é uma APT (sigla em inglês para Ameaça Persistente Avançada, grupo sofisticado de ciberataques). Os pesquisadores descrevem um operador iniciante com o que parece uma rotina escolar, ativo depois das 15h no horário da Europa Central (CET), com uma longa pausa no meio do dia, tudo rodando em ferramentas gratuitas: DuckDNS (serviço dinâmico de DNS), Backblaze B2 (armazenamento em nuvem) e um VPS (servidor virtual privado) barato da IONOS em Berlim. Seu nível técnico era baixo.
Ele vazou o próprio diretório pessoal cinco vezes, nomeou seus buckets de armazenamento com seu próprio apelido e deixou um arquivo de teste com suas próprias teclas digitadas repetidamente dentro do pacote do keylogger. Ele errou em cerca de metade do que tentou. Mesmo assim, comprometeu quatro máquinas.
A cadeia de ataque
O malware rodou quase inteiramente na memória. Um stager (carregador inicial) em VBScript (linguagem de script da Microsoft) com atraso para evasão de sandbox descriptografou um loader (carregador) em PowerShell, que baixou um loader em .NET (plataforma de desenvolvimento da Microsoft) que executou o agente Demon do Havoc sem gravar o implante em disco. Para elevação de privilégios, ele usou Start-Process -Verb RunAs, que não é um contorno silencioso do UAC (Controle de Conta de Usuário do Windows). O comando dispara o prompt de consentimento do Windows e espera alguém clicar em Sim. Em uma das vítimas, foram necessárias cerca de uma dúzia de tentativas ao longo de dois dias.
Depois veio a fixação do acesso: uma tarefa agendada rodando a cada logon com privilégios máximos, shellcode (código malicioso injetado em memória) injetado no Explorer.exe e um RustDesk (ferramenta de acesso remoto) personalizado como canal de backup. O coletor de credenciais era um keylogger em Python de 70 linhas que gravava teclas em um arquivo local, sem beacon (sinal de chamada para o C2) e sem servidor de exfiltração. Poisson simplesmente acessava a máquina, pegava o arquivo manualmente e executava powercfg (ferramenta de configuração de energia do Windows) para impedir que as máquinas entrassem em suspensão, mantendo a coleta ininterrupta.
O movimento que importa
Em 7 de abril, em uma sessão noturna de cinco horas, ele instalou o OpenSSH Server e o Tailscale, juntou a máquina da vítima à sua rede privada no Tailscale e configurou acesso SSH por chave e um túnel reverso. Agora ele conseguia alcançar a máquina pela malha criptografada do Tailscale, sem C2 e sem portas expostas.
No dia seguinte, a infraestrutura do Havoc foi desativada. A Cato não diz o motivo, e isso pouco importa: o caminho pelo Tailscale ficava em uma rede separada, então o acesso sobreviveu.
Quando o C2 voltou em 26 de abril, os agentes se reconectaram automaticamente, sem novo comprometimento. Nos cinco dias finais, ele executou mais 145 comandos, sondou armazenamentos de smart card e certificados (um sinal de que tentava logins baseados em certificado), executou dois binários não explicados a partir de um arquivo chamado Thales.zip por cerca de 32 minutos no total, depois apagou 17 arquivos e ficou em silêncio em 1º de maio.
O que ele queria era restrito. Nada de Mimikatz (ferramenta de extração de credenciais), sem movimento lateral, sem ransomware (software de extorsão que criptografa dados) e sem indício de que tenha levado os documentos que navegou, de registros fiscais a apólices de seguro. Apenas o que as pessoas digitam: logins bancários, senhas de e-mail, portais governamentais. Para o dono de uma pequena empresa, isso representa exposição financeira direta.
Nenhuma das ferramentas é nova, e esse é o ponto. A APT31, ligada à China, usou Tailscale ao longo de 2024 e 2025 para fazer túneis silenciosos para fora de empresas de TI russas, o Scattered Spider (grupo de cibercriminosos) tem se apoiado em ferramentas legítimas de acesso remoto como Ngrok e Fleetdesk, e o RustDesk, o canal de backup de Poisson, aparece em invasões recentes do ransomware Akira.
Os binários são assinados e legítimos, então detecções que param em arquivos ruins, e não em comportamento ruim, deixam eles passarem. O que Poisson acrescenta é a prova, em nível de comando, de que o truque sobrevive a uma derrubada, executado por alguém claramente ainda aprendendo.
O que monitorar
A lista de caça da Cato é objetiva:
- Gerar alerta quando o OpenSSH Server for instalado em uma estação de trabalho Windows, o que raramente é legítimo.
- Monitorar a presença de tailscale.exe em máquinas que não têm motivo para rodar uma VPN (rede privada virtual).
- Procurar túneis reversos com ssh -R apontando para hosts externos.
- Verificar wscript.exe executando arquivos .vbs a partir de pastas de staging de usuários.
- Marcar tarefas agendadas configuradas com privilégios máximos que iniciem interpretadores de script.
- Observar alterações em powercfg que mudam o tempo de suspensão para manter as máquinas acordadas.
- Bloquear DuckDNS.
O ponto maior: quando você encontra um C2, presuma que não é o único caminho de entrada e vá caçar a camada silenciosa de persistência por trás dele.
O que havia no Thales.zip e o que aqueles dois programas fizeram nos seus 32 minutos na máquina é a questão que a Cato deixa em aberto. A resposta que importa mais: o C2 nunca foi a invasão em si, apenas um caminho para ela. Derrube-o e deixe o OpenSSH, o Tailscale, a tarefa agendada e o keylogger rodando, e o invasor ainda terá um caminho de volta.
Essa é a parte que a remediação continua deixando passar.