Pular para o conteúdo
>_ITDITDPlataforma de Segurança Web

Guias de Segurança

Como verificar se o seu site ou servidor foi invadido: verificações passo a passo para hospedagem compartilhada, WordPress e VPS, e o que fazer primeiro se encontrar algo

Como verificar se o seu site ou servidor foi invadido: hospedagem compartilhada, WordPress, VPS Linux e Search Console. Administradores, wp core verify-checksums, authorized_keys, cron e o que fazer primeiro.

Publicado 2026-10-11 Atualizado 2026-10-11 Última verificação 2026-10-11 18 min de leitura

Para quem é: pessoas e pequenas empresas que mantêm um site em hospedagem compartilhada, WordPress ou VPS e agora se perguntam "fui invadido?". Este guia mostra como verificar você mesmo o seu site e o seu servidor. Ele se baseia na documentação oficial do WordPress.org, do WP-CLI e do Google Search Central, nas páginas de manual de cada comando, na IPA e no JPCERT/CC do Japão e no GDPR. Técnicas de ataque não são abordadas.

Se algo parece errado agora, faça só isto

Antes de excluir ou sobrescrever qualquer arquivo do site, faça uma cópia dos logs e do site inteiro (arquivos e banco de dados). Depois que eles somem, não dá mais para descobrir como o atacante entrou. Troque as senhas a partir de outro aparelho, limpo, que você tenha verificado com um antivírus.

Sinais que devem fazer você suspeitar de uma invasão

Se algum destes se aplicar, passe às verificações por ambiente abaixo. O "FAQ My site was hacked" do WordPress.org também lista sinais claros de invasão, como ser colocado em lista de bloqueio pelos buscadores, a hospedagem desativar o site e comportamentos não autorizados, como a criação de novos usuários.

SinalOnde você percebe
O Search Console mostra um problema de segurança, ou o Google manda um e-mailGoogle Search Console
Os resultados de busca mostram "Este site pode ter sido invadido"Pesquisa Google
Navegadores avisam que o site é perigoso, ou o antivírus dos visitantes o bloqueiaMensagens de visitantes
A hospedagem avisa sobre desfiguração, spam ou carga excessiva, ou suspende o siteE-mail da hospedagem
Usuários administradores que você nunca criouPainel do WordPress
Aparecem na busca páginas que você nunca criou (remédios, artigos de marca, páginas em japonês em massa)Uma busca site:
Redirecionamento para outro site só no celular, ou só quando se chega pela buscaVerificando no celular
O seu servidor está enviando spam, ou atinge o limite de envioAvisos da hospedagem, e-mails devolvidos
CPU ou tráfego disparam sem motivoO monitoramento do seu servidor

"No meu computador parece normal" não prova nada

O Google (web.dev) explica que alguns sites invadidos mostram conteúdo diferente para tipos diferentes de usuários (cloaking): uma página pode parecer vazia quando você a abre, enquanto o Google vê nela palavras e links de spam. Um post do blog do Google Search Central também observa que um site invadido pode redirecionar só os usuários de celular para domínios de spam, e recomenda abrir o seu site a partir dos resultados de busca do Google num smartphone para verificar.

Verificações por ambiente

Verifique as linhas que correspondem à sua configuração. Se você usa WordPress numa hospedagem compartilhada, as duas primeiras linhas se aplicam.

AmbienteOnde olharO que procurar
Hospedagem compartilhadaLogs de acesso e de erro no painel de controle, o gerenciador de arquivos, o histórico de envio de e-mailsRequisições a URLs desconhecidos ou enxurradas de POSTs, arquivos modificados recentemente, arquivos .htaccess ou PHP desconhecidos, um salto nos e-mails enviados
WordPressAll Users (Todos os usuários) e Installed Plugins (Plugins instalados) no painel, WP-CLIAdministradores desconhecidos, plugins ou temas que você não instalou, arquivos do núcleo modificados
VPS (Linux)Logs do SSH, authorized_keys, cron, a lista de usuários, portas em escuta, verificação de pacotesLogins de origens desconhecidas, chaves públicas desconhecidas, tarefas agendadas desconhecidas, usuários novos, programas desconhecidos em escuta
Google Search ConsoleProblemas de segurança, a ferramenta de inspeção de URL, uma busca site:Problemas e URLs de exemplo que o Google encontrou, e o que o Google vê numa página

Hospedagem compartilhada

