Voltar à sala de imprensa
Ameaças

Administradores WordPress com sessão iniciada transformados em instaladores de backdoors

Uma cadeia de ataque analisada recentemente, seguida sob o nome TRUST#GRAFT, nunca toca na palavra-passe do administrador. Espera por um administrador WordPress já autenticado, aproveita a sessão do browser para carregar um plugin malicioso e esconde um backdoor PHP onde a página de plugins não o consegue ver.

Administradores WordPress com sessão iniciada transformados em instaladores de backdoors

Administradores WordPress com sessão iniciada transformados em instaladores de backdoors

A maioria dos administradores WordPress mantém o wp-admin aberto num separador enquanto navega pelo resto da web. Uma cadeia de ataque analisada recentemente, seguida sob o nome TRUST#GRAFT, foi construída precisamente à volta desse hábito. Não adivinha, não rouba nem faz phishing da palavra-passe do administrador. Limita-se a esperar por um administrador que já tem sessão iniciada e usa a sessão de confiança desse browser para instalar um plugin malicioso no site. O resultado é um backdoor PHP persistente escondido numa pasta que a página normal de plugins nunca mostra.

O que aconteceu

A cadeia começa com um carregador JavaScript colocado numa página WordPress comprometida. Ainda não foi confirmado como esse primeiro script chega à página, pelo que o vetor de acesso inicial continua a ser uma questão em aberto e não um facto estabelecido.

Quando um visitante entra na página, o carregador cobre-a com um iframe em ecrã inteiro desenhado para parecer um ecrã de verificação ao estilo Cloudflare, com o clássico "Just a moment…". Enquanto o visitante espera, o script recolhe discretamente a impressão digital do browser: tamanho do ecrã, dados da placa gráfica, fuso horário e número de plugins instalados no browser. Procura também sinais de sandboxes e de ferramentas de análise automática. Os dados recolhidos seguem para um servidor de controlo, que decide se aquele visitante em concreto merece uma segunda fase.

Se o visitante for um administrador WordPress autenticado, chega o passo decisivo. Apoiado nos cookies de sessão que o browser já tem, o script pede a página de carregamento de plugins, lê aí o nonce de segurança, descarrega um ficheiro ZIP chamado wm.zip a partir de um servidor intermédio e submete-o através do endpoint normal de instalação de plugins. Depois abre a página de plugins e ativa o novo plugin. O WordPress aceita cada pedido porque, do seu ponto de vista, tudo está a ser feito por um administrador legítimo com permissão para instalar plugins.

Isto não é um contorno da autenticação. A conta já tem de ser de administrador, com permissão para instalar plugins. Mas é uma forma muito eficaz de virar essa confiança contra o próprio site.

O backdoor e como se esconde

O plugin carregado apresenta-se como Web Media Optimizer 2.1. O nome sugere uma ferramenta inofensiva para imagens. Não é nada disso. O plugin:

  • injeta JavaScript remoto nas páginas públicas do site;
  • desativa a validação de certificados TLS quando descarrega o seu script de controlo;
  • consegue definir um cookie de sessão de administrador para a primeira conta admin através de um token fixo no código, dando aos operadores uma porta de regresso sem palavra-passe.

Ao ser ativado, copia-se também para wp-content/mu-plugins/wmedia-recovery.php. O WordPress carrega automaticamente todos os ficheiros da pasta mu-plugins, e esses ficheiros não aparecem na lista habitual de plugins. Apagar o plugin visível não afeta, portanto, a cópia que realmente interessa, e é por isso que esta classe de malware do tipo must-use plugin volta a aparecer depois de limpezas interrompidas demasiado cedo.

Porque é que importa

Malware que só se ativa dentro de uma sessão autenticada é difícil de apanhar com análises de rotina. Um scanner que visita o site público vê uma página que pode parecer limpa, enquanto o comportamento perigoso só dispara para um administrador com sessão iniciada. Quem usa um único perfil de browser tanto para a navegação do dia a dia como para gerir o site está exposto, porque o ataque não precisa de mais do que uma visita à página errada enquanto o wp-admin ainda está autenticado.

O que fazer

  • Separe a navegação de administração. Use um perfil de browser dedicado, ou um browser diferente, para o wp-admin. Não navegue noutros sites a partir dele.
  • Termine a sessão quando acabar, e logo após qualquer camada de "verificação" inesperada.
  • Rode as credenciais de administrador e invalide as sessões ativas se suspeitar de exposição.
  • Limite as permissões de carregamento de plugins. Poucas contas precisam de instalar plugins, e o WordPress permite desativar por completo a modificação de ficheiros em sites que implementam plugins por outros meios.
  • Vigie a pasta mu-plugins. Crie alertas para qualquer ficheiro PHP novo em wp-content/mu-plugins/ e reveja essa pasta em cada limpeza.
  • Limpe a fundo. Remova o plugin visível, a cópia em mu-plugins e qualquer tag de script remoto injetada. Deixar um só dos três chega para a reinfeção.

Indicadores a procurar

  • Nome do plugin: Web Media Optimizer 2.1
  • Ficheiro da segunda fase: wm.zip
  • Ficheiro de persistência: wp-content/mu-plugins/wmedia-recovery.php
  • Script de controlo: ads.php
  • Domínios de comando e controlo (defanged): caapman[.]me, vtevens[.]icu, gerlace[.]com, nutmann[.]club, okuneva[.]sbs, vilialobos[.]lol
  • SHA256 do wm.zip: 9215d17e5138cee498bb529e69b1cc7267305136535025e9b49fe173cf648720
  • SHA256 do wmedia-recovery.php: 86d775c2d5cb459541cd2b0b967fac65ce20c60e483c71c9f7e108d5ad0bd564
  • SHA256 do ads.php: 2dfa9e708fdb92e5d36080065f978a33a692c0fe813a75be9c7cdff03be51b6e

Os domínios estão propositadamente defanged. Reponha-os apenas dentro de uma plataforma controlada de threat intelligence ou do seu SIEM.

Ataques como este resultam porque os sinais são pequenos: uma tag de script inesperada numa página pública, um ficheiro a mais numa pasta que ninguém verifica, um plugin que ninguém se lembra de ter instalado. O nosso serviço de análise de vulnerabilidades foi desenhado para trazer à superfície precisamente esses pequenos sinais em instalações WordPress, desde cores e plugins desatualizados até scripts injetados inesperados, para que uma sessão de administrador emprestada não se transforme silenciosamente num ponto de apoio permanente.

PARTILHAR