Que lições tirar do comprometimento do meu site que descobri no mês passado?

Essa é fácil. Nem precisa ler o resto do meu texto: backup, backup, backup! De preferência de quantas gerações você puder!

O primeiro a notar o problema foi o amigo Saulo Benigno, que na manhã do dia 12 de outubro me mandou um email avisando que o site estava fora do ar.  Eu havia atualizado o site horas antes por isso achei que fosse um glitch temporário da Hostgator e esperei. Mas como passaram-se horas e o problema persistiu, abri um ticket para o suporte e comecei a dar uma olhada. Como o indicador no cPanel estava dizendo que a Hostgator não faria mais backup automático do site porque eu havia excedido o limite de inodes (o número de arquivos), aproveitei para fazer uma arrumação. Foi aí que eu descobri que a coisa era séria!

Graças à ferramenta do cPanel que mostra um gráfico de uso do espaço em disco, eu localizei um diretório que tinha setenta e dois mil PDFs, nenhum deles colocado por mim. Todos com nomes suspeitíssimos. Olhando em outros diretórios comecei a achar arquivos txt com bravatas hacker do tipo “pwned” e “defaced by”, mais um punhado de arquivos que eu não havia colocado lá. A julgar pelos textos, eu tinha sido “hackeado” por uma cacetada de grupos de toda parte. Tinha russos, chineses, brasileiros…

Comecei a entrar em pânico. Não demorou para notar que o número de PDFs estava crescendo enquanto eu olhava. Eu estava sob ataque naquele momento! Desativei o site, enviei outro ticket para o suporte explicando o que eu havia achado e comecei a avaliar os danos.

Primeiro, não achei nenhum arquivo PHP obviamente infectado, nem indícios de comprometimento fora de Quick Talk. Depois comecei a notar um padrão estranho: nenhum arquivo depositado no site era do tipo executável. Só existiam arquivos TXT, PDF, ZIP (com vírus dentro), BMP, JPG… Alguns desses arquivos não eram válidos. Eram na verdade arquivos PHP com outra extensão que o invasor havia depositado ali na esperança de gatilhar uma vulnerabilidade. Mas como eles entraram?

Mais um pouco e percebi outro padrão: Os arquivos estranhos estavam limitados à pasta “uploads” da instalação wordpress de Quick Talk. Mas quem tinha permissão de upload além de mim?

Ahhhh… o mundo inteiro!

Eu percebi que os tipos de arquivo que estava encontrando batiam com a lista de arquivos “inócuos” que permiti aos leitores anexar em seus comentários. Algum dos plugins tinha uma vulnerabilidade que permitia que arquivos pudessem ser mandados para o meu site sem que nenhum comentário fosse produzido, daí eu não notei o problema.

Infelizmente tive que desabilitar esses plugins que instalei em 2012:

  • Easy Comment Uploads <- provavelmente foi por este. Sequer pode ser encontrado hoje no repositório da WordPress;
  • Comment Image Embedder <-Este caiu porque, pensando bem, também oferece risco.

O que deu trabalho mesmo foi apagar os 72 mil PDFs. Um gerenciador de arquivos do cPanel não conseguia lidar com tantos e travava. O outro não me permitia ordenar por tipo e eu corria o risco de apagar outros arquivos no meio. Sem conhecer outro jeito, tive que partir para a demorada e tediosa tarefa de apagar tudo por FTP. Isso levou horas!

No final o problema do site nada tinha a ver com o comprometimento. Foi pura coincidência a máquina que hospedava meu domínio estar com problemas (segundo o suporte) e por pura coincidência também eu estava olhando isso no momento em que colocavam os PDFs lá. Eram vários GB de arquivos. O meu site estava sendo usado simplesmente como hospedagem de malware e provavelmente estava sendo penalizado no ranking do Google por isso, embora a Google não tenha me enviado nenhum alerta pelas “ferramentas para webmasters”.

Voltando aos backups: Enquanto eu investigava pensei: “e se eu peguei outro worm como o que atacou o fórum anos atrás* e tiver que desinfectar centenas de arquivos PHP?” Fui procurar os meus backups e…

O último backup integral do site fora um ano atrás! Raios!

Eu tinha backup freqüente de bancos de dados, mas sem backup atualizado de arquivos combater um worm php ia realmente estragar minha semana!

Aprenda com meus erros! Você já fez backup do seu site esta semana? É Sturaro, estou olhando para você! :)

*Isso aconteceu em maio de 2009. Curiosamente não consigo encontrar nenhuma referência a essa invasão em parte alguma, nem procurando no Google nem nas minhas anotações. Na época diversos fóruns baseados em SMF foram invadidos devido a um 0-day e o exploit era baseado em fazer o upload de uma imagem corrompida como avatar. A partir daí um worm obfuscado adicionava a si mesmo em todos os arquivos php que encontrava na conta, o que incluía todo e qualquer domínio hospedado nela. O exploit foi informalmente chamado de “Krisbarteo” por mim porque era o nome de usuário usado na invasão.

