Uma backdoor foi encontrada escondida no servidor web que executa o Control Web Panel (CWP), painel gratuito para gerenciar servidores de hospedagem Linux, afirmaram nesta semana pesquisadores da XLab, da QiAnXin.
O servidor web infectado executa comandos enviados pelos invasores por meio de requisições web, e essas requisições nunca aparecem nos seus registros de acesso. A instalação exige acesso root (de superusuário), o que significa que os invasores já precisam controlar o servidor.
Os pesquisadores, que batizaram a backdoor de cwpdoor, capturaram o instalador dela, um script de shell que se passa por uma atualização de versão, em 29 de junho. O instalador funciona apenas com duas versões desse servidor web, a cwpsrv 1.15.10 e a 1.24.0. Os pesquisadores ainda não sabem como os invasores obtêm o acesso root de que o instalador precisa.
Em 30 de setembro, um arquivo contendo uma cópia da backdoor foi enviado ao VirusTotal a partir do Brasil. Segundo os pesquisadores, isso indica que “vítimas reais já existem na prática”. Eles não informam quantos servidores foram infectados.
A backdoor é o próprio cwpsrv, recompilado com código extra, segundo os pesquisadores constataram em sua análise técnica. Ele se comporta como o programa normal até receber uma requisição com carimbo de data e hora e assinatura válidos em cabeçalhos personalizados cujos nomes começam com X-Ngx-Integrity. Então, executa o comando contido na requisição.
Quando o instalador substitui o arquivo cwpsrv, ele restaura as datas originais desse arquivo, de modo que verificações com os comandos ls e stat mostram que ele não foi alterado. Ao checar, os pesquisadores constataram que o arquivo da backdoor não teve nenhuma detecção entre as 63 ferramentas do VirusTotal.
Como verificar se um servidor está infectado
A XLab indica três verificações:
- Socket: execute ss -axp | grep integrity (ss, utilitário que lista sockets de rede). Um resultado que cite ngx_http_integrity_helper, o socket Unix usado pela backdoor, é sinal de infecção.
- Processo: execute ps aux | grep cwpsrv (ps aux, comando que lista os processos em execução) e procure processos auxiliares inesperados iniciados pelo cwpsrv.
- Arquivo: execute strings /usr/local/cwpsrv/bin/cwpsrv | grep X-Ngx-Integrity e procure os nomes de cabeçalho da backdoor.
No exemplo dos pesquisadores, a verificação do socket encontrou a backdoor em um servidor cuja lista de portas abertas parecia normal.
Os pesquisadores publicaram os seguintes indicadores:
- MD5 (algoritmo de resumo de mensagem): e505d4ffa21cf494a5dc2d7c8f4f1236 (script do instalador, cwpsrv_update.sh)
- MD5: 965aea67fb40de1bab5169ada993349f (cwpsrv 1.15.10 com backdoor)
- MD5: d3f4e95113d49ab3991b45e457bda75b (cwpsrv 1.24.0 com backdoor)
- IP (protocolo de internet): 136.0.141[.]71 (servidor de download)
- URL (endereço de recurso na web): https://136.0.141[.]71/static/cwpsrv_update.sh
- URL: https://136.0.141[.]71/static/cwpsrv_1.15.10
- URL: https://136.0.141[.]71/static/cwpsrv_1.24.0
Como limpar um servidor infectado
Se um servidor estiver infectado, os pesquisadores recomendam três etapas:
- Restaurar o cwpsrv original a partir do backup criado pelo instalador em /usr/local/cwpsrv/bin, com nome que começa com cwpsrv.prev- e termina em data e hora. A descrição do instalador feita pelos pesquisadores diz que ele apaga “os arquivos temporários e o backup” após a substituição bem-sucedida, então essa cópia pode não existir.
- Atualizar para a versão mais recente e confirmar que o comando ss -axp | grep integrity não retorna nenhum resultado.
- Trocar todas as credenciais do painel de controle, pois a backdoor pode executar qualquer comando. Considere o servidor inteiro comprometido e verifique se há outras ameaças.
O arquivo enviado do Brasil também continha o malware Ebury, uma backdoor do OpenSSH e roubador de credenciais ativo desde pelo menos 2009. Os pesquisadores não sabem se os dois estão relacionados e afirmam que invasores diferentes podem tê-los instalado no mesmo servidor.