Site hackeado é um daqueles momentos em que o tempo joga contra você. Cada hora que o site fica infectado, o estrago aumenta: Google marca o domínio como “site enganoso” e perde tráfego orgânico, hospedagem suspende a conta por abuso, clientes que entram são contaminados ou redirecionados, e o invasor pode estar usando seu servidor pra atacar outros alvos.

A primeira reação certa é agir rápido — mas com método. Limpar mal é pior que não limpar: o malware volta em horas, e dessa vez mais escondido. Esse guia é a sequência que profissionais usam pra recuperar WordPress invadido sem deixar resíduo.

Como saber se o site foi hackeado

Sinais claros de infecção:

  • Google mostra “Este site pode ser perigoso” no resultado de busca
  • Site redireciona pra páginas estranhas (cassinos, pílulas, sites em russo ou chinês)
  • Páginas novas que você não criou aparecem no site
  • Conta de hospedagem foi suspensa por “envio de spam” ou “atividade maliciosa”
  • Volume estranho de tráfego, especialmente de países onde você não atua
  • Arquivos novos no servidor que você não reconhece
  • WordPress não permite mais login no admin
  • Aparecem usuários administradores que você não criou

Sinais mais sutis:

  • HTML do site tem <script> no final apontando pra domínios estranhos
  • Resultado do Google mostra textos em japonês ou chinês embaixo dos seus links (Japanese SEO Spam — ataque clássico)
  • Hospedagem alerta que o uso de CPU ou rede subiu sem explicação
  • Plugin de segurança aponta arquivos modificados sem motivo

Se algum desses sintomas aparece, trata como se fosse hackeado. Confirmar leva minutos, ignorar pode custar a operação inteira.

ANTES de mexer em qualquer coisa: pare e isole

Erro número um é começar a apagar arquivos suspeitos no afobamento. Você acaba apagando coisa errada, deixa rastros do invasor pra trás, ou pior: o invasor tem porta dos fundos e volta a atacar enquanto você “limpa”.

Antes de qualquer ação:

  1. Coloca o site em modo manutenção ou redireciona temporariamente pra uma página estática. Isso para o estrago em visitantes e dá tempo pra trabalhar.
  2. Tira um snapshot completo do estado atual, mesmo infectado. Isso vai servir de evidência pra forense depois e backup de emergência se algo der ainda mais errado.
  3. Avisa a hospedagem — alguns provedores ajudam, e se a conta for suspensa enquanto você trabalha, é mais fácil destravar avisando antes.

Passo a passo da limpeza

1. Identifique a porta de entrada

Antes de limpar, descubra como entraram. Sem isso, vai limpar e ser invadido de novo amanhã.

Causas mais comuns, em ordem de frequência:

  • Plugin desatualizado com vulnerabilidade conhecida (a #1 disparado)
  • Tema pirata ou comprado em fonte duvidosa com backdoor já embutido
  • Senha fraca de admin quebrada por força bruta
  • Hospedagem compartilhada onde outro site infectado contaminou o seu
  • wp-config.php exposto ou com permissões erradas
  • Arquivo xmlrpc.php aberto sem proteção contra ataque de amplificação
  • Versão antiga do PHP ou WordPress (raro mas acontece)

Olha os logs de acesso da hospedagem — geralmente identifica o IP atacante e o caminho exato que ele usou. Plugins como Wordfence, iThemes Security ou Sucuri Security mostram histórico de tentativas e arquivos modificados.

2. Mude todas as senhas

Antes de limpar arquivos:

  • Senha do painel da hospedagem
  • Senha do FTP/SFTP
  • Senha do banco de dados (atualiza no wp-config.php depois)
  • Senha de todos os usuários administradores do WordPress
  • Chave secreta do wp-config.php (as 8 chaves geradas em api.wordpress.org/secret-key)

Toda sessão ativa é invalidada com a troca das chaves. Se o invasor tinha sessão aberta, perde o acesso.

3. Restaure de backup limpo (se possível)

Se você tem backup anterior à infecção, esse é o caminho mais rápido e mais seguro. Restaurar backup limpo + atualizar tudo + fechar a porta de entrada resolve quase todo caso.

Importante: o backup precisa ser anterior à infecção. Se você descobriu o ataque há 3 dias, mas o backup tem 2 dias, ele já tá infectado também. Vai pra um mais antigo.

Se não tem backup limpo, vai pro passo 4.

4. Limpeza manual de arquivos

Sem backup limpo, a limpeza é mais cirúrgica.

a) Reinstala o core do WordPress. Baixa a versão atual em wordpress.org e sobrescreve todos os arquivos do core (mantendo wp-content/). Isso elimina malware injetado em arquivos do núcleo, que é onde mais se esconde.

