|
Buscar |
Ejemplo de un servidor hackeadoIntroducciónUn 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ónVamos 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ónCuando el servidor sufre el ataque de un hacker. ServidorInfectado Cuando el servidor se contagia con un troyano o un virus. |