Tem se tornando comum a prática de injetar códigos maliciosos e backdoors no WordPress por crackers. Em praticamente 99.9% dos casos a conduta acontece pelo fato de alguns manterem a instalação desatualizada ou fazerem uso de plugins ou temas vulneráveis.
Antes de prosseguirmos, vamos conhecer um pouco mais sobre backdoors:
Backdoor é um recurso utilizado por diversos malwares para garantir acesso remoto ao sistema ou à rede infectada, explorando falhas críticas não documentadas existentes em programas instalados, softwares desatualizados e do firewall para abrir portas do roteador.
Para garantirmos a plenitudade de execução dos nossos sites e blogs é preciso considerar uma consistente segurança para WordPress e nesse artigos veremos como identificar, localizar e evitar a execução de códigos maliciosos e backdoors.
Como identificar e localizar backdoors no WordPress
Os códigos maliciosos de backdoors evoluem constantemente. Eles são diversificados, de vários tamanhos e se espalham como uma praga pelos arquivos da aplicação. Há duas características simples de identifica-los juntos aos arquivos do WordPress, são elas: arquivos PHP isolados na pasta de uploads e injeção de códigos geralmente no início de arquivos de temas e plugins.
Como identificar backdoors em arquivos isolados na pasta de uploads
Os arquivos de uploads do WordPress, por padrão, são armazenados em /wp-content/uploads. Neste local é comum a permanência desses códigos maliciosos que geralmente são nomeados assim:
- alguma-coisa-nada-a-ver.php
- php5.php
- outra-coisa-estranha.php5
- single_x1.php4
- mais-coisa-esquisita.php4
- p.php
- 1.php
- 1.php5
- e a lista continua.
Arquivos PHP localizados no diretório de uploads é suspeito. Nomeado estranhamente mais ainda. É perceptível a nomeação desses arquivos de backdoors de forma aleatória e, às vezes, sequencional por loops em scripts perversos. Atente-se também as pastas de anos e meses onde arquivos de uploads são organizados e armazenados.
Como localizar backdoors na pasta de uploads
Arquivos PHP na pasta de uploads devem ser excluídos. Eles certamente foram inseridos ali pela exploração de alguma falha. Portanto, localize todos eles e exclua-os.
Se a quantidade de arquivos e pastas é pequena, um simples olhar é capaz de identificar os arquivos. Quando o volume é maior precisamos considerar uma busca mais eficaz, se você faz uso do terminal o código abaixo listará todos os arquivos PHP contidos no diretório.
find pasta-dos-uploads -name "*.php*" -print
Atente-se ao uso do *.php*. Isso considerará também os arquivos nomeados como php4 e php5, por exemplo. O código para excluir todos eles de uma única vez é assim:
find pasta-dos-uploads -name "*.php*" -delete
Como identificar e localizar backdoors em arquivos de temas e plugins
Quando os backdoors são injetados nos arquivos de temas e plugins é comum serem inseridos no início do script PHP. É fácil percebê-los uma vez que os códigos são obfuscados e fazem uso de funções como eval, base64_decode e gzinflate, por exemplo.
Se você faz uso de temas prontos, considere excluir todos os arquivos e envia-los novamente. Repita o processo com os plugins. Com isso você evita a necessidade de percorrer todos os arquivos para analisa-los. Os que não estiverem em uso exclua e desconsidere a permanência desses arquivos no servidor.
Você pode considerar também uma análise nos arquivos modificados recentemente ou próximo da data dos ataques. Vamos considerar que o site foi atacado há 3 dias atrás, a execução do código abaixo listará todos os arquivos modificados nesse tempo e permitirá uma análise específica e direcionada a eles.
find . -mtime 3 -print
Considere uma busca também pelas funções comumente utilizadas em códigos maliciosos e backdoors e analise os arquivos encontrados. Faça uso do comando grep para esse tipo de busca. Exemplos:
grep -r "base64_decode" wp-content/
grep -r "gzinflate" wp-content/
Plugins e ferramentas que auxilam na identificação e localização
Há vários plugins WordPress e serviços que fazem análises e escaneamentos de arquivos em busca de códigos maliciosos e backdoors, por exemplo. Alguns deles:
- Theme Authenticity Checker (TAC)
- Exploit Scanner
- Acunetix WP Security
- Sucuri Security – Auditing, Malware Scanner and Security Hardening
- Free Website Malware and Security Scanner
Sobre o mecanismo de upload do WordPress
O sistema de upload de arquivos do WordPress é seguro. É realizado várias tratativas e análises de segurança antes de realmente enviar e armazenar os arquivos enviados. Uma das restrições é não realizar o upload de arquivos PHP.
Muitos plugins não fazem uso da API do WordPress para realizar o upload de arquivos e isso acaba prejudicando a segurança pelo fato de muitos deles não realizarem um processo de validação eficaz e detalhado. Crackers quando encontram mecanismos de upload vulneráveis em plugins injetam códigos PHP na pasta de uploads do WordPress, na maioria das vezes, e espalham backdoors e códigos maliciosos por toda aplicação.
Nos exemplos acima vimos exemplos práticos de como identificar e localizar os arquivos da aplicação a procura dessas pragas indesejavéis. Além desse conhecimento é preciso aplicar algumas regras para evitar e ficar livre para sempre desses incômodos.
Como evitar códigos maliciosos e backdoors no WordPress
Para evitar que sua instalação WordPress seja infectada por backdoors e códigos maliciosos, precisamos considerar quatro iniciativas:
- Manter todos os arquivos atualizados (core, plugins e temas);
- Fazer uso das permissões corretas para arquivos e diretórios;
- Desabilitar o editor de plugins e temas através da interface de administração;
- Bloquear a execução de scripts PHP localizados na pasta de uploads.
Mais de 60% das instalações WordPress estão desatualizadas. Vulnerabilidades em versões antigas de softwares se tornam públicas e são alvos. É extremamente importante manter o WordPress e seus componentes atualizados.
Além do processo constante de atualização, é muito necessário fazer uso da correta permissão de arquivos e pastas, tanto do core quando dos plugins e temas.
O WordPress, por padrão, fornece um editor de código para a edição dos arquivos de plugins e temas. Quando um atacante ganha acesso ao painel administrativo – através de ataque de força bruta, por exempo – e o editor está presente ele consegue inserir códigos maliciosos e backdoors nos arquivos disponíveis para edição. Considere o uso da constante DISALLOW_FILE_EDIT no arquivo wp-config.php com o valor true para desabilitar o editor mencionado.
define( 'DISALLOW_FILE_EDIT', true );
Os arquivos PHP injetados nas pastas de uploads podem ser neutralizados e assim evitamos que os códigos dos backdoors em arquivos PHP sejam executados. Para isso, precisamos considerar o uso de uma diretiva no arquivo de configuração do Apache que bloqueia a execução de scritpts PHP nessa localização.
<Directory "/var/www/wp-content/uploads/"> <Files "*.php"> Order Deny,Allow Deny from All </Files> </Directory>
Considere identificar, localizar e evitar a execução de códigos maliciosos e backdoors em sua instalação WordPress. Além das técnicas aqui apresentadas quais você utilizada para esse processo?
Crédito da imagem security-faqs.com.