DoH: Securizando nuestras peticiones DNS
- jogofus
- 15 ago 2024
- 3 Min. de lectura
No hace mucho salió algo que parecía que iba a revolucionar las conexiones en internet.
En marzo de 2018 se definió un nuevo estándar de mano de la IETF (Internet Engineering Task Force, cuya función es la estandarización de Internet, que desarrolla estándares abiertos). Este estándar era DNS over HTTPS, o también conocido como DoH.
A priori, este estándar cubría uno de las principales preocupaciones de la mayoría de usuarios: la privacidad.

Pero para entender esto, primero tenemos que saber qué es DNS y cómo funciona.
DNS: El directorio telefónico de Internet
El sistema de nombres de dominio surgió en 1983 por Paul Mockapetris, el cual fue desarrollado para abordar las limitaciones del -famoso- fichero hosts.txt, en el cual se asignaba una dirección IP a un nombre de dominio.
Esto no era funcional, ya que por cada equipo deberíamos tener un fichero hosts.txt con todos los dominios a los que se necesita acceder, y mantener esto es algo muy complicado, ya que si se modificaba un dominio había que hacerlo manualmente en todos los equipos cliente que requirieran acceder al mismo.
Por ello surgió DNS, un servicio centralizado de consultas de dominio.
¿Cómo funciona DNS?
Las redes no entienden de nombres como lo podemos hacer nosotros, conocen direcciones IP. Es por ello que cuando buscamos google.es, nuestro navegador necesita conocer cual es la dirección IP a la que se está conectando.
Para ello, el equipo cliente lanza una consulta al servidor DNS que tengamos configurado, ya sea uno local o uno público, como puedan ser cloudflare o google (8.8.8.8 o 1.1.1.1).
DNS funciona en la capa 7 del modelo OSI, en la capa de aplicación. Las consultas viajan por la red a través del puerto 53/UDP.

Esto supone un problema, ya que, a diferencia de TCP, no se valida que el servidor al que nos estamos conectando es realmente el que nos tenemos que conectar, además de que estas peticiones viajan en plano. Cualquier atacante que estuviera escuchando el tráfico podría ver las peticiones DNS y realizar cualquier ataque que se le ocurra. Por ejemplo, si ve que estamos buscando google.es puede hacer un DNS Spoofing, convirtiendose en el servidor DNS y redirigiendo las peticiones a un servidor propio para posteriormente robarnos credenciales o infectarnos.
Como podemos ver en esta captura, estoy intentando conectar a youtube.com, por lo que mi equipo lanza una petición DNS a mi servidor DNS configurado, que en este caso es local, el cual tiene un forwarder a 1.1.1.1.
La respuesta que recibimos es el siguiente paquete, en el que el servidor DNS nos devuelve las IP que tiene el dominio que buscamos.
Como he dicho antes, si un atacante se pusiera en medio (ataque MITM, man-in-the-middle) podría ver todas nuestras peticiones y actuar en consecuencia.
DoH al rescate... ¿o no?
Para mitigar este problema salió DoH, el cual utiliza TLS para proteger las comunicaciones, y hasta aquí todo correcto.
Pero, ¿qué pasaría si os dijera que aún así cualquiera puede saber qué página se está visitando?
Esto se debe al paquete Client Hello. Este paquete es el primero del handshake de TLS, por lo que va en texto plano. Y es en este paquete donde, mediante el SNI (Server Name Indication) podemos ver dónde nos estamos intentando conectar.
¿Qué es SNI?
Se trata de una extensión de TLS que permite a un cliente especificar el nombre del host al que se intenta conectar al inicio de la negociación TLS. Esto surgió en entornos de alojamiento virtual, donde multiples sitios web seguros (HTTPS) comparten una única dirección IP.
Como se muestra en la captura, podemos ver que no hay ni una sola petición DNS, ya que funciona por HTTPS y este funciona por 443/TCP.
He habilitado DoH en mi navegador con destino Cloudflare y esto es lo que se ve:
Exacto, ninguna petición DNS pero... ¡MAGIA! ¡Puedo ver a qué dominio estoy intentando acceder!
Es por ello que actualmente se está tratando de estandarizar el ECH, encrypted Client Hello, para evitar esta fuga de información. El problema es que aún no está extendido y no está casi implementado.
Como siempre, espero que os haya gustado y os sirva.








Comentarios