Introdução
Entre os problemas que a Internet tem, em contraposição às muitas vantagens que ela oferece, lideram o raking as vulnerabilidades e falhas de segurança, normalmente associadas a questões de programação e de sistemas utilizados. Em função disso, haverá sempre alguém disposto a explorar tais problemas em proveito próprio, como por exemplo, a invasão de sites.
Quem nunca passou por isso – de ter um site invadido – não deve pensar que está imune ao problema e o mais grave, achar que seu site é seguro. Há sim sites e ambientes de hospedagem mais seguros que outros, mas acreditar que esse é um tipo de situação da qual se está livre, é o primeiro passo para entrar nas estatísticas, já que é comum adotar uma postura negligente ao fazê-lo.
Os CMSs mais populares são em geral o alvo preferido, já que torna o “trabalho” de encontrar um alvo em potencial, mais fácil, bem como a quantidade de possíveis vítimas, é maior.
O mais comum é a exploração de falhas de programação existentes em CMSs, plugins e temas, que possibilita que alguém com alguns conhecimentos e as ferramentas adequadas, tenha acesso a uma conta de hospedagem e possa utilizá-la, colocando um site falso ou scripts (programas) que realizam determinadas ações.
Mas por que alguém invade um site? Para tirar proveito de forma gratuita e anônima de um serviço de hospedagem, com a finalidade de realizar alguma ação ilegal ou no mínimo condenável, como envio de SPAM, ataques DDoS, sites falsos para roubo de dados (phishing) e mais recentemente, mineração de criptomoedas, entre uma gama de possibilidades.
Identificar um site invadido, às vezes não é tão simples, pois ao contrário do que acontecia no passado, quando a invasão tinha como objetivo apenas tirar o site do ar ou alterar o seu conteúdo, em um tipo de vandalismo virtual (defacement), atualmente os métodos usados visam ocultar a invasão e assim beneficiar-se pelo maior tempo que for possível.
Para um administrador de sites, há alguns aspectos que denunciam uma provável invasão, como alteração no desempenho, aumento no tamanho dos logs de erros, bem como no seu conteúdo, aumento na quantidade de arquivos do site, alterações no banco de dados, retorno de e-mails e o pior indício, que é o bloqueio do endereço IP do servidor ou do domínio, através da inclusão em uma blacklist.
Um site invadido acarreta problemas como depreciação junto aos mecanismos de busca e consequentemente afetando o trabalho de SEO, perdas de visitantes, problemas para envio e recebimento de e-mail e quando hospedado em um servidor compartilhado, prejudicando outros sites hospedados no mesmo ambiente.
Portanto, controlar e remover invasões, bem como adotar medidas preventivas, é fundamental para que a presença digital não seja afetada negativamente, com evidentes perdas.
Pré-requisitos para limpar uma invasão de site
Remover uma invasão pode não ser algo simples, mas é possível em boa parte dos casos, desde que se tenha determinados conhecimentos, um pouco de tempo e paciência. Mas também é necessário cumprir alguns requisitos, de forma a garantir que tudo que é necessário seja feito:
-
Ter um backup íntegro, ou seja, que sabe-se estar livre de conteúdo da invasão. Embora seja o requisito mais importante, até porque facilita bastante o trabalho de restauração do site à sua condição original, não é 100% necessário em alguns casos, exceto se a invasão for muito severa em termos alteração do conteúdo;
-
Acesso FTP ao site;
-
Acesso SSH ao site. Assim como o backup, não é fundamental, mas facilita muito o trabalho de restauração do site;
-
Conexão com Internet;
-
Acesso ao banco de dados;
Passos para limpar um site invadido
Não há uma lista única e fixa de passos necessários, a qual pode variar dada a natureza da invasão. Há invasões mais simples e que também costumam ser mais fáceis de remover e há invasões mais extensas e trabalhosas.
O que ajudará muito a quem for realizar a limpeza, é ter um bom conhecimento do seu site e do ambiente de hospedagem de sites. A familiaridade com determinados procedimentos técnicos, também é aconselhável, como por exemplo, comandos shell, permissões e outros conhecimentos de ambientes Linux.
Por fim, ter noções suficientes de PHP e bancos de dados MySQL, é bastante desejável para saber distinguir um arquivo legítimo do site ou dados autênticos do banco de dados, de dados inseridos ou alterados por um invasor.
-
O primeiro e mais simples passo para garantir a restauração de um site, é restaurar um backup atualizado do site e do banco de dados. Assim, sempre que realizar alterações e atualizações do CMS, plugins e temas, faça um novo backup, tendo a certeza de que o conteúdo armazenado está livre de ameaças quaisquer;
-
É aconselhável que se saiba o número de pastas e arquivos que o site completo tem. Esse é um método rápido de verificação de invasões, visto que muitas delas significam a inclusão de arquivos e até mesmo a criação de novas pastas onde o conteúdo do invasor é inserido. Alterações e atualizações no site significam alterações destes números e, portanto, sempre que as fizer, colha e guarde os novos dados. É possível contar o número de pastas e arquivos da public_html, executando as linhas de comando a seguir;
find . -type f | wc -l find . -type d | wc -l
-
Outra informação que é útil na identificação de invasões, é o espaço em disco ocupado pelo site. No entanto, este é um método de verificação que só é eficaz quando a quantidade de conteúdo alterado é significativa. Há invasões em que a quantidade de dados alterados é muito pequena e que não podem ser detectadas por esse método;
- É possível também localizar conteúdo não pertencente ao site, usando os atributos de arquivos e pastas relativos a data e horário de alteração. É razoavelmente simples ordenar conteúdos em pastas pela data de alteração, bem como usar o comando “find” do shell para buscar arquivos alterados desde uma determinada data, sabendo-se quando foi a última vez que seu conteúdo foi alterado. Tudo o que foi alterado posteriormente, provavelmente será conteúdo de invasão. Suponhamos que você tenha feito uma alteração há 30 dias, nesse caso os comandos abaixo executado via SSH, listam respectivamente pastas e arquivos alterados há menos de 30 dias;
find . -type f -mtime -30 find . -type d -mtime -30
- Há comandos do shell que realizam buscas dentro de arquivos e para tanto, é necessário acesso SSH. O seguinte comando, é um destinado a busca por alguns termos que são razoavelmente comuns em arquivos de invasão. Note porém que é necessário ter algum conhecimento em PHP para saber diferenciar um conteúdo legítimo, de um PHP Shell, por exemplo;
-
egrep "r0nin|m0rtix|upl0ad|r57shell|c99shell|shellbot|phpshell|void\.ru|phpremoteview|directmail|bash_history|multiviews|cwings|vandal|bitchx|eggdrop|guardservices|psybnc|dalnet|undernet|vulnscan|spymeta|raslan58|Webshell|str_rot13|FilesMan|FilesTools|Web Shell|bckdrprm|hackmeplz|wrgggthhd|WSOsetcookie|Hmei7|Inbox Mass Mailer|HackTeam|Hackeado|Janissaries|Miyachung|ccteam|Adminer|OOO000000|GLOBALS|Jayalah|strtolow|strtoup" -R * | egrep "^[^:]*php:" | less
-
O comando acima listará todos os arquivos em que as palavras entre cada “|” são encontradas. Cada arquivo suspeito deve ser examinado individualmente para se ter certeza da sua natureza. Consiste de um procedimento importante, visto que algumas invasões não criam ou gravam novos arquivos, mas utilizam-se dos já existentes do próprio site;
-
Em algumas invasões, o hacker (na verdade o cracker) altera o permissionamento de pastas e arquivos. Você pode restituir as permissões padrão, executando a partir do SSH, os comandos a seguir;
-
find . -type f -exec chmod 644 {} \; find . -type d -exec chmod 755 {} \;
-
Uma vez que você tenha certeza de que o site está limpo de qualquer tipo de invasão, é possível proteger o conteúdo existente de alterações, como por code injection, alterando os atributos de pastas e arquivos. No entanto, esse procedimento precisa ser revertido antes de alterações futuras. A primeira linha torna imutável (não podem ser modificados, gravados, removidos, renomeados) arquivos e diretórios recursivamente. A segunda linha reverte a ação da primeira;
chattr +i -R . chattr -i -R .
-
Não altere conteúdos / arquivos ou mesmo os remova, se não tiver certeza quanto à sua autenticidade, principalmente se não tiver um backup para recorrer;
-
Na dúvida, você pode tornar um arquivo temporariamente inacessível, mudando seu permissionamento através do comando CHMOD no shell ou mesmo usando seu cliente de FTP, para 000;
chmod 000 nome_do_arquivo
-
No caso de buscas no banco de dados, para casos de SQL Injection, é necessário conhecer comandos SQL, bem como a natureza dos dados que são armazenados, para saber o que buscar, como por exemplo, uma URL inserida para um endereço externo e malicioso. Assim como no caso do PHP, um leigo não é capaz de distinguir conteúdo legítimo, de conteúdo decorrente de invasão. Em ambos os casos, é recomendável buscar ajuda técnica;
-
Por fim, deve-se buscar identificar a vulnerabilidade que possibilitou a invasão e corrigi-la, do contrário é bastante provável que uma nova invasão ocorrerá usando a falha que possibilitou a primeira invasão.
Conclusão
Invasões de sites constitui um sério problema que deve ser tratado com métodos eficazes a fim de minimizar prejuízos ao próprio site e a sites de terceiros, através de procedimentos de identificação e remoção do conteúdo de invasão.