A Unit 42, equipe de inteligência de ameaças da Palo Alto Networks, detalhou em 15 de outubro de 2026 uma campanha de espionagem contra entidades governamentais e infraestrutura ligada ao Estado, com atividade observada entre outubro de 2025 e abril de 2026. O agrupamento, rastreado como CL-UNK-1211, concentrou o esforço em servidores Linux: implantou web shells em escala, roubou credenciais de administradores, enumerou caixas de correio oficiais, despejou bancos de dados inteiros e encerrou cada intrusão com limpeza forense dos logs. A ação prioritária para equipes de defesa é auditar as configurações de PHP dos servidores expostos, buscar os indicadores listados adiante e restringir conexões de saída iniciadas por utilitários de linha de comando.
O que muda nesta campanha
O diferencial da CL-UNK-1211 não é a espionagem em si, e sim a cadeia de produção dos payloads. Vários artefatos continham anotações conversacionais e comentários de raciocínio típicos de respostas de modelos de linguagem — o tipo de texto que explica o código a quem fez o pedido, não a quem vai mantê-lo. Para a Unit 42, essas marcas sugerem código copiado de saídas de IA ou gerado e executado por agentes automatizados. Os roteiros alternavam PHP, JavaScript, Bash e Python sem perda de ritmo, com comandos em Base64 e saídas organizadas em seções. O efeito prático é um fluxo maior de scripts descartáveis, escritos sob demanda, com pouca sobreposição com amostras anteriores — o que reduz a eficácia da detecção por hash e aumenta o peso da detecção comportamental.
A atribuição fica em aberto: o rótulo UNK indica que a Unit 42 ainda não determinou vínculo estatal ou criminoso. Isso não muda a resposta técnica. Os alvos — governo, correio oficial, bancos de dados sensíveis — e o foco em coleta de informação configuram espionagem, e a defesa deve ser tratada como tal.
Como ocorre o acesso inicial
A entrada combinou web shells próprias e ferramentas open source do GitHub, instaladas em servidores Linux acessíveis pela web, com redundância deliberada: múltiplos shells por host, em processos como o php-fpm. A partir do shell, os atacantes codificavam scripts PHP em Base64, habilitavam execução de comandos em servidores MSSQL internos via XP_CMDSHELL e montavam cadeias de execução em dois saltos para alcançar segmentos protegidos por firewall interno, roteando comandos de um servidor web comprometido até um segundo servidor SQL em outra sub-rede.
Para transformar acesso pontual em presença duradoura, os atacantes alteraram o valor de auto_prepend_file nas configurações do PHP em /etc/php/ e /opt/plesk/php/, os diretórios que armazenam as configurações padrão do interpretador e do painel de hospedagem Plesk. O arquivo indicado nesse valor passa a ser carregado antes de qualquer script PHP do servidor — persistência que sobrevive a reinicializações. Em um dos casos, a carga foi instalada como /usr/lib/php/plesk_sys_driver.php, nome escolhido para se confundir com componente legítimo. Hospedagens que mantêm Plesk devem tratar esse caminho como verificação obrigatória.
Três camadas de persistência
O toolkit inclui o SysGoRAT, um trojan de acesso remoto multiplataforma escrito em Go, visto pela primeira vez como sys-control-client. O malware estabelece comando e controle por WebSocket, com endereço padrão codificado no binário na porta 443 e alterável por parâmetro, e responde a sete tipos de comando: execução arbitrária via shell, listagem de diretórios, sessão interativa, ações de controle e três verbos de proxy para alcançar alvos internos. Em cada vítima, o binário ganhava nome de fachada — pip2.7, ea_install ou./semanage.
A segunda camada é o sistema: chaves públicas injetadas no authorized_keys de usuários criavam acesso SSH sem senha, e backdoors de root com nomes como.libsystemd-helper e.tourch — uma cópia do /bin/bash com bit SUID — permitiam executar comandos como root. A terceira é o movimento lateral com sshpass e credenciais administrativas gravadas em script, seguido de leitura do /etc/shadow e busca por arquivos wp-config.php com senhas de banco.
O disfarce com nomes legítimos lembra a persistência do Flax Typhoon com o SoftEther; o que muda é o alvo — governo e Linux — e a automação na produção do código.
Roubo de credenciais e e-mails
O roubo de credenciais combinou três técnicas baratas. Os atacantes substituíram o.bashrc por uma cópia com um alias do sudo que exibe o prompt padrão, grava a senha digitada em um log batizado Solarwinds.StatusLog.txt — imitação de atividade legítima; não há evidência de comprometimento de sistemas SolarWinds — e repassa a senha ao sudo real, sem erro visível. Também inseriram um registrador em páginas de login em PHP e varreram configurações e históricos de comando atrás de senhas em texto claro de e-mail, SMTP e banco.
Com privilégio administrativo, o grupo enumerou os diretórios de correio do qmail (/var/qmail/mailnames/), contou mensagens por usuário e implantou o script search_social.php, que localiza e-mails ligados a redes sociais — o objetivo era usar caixas oficiais para assumir contas externas. Um roteiro de compactação, zip_mails.sh, foi criado para empacotar caixas inteiras, mas a versão analisada tinha erro de sintaxe e falharia — indício de iteração rápida, sem revisão. Bancos completos foram despejados em CSV e em um SQLite local (dump.sqlite) antes da exfiltração por netcat ou por upload a serviços de hospedagem de arquivos como transfer.sh, bashupload.com, filebin.net e catbox.moe, para se misturar ao tráfego web normal.
Scanner para a falha React2Shell
Para ampliar o alcance, a campanha implantou um scanner próprio, escrito em Go, que procura servidores vulneráveis à CVE-2025-55182 — execução remota de código antes da autenticação no React Server Components, nas versões 19.0.0, 19.1.0, 19.1.1 e 19.2.0, por desserialização insegura de requisições a endpoints de Server Functions. A falha, apelidada de React2Shell, entrou no catálogo KEV da CISA em 5 de dezembro de 2025, com prazo federal vencido em 12 de dezembro. Equipes com renderização no servidor exposta devem tratar a correção como prioridade, independentemente deste agrupamento.
Evasão e anti-forense
O encobrimento foi metódico: tentativa de terminar processos de proteção de endpoint com pgrep e pkill — detectada e bloqueada pelo agente, segundo o relatório —, uso de touch -t para regravar datas de arquivos, scripts que se apagam com rm após executar e limpeza em massa de logs de autenticação, histórico, correio, sistema operacional, servidor web e sessões PHP, seguida de verificação automatizada de que os endereços IP usados sumiram dos registros. O toque final é manipulativo: marcadores como a chave RedTeamOps2025 e a senha pentest123 em conta criada pelos atacantes induzem a análise pós-incidente a concluir que tudo foi exercício autorizado de red team. Times de resposta devem tratar esses marcadores como indício de manipulação, não como encerramento do caso.
Indicadores para caçar agora
| Indicador | O que significa |
|---|---|
| /usr/lib/php/plesk_sys_driver.php | Web shell disfarçada de driver do Plesk |
| auto_prepend_file alterado em /etc/php/ ou /opt/plesk/php/ | Persistência global no PHP |
| Solarwinds.StatusLog.txt | Log de senhas capturadas pelo alias do sudo |
| sys-control-client, pip2.7, ea_install,./semanage | Nomes de fachada do SysGoRAT |
| .libsystemd-helper,.tourch | Backdoors SUID de root |
| /dev/shm/.gs-10085/ com gs-netcat renomeado para [kcached] | Túnel reverso Global Socket disfarçado |
| search_social.php, zip_mails.sh, dump.sqlite | Ferramentas de busca e exfiltração de correio e dados |
| Chave RedTeamOps2025; senha pentest123 | Marcadores de falso exercício de red team |
| Uploads por curl para transfer.sh, bashupload.com, filebin.net, catbox.moe | Exfiltração disfarçada de tráfego normal |
Ações priorizadas
P1 — hoje: comparar o auto_prepend_file de /etc/php/ e /opt/plesk/php/ com a linha de base e reverter valores desconhecidos; varrer os nomes da tabela em todos os servidores Linux, incluindo /dev/shm; revisar authorized_keys por chaves sem registro de mudança; bloquear na saída dos servidores web as conexões de netcat, os redirecionamentos bash para /dev/tcp e WebSockets para destinos fora da lista aprovada; isolar hosts com qualquer indicador da tabela.
P2 — esta semana: monitorar a integridade do.bashrc e alertar sobre alias de sudo; ativar regras de auditd para histórico de shell e arquivos de log; criar alerta para tentativas de pkill contra o agente de endpoint e para uso de touch -t fora de janelas de manutenção; aplicar as mitigações da CVE-2025-55182 onde houver React Server Components exposto. Se um incidente for confirmado, preservem logs remotos e memória antes de qualquer limpeza — este grupo apaga exatamente o que a investigação precisa.