Limpiar mi servidor privado

Cada CMS (joomla, wordpress, drupal, etc.) es una fuente potencial de infección. Lo mismo ocurre con el software instalado en sus servidores. La infección de su servidor puede utilizarse para instalar, por ejemplo, un Botnetsoftware, o un Minería de Bitcoin

Hacer un diagnóstico

En el caso de un minero de bitcoin, los recursos de su servidor estarán muy ocupados, por lo que es bastante sencillo encontrar el proceso infractor utilizando el comando top en SSH

En el caso de una red de bots, esto se vuelve un poco más crítico. Podemos ayudarle con Horas de crédito de servicios gestionados si tiene dificultades.

Por lo general, el procedimiento es el siguiente; empezamos por utilizar el ss (sustitución de netstat) :

ss -lntpaue|grep -i 6667

Este comando determina qué proceso se está comunicando a través del puerto 6667 (IRC)

tcp SYN-SENT 0 1 ip.from.your.server:44098 ip.malicious:6667 timer:(on,30sec,5) users:("perl",7908,4)) uid:10013 ino:34808658 sk:ffff8805c23680c0
tcp SYN-SENT 0 1 ip.de.votre.serveur:47601 ip.malicious.2:6667 timer:(on,28sec,5) users:(("perl",17998,4)) uid:10013 ino:34808090 sk:ffff881086770f40
tcp SYN-SENT 0 1 ip.de.su.servidor:42479 ip.malicioso.3:6667 timer:(on,10sec,4) users:("perl",27298,4)) uid:10013 ino:34810070 sk:ffff88000e852e40
tcp SYN-SENT 0 1 ip.de.su.servidor:48434 ip.malicioso.4:6667 timer:(on,10sec,4) users:("perl",27312,4)) uid:10013 ino:34810069 sk:ffff881ee98b8280

Entonces sabemos que el PID 7908, un proceso perl, ha enviado un SYN a la IP "ip.maliciosa".

Detección de la infección

Identificar el o los guiones

Tanto si el problema es un minero de bitcoin, una red de bots, un script de spam o cualquier otra cosa, generalmente el enfoque es el mismo.

Una vez que tenga el PID del script infractor, puede aplicar el comando lsof utilizando el parámetro -p para identificar los archivos abiertos por el núcleo de su servidor, a través del proceso identificado.

root@server:/# lsof -p 7908
COMANDO PID USUARIO FD TIPO DISPOSITIVO TAMAÑO/OFF NOMBRE NODO
perl 7908 www-data cwd DIR 0,147 4096 65774431 /var/www/vhosts/monserver.ispfr.net/www/images/partners
perl 7908 www-data rtd DIR 0,147 4096 64882566 /
perl 7908 www-data txt REG 0.147 6928 64907675 /usr/bin/perl
perl 7908 www-data mem REG 0.147 80712 66365480 /lib/libresolv-2.11.3.so
perl 7908 www-data mem REG 0.147 22928 66365674 /lib/libnss_dns-2.11.3.so
perl 7908 www-data mem REG 0.147 51728 66365701 /lib/libnss_files-2.11.3.so
perl 7908 www-data mem REG 0.147 43552 66365618 /lib/libnss_nis-2.11.3.so
perl 7908 www-data mem REG 0.147 89064 66365442 /lib/libnsl-2.11.3.so
perl 7908 www-data mem REG 0.147 31616 66365673 /lib/libnss_compat-2.11.3.so
perl 7908 www-data mem REG 0.147 17640 42543840 /usr/lib/perl/5.10.1/auto/Digest/MD5/MD5.so
perl 7908 www-data mem REG 0.147 13992 42543857 /usr/lib/perl/5.10.1/auto/MIME/Base64/Base64.so
perl 7908 www-data mem REG 0.147 25976 36315140 /usr/lib/perl/5.10.1/auto/Socket/Socket.so
perl 7908 www-data mem REG 0.147 86072 42550019 /usr/lib/perl/5.10.1/auto/Storable/Storable.so
perl 7908 www-data mem REG 0.147 18120 36241410 /usr/lib/perl/5.10.1/auto/Fcntl/Fcntl.so
perl 7908 www-data mem REG 0.147 19920 36282369 /usr/lib/perl/5.10.1/auto/IO/IO.so
perl 7908 www-data mem REG 0.147 35104 66365563 /lib/libcrypt-2.11.3.so
perl 7908 www-data mem REG 0.147 1437064 66365693 /lib/libc-2.11.3.so
perl 7908 www-data mem REG 0.147 131258 66365502 /lib/libpthread-2.11.3.so
perl 7908 www-data mem REG 0.147 530736 66365430 /lib/libm-2.11.3.so
perl 7908 www-data mem REG 0.147 14696 66365682 /lib/libdl-2.11.3.so
perl 7908 www-data mem REG 0.147 1494792 65005681 /usr/lib/libperl.so.5.10.1
perl 7908 www-data mem REG 0.147 128744 66365635 /lib/ld-2.11.3.so
perl 7908 www-data 0r CHR 1,3 0t0 64890531 /dev/null
perl 7908 www-data 1w FIFO 0.8 0t0 880179538 pipe
perl 7908 www-data 2w FIFO 0.8 0t0 880179538 pipe
perl 7908 www-data 3u IPv4 2691366378 0t0 TCP myserver.ispfr.net:41386->87.250.73.120:ircd (SYN_SENT)
perl 7908 www-data 54r FIFO 0,8 0t0 875280500 pipe
perl 7908 www-data 55w FIFO 0.8 0t0 875280500 pipe
perl 7908 www-data 56r FIFO 0.8 0t0 875280501 pipe
perl 7908 www-data 57w FIFO 0.8 0t0 875280501 pipe