Mesmo sem SSH, o painel de controle normalmente permite verificar estas três coisas (os nomes variam conforme a hospedagem).

  • Abra a pasta pública no gerenciador de arquivos e ordene pela data de modificação. Fique atento a arquivos alterados em dias em que você não mexeu neles, arquivos PHP com nomes sem sentido e arquivos PHP dentro de pastas de imagens, como uploads
  • Baixe os logs de acesso e de erro e veja de onde e quando vieram as requisições à área administrativa (no WordPress, /wp-login.php e /wp-admin/), além de requisições a URLs que você não reconhece
  • Se você puder ver a contagem ou o histórico de envio de e-mails, procure grandes volumes que você não enviou

Verifique também o .htaccess. O WordPress.org cita o .htaccess como um dos arquivos mais modificados e abusados, seja qual for o tipo de infecção, e observa que index.php, header.php e footer.php são alvos valiosos porque afetam toda requisição de página.

WordPress

No painel, verifique dois lugares.

  • Users > All Users (Usuários > Todos os usuários): há alguém com a função Administrator (Administrador) que você não criou?
  • Plugins > Installed Plugins (Plugins instalados): há algum plugin que você não instalou? Verifique Appearance > Themes (Aparência > Temas) da mesma forma

Se o WP-CLI (a ferramenta oficial de linha de comando do WordPress) estiver disponível no servidor, você pode comparar os arquivos com a versão oficial automaticamente.

# Check WordPress core files against WordPress.org checksums
wp core verify-checksums
# Also warn about non-WordPress files in the WordPress root directory
wp core verify-checksums --include-root
# Verify plugins distributed on WordPress.org
wp plugin verify-checksums --all
# List administrator accounts with their registration dates
wp user list --role=administrator

Um resultado limpo imprime Success: WordPress installation verifies against checksums. Um arquivo divergente imprime Warning: File doesn't verify against checksum: seguido do nome dele. A verificação de plugins compara com os checksums do WordPress.org, então plugins premium e temas personalizados não podem ser verificados assim. Para esses, baixe de novo a mesma versão do fornecedor e compare.

VPS (Linux)

Num VPS, procure o que um invasor deixa para conseguir voltar: chaves públicas, tarefas agendadas, usuários novos e programas aguardando conexões. Execute tudo isto no seu próprio servidor, como administrador.

# SSH login records (the unit is ssh on Debian/Ubuntu, sshd on RHEL-family)
sudo journalctl -u ssh --since "2026-10-01"
# Recent logins (on Debian 13, use wtmpdb last instead; install the wtmpdb and libpam-wtmpdb packages)
last -a
# Each user's last login (on Debian 13, use lastlog2 instead; install the lastlog2 and libpam-lastlog2 packages)
lastlog
# SSH public keys: the current user's (other users: /home/*/.ssh/authorized_keys) and root's
cat ~/.ssh/authorized_keys
sudo cat /root/.ssh/authorized_keys
# Scheduled jobs (per user and system-wide)
crontab -l
sudo crontab -l -u root
sudo cat /etc/crontab
sudo ls -la /etc/cron.d
# Users, and the group with admin rights (wheel on RHEL-family)
getent passwd
getent group sudo
# Listening TCP ports and the programs behind them
sudo ss -tlnp
# Files in the web root whose contents changed in the last 7 days
sudo find /var/www -type f -mtime -7
# Have package files changed since they were installed?
sudo debsums -s      # Debian/Ubuntu (needs the debsums package)
sudo rpm -Va         # RHEL-family

Como ler os resultados:

  • Na saída do journalctl, verifique o IP de origem dos logins bem-sucedidos (Accepted) em busca de endereços que não são seus. Se nada aparecer, o nome da unidade pode ser outro; confira o nome do serviço SSH com systemctl list-units --type=service
  • No authorized_keys, procure chaves públicas que você nunca adicionou. Como gerenciar as chaves que podem acessar um servidor é explicado em privilégio mínimo para chaves SSH
  • No cron, procure linhas que baixam e executam algo de um URL desconhecido
  • Na lista do ss, procure programas em escuta que você não iniciou
  • debsums -s mostra só os arquivos com problema; rpm -Va marca os arquivos alterados com códigos como tamanho (S), digest (5) e hora de modificação (T)

Não confie demais em logs e na saída de comandos

find -mtime olha a hora de modificação de um arquivo, que pode ser alterada. O próprio manual do debsums diz que a ferramenta tem uso limitado como ferramenta de segurança. Os logs somem quando termina o período de retenção. E, no Debian 13, last, lastb e lastlog deixaram de ser fornecidos por causa do problema do ano 2038. Cada verificação pode dar evidências de uma invasão, mas não encontrar nada não prova que está limpo.

