Foro de elhacker.net

Comunicaciones => Redes => Mensaje iniciado por: @XSStringManolo en 21 Agosto 2019, 22:17 pm



Título: Traceroute con icmp deshabilitado?
Publicado por: @XSStringManolo en 21 Agosto 2019, 22:17 pm
Alguna forma de obtener los puntos con icmp deshabilitado?

Quiero hacer un herramienta para traceroute y mostrar todos los saltos con flechas/líneas y geoloc en un mapa con d3.js three.js o svg.

Pero claro, no me salen todos los puntos según estén configurados. Alguna alternativa o workaround?


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: animanegra en 22 Agosto 2019, 09:43 am
Habilita el flag de Record Route, esto hace que dentro de la capa de opciones de IP se incluyan los saltos siempre que quepan en ese campo. Limitado pero util porque normálmente los saltos que no aparecen son los de la red de salida y entrada. De esta manera podrías ver las direcciones de las IPs de salida (algo es algo). Por cierto, la interfaz que marca el record route, es la de salida y la que te da el ICMP TTL excedeed es la de entrada, luego podrías vincular las dos direcciones IP como pertenecientes al mismo router.

Por otro lado recuerda que el path que ves en un traceroute puede no ser real, el traceroute te da la IP a una distancia concreta por la que ha pasado cada uno de los paquetes individuales. No se puede vincular que la IP que aparece en TTL 3 y en TTL 4 tengan un link entre ellas. Puede que en muchos casos sea así, pero en general no puedes decir que exista tal vínculo.

Si queda alguna duda pregunta, y si no me he explicado bien lo mismo.


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: @XSStringManolo en 22 Agosto 2019, 18:34 pm
Hay algo que no entiendo. Pongo un ejemplo.
Estan los equipos A B C y D.
Cómo es posible que B o C se oculten si A se comunica con B y C de comunica con D?


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: engel lex en 22 Agosto 2019, 19:29 pm
Citar
Cómo es posible que B o C se oculten si A se comunica con B y C de comunica con D?

porque puede ser simplemente que en las tablas de seguridad, B esté configurado para solo responder a A y C, lo mismo para C con B y D... o simplemente tienen el icmp deshabilitado (no es necesario para establecer una ruta de red)


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: animanegra en 22 Agosto 2019, 20:58 pm
Voy a expandir lo dicho por engel.

Supondremos por simplificar que tenemos una red con un sólo camino de PC1 a PC2:

PC1 - A - B - C - D - PC2

B y C tienen el ICMP deshabilitado. Por lo que no contestarán con un ICMP cuando vean un paquete con el TTL = 0, simplemente lo tirarán.

Lanzas desde PC1 hacia PC2 el primer UDP con TTL = 1:

A le resta 1 al TTL, lo deshecha y avisa con un ICMP con IP origen A y destino PC1. Cuando te llega el paquete, tu apuntas que has recibido un paquete con la IP de A para el primer salto.

Lanzas desde PC1 hacia PC2 el segundo paquete UDP con TTL = 2:

A lo reenvía restando 1 al TTL, y en B el TTL llega a 0. Lo tira, pero como tiene deshabilitado el ICMP no envía ninguna notificación a PC1. Tras ell timeout, PC1 no recibe respuesta, como no sabe que IP hay detrás del segundo salto no puede poner ninguna. Normalmente se marca con un * en el traceroute.

Lanzas desde PC1 hacia PC2 el tercer paquete UDP con TTL = 3:

A lo envía a PC2 a través de B restando 1 al TTL. B lo envía a PC2 a través de C restando otra unidad al TTL. Por fin llega a C que tiene el mismo comportamiento que B. No envía ICMP y tira el paquete. PC1 no se entera, por lo que tras el timeout marcara que para ese salto no sabe que IP hay detrás y lo marca con un *.

Vamos aumentando el TTL y vamos teniendo el mismo comportamiento hasta que pongamos en el paquete enviado el TTL = 5. En dicho caso el paquete cruza todos los routers desde PC1 hasta PC2. PC2 contestará con ICMP diciendo que no tiene servicio en el puerto UDP que estas usando como puerto destino. Desde PC1 como se recibe un "ICMP port unreachable" en lugar de un "ICMP TTL Exceded" finalizas el proceso porque ya has llegado al destino.

Por otro lado, fíjate que las direcciones IP las recoges de paquetes independientes. Ahora plantéate que pasa si de PC1 a PC2 hay dos caminos posibles que se bifurcan en el primer router justamente después de PC1. E imagínate que dicho router envía los paquetes pares por un camino y los impares por el otro. ¿Las direcciones IP que ves en cada salto pertenecen al mismo camino?


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: engel lex en 22 Agosto 2019, 21:10 pm
Citar
E imagínate que dicho router envía los paquetes pares por un camino y los impares por el otro. ¿Las direcciones IP que ves en cada salto pertenecen al mismo camino?

ahora imagínate que es una red global interconectada con montones de posibles caminos alrededor del planeta! XD


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: @XSStringManolo en 22 Agosto 2019, 21:50 pm
Gracias! No hay ningún tipo de traceroute usando otro tráfico que muestre todos los puntos?


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: engel lex en 22 Agosto 2019, 22:03 pm
Gracias! No hay ningún tipo de traceroute usando otro tráfico que muestre todos los puntos?

si un nodo no quiere responderte no va a hacerlo... se hace por seguridad y para evitar molestias... usualmente que no responda icmp ya es buena señal de que tiraron una regla de seguridad amplia


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: animanegra en 22 Agosto 2019, 22:25 pm
si un nodo no quiere responderte no va a hacerlo... se hace por seguridad y para evitar molestias... usualmente que no responda icmp ya es buena señal de que tiraron una regla de seguridad amplia
Lo amplio. Habilita el flag de record route y los routers por los que pase dejaran su ip en el campo de opciones. Ese campo sera copiado en el icmp de respuesta.


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: engel lex en 22 Agosto 2019, 22:35 pm
Lo amplio. Habilita el flag de record route y los routers por los que pase dejaran su ip en el campo de opciones. Ese campo sera copiado en el icmp de respuesta.

Joder! hoy andas on fire! XD!!


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: animanegra en 22 Agosto 2019, 23:24 pm
Bueno realmente lo dije desde el principio lo del record route pero paso desapercibido.  :D


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: @XSStringManolo en 22 Agosto 2019, 23:59 pm
Bueno realmente lo dije desde el principio lo del record route pero paso desapercibido.  :D
Soy imbécil disculpa, jajaja. Lo entendiera mal. En tu explicación dices que el Record Route es limitado. Te refieres al número máximo de ips que puede almacenar o a que no almacena las ip de entrada?
De todas formas me informaré al respecto que parece más que suficiente para lo que busco.

Ya como último y tema totalmente a parte no se si por casualidad conoceis ninguna Api que lo haga no? De la misma forma que por ejemplo la Api de google obtiene las coordenadas de la ubicación de tu dispositivo.
Así podría utilizarla en Front-End sin necesidad de disponer de Back-End para que el código sea portable en un único .html ya sea para hostearlo en cualquier sitio como blogspot o en un hosting gratuito que solo te dejan trabajar con Front-End.

Aquí un ejemplo de un script con la api de google para obtener geoloc:
Código
  1. <html>
  2. <body>
  3.  
  4. &#12298;script&#12299;
  5. var Geolocalizacion =navigator.geolocation || (window.google &&google.gears &&google.gears.factory.create('beta.geolocation'));
  6.  
  7. if (Geolocalizacion)Geolocalizacion.getCurrentPosition(MuestraLocalizacion,Excepciones);
  8.  
  9. function MuestraLocalizacion(posicion) {
  10. alert(posicion.coords.latitude);
  11. alert(posicion.coords.longitude);
  12. alert(posicion.coords.accuracy);
  13. }
  14.  
  15. function Excepciones(error) {
  16.  
  17.   switch (error.code) {
  18.   case error.PERMISSION_DENIED:
  19.      alert('Activa permisos de geolocalizacion');
  20.      break;  case error.POSITION_UNAVAILABLE:
  21.      alert('Activa localizacion por GPS o Redes .');
  22.      break;
  23.   default:
  24.      alert('ERROR: ' + error.code);
  25.    }
  26.  }
  27. &#12298;/script&#12299;
  28. </body>
  29. </html>

Conoceis algo así para el traceroute?
 Gracias.


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: animanegra en 23 Agosto 2019, 10:15 am
Soy imbécil disculpa, jajaja. Lo entendiera mal. En tu explicación dices que el Record Route es limitado. Te refieres al número máximo de ips que puede almacenar o a que no almacena las ip de entrada?
De todas formas me informaré al respecto que parece más que suficiente para lo que busco.

El campo de opciones de IP se tiene un máximo permitido de bytes (la cabecera IP tiene un máximo, bueno igual que el PAYLOAD, lo que pasa que este último puede ir dividido en varios paquetes). Ergo, solo puede caber un número limitado de direcciones IP en él.

Para mas info https://tools.ietf.org/html/rfc791 (https://tools.ietf.org/html/rfc791)

Citar
Ya como último y tema totalmente a parte no se si por casualidad conoceis ninguna Api que lo haga no? De la misma forma que por ejemplo la Api de google obtiene las coordenadas de la ubicación de tu dispositivo.

Desde html/javascript no tienes control sobre el envío de paquetes ni creación de sockets (En este caso de tipo RAW). De hecho sería un error de seguridad para el navegador.
Asi que la herramienta no puede ser una web local.
Si quieres implementarla tu creo que tendrás que programar en c, java, python, whatever....
Si no, tienes la herramienta hping3 que te permite hacer casi cualquier cosa con paquetes incluido decidir las cabeceras y flags que desees en los paquetes. También tienes librerías de python como scapy o en c que te permiten no tener que trabajar con paquetes a pelo y te dejan tocar los contenidos de las cabeceras de los paquetes que deseas enviar como libnet.

Citar
Así podría utilizarla en Front-End sin necesidad de disponer de Back-End para que el código sea portable en un único .html ya sea para hostearlo en cualquier sitio como blogspot o en un hosting gratuito que solo te dejan trabajar con Front-End.

En la parte de necesidad de front-end/back-end me perdido totalmente. Porque no comprendo el querer hacer una aplicación de este tipo con sistema cliente-servidor. Aparte de que parece que no tendría demasiado sentido, ya que los traceroutes se harían siempre desde el mismo sitio. Desde el servidor web donde tengas programado el back-end. Pero vamos que eso tu sabrás.

Ten en cuenta que html/javascript (en navegador) no esta pensado para hacer aplicaciones, esta muy limitado y debe ser así. Se pueden hacer cosas chulas, a veces retorcerlo para conseguir sacar algo de jugo (mucho o poco), pero no es la panacéa. Y está pensado de forma limitada para ser usado como frontend. Osea todo lo que sean operaciones de dibujo en el cliente de forma más o menos potente, se pueden hacer cosas. Lo demás, por regla general olvídate. El sandbox en general debería de proteger de cualquier operación, "rara".


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: @XSStringManolo en 23 Agosto 2019, 11:59 am
El campo de opciones de IP se tiene un máximo permitido de bytes (la cabecera IP tiene un máximo, bueno igual que el PAYLOAD, lo que pasa que este último puede ir dividido en varios paquetes). Ergo, solo puede caber un número limitado de direcciones IP en él.

Para mas info https://tools.ietf.org/html/rfc791 (https://tools.ietf.org/html/rfc791)

Desde html/javascript no tienes control sobre el envío de paquetes ni creación de sockets (En este caso de tipo RAW). De hecho sería un error de seguridad para el navegador.
Asi que la herramienta no puede ser una web local.
Si quieres implementarla tu creo que tendrás que programar en c, java, python, whatever....
Si no, tienes la herramienta hping3 que te permite hacer casi cualquier cosa con paquetes incluido decidir las cabeceras y flags que desees en los paquetes. También tienes librerías de python como scapy o en c que te permiten no tener que trabajar con paquetes a pelo y te dejan tocar los contenidos de las cabeceras de los paquetes que deseas enviar como libnet.

En la parte de necesidad de front-end/back-end me perdido totalmente. Porque no comprendo el querer hacer una aplicación de este tipo con sistema cliente-servidor. Aparte de que parece que no tendría demasiado sentido, ya que los traceroutes se harían siempre desde el mismo sitio. Desde el servidor web donde tengas programado el back-end. Pero vamos que eso tu sabrás.

Ten en cuenta que html/javascript (en navegador) no esta pensado para hacer aplicaciones, esta muy limitado y debe ser así. Se pueden hacer cosas chulas, a veces retorcerlo para conseguir sacar algo de jugo (mucho o poco), pero no es la panacéa. Y está pensado de forma limitada para ser usado como frontend. Osea todo lo que sean operaciones de dibujo en el cliente de forma más o menos potente, se pueden hacer cosas. Lo demás, por regla general olvídate. El sandbox en general debería de proteger de cualquier operación, "rara".
Gracias por toda la info! La revisaré.

A lo que me refería es si algún servidor público ofrece una api para hacer el traceroute con la flag. Así desde el javascript le digo a ese servidor que me haga el traceroute desde su servidor hasta el cliente de mi sitio y me de los resultados.
Para qué?
Porque así podría poner el código en cualquier servidor sin necesidad de que corra el traceroute en el servidor. Por ejemplo inyectando javascript podría obtener el traceroute al cliente de un sitio desde el servidor externo.


Título: Re: Traceroute con icmp deshabilitado?
Publicado por: animanegra en 23 Agosto 2019, 13:22 pm
En resumen, ¿Alguien que te de exactamente el programa que quieres para usarlo poniéndole una IP? :D Pues no lo sé, busca por ahí, servicios de traceroute hay a patadas.
No sé si habrá alguno que ofrezca los resultados agregados de traceroute + Record route + otros métodos de búsqueda de paths, será cuestión de darte un paseo por Google. Yo así a bote pronto no conozco ninguno.