Así, la primera línea identifica el archivo infractor: perl 7908 www-data cwd DIR 0.147 4096 65774431 /var/www/vhosts/monserver.ispfr.net/www/images/partners

El directorio /var/www/vhosts/monserver.ispfr.net/www/images/partners por lo que contiene el archivo infractor.

Así que abrimos el archivo para ver qué contiene:

root@monserveur:/var/www/vhosts/monserveur.ispfr.net/www/images/partenaires# ls
DeNia.phtml image55.jpg jrtv.jpg d.jpg index.html xml.phtml

Si abre el archivo DeNia.phtml

?php
/*******************************************/
/* c99 injektor v.9 (C) 2011 */
/* Recodificado y modificado por DeNia */
/* #Denia@irc.allnetwork.org */
/*******************************************/

Entonces podemos encontrar algunos rastros en Internet del origen del ataque. Por lo tanto, se puede suponer que todos los sitios de su servidor que están en el mismo CMS están todos infectados de la misma manera.

Los archivos en .jpg en esta carpeta no son necesariamente todos legítimos; si abre el primero de la lista :

# cabeza imagen55.jpg
#!/usr/bin/perl
utilice HTTP::Request;
utilizar LWP::UserAgent;
utilice IO::Socket;
utilice IO::Select;
utilizar la toma de corriente;
utilizar MIME::Base64;
utilice File::Basename;
utilice URI::Escape;
use Digest::MD5 qw(md5_hex);

Puedes ver que se trata de un script malicioso. Lo mismo ocurre con la siguiente imagen:

# cabeza d.jpg
#!/usr/bin/perl

utilice HTTP::Request;
utilice HTTP::Request::Common;
use HTTP::Request::Common qw(POST);
utilice LWP::Simple;
utilizar LWP 5.64;
utilizar LWP::UserAgent;
utilizar la toma de corriente;
utilice IO::Socket;

Eliminación del problema

Una vez que esté seguro de haber identificado los scripts maliciosos, debe cortar la amenaza.

Una forma sencilla y radical de hacerlo funciona muy bien:

cd /la/ruta/mi/carpeta/contenido/archivos/infectados/
chmod -R 0 *

Entonces la actividad de la red de bots se corta:

matar -9 7908

(7908 que corresponde, por supuesto, al PID del script)

Actualización

El CMS no son una excepción a la necesidad de actualización. Por lo tanto, es primordial para que se encargue de actualizar su CMS de la manera más coherente posible.

Si esta documentación no es suficiente, póngase en contacto con el administrador del sistema.

Actualizado el 12 de junio de 2020

Artículos relacionados