¿Cómo funciona “traceroute over TCP”, cuáles son los riesgos y cómo se puede mitigar?

20

Hay una utilidad llamada tcptraceroute , y esta mejora se llama intrace que se usa como un traceroute estándar, pero funciona sobre TCP.

  • ¿Cómo se usa el indicador syn en TCP para lograr la funcionalidad similar a traceroute (cuando ICMP está desactivado)

  • ¿Qué información se puede divulgar (u otros riesgos)?

  • ¿Cómo se puede mitigar esto? (enrutadores, hosts, ... ambos?)

Esto se ha descrito como similar al comando nmap cuando se pasa la marca -sS. Si esto es correcto, ¿qué significa realmente?

    
pregunta random65537 18.07.2013 - 23:19
fuente

3 respuestas

37

Todas las herramientas de rastreo se basan en el siguiente principio: envían paquetes con una vida corta, y esperan a que los paquetes ICMP informen sobre la muerte de estos paquetes. Un paquete IP tiene un campo llamado "TTL" (como "Time To Live") que se decrementa en cada salto; cuando llega a 0, el paquete muere y se supone que el enrutador en el que sucede esto devuelve un mensaje de ICMP "Time Exceeded" . Ese mensaje ICMP contiene la dirección IP de dicho enrutador, lo que lo revela.

Ninguna de las herramientas a las que se vincula puede hacer nada si algún firewall bloquea los paquetes ICMP de "Tiempo excedido". Sin embargo, el bloqueo de dichos paquetes tiende a interrumpir el acceso a Internet (debido a que los hosts cambian de forma adaptativa el TTL en los paquetes que envían para hacer frente a rutas de red largas y necesitan este ICMP para este proceso), por lo que, en general, el " Time Exceeded "Los paquetes ICMP no están bloqueados.

Lo que a menudo se bloquea , sin embargo, es el tipo de paquetes de corta duración que envía traceroute . Estos son los paquetes con el TTL artificialmente bajo. Si son bloqueados por un firewall, nunca llegan a morir "de edad avanzada", y por lo tanto no hay ICMP excedido en el tiempo. Para el procesamiento TTL y el ICMP de "Tiempo excedido", el tipo de paquete no importa; Esto ocurre a nivel de IP. Pero los firewalls también miran el contenido del paquete. El objetivo es engañar a los firewalls para que permitan que el paquete de corta duración fluya (y luego muera).

Plain traceroute usa paquetes UDP, o paquetes ICMP "Echo", ambos tipos son bloqueados rutinariamente por (sobre) administradores de sistemas. tcptraceroute usa un paquete TCP "SYN", es decir, el tipo de paquete que se produciría como primer paso en el TCP "apretón de manos de tres vías". Ese tipo de paquete generalmente no está bloqueado por el firewall, al menos mientras el puerto de destino esté "permitido". tcptraceroute no completará ningún protocolo TCP; solo se basa en las ideas de que los firewalls no disparan los paquetes SYN a la vista.

intrace va un paso más allá, ya que espera una conexión TCP existente (lo hace inspeccionando todos los paquetes, à la tcpdump ). Cuando ve una conexión y el usuario presiona ENTER, intrace enviará paquetes de corta duración que aparecen como parte de la conexión observada. intrace puede hacer eso porque ha visto los paquetes, y así conoce las direcciones IP, los puertos y los números de secuencia. Todos los cortafuegos relevantes dejarán pasar estos paquetes, ya que (obviamente) permiten que la conexión TCP observada continúe. Los paquetes de corta duración se ajustan para que no interrumpan la conexión TCP (es decir, son paquetes "ACK" simples sin datos por sí mismos, por lo que el sistema operativo de destino simplemente los ignorará).

Editar: Observo que no contesté parte de la pregunta. Aquí va: no hay riesgo. No hay nada que mitigar.

traceroute revela las direcciones IP de los enrutadores involucrados en los paquetes de enrutamiento. Las direcciones IP no deben ser secretas y son fáciles de obtener para los atacantes a través de diversos medios (el escaneo masivo viene a la mente, pero también busca bolsas de basura para las copias impresas de los mapas de la red). Actividad más limpia de lo que solía ser). Sin embargo, un mito relativamente extendido es que mantener sus direcciones en secreto de alguna manera garantiza la seguridad. En consecuencia, muchos administradores de sistemas consideran que traceroute es una infracción grave, que se debe solucionar y bloquear tan pronto como sea posible. En la práctica, sin embargo, todo esto es una tontería. Si revelar algunas direcciones IP internas es un problema importante, esto significa que su red está condenada.

Preocuparse por el secreto de las direcciones IP es como desencadenar un plan de respuesta a incidentes mayores porque un extraño aprendió el menú en la cafetería de la compañía. Es desproporcionado. Por supuesto, tener un conocimiento preciso y extenso de la infraestructura de la red solo puede ayudar a los atacantes; Pero no en cantidades realmente significativas. Mantener las direcciones IP en secreto no vale la pena romper la conectividad mediante un filtrado excesivo (por ejemplo, el bloqueo de la "fragmentación requerida" ICMP es mortal para cualquier cliente detrás de un enlace ADSL + PPPoE).

    
respondido por el Thomas Pornin 19.07.2013 - 00:03
fuente
6

Tanto traceroute como tcptraceroute funcionan según el mismo principio básico:

  1. Envíe un paquete con un TTL muy bajo
  2. Ver quién devuelve un TTL ICMP excedido al vencimiento del TTL
  3. Si el remitente es destino, deténgalo
  4. De lo contrario, incremente el TTL en 1 y vuelva al paso # 1

La única diferencia es el tipo de paquete que se envía (el valor predeterminado es UDP en Linux, ICMP en Windows y TCP se está convirtiendo en una opción más popular). Todos generarán mensajes de error ICMP desde dispositivos útiles intermedios cuando caduque el TTL.

  • Como tal, no hay nada especial en el paquete UDP / ICMP / TCP que lo hace traceroute-y. El indicador SYN se usa porque los dispositivos intermedios como los firewalls a menudo permiten SYN pero bloquean otros paquetes TCP que no forman parte de una conexión establecida.
  • Se proporciona la misma información que con el traceroute regular, pero es más probable que se permita su ingreso en el traceroute regular. Lleva un sitio web como amazon.com. El traceroute basado en UDP se detiene en 205.251.248.5, que es probablemente un cortafuegos de algún tipo. El traceroute basado en TCP al puerto 80, que sabemos que permite "amazon.com", avanza 72.21.194.212.
  • Traceroute se puede mitigar al no permitir paquetes en o bloqueando las respuestas de ICMP. El primero es por qué tcptraceroute se ha vuelto más popular; cualquier sitio que permita la conectividad en al menos un puerto TCP, como un sitio web, permite la entrada de paquetes. El bloqueo de las respuestas ICMP tiene el efecto secundario de romper los fundamentos de redes IP necesarios, que varían desde levemente descortés a tremendamente contraproducente.

nmap -sS realizará un escaneo SYN, donde solo se envían paquetes SYN. Sin embargo, no realizará un traceroute en sí mismo; necesita combinarlo con la opción --traceroute (y luego creo que aún está escaneando, no solo realizando un traceroute, así que si desea rastrear recomiendo tcptraceroute o traceroute -T si su sistema operativo lo admite).

    
respondido por el gowenfawr 18.07.2013 - 23:52
fuente
2
  
  • ¿Cómo se usa la marca syn en TCP para lograr una funcionalidad similar a la de traceroute (cuando ICMP está desactivado)?
  •   

Cualquier paquete IP activará una respuesta ICMP "Time Exceeded" de un enrutador intermedio cuando el valor TTL llegue a cero. Esto podría ser TCP, UDP, ICMP, o cualquier otro. Mientras los enrutadores intermedios pasen el paquete, la traza funcionará. El traceroute tradicional usa solicitudes de eco ICMP, pero esto es solo por convención.

Tenga en cuenta que si se permite o no ICMP en el servidor de destino es completamente irrelevante ya que son los enrutadores intermedios los que devuelven el Tiempo Respuestas superadas. Lo único que podría pasar por alto es una respuesta del host de destino final, pero con traceroute es la respuesta menos importante, ya que traceroute le proporciona la lista de enrutadores intermedios.

El uso de un indicador SYN en el paquete TCP le permitirá obtener un SYN / ACK del servidor de destino, o tal vez no, si el puerto no está abierto o si una política bloquea su paquete. Pero una vez más, el servidor de destino es el menos importante. Podrías enviar fácilmente una continuación UDP o TCP si todo lo que te interesa es la lista de saltos.

Algunos enrutadores están configurados para tratar los paquetes PING de manera diferente; Una ruta diferente, una prioridad diferente, etc. El uso de paquetes TCP en lugar de otro puede darte resultados diferentes que deberían ser más indicativos de la ruta que tomaría el tráfico TCP.

  
  • ¿Qué información se puede divulgar (u otros riesgos)?
  •   

Nada que no sea público. Si su seguridad depende de mantener en secreto este tipo de información, debe sentarse y reconsiderar las decisiones que lo llevaron a este punto.

  
  • ¿Cómo se puede mitigar esto? (enrutadores, hosts, ... ambos?)
  •   

No hay nada que mitigar. Por supuesto, siempre puedes desconectar tu servidor, eso mitigará todo tipo de cosas. De lo contrario, antes de emplear una estrategia de mitigación, debe considerar lo que está ganando y lo que está renunciando. En este caso, no parece que tengas nada que ganar.

    
respondido por el tylerl 19.07.2013 - 07:23
fuente

Lea otras preguntas en las etiquetas