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.

Antes de continuar: Este guia é bastante técnico. Se preferir, contacte-nos e podemos tratar do assunto por si.

Este guia parte do princípio que a reinstalação vai ser efectuada na mesma conta de alojamento (o que na 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, mas com credenciais diferentes.
  5. Fazer uma nova instalação do WordPress (preferencialmente na mesma versão da instalação original e com o mesmo prefixo das tabelas), 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 Responses to Recuperar / reparar instalações de WordPress comprometidas

  1. Francisco Esteves 2017-04-20 at 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 at 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.

Deixe um comentário

*

_