18 de octubre de 2009

Ip-spoofing. ¿Que es, cómo funciona?

Hoy veremos la teoría del ip-spoofing. Más adelante veremos cómo spoofear una ip pero por ahora nos quedamos con la teoría.

¿Qué es el ip-spoofing?


Primero vamos a definir el término "spoof". El término "spoof" hace referencia al proceso en el que algún atacante falsea el origen de los paquetes haciéndose pasar por un host autorizado (host de confianza o "trusted host").

Ahora, el ip-spoofing no es nada más sino el aprovechamiento de una relacion de
confianza entre dos "trusted host".

Veamos el concepto "trusted host" con un ejemplo: Imagínense que trabajamos diariamente en un servidor llamado SERVER y en otro llamado SERVER2. Para conectarnos de un servidor a otro tendríamos que, desconectarnos de SERVER, telneaternos a SERVER2, ingresar un pass; desconectarnos de SERVER2 y repetir todo este proceso...
Para evitar todo estos procesos, bastante molestos, se invento el concepto de "trusted host",o hosts de confianza. De esta forma, un usuario del servidor SERVER y SERVER2 establece una relación de confianza entre ambos con lo cual puede pasar rápidamente de SERVER a SERVER2 por medio de un comando, sin necesidad de contraseñas. (En linux, el comando para ello es "rlogin")

Vamos a ver el proceso ip-spoofing con un ejemplo: Nos imaginamos que somos un ATACANTE y queremos entrar al servidor SERVER aprovechando la relación de confianza que tiene con SERVER2. Lo que haremos es "conversar" con SERVER2 y decirle que somos un usuario de SERVER. Como habíamos quedado en que somos hosts de confianza, SERVER2 nos dará permiso para entrar.

SERVICIOS VULNERABLES AL IP-SPOOFING
Son vulnerables las configuraciones y servicios:
-RPC (Llamada a Procedimiento Remoto)
-Todo servicio que utilize autentificación IP.
-El sistema de ventana X.
-Las suite de servicios R (rlogin, rsh,etc.).

¿Cómo funciona el ip-spoofing?


Antes de explicar todo el proceso, os recuerdo que para establecer una conexión con algún host de confianza debemos conocer el ISN (número de secuencia inicial que tiene cada paquete) porque sin ello no podemos contestar a su petición SYN/ACK.

Los pasos a seguir son los siguentes:
1. Elegir un host victima.
2. Buscar algun host de confianza de nuestra victima.
3. Desactivar el trusted host.
4. Conseguir los numeros secuenciales (ISN) de la victima.
5. Usurpar la identidad del host de confianza (El spoofing en si).

1.
Este paso nos lo saltamos, búsquense un host :p

2. Encontrar un host de confianza de nuestra vicitima puede resultar una tarea bastante difícil. Un comando, como el "showmount -e"; que nos cuenta adónde se dirigen los archivos del sistema nos puede ayudar en ello.

3. Sobra explicar el porqué de este paso; si no desactivamos al host de confianza SERVER le llegará el SYN/ACK en respuesta al SYN de SERVER2 que envió ATACANTE suplantando a SERVER. Ahora, el QUID de la pregunta: ¿Cómo desactivamos a nuestro host de confianza? Por medio de un SYN flooding. SYN flooding es, en alguna forma un ataque DOS (Denail of service). En el blog de sui90 hay algunos tutoriales sobre este ataque.

4.
Como ya habiamos dicho al principio necesitamos saber el ISN de
nuestro objetivo para terminar la conexion, puesto que a nosotros no
nos llega el SYN/ACK de SERVER2 con el ISN de este, y sin este ISN que
envia no podemos mandarle el ACK con el ISN+1 (ver "three way handshake").
Pero, ¿Como conseguimos el ISN de nuestra víctima? Nos conectamos a un puerto TCP de nuestra víctima. Todo esto antes de atacar; de este modo terminamos el three way handshake.

5. Un dibujito precioso del último paso:

SERVER (ATACANTE) --SYN--> SERVER2
SERVER <--SYN/ACK--- SERVER2 SERVER --ACK--> SERVER2
SERVER --PSH--> SERVER2

Primero nos spoofeamos para que ATACANTE tome la identidad de SERVER y aproveche la relación de confianza que tiene con SERVER2. En este paso, ATACANTE envía un SYN al puerto 513 para establecer una conexión con SERVER2 diciéndo que viene de SERVER.
SERVER2 recibe nuestra SYN que cree que proviene de SERVER y nos devuelve un SYN/ACK.
Esperamos un poco a que SERVER2 nos envié su SYN/ACK y, una vez transcurrido este tiempo, nosotors le enviamos un ACK con el ISN de SERVER que antes habíamos conseguido, más 1 (ISN+1 para confirmar)
Si todo ha salido bien, SERVER2 habrá acceptado nuestra ACK y la conexión se habrá establecido.

TUTORIAL BY MONZI_SEZ
EDUCATIONAL PURPOSES ONLY
18 octubre 2009

ACTUALIZADO 19 OCTUBRE 2009: Añadidos los servicios vulnerables a ip-spoofing.

2 comentarios:

  1. good tuto, entendible, y gracias por nombrarme, XD.

    ResponderEliminar
  2. Buen Tutorial queda mejor si lo acompañas de print screen

    ResponderEliminar