Buscar


imprimir pdf Español

Ejemplo de un servidor hackeado




Introducción




Un pequeño ejemplo de una máquina hackeada sin posibilidad de reparación, excepto la reinstalacion completa:





# ps auxw

nobody 8889 47.8 1.6 13140 2092 ? R Dec08 2711:09 /usr/local/apache/bin/httpd

nobody 7208 0.0 0.2 2100 260 ? T Dec09 0:00 ./telek

nobody 20546 0.0 0.0 0 0 ? Z Dec09 0:00 telek <defunct>

nobody 14831 20.4 1.8 11556 2332 ? R Dec10 600:46 /usr/local/apache/bin/httpd

nobody 9472 20.5 1.8 10288 2296 ? R Dec10 600:48 /usr/local/apache/bin/httpd

nobody 19874 0.0 0.1 1352 212 ? T Dec10 0:00 /tmp/c

nobody 18338 0.0 0.0 0 0 ? Z Dec10 0:00 c <defunct>

nobody 18390 0.0 0.1 1352 212 ? T Dec10 0:00 /tmp/c

nobody 590 0.0 0.0 0 0 ? Z Dec10 0:00 c <defunct>

nobody 1486 0.0 0.1 1352 212 ? T Dec10 0:00 /tmp/c

nobody 11311 0.0 0.0 0 0 ? Z Dec10 0:00 c <defunct>

nobody 2231 0.0 0.1 1356 216 ? T Dec10 0:00 /tmp/c

nobody 16076 0.0 0.0 0 0 ? Z Dec10 0:00 c <defunct>

nobody 21115 19.6 0.2 1348 252 ? R Dec11 178:08 ./kmod

nobody 27214 0.0 0.1 1360 212 ? S 02:15 0:00 ./x0x

nobody 15064 0.0 0.2 2104 288 ? S 03:03 0:00 getty





Podemos pensar que la máquina está ServidorSemiHackeado, pero...



# netstat -tanpu

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:2600 0.0.0.0:* LISTEN 11133/psybnc

tcp 0 0 0.0.0.0:6668 0.0.0.0:* LISTEN 31528/psybnc





Tenemos 2 procesos de IRC.



# ps auxw |grep 11133

root 23763 0.0 0.5 1832 672 pts/5 S 12:18 0:00 grep 11133





El proceso no es visto por el comando ps.



# cd /proc/11133/

# ls -l

total 0

-r-r-r- 1 nobody nobody 0 Dec 12 12:19 cmdline

lrwxrwxrwx 1 nobody nobody 0 Dec 12 12:19 cwd -> /var/tmp/psybnc

-r- 1 nobody nobody 0 Dec 12 12:19 environ

lrwxrwxrwx 1 nobody nobody 0 Dec 12 12:19 exe -> /var/tmp/psybnc/psybnc

dr-x- 2 nobody nobody 0 Dec 12 12:19 fd

-r-r-r- 1 nobody nobody 0 Dec 12 12:19 maps

-rw- 1 nobody nobody 0 Dec 12 12:19 mem

-r-r-r- 1 nobody nobody 0 Dec 12 12:19 mounts

lrwxrwxrwx 1 nobody nobody 0 Dec 12 12:19 root -> /

-r-r-r- 1 nobody nobody 0 Dec 12 12:19 stat

-r-r-r- 1 nobody nobody 0 Dec 12 12:19 statm

-r-r-r- 1 nobody nobody 0 Dec 12 12:19 status

# cat stat

11133 (psybnc) S 1 10133 21624 0 -1 134217792 1052 0 790 0 3107 1321 0 0 9 0 0 0 173526992 2871296 253 4294967295 134512640 135116556 3114546144 3114545452 134716030 0 0 4096 28367 3223080614 0 0 17 0

# cat cmdline

./psybnc







y sin embargo el proceso existe. ps ha sido modificado y por tanto el el hacker ha podido ser root.



Comprobación




Vamos a mirar con detalle:



# lsattr /bin/

suSiadAc- /bin/login

suSiadAc- /bin/ls

suSiadAc- /bin/netstat

suSiadAc- /bin/ps





Los hackers hacen siempre esta manipulación: instalan su comando y cambian los permisos de ejecución para evitar las actualizaciones.





# chattr -suSiadAc /bin/*

# rpm -qf /bin/ps

procps-2.0.7-11

# rpm -Uvh ftp://rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/procps-2.0.7-12.i386.rpm

Retrieving ftp://rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/procps-2.0.7-12.i386.rpm

Preparing... 100%

1:procps error: unpacking of archive failed on file /usr/bin/top: cpio: rename failed - Operación no permitida

# chattr -suSiadAc /usr/bin/top

# rpm -Uvh --force ftp://rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/procps-2.0.7-12.i386.rpm

Retrieving ftp://rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/procps-2.0.7-12.i386.rpm

Preparing... 100%

1:procps 100%





Ahora podremos ver mejor:



# ps auxw

nobody 8889 47.7 1.6 13140 2092 ? R Dec08 2713:27 /usr/local/apache/bin/httpd

nobody 7208 0.0 0.2 2100 256 ? T Dec09 0:00 ./telek

