¿Alguien podría explicar cómo podría ocurrir el envenenamiento de DNS en este escenario?

10

Leí la siguiente declaración en un blog de seguridad

  

usar el mismo puerto de origen una y otra vez para consultas dns en lugar de aleatorizarlas es una vulnerabilidad para el envenenamiento dns

¿Alguien podría explicar cómo se trata de una vulnerabilidad y cómo podría ser explotada?

    
pregunta DaTaBomB 24.05.2012 - 06:50
fuente

2 respuestas

13

Dado que el DNS generalmente se ejecuta sobre UDP, los paquetes de respuesta se pueden falsificar fácilmente. Los paquetes UDP se identifican por la combinación de la dirección IP de origen y destino y los números de puerto de origen y destino.

El ataque de envenenamiento de DNS clásico es enviar a un servidor DNS una consulta que cree que hará que el servidor realice una búsqueda recursiva, y luego destruir el servidor con paquetes de respuesta falsificados para la solicitud secundaria que espera que el servidor realice. . Si obtiene la combinación de IP / puerto y el ID de transacción correctos y su respuesta llega primero, su respuesta falsa podría aceptarse e insertarse en el caché.

Bueno, sabemos con anticipación la dirección IP de origen y destino, y sabemos que el DNS se ejecuta en el puerto 53, por lo que es uno de los números de puerto. Suponiendo que las consultas de DNS se envíen DESDE el puerto 53 y que se envíen al puerto 53, tenemos todos los 4. Entonces, solo debemos preocuparnos por el ID de transacción, que es un número de 16 bits. Eso significa que cada paquete que enviamos tiene una probabilidad de 1 en 65K de encontrar oro. Fácilmente podríamos enviar varios miles de paquetes en tan solo un segundo, lo que nos da una buena oportunidad de envenenar la memoria caché del servidor. Si eliminamos los paquetes de respuesta 10K antes de que llegue la respuesta "real", eso nos da una posibilidad de éxito de 1 en 6 en general. Y si falla, solo esperamos el vencimiento y lo intentamos de nuevo.

Pero, si el servidor utiliza un número de puerto de salida aleatorio en las consultas de búsqueda recursiva, eso agrega otros 16 bits de material que tenemos que adivinar para que nuestra respuesta sea aceptada. Así que eso es un total de 32 bits, o alrededor de 4 mil millones de posibilidades. Eso significa que nuestras probabilidades para cada paquete van de 1 en 65,536 a 1 en 4,294,967,296, lo que se vuelve un poco prohibitivo.

Entonces, si bien no puede estar 100% seguro de que una respuesta no sea falsificada, las probabilidades se ponderan mucho más en favor del defensor si aleatoriza sus puertos de origen para sus búsquedas secundarias; suficiente para disuadir a la mayoría de los atacantes de invertir los recursos para intentar el ataque.

    
respondido por el tylerl 24.05.2012 - 11:27
fuente
1

Hay muchos factores que desempeñan un papel importante en el envenenamiento de DNS, pero lo más probable es que el principal sea sincronización . Usar el mismo puerto de origen una y otra vez le da al atacante una gran ventaja de aumento de tiempo, ya que ya sabe el puerto al que necesita enviar sus consultas. Si un atacante, con un servidor DNS falso puede responder a su solicitud de una manera más rápida que el servidor DNS real, puede redirigir su consulta (digamos www.example.com) a una dirección IP controlada por él. Si ha configurado un sitio web idéntico a www.example.com, no notaría ninguna diferencia entre los dos.

Por eso, como técnica de prevención y mitigación, las solicitudes de DNS tendrán puertos de origen aleatorios. Este y otros mecanismos (el uso de números aleatorios criptográficamente seguros para seleccionar tanto el puerto de origen como el punto criptográfico de 16 bits) reducen en gran medida la probabilidad de envenenamiento exitoso de DNS y otros ataques de DNS.

    
respondido por el Silviu 24.05.2012 - 10:19
fuente

Lea otras preguntas en las etiquetas