Google Search Console

Se o seu site ainda não está cadastrado no Search Console, adicione-o e verifique a propriedade primeiro.

  • No relatório Problemas de segurança, veja se há algum problema listado. Os problemas se dividem em três grandes categorias: conteúdo invadido, malware e software indesejado, e engenharia social, normalmente com URLs de exemplo. Alguns problemas vêm sem URLs de exemplo; o Google diz que isso não significa que nenhuma página foi afetada
  • Pesquise no Google site:seudominio e procure páginas que você nunca fez. O Google diz que isso lista as páginas do seu site, inclusive as que um invasor possa ter adicionado
  • Coloque as páginas suspeitas na ferramenta de inspeção de URL para ver como o Google as vê

Sobre a terminologia: rastros de um comprometimento que já aconteceu, como os acima, são chamados de IOCs (indicadores de comprometimento). Veja o que é um IOC e, para identificar um ataque pelo comportamento enquanto ele ainda está em andamento, o que é um IOA.

O que fazer primeiro se encontrar algo

Se errar a ordem, você destrói as evidências ou restaura o site com o ponto de entrada do atacante ainda aberto. Siga de cima para baixo.

1 — Conter

Tire o site do ar ou coloque uma página de manutenção

2 — Preservar as evidências

Copie logs, arquivos e o banco de dados para fora do servidor

3 — Trocar todas as credenciais

Painel, FTP, chaves SSH, banco de dados, chaves de API (a partir de um aparelho limpo)

4 — Voltar a um estado limpo

Restaure um backup anterior à invasão, ou reconstrua

5 — Fechar o ponto de entrada

Atualize, remova plugins sem uso, encontre a causa

6 — Revisão e comunicação

Peça uma revisão no Search Console; comunique um vazamento de dados se for obrigatório

A ordem de resposta. Não limpe antes de preservar as evidências. Não peça revisão antes de fechar o ponto de entrada.
1

Conter: tire o site do ar por enquanto

Para que os visitantes não recebam malware nem páginas de golpe, tire o site do ar ou mostre uma página de manutenção. Num VPS, restrinja o tráfego externo, mantendo o acesso de que você precisa para investigar. Na hospedagem compartilhada, fale com o suporte da hospedagem para combinar como tirar o site do ar e o que eles farão do lado deles. O WordPress.org também recomenda consultar a hospedagem, porque na hospedagem compartilhada a invasão pode afetar mais do que só o seu site.

2

Preservar as evidências: copie antes de limpar

O WordPress.org recomenda tirar mais um snapshot do ambiente antes de começar a limpeza, mesmo que ele esteja infectado. O Google também recomenda fazer backup do site inteiro e do banco de dados num local fora do servidor antes de limpar. Os logs de acesso, de erro e do SSH somem conforme o cronograma, então salve-os primeiro. A abordagem de fundamentos de backup se aplica diretamente.

3

Troque todas as credenciais, a partir de um aparelho limpo

O WordPress.org pede que você troque as senhas de todos os pontos de acesso — FTP/SFTP, o painel do WordPress, o painel de controle da hospedagem e o MySQL — e que inclua todos os usuários com acesso ao ambiente, não só você. Gerar de novo as chaves secretas (salts) no wp-config.php também desconecta quem ainda estiver logado. Num VPS, gere novas chaves SSH e deixe só as suas no authorized_keys. Emita de novo as chaves de API de terceiros guardadas em arquivos como o .env.

O WordPress.org observa que os ataques muitas vezes começam no computador do próprio dono, e recomenda verificá-lo também. Faça as trocas a partir de um aparelho limpo que você tenha verificado, e ative a autenticação multifator.

4

Voltar a um estado limpo: um backup anterior à invasão, ou uma reconstrução

Se você tem um backup que sabe ser anterior à invasão, restaure a partir dele. Se não sabe quando o atacante entrou, quanto mais novo o backup, maior a chance de ele estar sujo. No WordPress, substitua wp-admin e wp-includes pela mesma versão do download oficial, e baixe de novo das fontes originais os temas e plugins em wp-content. Num VPS em que o root pode ter sido comprometido, montar um servidor novo e mover só os dados verificados é mais confiável do que limpar.

5

Feche o ponto de entrada para que não voltem pelo mesmo caminho