9 comentários
  • Luciano - 489 Comentários

    Nem precisa olhar torto pra mim, minha paranóia é um pouco menor, mas não muito… Backup do mysql toda santa vez que publico um post, entro no myphp admin e desço o DB.

    Backup dos arquivos do site, toda santa vez ANTES de atualizar qualquer porcaria que seja, plugin, wordpress, etc.

    Resultado? Sempre tenho pelo menos as últimas 5 cópias do DB e não apago por nada desse mundo as cópias do wordpress e arquivos. Olha só:

    wordpress 2.9.2
    wordpress 3.0
    wordpress 3.1.3
    wordpress 3.2
    wordpress 3.3
    wordpress 3.3.1
    wordpress 3.3.2
    wordpress 3.4.2
    wordpress 3.5.1
    wordpress 3.7
    wordpress 3.7.1
    wordpress 3.9.2
    wordpress 4.0.5
    wordpress 4.2
    wordPress 4.2.5

    Dentro de cada pasta tem o backup do que foi atualizado dentro da própria versão. Se atualizarei um plugin, eu baixo o pluguin antes de atualizar e guardo dentro da pasta da versão em uso do WP.

    crashcomputer_db.27-jun-2015.zip
    crashcomputer_db.04-jul-2015.zip
    crashcomputer_db.31-ago-2015.zip
    crashcomputer_db.18-set-2015.zip
    crashcomputer_db.01-out-2015.zip
    crashcomputer_db.05-nov-2015.zip

    Além disso, toda imagem que envio pro blog, eu tenho cópia local, já que elas ficam em um lugar não padrão do wordpress.

    Como eu não fico fazendo backup constante do db, o máximo que eu posso perder seriam comentários e avaliações feitas no intervalo.

    Dá pro gasto ou mais alguma recomendação pra aumentar o nível de paranoia? :-P

  • Jefferson - 6.606 Comentários

    Um esclarecimento: eu não mencionei Luciano por ele ter um histórico de displicência. Ele definitivamente não tem. Eu o mencionei porque ele é quem mais participa das discussões quando o assunto é manutenção de sites e vem participando delas desde o Geringonças.

    • Luciano - 489 Comentários

      Vamos então dizer que aprendemos um com o outro, literalmente troca de experiências. Lembra do limit login attempts? Pois é… vou colocar mais um comentário lá.

  • Saulo Benigno - 279 Comentários

    Feliz que tenha sido resolvido.

    Mas backup manualmente é bronca consigo não, hoje tenho um script que meu amigo Arthur criou que todo dia roda em Cron e compacta meus sites e faz um backup por Dropbox… todo dia recebo uma notificação que foi criado o arquivo e enviado com sucesso para o Dropbox.

    Mas manualmente não dá :P
    No máximo é uma vez por mês ir apagar os arquivos para dar espaço no Dropbox, todo mês lota.
    Eu preciso é editar o script para apagar automaticamente o arquivo mais antigo diariamente.

  • Jefferson - 6.606 Comentários

    Outra coincidência curiosa. Enquanto eu perdi esse dia 12 de outubro todo revertendo o dano ao site, foi exatamente no dia 12 de outubro de 2008 que eu levei o golpe daquele file infector.

  • Ygor Almeida - 136 Comentários

    … Não podia deixar a pergunta pra lá.

    Na hostgator vocë não tem SSH? eu estou lá e tenho. Poderia ter entrado no diretório e ( rm -rf *.pdf )

    :dashhead1: :huh:

    Não funcionaria não !?

    • Jefferson - 6.606 Comentários

      Ygor,

      Eu nem sabia que podia usar SSH. Isso não está evidente no cPanel e desde que os provedores de hospedagem pararam de oferecer acesso Telnet eras atrás eu passei a ter a falta de acesso shell como algo normal.

      E para completar, eu expliquei ao suporte o que tive que fazer e eles não mencionaram SSH.
      :dashhead1:

  • Jefferson - 6.606 Comentários

    Existe algo curioso com o mês de outubro (além de ser o “mês das bruxas”)…

    Hoje recebi uma mensagem do sistema de backup informando que o backup não podia ser feito por eu ter ultrapassado o número de inodes. Então parei para fazer manutenção no site novamente. Coisa que aparentemente eu não fiz em todo o último ano…

    Não há nenhum indício óbvio de comprometimento. Apenas um número exagerado de emails se acumulando mas contas de um cliente. Mas é estranho que na semana passada o backup tenha ocorrido sem erros e agora tenha falhado por um excesso de 3 mil inodes. A menos que meus clientes tenham recebido isso tudo de SPAM na última semana, deve haver algo errado em algum outro lugar.

Deixe um comentário para Luciano Cancelar resposta

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »