30 ago 2009

Paris-Traceroute: Cómo buscar todas las posibles rutas de red entre un origen y un destino

Tracerouter es una utilidad muy conocida y utilizada para realizar diagnósticos básicos de redes, la herramienta permite visualizar la ruta a un host destino identificando los routers (saltos) por los que pasan los paquetes. El problema es que esta aplicación es tan popular como primitiva y en determinadas situaciones no da información veraz sobre las rutas utilizadas por el tráfico de red.
En la actualidad la gran mayoría de redes no tienen una topología lineal, lo habitual es encontrar routers con varias interfaces de red y en consecuencia varias rutas para alcanzar el destino, estas variaciones de rutas se aprecian muy bien cuando probamos trazas en Internet, la red de redes. Uno de los motivos principales para usar el balanceo de carga es evitar en la medida de lo posible los cuellos de botella, sobre todo al interconectar una red con otra. La implementación de este tipo de topologías de red no lineales impide al comando tracerouter y derivados visualizar una ruta al destino de forma acertada, veamos con algunos ejemplos simples donde recae el problema y qué consecuencias puede provocar.


Como se puede ver en la imagen, tracerouter muestra una traza entre origen y destino que es completamente falsa además de imposible, ya que como se puede ver en el esquema el router "A" y el router "D" no están interconectados. Este tipo de problemas se produce debido a los balanceos de tráfico que realiza el router "L" y la forma de trabajar que tiene tracerouter. Al haber dos routers alcanzables con TTL 8, la visualización del camino a seguir depende de la configuración del enrutador y la interfaz que utilice para enviar el paquete, las posibles rutas que podría mostrar tracerouter serían las siguientes:
L A C E --> Ruta correcta
L A D E --> Ruta errónea y falsa
L B C E --> Ruta errónea y falsa
L B D E --> Ruta Correcta
Otra falla que puede ocasionar el uso de tracerouter con las topologías de red actuales son los bucles, en algunas ocasiones podemos ver que la traza nos muestra la misma IP en dos saltos consecutivos, como si el tráfico pasara dos veces por el mismo enrutador. Este esquema de red que presentamos a continuación fuerza la creación de bucles en la salida de tracerouter.



Si una primera traza identifica el camino "L A E" y se dispone a descubrir el nodo siguiente, traceroute tendrá que usar un TTL de 8 en la petición, pero si el router "L" encamina ese paquete por la otra interfaz, recorrerá" L B C" e informará de que el siguiente nodo es "E", apareciendo dos veces el mismo router (E) en la salida. Como vemos es inservible en determinados escenarios ya que no puede identificar un único recorrido de entre muchos. La necesidad de crear una herramienta como tracerouter que se adapte a este tipo de situaciones fue la motivación de un grupo de franceses para crear Paris-tracerouter.
Paris traceroute es una nueva versión de tracerouter que permite hacer diagnósticos en redes que utilizan determinados balanceos de carga, permitiendo identificar la ruta correcta que siguen los paquetes para llegar a un destino concreto. También implementa un algoritmo MDA (Multipath Detection Algorithm) de identificación de rutas que busca todos los caminos alternativos posibles a un destino, una herramienta muy útil para crear mapas de red partiendo del desconocimiento total de la topología en uso. La mayoría de balanceos de carga que podemos encontrar en redes se hacen por flujo, una forma más inteligente y optima que el típico balanceo de carga por paquete.
Mejoras que implementa Paris traceroute:
- Para forzar a los enrutadores a que no realicen balanceo de carga y así identificar rutas únicas al destino, paris traceroute no cambia el puerto destino a cada salto. El tracerouter nativo suma +1 al puerto destino cuando pasa de un router a otro, esto provoca que cada solicitud pueda salir por otra interfaz del router debido a un cambio en las cabeceras, que es lo utilizado por la mayoría de balanceadores para batir el tráfico.
- Cuando se trata de averiguar todas las posibles rutas de red a un destino, paris traceroute envía multitud de paquetes para enumerar las posibles interfaces activas que tienen los routers de cada salto, esto lo realiza cambiando el puerto para forzar balanceos de rutas y descubrir los distintos caminos.
- Para cada salto (Router) paris traceroute realiza las mismas pruebas para encontrar todas las posibles rutas.
- Permite identificar qué routers balanceen por flujo y cuales por paquetes, para identificar balanceadores por paquete vale con enviar solicitudes sin variar las cabeceras, si no se cambia el puerto de ningún paquete y cada uno va por una ruta distinta al anterior es que hay un balanceo de carga por paquete en alguno de los nodos.
- Implementa opciones que dan más flexibilidad a la hora de personalizar las trazas (Puertos destino y origen, TTL, pruebas NBR, hilos,..), Otra cualidad es la de poder utiilizar el protocolo TCP para realizar trazas, pudiendo de esta forma saltar alguna restricción del tipo ICMP /UDP. De usar el protocolo TCP o UDP para realizar trazas es recomendable utilizar puertos destino típicos para evitar posibles filtrados, como son los puertos 80 (Web), 53 (DNS) , 21 (FTP), 22 (Ssh), 23 (Telnet), 69 (TFTP),..
Prueba de concepto
Para forzar balanceos de carga y obtener distintas salidas con tracerouter, lo mejor es lanzar el comando numerosas veces y observar las diferentes contestaciones de tracerouter para localizar nuevos nodos. Si nos fijamos en el salto número 5 del siguiente recuadro se pueden ver las distintas salidas que hemos obtenido después de realizar siete trazas a la IP 64.208.27.17


$ traceroute 64.208.27.17

1 192.168.1.1 (192.168.1.1) 1.182 ms 1.127 ms 0.958 ms
2 192.168.153.1 (192.168.153.1) 372.930 ms 451.009 ms 510.376 ms
3 17.Red-81-46-53.staticIP.rima-tde.net (81.46.53.17) 569.647 ms 498.206 ms 333.300 ms
4 (84.16.9.161) 355.540 ms 394.629 ms 385.075 ms
5 (213.140.36.122) 379.903 ms (84.16.15.194) (213.140.43.214) 543.741 ms
5 (84.16.15.194) 482.889 ms (213.140.36.122) (84.16.15.194) 380.475 ms
5 (84.16.15.194) 357.923 ms (213.140.43.214) 506.987 ms 647.253 ms
5 (213.140.43.214) 429.878 ms (84.16.15.194) 561.764 ms *
5 (213.140.43.214) 535.769 ms * (213.140.36.122) 506.999 ms
5 (213.140.36.122) 82.537 ms (84.16.15.194) 90.342 ms (213.140.43.214) 87.862 ms
5 (84.16.15.194) 36 bytes to 192.168.1.33 89.103 ms (213.140.43.214) 36 bytes to 192.168.1.33 86.784 ms 85.764 ms
6 64.208.27.17 (64.208.27.17) 710.751 ms 657.222 ms 393.903 ms

Como se puede observar, después del nodo 84.16.9.161 el tráfico puede seguir distintas rutas (213.140.36.122, 84.16.15.194 y 213.140.43.214), ahora vamos a ver un ejemplo con paris-tracerouter.
Localizar todas las rutas posibles a 64.208.27.17 con paris-traceroute

# paris-traceroute -n --algo=exhaustive 64.208.27.17
traceroute [(192.168.1.33:33456) -> (64.208.27.17:33457)], protocol udp, algo exhaustive, duration 32 s
1 P(6, 6) 192.168.1.1 1.513/1.738/2.699/0.431 ms
2 P(6, 6) 192.168.153.1 43.045/49.696/79.788/13.466 ms
3 P(6, 6) 81.46.53.17 43.059/43.783/44.958/0.637 ms
4 P(6, 6) 84.16.9.161 57.425/58.147/58.764/0.502 ms
5 P(21, 21) 213.140.36.122:0,1,4,9,13,14,15 80.248/83.209/87.437/2.552 ms
213.140.43.214:2,5,8,10 81.515/82.006/82.505/0.399 ms
84.16.15.194:3,6,7,11,12 85.858/89.115/91.139/2.251 ms
6 P(5, 6) 64.208.27.17 87.764/107.427/178.720/35.677 ms 

A diferencia del traceroute normal, la aplicación paris-traceroute ha identificado esas posibles rutas perfectamente con un solo comando, haciendo posible obtener un mapa de red coherente en poco tiempo y con muy poco margen de error. Como dijimos anteriormente los balanceadores de carga por flujo se basan en las cabeceras, para comprobar el tipo de balanceo de red o estudiar el comportamiento de los routers, podemos probar manualmente variaciones de puerto o protocolo a un mismo destino y observar las salidas a ver que información muestran.
Nodo número 5: Dos trazas TCP (22, 80) + Una traza UDP normal
# paris-traceroute -p tcp -d 22 -n 64.208.27.17 | grep -i "5 "
5 213.140.43.214 81.670 ms 81.559 ms 81.355 ms
# paris-traceroute -p tcp -d 80 -n 64.208.27.17 | grep -i "5 "
5 213.140.36.122 82.790 ms 81.691 ms 87.288 ms
# paris-traceroute -n 64.208.27.17 | grep -i "5 "
5 84.16.15.194 86.669 ms 86.525 ms 86.306 ms
Al enviar tres tipos de flujos distintos se han obtenido las tres rutas, por lo que suponemos una batida de tráfico de red por flujo.
Traceroute en linea / Looking Glasses
- http://www.traceroute.org/
- http://www.nexthop.net/traceroute.html
- http://lgb.ri.telefonica-data.net/en/ (Loking glass Telefonica)
Vídeo de la conferencia sobre Paris-tracerouter (Francés): Paris-tracerouter.flv

FUENTE: http://www.busindre.com/

Author & Editor

Ingeniero, me gusta la cyberseguridad, la programación y el blockchain.

0 Notaciones:

Publicar un comentario

Labels

0-day (12) 1337day (1) 8.8 (2) Adobe Acrobat (1) Android (2) Anonimato (1) Anonymous (9) BackDoor (2) BackTrack (15) badUSB (1) Base64 (1) Black Hat (7) BlackHat (1) Blackploit (30) Brute Force (3) Bug (106) Bypass Password (1) Bypass Redirect (1) C99 Shell (1) Carding (1) CheatSheet (15) Chilean Way (2) Conference (10) Cryptsetup (1) CSRF (1) DDoS (11) DEF CON (3) DEFCON (7) Dev (1) Diapositivas (1) Diseño Web (1) Distro Linux (27) Documental (2) DoS (2) Drupal (1) DuckDuckGo (1) E-zine (18) Ekoparty (1) Escaneo (4) España (1) Exploit (64) Ezine (1) Facebook (1) Fast-Info (44) FBI (1) Ficheros Binarios (1) Firefox (4) Flash (2) Forense (9) Fuerza Bruta (11) Fuga de Datos (1) GhostShell (1) GNU/Linux (4) Google (2) Guía (1) Hack T00LZ (135) Hack Tips (63) Hacked (6) Hacking (19) Hacking Hardware (5) HashCat (1) Herramientas (125) HighSecCON (1) Humor Geek (13) Infografía (1) Ingeniería Social (5) Inj3ct0r (1) Internet Explorer (3) Java (7) JavaScript (2) Kali (3) KitPloit (6) Leaks (22) Linux OS (79) LulzSec (1) Mac OS (10) Magazine (1) Malaware (3) Malaware Tools (12) Malware (1) Man in the Middle (15) Manuales (3) MD5 CRACK (4) Metasploit (57) MSSQL (1) MySQL (6) MySQL CRACK (1) Nmap (6) Nmap NSE (2) Noticias (200) NTLM CRACK (1) Ofuscar (5) OpenSolaris OS (1) OpenSSL (1) ORACLE (1) OWASP (3) Paper (10) PDF (7) PenTest (14) Perl (2) Phearking (13) Phishing (3) PHP (13) phpMyAdmin (1) PoC (1) Premios Bitacoras (1) Presentaciones (11) PRISM (1) Privacidad (2) Programación (12) Programas Linux (41) Programas Windows (41) Pwned (1) Python (5) Ransomware (1) Reconocimiento (5) Ruby (2) s (1) Scripts (7) Seguridad (150) Seguridad Web (139) Seguridad Wireless (19) Sensitive Data Exposure (2) SHA1 CRACK (1) Shellshock (1) Slides (1) Spoofing (1) Spyware (1) SQLi (19) SQLi Tools (7) SQLMap (2) SSH (1) Textos (74) Tips (57) Troyanos y Virus (11) Trucos (7) Trucos Win (7) Turiales (56) Tutoriales (18) Twitter (1) Ubuntu (2) Underc0de (1) UnderDOCS (1) Unlock (1) URL Redirection (1) UXSS (1) vBulletin (1) Video (48) Virtualización (2) Web T00LZ (16) Wifislax (1) Wikileaks (1) WikiRebels (1) Windows OS (65) Wireless Tools (13) XSS (16) Youtube (1)

 
biz.