b) Reinstala todos os plugins ativos a partir do repositório oficial. Não confie no que está no servidor. Apaga a pasta de cada plugin e reinstala da fonte oficial. Plugins descontinuados ou abandonados — descarte e procura substituto mantido.

c) Reinstala o tema. Mesma lógica. Se o tema é premium, baixa direto do desenvolvedor original. Se é tema customizado, restaura do controle de versão (se você tem). Se não tem, vai precisar de auditoria de código por linha.

d) Procura arquivos suspeitos no wp-content/:

  • Arquivos .php em pastas que não deveriam ter PHP (ex: wp-content/uploads/)
  • Arquivos com nomes ofuscados (a1b2c3.php, index_old.php)
  • Arquivos com data de modificação estranha
  • Funções perigosas em qualquer arquivo: eval(, base64_decode(, gzinflate(, str_rot13(

Comando útil em SSH pra encontrar PHP onde não deveria existir:

find /caminho/do/site/wp-content/uploads -name "*.php"

Qualquer resultado aí é suspeito. Avalia e remove.

5. Limpa o banco de dados

Malware também infecta o banco. Pontos comuns:

  • Tabela wp_options, especialmente a opção siteurl e home (alterados pra redirecionar) e active_plugins (com plugins ocultos ativados)
  • Tabela wp_users: usuários novos com permissão de admin que você não criou
  • Tabela wp_posts: posts com post_status = 'publish' mas com conteúdo estranho ou tipos diferentes
  • Trigger SQL ou stored procedure maliciosa (mais raro, mas existe)

Roda um scan no banco com Sucuri (gratuito) ou Wordfence Premium. Manualmente, exporta o .sql e procura por eval, base64, URLs suspeitas, scripts inline.

6. Atualize tudo

WordPress core, todos os plugins, tema, e PHP do servidor pra versão mais recente compatível. Vulnerabilidade não corrigida = porta aberta.

7. Instale proteção contínua

Antes de tirar o modo manutenção:

  • Plugin de segurança ativo (Wordfence, Sucuri, iThemes Security ou similar)
  • Firewall de aplicação (WAF) — Cloudflare gratuito já ajuda muito
  • 2FA obrigatório em todos os usuários admin
  • Limite de tentativas de login (bloqueio após 5 tentativas)
  • Desativa edição de arquivos pelo painel (define('DISALLOW_FILE_EDIT', true); no wp-config.php)
  • Backup automático diário em destino externo

8. Tire o site da blacklist do Google

Se o Google marcou seu site, depois da limpeza:

  1. Vai no Google Search Console
  2. Seção “Problemas de segurança”
  3. Solicita revisão após confirmar que está limpo

A reanálise leva de algumas horas a alguns dias. Marca falsa, o Google libera rápido. Marca confirmada e depois limpa, pode demorar.

O que NÃO fazer

  • Não apaga “tudo” sem identificar a entrada. Limpa, deixa o problema voltar — e dessa vez você não enxerga porque já apagou os rastros.
  • Não confia em “limpa-malware grátis” achado em fórum. Muitos são malware mascarado de antivírus.
  • Não conta com plugin de segurança como única defesa. Plugin é uma camada, não a solução.
  • Não esquece dos e-mails da empresa. Se a conta de hospedagem foi suspensa, e-mails que estão lá podem ter sido perdidos. Verifica e migra pra Google Workspace ou Microsoft 365 se ainda não migrou.
  • Não ignora o problema “porque o site voltou”. Site funcionando é diferente de site limpo. Backdoor pode estar lá quietinho esperando o próximo aviso.

Perguntas frequentes

Em quanto tempo um site WordPress hackeado é recuperado? Casos simples (malware conhecido, com backup recente) resolvem em 4-6 horas. Casos complexos (sem backup, infecção profunda no banco, blacklist do Google) podem levar 1-3 dias úteis.

Vou perder dados na limpeza? Conteúdo (posts, páginas, mídias) raramente se perde, porque o ataque costuma adicionar coisa, não apagar. Configurações personalizadas e customizações em código de tema podem se perder se não houver backup.

O site fica fora do ar durante a limpeza? Idealmente sim, em modo manutenção controlado, pra não contaminar visitantes. O tempo varia com a complexidade.

Vai acontecer de novo? Não, se a porta de entrada for fechada e a proteção contínua for instalada. Sites profissionalmente atendidos com manutenção mensal raramente são reinvadidos.

Quanto custa limpar um site WordPress hackeado? Limpeza simples começa em R$ 800-1.500. Casos com banco infectado, blacklist do Google ou múltiplos sites na mesma conta de hospedagem podem chegar a R$ 2.500-4.000. Atendimento de emergência (fim de semana, madrugada) tem taxa adicional.