Atualize o núcleo do WordPress, os plugins e os temas, e exclua o que você não usa. Causas comuns são vulnerabilidades em plugins desatualizados, senhas reutilizadas e arquivos de configuração vazados de pastas públicas. O Google alerta que, se você não corrigir a vulnerabilidade que permitiu a infecção, o site pode ser infectado de novo. O reforço do WordPress é tratado em segurança do WordPress, e onde guardar arquivos de configuração em você deixou um arquivo secreto num diretório público? O WordPress.org também recomenda trocar as senhas de novo quando o site estiver limpo.

6

Revisão e comunicação: Search Console e dados pessoais vazados

Se o Search Console listou problemas, corrija todos eles no site inteiro e depois selecione Solicitar revisão no relatório Problemas de segurança. Na solicitação, descreva o problema, as correções que você fez e o resultado. O Google diz que uma revisão leva de alguns dias a algumas semanas e que você receberá e-mails quando ela for recebida e quando for concluída. Reenviar antes de uma decisão pode alongar a revisão.

Se dados pessoais, como envios de formulários de contato ou cadastros de membros, podem ter vazado, veja "Se dados pessoais podem ter vazado" abaixo.

Dias a semanas
Tempo de revisão do Search Console (Google)
72 horas
Prazo do GDPR para notificar a autoridade de controle, quando possível
3–5 dias
Japão: relatório preliminar à PPC, a partir da descoberta

A visão deste site: o objetivo da verificação não é se declarar limpo, e sim decidir quanto ainda dá para confiar

Um erro comum em sites pequenos é encontrar um arquivo suspeito, excluí-lo e dar o assunto por encerrado. Mas o arquivo encontrado é resultado da invasão, não o ponto de entrada. Se você não fechar o ponto de entrada e os caminhos de volta que o atacante deixou (chaves públicas, usuários administradores, tarefas agendadas), vai acontecer de novo.

Por isso, sugerimos julgar o que você encontrou pelo quanto ainda dá para confiar. Se só os arquivos do núcleo do WordPress foram modificados, substituir o núcleo e trocar as credenciais provavelmente resolve. Se o root do servidor pode ter sido tomado, nem os logs nem a saída dos comandos dele são confiáveis, então reconstrua. Definir esse limite cedo evita passar dias limpando para, no fim, reconstruir de qualquer jeito.

Se dados pessoais podem ter vazado

Se você trata dados pessoais como empresa e envios de formulários de contato ou cadastros de membros podem ter vazado, verifique as regras de onde você atua.

  • UE e Reino Unido (GDPR, Artigo 33): notifique a autoridade de controle sem demora injustificada e, quando possível, em até 72 horas depois de tomar conhecimento de uma violação de dados pessoais, a menos que ela provavelmente não resulte em risco aos direitos e liberdades das pessoas. O Artigo 34 trata de quando você também precisa avisar as pessoas afetadas
  • Japão: a Personal Information Protection Commission (PPC) lista quatro categorias que devem ser comunicadas — dados sensíveis, risco de dano financeiro, suspeita de finalidade ilícita e mais de 1.000 pessoas. Um vazamento causado por acesso não autorizado é dado como exemplo da categoria de finalidade ilícita. O relatório preliminar é devido em 3 a 5 dias após a descoberta e o relatório final em 30 dias (60 dias na categoria de finalidade ilícita), e as pessoas afetadas também devem ser avisadas
  • Em outros lugares: verifique a autoridade nacional de proteção de dados

Onde pedir ajuda

QuemO que pode fazer
A sua hospedagem ou provedor de VPSSuspender o site, verificar logs do lado do provedor, investigar o impacto no mesmo servidor
Pedido de resposta a incidentes do JPCERT/CC (Japão)Recebe relatos de incidentes do público em geral; para sites desfigurados, entra em contato com o administrador do site para pedir a correção. Relato por formulário web ou e-mail
Comunicação de vírus de computador e acesso não autorizado da IPA (Japão)Recebe comunicações de danos por acesso não autorizado, inclusive tentativas sem dano real
O CERT nacional ou a autoridade de proteção de dados do seu paísRelatos de incidentes e notificações de vazamento de dados fora do Japão
Fóruns de suporte do WordPress.orgDescreva os sintomas em detalhe e receba ajuda da comunidade

