traceroute… seguimos buscando información
Traceroute (traceroute6 en IPv6), se trata de una herramienta de diagnostico escrita originalmente por Van Jacobson la cual nos va a venir de lujo no solo para poder trazar mapas de red, sino para detectar diferentes problemas de red ( rutas, latencias…..).
A través de este articulo vamos a poder comprobar como se comporta Traceroute sobre todo en sistemas Unix, enviando datagramas UDP a puertos destino que pueden variar desde el 33434 al 33534, aprovechándose del valor del campo TTL presente en las cabeceras IP. TTL (Tiempo de vida-8bits), va a ser el que determine el numero máximo de saltos por los que van a pasar los paquetes antes de ser descartados.
Básicamente, cuando un dispositivo (Ejem: Router) recibe el paquete este decrementa el TTL en 1 unidad. Si el nuevo valor se convierte en 0, el paquete es descartado. Si realizamos estas mismas pruebas sobre un entorno Windows, este enviará mensajes ICMP (Echo Request) pero la lógica va a ser la misma.
Ya hablaremos en artículos posteriores del el uso de Sniffers para trafico de red, pero para que nos vayamos familiarizando vamos a ver de forma real a través de capturas de lo que estamos hablando.
Bajo linea de comando de nuestra consola, vamos a lanzar un traceroute cotra una máquina con servicios publicados en Internet. En este caso no es necesaria la instalación de ningún paquete por nuestra parte, ya que que este viene instalado en nuestros sistema por defecto.
#traceroute www.terra.es
traceroute to www.terra.es (213.4.130.210), 30 hops max, 60 byte packets
1 10.207.214.254 (10.207.214.254) 1.034 ms 1.637 ms 2.026 ms
2 15.87.32.1 (15.87.32.1) 310.866 ms 311.262 ms 311.259 ms
Vemos que la primera de las lineas nos muestra información sobre el host de destino, el número máximo de saltos disponibles antes de alcanzar nuestro objetivo, ai como del tamaño de los paquetes que se van a enviar.
Si realizamos una captura de red veriamos lo siguiente:
Antes de nada se procede a realizar una resolución DNS del dominio www.terra.es, y posteriormente se envían 3 datagramas UDP en los que el TTL de la cabecera IP tiene como valor 1 siendo el puerto destino el 3334. Del envio de esos datagramas se obtienen los 3 tiempos de respuesta que aparecen en la respuesta del traceroute (310.866 ms 311.262 ms 311.259 ms)
¿Que es lo que vemos realmente?. Reconocemos el envio de un paquete con el TTL a 1, al llegar al primero de los «routers» este lo decrementa pasando a valer 0 por lo que este es descartado. El Router enviará una respuesta ICMP (Error de tiempo excedido) en la que se incluye la Ip y vemos el tiempo de respuesta.
Una vez definido el primero de los saltos el proceso se va repitiendo incrementando en 1 el valor del TTL, obteniendo así cada uno de los saltos que se producen hasta llegar el destino.
Cuando llegue al último de los saltos, lo que hace es enviar datagramas UDP a un puerto no valido de tal forma que el host destino envie una respuesta ICMP del tipo puerto inalcanzable.
Como vemos las latencias que nos devuelve el traceroute se miden en ms. Si no recibimos respuesta nos encontraremos con los famosos *. que no nos gustan nada porque perdemos información muy interesante.
#tarceroute www.terra.es
traceroute to www.terra.es (213.4.130.210), 30 hops max, 60 byte packets
1 10.207.214.254 (10.207.214.254) 1.019 ms 1.547 ms 1.929 ms
2 15.87.32.1 (15.87.32.1) 8.218 ms 12.518 ms 12.681 ms
3 * * *
4 * * *
5 195.95.153.65 (195.95.153.65) 22.814 ms 22.860 ms 22.976 ms
6 89.Red-80-58-83.staticIP.rima-tde.net (80.58.83.89) 23.059 ms 18.348 ms 17.238 ms
7 65.Red-80-58-76.staticIP.rima-tde.net (80.58.76.65) 22.564 ms 22.922 ms 23.033 ms
8 177.Red-80-58-83.staticIP.rima-tde.net (80.58.83.177) 21.392 ms 21.578 ms 21.932 ms
9 * * *
10 * * *
11 * * *
12 * * *
30 * * *
Esto no tiene porque significar obligatoriamente que nos estemos enfrentando ante un problema en la red, sino que prodríamos estar ante algún dispositivo que este filtrando nuestro tráfico.
¿Que podemos hacer en este caso?. Apoyarnos en una herramienta como tcptraceroute de la cual ya hicimos uso y mención en el anterior articulo.
Como muchos de los Firewall van a filtrar paquetes UDP o ICMP, podemos intentar hacer lo mismo pero enviando paquetes TCP SYN a un determinado puerto. Por defecto se lanzan al puerto 80, pero la herramienta nos permite jugar con estos y otros valores.
Usage: tcptraceroute [-nNFSAE] [-i <interface>] [-f <first ttl>]
[-l <packet length>] [-q <number of queries>] [-t <tos>]
[-m <max ttl>] [-pP] <source port>] [-s <source address>]
[-w <wait time>] <host> [destination port] [packet length]
Pero vamos a ver que sucede si lanzamos un tcptraceroute contra www.terra.es.
#tcptraceroute www.terra.es
Selected device wlan0, address 10.207.214.106, port 54216 for outgoing packets
Tracing the path to www.terra.es (213.4.130.210) on TCP port 80 (www), 30 hops max
1 10.207.214.254 0.941 ms 0.780 ms 0.794 ms
2 15.87.32.1 6.618 ms 5.635 ms 7.026 ms
3 * * *
4 * * *
5 195.95.153.65 13.727 ms 16.148 ms 19.189 ms
6 61.Red-80-58-75.staticIP.rima-tde.net (80.58.75.61) 22.873 ms 19.422 ms 16.532 ms
7 65.Red-80-58-76.staticIP.rima-tde.net (80.58.76.65) 16.052 ms 17.255 ms 16.856 ms
8 177.Red-80-58-83.staticIP.rima-tde.net (80.58.83.177) 16.541 ms 15.355 ms 16.277 ms
9 www.terra.es (213.4.130.210) [open] 16.335 ms 16.380 ms 19.373 ms
Vemos que aparece mucha mas información. Sobre todo referente a los últimos saltos que son los que nos van a permitir trazar el mapa de red aplicando todo lo que ya conocemos de artículos anteriores.
Aquí ya vemos que tcptraceroute esta enviando paquetes con el flag SYN activado al puerto 80 (HTTP) del destino y este responde con ICMP (Time to live exceeded)
Hasta llegar los últimos paquetes SYN – SYN/ACK- RST.
También podemos hacer uso de comandos similares, como el traceroute modificado como el de Michael Schiffman para lanzar paquetes UDP desde puertos estáticos, herramientas gráficas tales como:
Interfaces web:
Esta última muy interesante ya que nos permite trazar rutas tomando diferentes orígenes.
Podemos ver ejemplos con las diferencias entra las salidas que ofrece traceroute y tcptraceroute.
De todas formas compañeros debemos de tener cuidado porque no sabemos quien tenemos al otro lado. Pueden detectar que estamos realizando un reconocimiento restringuiendo las respuestas, e incluso generando respuestas falsas para intentar despistanos.
Empezamos a conocer mas cosillas ¿verdad?. Esto solo es el principio compañeros.
Hasta la próxima!!.