La Gran Muralla Española: cuando cambiar las DNS no sirve de nada

José Miguel Moreno
5 min readMay 21, 2019

--

Foto de Hanson Lu — Unsplash.com

No se si será la primavera o yo qué se, pero últimamente en España parecen estar proliferando las páginas webs de descargas que permiten acceder a contenidos con derechos de autor sin pagar ni un solo céntimo. Y por supuesto, casi todos esos sitios acaban siendo bloqueados por los Proveedores de Servicios de Internet (ISPs), previa orden judicial.

Estos bloqueos se realizan porque habitualmente todas estas webs tienen los servidores en vete-tú-a-saber-dónde y no hay una forma fácil de cerrarlos, así que Movistar, Vodafone y compañía hacen lo más factible, que es cortar el cable que conecta tu dispositivo con dichos servidores.
Pero, y aquí llega lo curioso, te sorprenderá saber que estos bloqueos no son los típicos DNS hijacking a los que venimos acostumbrados, sino que emplean una técnica mucho más efectiva a la par que original que supuestamente es una de las que utiliza el gobierno chino en su Great Firewall.

En este breve artículo se explica cómo funcionan estos bloqueos, por qué son tan efectivos y cómo sortearlos sin usar VPNs ni cosas raras de esas.

DNS hijacking y los bloqueos web de toda la vida

Hasta la fecha, la forma más habitual de impedir el acceso a un sitio web por parte de un ISP consistía en cambiar el registro DNS de dicho sitio y apuntarlo hacia otro lado.

Para que nos entendamos, cuando visitas una página web (vamos a poner, por ejemplo, “google.es”), tu navegador no sabe realmente a dónde tiene que conectarse, pues Internet funciona con el protocolo IP y necesita conocer la dirección IP del servidor de “google.es” para poder establecer una conexión.
Así que tu navegador recurre a un tercero, un servidor DNS, que le dice cuál es la dirección IP del sitio web de destino.

Funcionamiento habitual de DNS híper-simplificado

Este servidor DNS suele ser, por defecto, el de tu Proveedor de Servicios de Internet, de forma que si éste último te dice una dirección IP distinta o te devuelve un error diciendo que esa página no existe, no podrás conectarte a dicha página.

Ejemplo de DNS hijacking

¡Y ya está! Así de sencillo es bloquear un sitio web. Pero claro, también lo es saltarse este bloqueo, pues con preguntar a otro servidor DNS distinto al de nuestro ISP (como el clásico 8.8.8.8 de Google o ahora CloudFlare con su 1.1.1.1) lo habremos sorteado.

Bloqueo de red avanzado

La técnica que emplean ahora los grandes ISP de España para impedir el acceso a determinadas webs se suele conocer coloquialmente como “bloqueo de red avanzado”.
Con este bloqueo, los registros DNS de un dominio no cambian y aun así el acceso al sitio web se ve restringido. Al contrario de lo que pueda parecer en un principio, esto no es brujería ni tecnología de la NASA como algunos medios de comunicación se piensan, sino que consiste en interceptar el tráfico de dos formas distintas para detectar el acceso a sitios que estén en la lista negra.

Bloqueo de tráfico por HTTP (sin cifrar)

Este le explico en dos frases por que no hay mucho más que decir: si te conectas a una página web sin “https://”, todo el tráfico que mandas es visible por tu proveedor de Internet.

Así que Movistar, Vodafone, Orange o ese familiar tuyo que sabe utilizar “el Wireshark” solo tienen que leer la petición HTTP que envíes para extraer el dominio al que te conectas y, si vas donde no debes, impedirte el acceso al sitio web.

Bloqueo de tráfico por HTTPS (cifrado)

Este es el más interesante y el punto central de este artículo. Supuestamente, todo el tráfico que va cifrado por HTTPS solo puede ser descifrado por el emisor y el receptor de la comunicación. Entonces, ¿cómo es posible que un ISP pueda saber igualmente a qué sitio te conectas y cortarte el acceso?

Resulta que dentro del protocolo TLS (con el que funciona HTTPS) existe una extensión conocida como Server Name Identification o SNI que permite a servidores que alojan múltiples webs en la misma dirección IP poder cifrar su tráfico.

Para iniciar una comunicación cifrada con TLS, el primer mensaje que se envía lo manda el navegador al servidor y en él se incluye el dominio de destino, entre otros datos.

Un packet “Client Hello” de TLS

Como este mensaje todavía no va cifrado, un ISP puede hacer Deep Packet Inspection sobre todo el tráfico de sus clientes hasta dar con un dominio que esté bloqueado y, en este momento, cortar el canal de comunicación.
Lamentablemente, SNI es fundamental para el correcto funcionamiento de la web y no hay forma de desactivarlo sin consecuencias negativas.

¿Y ahora qué?

Pese a que pueda parecer una tontería, esta característica del protocolo TLS sigue siendo una vulnerabilidad como cualquier otra ya que revela todas las páginas web visitadas por un usuario aunque no se pueda conocer el tráfico que intercambia con ellas.
Por suerte, ya existe un borrador para la siguiente versión de TLS que plantea un intercambio del dominio de destino de forma segura (encrypted SNI o ESNI para abreviar).

A fecha de escribir este artículo, el único navegador que permite activarlo es Mozilla Firefox desde la página “about:config” habilitando la opción “network.security.esni.enabled”, aunque con el tiempo lo más normal es que el resto de navegadores implementen el futuro estándar.

Página “about:config” de Mozilla Firefox

Mientras tanto, puedes comprobar si tu navegador soporta TLS 1.3 y ESNI desde la dirección https://encryptedsni.com/.

Resultado ideal del CloudFlare ESNI Checker

Si quieres más información sobre estas tecnologías y cómo funcionan, aquí tienes unos enlaces (en inglés) que puedes consultar:

--

--