Punycode y homógrafos: cuando un dominio falso se parece al verdadero
Mire estas dos direcciones: paypal.com y pаypal.com. ¿Idénticas? Para nuestros ojos, sí. Para un ordenador, en absoluto: en la segunda, la segunda «а» es una letra del alfabeto cirílico, no una «a» latina. Son dos dominios distintos, que pueden pertenecer a dos personas distintas. Es el principio de los ataques por homógrafos, y para entenderlos hay que dar un pequeño rodeo por la manera en que internet escribe los nombres.
Unicode, ASCII y Punycode: tres palabras, una idea sencilla
En su origen, los nombres de dominio solo aceptaban un alfabeto muy reducido, llamado ASCII: las letras de la a a la z sin tilde, las cifras y el guion. Nada de «é», ni de «ñ», y menos aún árabe, chino o cirílico.
Pero el mundo escribe en decenas de alfabetos. Unicode es el gran catálogo que da un número a cada carácter de cada escritura: la «a» latina lleva el número U+0061, la «а» cirílica el U+0430. Mismo dibujo, números distintos.
Para permitir nombres de dominio en todos los idiomas sin cambiar toda la red, se inventó un traductor: el Punycode. Transforma un nombre escrito en Unicode en un nombre que solo usa el alfabeto ASCII, y lo señala con el prefijo xn--. El navegador muestra la versión bonita; la red solo ve la versión traducida.
Cómo funciona un dominio en «xn--»
Tomemos un ejemplo perfectamente honrado: el dominio francés société.fr («sociedad»). La red no sabe leer la «é». El Punycode aparta las letras especiales, conserva las corrientes y añade al final un pequeño código que indica dónde volver a colocar los acentos:
société.fr → xn--socit-esab.fr
Encontramos «socit» (las letras corrientes) y luego «esab», el código que indica qué caracteres insertar y dónde. El prefijo xn-- solo avisa: «atención, este nombre ha sido traducido». Millones de nombres legítimos funcionan así, en alemán, en árabe, en chino, en ruso, en español. Un xn-- no es sospechoso en sí. Lo es cuando imita una marca conocida.
Los ataques por homoglifo: los falsos gemelos
Un homoglifo es un carácter que se parece muchísimo a otro. Y Unicode contiene muchos: la «а», la «е», la «о», la «р» y la «с» cirílicas son sosias perfectos de nuestras a, e, o, p y c. La «ο» griega imita la «o».
El estafador compra un dominio en el que una o varias letras se sustituyen por su sosia. En 2017, un investigador lo demostró de forma espectacular: registró xn--80ak6aa92e.com, que se escribe аррӏе.com con letras totalmente cirílicas, y varios grandes navegadores mostraban entonces simplemente «apple.com» en la barra de direcciones. Desde entonces, los navegadores han corregido ese caso.
Por qué la dirección puede parecer legítima
Los navegadores modernos aplican reglas de prudencia: cuando un nombre mezcla alfabetos de forma sospechosa, o se parece demasiado a un dominio conocido, muestran la forma xn-- en lugar de la versión bonita. Es una buena protección, pero tiene límites:
- fuera de la barra de direcciones, esas reglas no siempre se aplican: en el texto de un correo, un SMS, un PDF o una mensajería instantánea, la versión «disfrazada» se muestra tal cual;
- las reglas varían de un navegador, una versión y una aplicación a otra;
- una mirada apresurada, en una pantalla pequeña, no distingue dos caracteres idénticos. Y no siempre hace falta Unicode:
rnimitam,1imital, como explica la guía Phishing: cómo consiguen los estafadores que lleguen sus correos.
Y como con cualquier dominio trampa, el sitio puede tener un certificado HTTPS válido y un bonito candado: prueban que la conexión está cifrada, no que el sitio sea honrado.
Cómo comprobar de verdad un dominio
Ante la duda, no nos fiamos de lo que vemos: hacemos hablar al nombre real.
- No hacemos clic. Copiamos el enlace (clic derecho, «copiar dirección del enlace»).
- Lo pegamos en un convertidor Punycode (hay muchos, gratuitos, en línea): si aparece una forma
xn--para un nombre que debería ser totalmente corriente, es una trampa. - Aislamos el dominio: la parte justo antes de la primera «/». La guía Quishing: cuando el phishing se esconde detrás de un código QR detalla esta lectura.
- Pasamos por un camino seguro: un marcador guardado por nosotros mismos o la aplicación oficial. Un gestor de contraseñas también ayuda: no se deja engañar por un sosia y no propone nada en un dominio falso.
Baitback hace parte de este trabajo automáticamente: cuando se pega un correo, señala los enlaces en Punycode (forma xn--) y los dominios sosias de las marcas que conoce, incluso por homoglifo, y comprueba también el destino final tras las redirecciones.
Identificar el registrador y el alojamiento
Para hacer desaparecer el dominio, buscamos quién lo vendió y quién lo aloja. En las herramientas de consulta usamos siempre la forma xn--: es el nombre real, el que conocen los registros.
- Una consulta RDAP o WHOIS sobre el dominio da el registrador, su dirección de denuncia («abuse») y la fecha de creación del dominio. Un sosia de marca creado la semana pasada deja pocas dudas.
- La dirección IP del sitio permite encontrar su alojamiento, o la CDN situada delante, que también acepta denuncias y las transmite.
El registrador es aquí el actor más eficaz: un dominio que imita una marca mediante homoglifos es un caso de abuso muy claro, y la suspensión del nombre corta de golpe el sitio, los correos y todas las páginas asociadas.
Denunciar el dominio
Una buena denuncia cabe en unas líneas: la forma Unicode y la forma xn-- del dominio, la marca imitada, la dirección completa de la página, una captura de pantalla, la fecha y la hora. La enviamos al registrador y al alojamiento o a la CDN, y avisamos a la marca imitada.
Si el dominio llegó por correo, empezamos por Baitback: pegamos el código fuente completo del mensaje, la herramienta encuentra el servidor de envío y su alojamiento, detecta los enlaces sospechosos y prepara los mensajes de denuncia. También recuerda las plataformas de los navegadores (Google Safe Browsing, Microsoft, Netcraft…), que pueden mostrar una advertencia roja a todos los visitantes en pocas horas.
- Dos letras idénticas a la vista pueden ser dos caracteres distintos para el ordenador: es el homoglifo.
- El Punycode traduce los nombres en Unicode a una forma ASCII que empieza por
xn--. - Un
xn--no es sospechoso en sí, pero sí en un nombre que debería ser corriente o que imita una marca. - Un dominio se comprueba copiando el enlace, no mirándolo, y pasando por un marcador o la aplicación oficial.
- Se denuncia al registrador con las dos formas del nombre: la suspensión lo corta todo de golpe.