nobody 20546 0.0 0.0 0 0 ? Z Dec09 0:00 telek <defunct>

nobody 14831 20.4 1.8 11556 2332 ? R Dec10 603:04 /usr/local/apache/bin/httpd

nobody 9472 20.5 1.8 10288 2296 ? R Dec10 603:07 /usr/local/apache/bin/httpd

nobody 19874 0.0 0.1 1352 212 ? T Dec10 0:00 /tmp/c

nobody 18338 0.0 0.0 0 0 ? Z Dec10 0:00 c <defunct>

nobody 18390 0.0 0.1 1352 212 ? T Dec10 0:00 /tmp/c

nobody 590 0.0 0.0 0 0 ? Z Dec10 0:00 c <defunct>

nobody 1486 0.0 0.1 1352 212 ? T Dec10 0:00 /tmp/c

nobody 11311 0.0 0.0 0 0 ? Z Dec10 0:00 c <defunct>

nobody 2231 0.0 0.1 1356 212 ? T Dec10 0:00 /tmp/c

nobody 16076 0.0 0.0 0 0 ? Z Dec10 0:00 c <defunct>

nobody 11133 0.0 0.8 2804 1012 ? S Dec10 0:44 ./psybnc

nobody 11598 0.0 0.7 2500 948 ? S Dec10 0:13 ./psybnc

nobody 31528 0.0 1.2 3788 1504 ? S Dec11 1:04 ./psybnc

nobody 25517 0.0 0.5 2304 712 ? S Dec11 0:01 ./psybnc

nobody 21115 19.6 0.2 1348 252 ? R Dec11 180:27 ./kmod

nobody 27214 0.0 0.1 1360 212 ? S 02:15 0:00 ./x0x

nobody 15064 0.0 0.2 2104 284 ? S 03:03 0:00 getty

nobody 27439 0.0 2.6 13552 3292 ? S 10:10 0:07 /usr/local/apache/bin/httpd





Vemos varias cosas. kmod entre otros ha sido lanzado en línea de comando.

Probablemente se trata de un programa que intenta explotar un fallo de ptrace en el núcleo < 2.4.20.

Salvo que el núcleo es 2.4.21. Y sobre este núcleo existe otro fallo.



Reparación






# rpm -qf /bin/netstat

net-tools-1.60-3

# rpm -Uvh ftp://rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/net-tools-1.60-4.i386.rpm

Retrieving ftp://rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/net-tools-1.60-4.i386.rpm

Preparing... 100%

1:net-tools error: unpacking of archive failed on file /sbin/ifconfig: cpio: rename failed - Operación no permitida

# chattr -suSiadAc /sbin/ifconfig

# rpm -Uvh ftp://rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/net-tools-1.60-4.i386.rpm

Retrieving ftp://rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/RPMS/net-tools-1.60-4.i386.rpm

Preparing... 100%

1:net-tools 100%

# netstat -tanpu | grep psybnc

tcp 0 0 0.0.0.0:2600 0.0.0.0:* LISTEN 11133/psybnc

tcp 0 0 0.0.0.0:6667 0.0.0.0:* LISTEN 11598/psybnc

tcp 0 0 0.0.0.0:6668 0.0.0.0:* LISTEN 31528/psybnc

tcp 0 0 0.0.0.0:3323 0.0.0.0:* LISTEN 25517/psybnc

tcp 0 0 xx:3799 195.47.220.2:6667 ESTABLISHED 25517/psybnc

tcp 0 0 xx:3960 195.204.1.130:6667 ESTABLISHED 31528/psybnc

tcp 0 0 xx:6667 xx:4683 ESTABLISHED 11598/psybnc

tcp 0 0 xx:2142 61.6.39.100:6667 ESTABLISHED 11133/psybnc

tcp 0 0 xx:6667 81.192.224.22:2075 ESTABLISHED 11598/psybnc

tcp 0 0 xx:2082 209.123.150.208:6667 ESTABLISHED 31528/psybnc

tcp 0 0 xx:4054 61.6.39.100:7000 ESTABLISHED 11598/psybnc

tcp 0 0 xx:2866 213.221.189.3:6667 ESTABLISHED 31528/psybnc

tcp 0 0 xx:4683 213.186.38.215:6667 ESTABLISHED 11598/psybnc

tcp 0 0 xx:1549 61.6.39.100:6667 ESTABLISHED 11133/psybnc





Nos detenemos aquí. No hay nada que hacer. El servidor parte para reinstalación.



# halt



Broadcast message from root (pts/5) Fri Dec 12 12:37:54 2003...



The system is going down for system halt NOW !!





¿Cómo ha sido hackeado el servidor?



El hacker a encontrado un fallo en un script php. Ha podido tener, por tanto, acceso shell

en nobody. A continuación con el bug de seguridad en el núcleo < 2.4.23 ha podido pasar

a root gracias a las herramientas que ha podido encontrar en internet.



El núcleo del servidor era 2.4.21.



Mas información


Cuando el servidor sufre el ataque de un hacker.

ServidorInfectado
Cuando el servidor se contagia con un troyano o un virus.