Recuperar / reparar instalações de WordPress comprometidas

Não raras vezes somos contactados para recuperar instalações WordPress comprometidas (hackeadas), pelo que achámos importante partilhar com a comunidade, de forma resumida, o método que costumamos utilizar, com bastante sucesso, para fazer a reinstalação de um WordPress comprometido.

Na verdade, estamos neste momento no processo de recuperar 37 instalações que estavam na mesma conta de alojamento, todas elas comprometidas (sendo que o vector de ataque ainda não foi identificado). Já agora, é importante realçar que nunca devem ter mais do que uma instalação por cada conta de alojamento. Neste caso específico estamos a criar uma conta cPanel para cada website e, uma a uma, fazer a recuperação de cada instalação.

Este guia parte do princípio que a reinstalação vai ser efectuada na mesma conta de alojamento (o que não verdade não é o cenário ideal, mas provavelmente o mais comum), pelo que devem ser feitas as devidas adaptações caso não seja esse o cenário em causa.

  1. Fazer um backup completo, para o computador local, de todos os ficheiros e base de dados da instalação comprometida.
  2. Apagar todos os ficheiros e base de dados da conta de alojamento.
  3. Mudar a password do cPanel (ou outro painel) / FTP.
  4. Criar uma nova base de dados, vazia e com o mesmo prefixo da BD original, mas com credenciais diferentes.
  5. Fazer uma nova instalação do WordPress (preferencialmente na mesma versão da instalação original), criando um utilizador administrador provisório.
  6. Instalar todos os plugins e tema usados na instalação original (obrigatoriamente nas mesmas versões*), a partir do repositório ou outra fonte oficial, e nunca a partir de ficheiros do backup efectuado no ponto 1, sendo que não é necessário activar nenhum plugin ou tema.
  7. Este passo é o único em que vamos usar ficheiros da instalação original, pelo que a atenção deve ser redobrada:
    1. Caso exista child-theme, verificar todos os ficheiros do mesmo procurando por código suspeito (normalmente obfuscado), nomeadamente em ficheiros .js e .php, e se não existir, ou depois de eliminado, carregar essa pasta para /wp-content/themes/
    2. Verificar todas as subpastas de /wp-content/uploads/ procurando ficheiros suspeitos, nomeadamente .js e .php, e se não existirem, ou depois de eliminados, carregar essa pasta para /wp-content/
  8. Verificar o dump da base de dados original, nomeadamente pesquisando por utilizadores suspeitos na tabela wp_users e a existência de “<script” não fidedignos (pouco comum).
  9. Fazer um backup da base de dados actual e substituí-la pela da instalação original, depois de eliminados quaisquer conteúdos suspeitos do dump.
  10. Entrar no wp-admin com um utilizador administrator da instalação original e gravar os permalinks.
  11. Neste momento deve ter uma cópia do site original, mas sem ficheiros comprometidos.
  12. Fazer um backup de todos os ficheiros e base de dados.
  13. Actualizar o WordPress, plugins e temas.
    1. Resolver qualquer incompatibilidade que possa ter surgido entretanto.
  14. Alterar a password de todos os utilizadores.
  15. Alterar de novo a password do cPanel e da base de dados em utilização e editar o ficheiro wp-config.php com a nova password do MySQL.
  16. Fazer novo backup de todos os ficheiros e base de dados.
  17. Beber um gin tónico (sem salada).

 

Reiteramos que este guia é resumido, não cobre todos os cenários, e só deve ser seguido por utilizadores com conhecimentos técnicos que lhes permitam colmatar quaisquer omissões particulares da sua instalação. Caso não tenha essas competências e tem um website comprometido, podemos fazer uma recuperação profissional do mesmo: contacte-nos.

 

NOTA: Este guia pressupõe que se quer manter o website exactamente com os mesmos plugins e tema, no entanto, se o mesmo foi comprometido, talvez não seja má ideia, no final, rever todos os plugins e tema instalados, certificar-se da sua qualidade e eventualmente fazer algumas substituições.

 

Tem algum dica a acrescentar a este guia? Deixe-a nos comentários em baixo.

 

* Para descarregar um plugin numa versão anterior à actual, copie o link do botão “Download” na página do mesmo no wordpress.org e depois substitua o nº de versão actual pela anterior. Exemplo: https://downloads.wordpress.org/plugin/advanced-custom-fields.4.4.11.zip -> https://downloads.wordpress.org/plugin/advanced-custom-fields.4.4.3.zip

2 comentários a Recuperar / reparar instalações de WordPress comprometidas

  1. Francisco Esteves 2017-04-20 às 23:10 #

    Muito bom 🙂
    Uma dica que pode ser interessante apesar de acontecer pouco é existir malware encriptado na base de dados por exemplo em base64 pelo que pode ser interessante principalmente se após uma limpeza o problema voltar essa verificação.

    No entanto o mais importante é mesmo manter sempre tudo actualizado, ter algum crivo critico quando se vai instalar plugins/temas (ver se é minimamente usado, tem bom feedback etc) e manter tudo actualizado mesmo que o WordPress não o alerte, no caso de conteúdo fora do directório.

  2. Pedro Mendonça 2017-04-20 às 23:29 #

    No fim da recuperação, é importante verificar se o Google tem informação de que o site tem código malicioso. Se sim, notificar o Google que o site já está livre de malware.
    O mais provável é o problema ter sido identificado porque foi o próprio Google que marcou o site como contendo código malicioso.

Deixar uma resposta

*