Fontes (oficiais)

  • WordPress.org: FAQ My site was hacked — wordpress.org
  • WordPress.org: Administration Screens — wordpress.org
  • WP-CLI: wp core verify-checksums — developer.wordpress.org
  • WP-CLI: wp plugin verify-checksums — developer.wordpress.org
  • WP-CLI: wp user list — developer.wordpress.org
  • Google: Security issues report (Ajuda do Search Console) — support.google.com
  • Google: How do I know if my site was hacked? (web.dev) — web.dev
  • Google: Fix the cloaked keywords and links hack (web.dev) — web.dev
  • Blog do Google Search Central: Detect and get rid of unwanted sneaky mobile redirects (outubro de 2015) — developers.google.com
  • Ajuda da Pesquisa Google: Report a problem with Google Search (sobre o rótulo "Este site pode ter sido invadido") — support.google.com
  • Páginas de manual do Debian: journalctl(1), last(1), lastlog(8), sshd(8), crontab(1), cron(8), ss(8), find(1), debsums(1) — manpages.debian.org
  • RPM: rpm(8) (como ler a saída do --verify) — rpm.org
  • Notas de lançamento do Debian 13 (trixie): os comandos last, lastb e lastlog foram substituídos — debian.org
  • GDPR (Regulamento (UE) 2016/679), Artigos 33 e 34 — eur-lex.europa.eu
  • Personal Information Protection Commission, Japão: comunicação obrigatória de vazamentos e aviso às pessoas (em japonês) — ppc.go.jp
  • Personal Information Protection Commission, Japão: como responder a vazamentos de dados (em japonês) — ppc.go.jp
  • JPCERT/CC: pedido de resposta a incidentes (em japonês) — jpcert.or.jp
  • IPA: comunicação de vírus de computador e acesso não autorizado (em japonês) — ipa.go.jp

Leia a seguir

FAQ

QComo verifico se o meu site foi hackeado?
A

Comece pelo relatório de problemas de segurança do Google Search Console e veja se há algum problema listado. Depois, pesquise no Google site:seudominio e procure páginas que você nunca criou. Por fim, abra o seu site num smartphone a partir dos resultados de busca do Google e veja se você é redirecionado para outro lugar. Conteúdo invadido às vezes é feito para ficar invisível quando o dono visita o site diretamente.

QComo verifico se o meu site WordPress foi tomado?
A

No painel, abra Users > All Users (Usuários > Todos os usuários) e procure administradores que você não criou; depois, Plugins > Installed Plugins (Plugins instalados), em busca de plugins que você não instalou. Se tiver o WP-CLI, wp core verify-checksums compara os arquivos do núcleo do WordPress com a versão oficial. Plugins distribuídos no WordPress.org podem ser verificados com wp plugin verify-checksums --all.

QMeu site parece normal quando eu abro, mas os resultados de busca dizem que ele pode ter sido invadido.
A

Pode estar sendo usado cloaking (mostrar conteúdo diferente para visitantes diferentes). Páginas invadidas às vezes mostram spam ou redirecionamentos só para buscadores, ou só para quem chega pelo celular a partir dos resultados de busca. O Google diz que o rótulo fica até o dono corrigir os problemas de segurança no Search Console e pedir uma revisão. Veja os URLs de exemplo no relatório Problemas de segurança e use a ferramenta de inspeção de URL para ver o que o Google vê.

QEstou numa hospedagem compartilhada sem SSH. Como posso verificar?
A

Use o gerenciador de arquivos do painel de controle para ordenar os arquivos pela data de modificação, e baixe os logs de acesso e de erro para procurar requisições a URLs desconhecidos ou logins na área administrativa. No WordPress, verifique usuários e plugins no painel. Se estiver em dúvida, fale com o suporte da hospedagem. Na hospedagem compartilhada, o provedor às vezes consegue verificar o impacto no servidor inteiro, inclusive em outros clientes.

QSe eu não encontrar nada, estou seguro?
A

Não. As datas dos arquivos podem ser alteradas, os logs somem quando termina o período de retenção e, num servidor onde o atacante obteve root, a saída dos próprios comandos do servidor deixa de ser confiável. Se você tem evidências externas, como um alerta do Search Console ou um aviso da hospedagem, trate o site como comprometido mesmo sem encontrar nada, e planeje trocar as credenciais e reconstruir.

QDados pessoais podem ter vazado do meu site. Para quem eu comunico?
A

Depende de onde você atua. No Japão, a Personal Information Protection Commission cita vazamentos causados por acesso não autorizado como exemplo de caso que deve ser comunicado, com um relatório preliminar em 3 a 5 dias após a descoberta e um relatório final em 30 dias (60 dias quando há suspeita de finalidade ilícita). Na UE e no Reino Unido, o GDPR exige notificar a autoridade de controle em até 72 horas, quando possível, a menos que a violação provavelmente não resulte em risco para as pessoas. Verifique a autoridade de proteção de dados do seu país.