11 min de lecturaCumplimiento

Ataque homógrafo: cómo un dominio calcado te engaña

Un ataque homógrafo esconde un dominio falsificado tras la codificación xn-- del punycode y caracteres con aspecto idéntico. Cómo funciona el truco y cómo verificar un enlace antes de hacer clic.

Sasha Ehrlich
Compliance · EU residency
Una barra de direcciones del navegador que muestra un ataque homógrafo, con el dominio engañoso y la forma en punycode xn-- de la que procede, en la paleta de marca de Elido

Un ataque homógrafo registra un dominio construido con caracteres que parecen idénticos a los de un dominio real pero no lo son - una "a" cirílica en lugar de una "a" latina, por ejemplo - de modo que la dirección que lee una persona y la dirección que resuelve un navegador son dos cosas distintas. El truco funciona porque el sistema de nombres de dominio solo entiende ASCII, así que todo dominio no ASCII se traduce a una forma ASCII llamada punycode, marcada con un prefijo xn--, antes de que llegue siquiera al DNS. Los navegadores la decodifican de vuelta a la versión legible para mostrarla, y ese paso de decodificación es exactamente donde vive el engaño.

Los navegadores modernos ahora detectan los casos evidentes y, en su lugar, muestran el punycode en bruto cuando una etiqueta mezcla escrituras de forma sospechosa, lo que cierra el paso a la mayoría de los ataques sencillos que funcionaban hace una década. Pero esa protección no sale de la barra de direcciones del navegador.

Me dedico a analizar casos de suplantación de marca, y las buenas falsificaciones todavía me llaman la atención durante medio segundo antes de que registre la señal delatora. Este artículo explica cómo funciona un ataque homógrafo, dónde se detiene la defensa del navegador y qué hacer al respecto - ya sea que estés a punto de hacer clic o que seas el propietario del dominio suplantado. Para la pregunta más amplia de si los propios enlaces cortos son fiables, ¿son seguros los acortadores de URL? cubre ese terreno; este artículo trata sobre el dominio que hay debajo del enlace.

Qué es el punycode y por qué existe

El DNS se construyó para ASCII, punto. No tiene ninguna forma nativa de almacenar las letras acentuadas, el cirílico, el árabe o los caracteres chinos que forman la mayoría de los sistemas de escritura del mundo, lo cual fue un problema real desde el momento en que el registro de dominios se abrió fuera de los mercados de habla inglesa.

El punycode es la solución: una codificación reversible, estandarizada como RFC 3492, que convierte una etiqueta Unicode en letras, dígitos y guiones ASCII que el DNS puede transportar sin ningún cambio en el protocolo de red. Una panadería alemana que registra un dominio con diéresis, o un comercio ucraniano que registra uno en cirílico, obtiene un nombre de dominio internacionalizado que funciona y que se resuelve exactamente igual que cualquier otro, porque por debajo no es más que otra etiqueta ASCII. La forma codificada siempre empieza con xn--, indicando "esto es punycode, decodifícalo antes de mostrárselo a una persona".

Nada de eso es una vulnerabilidad en sí mismo - los nombres de dominio internacionalizados son una función genuina y necesaria, no un apaño que nadie debería desactivar. El problema empieza una capa más arriba, en el momento en que un navegador decide cómo mostrarte de vuelta ese nombre decodificado.

Cómo funciona un ataque homógrafo

Un ataque homógrafo explota la brecha entre lo que contiene un dominio y su aspecto una vez representado. En la práctica aparecen dos variantes, y no son igual de comunes.

La versión de escritura completa registra un dominio entero en una escritura no latina cuyas formas de letra resultan parecerse a la marca objetivo. Es llamativa de construir y más fácil de detectar para quienes defienden, ya que toda la etiqueta es ajena.

La versión de escritura mixta es la que realmente se utiliza, porque solo necesita una única sustitución. Toma un dominio como novacloud.com. Cambia la "o" latina por la "о" cirílica visualmente idéntica (U+043E) y obtienes nоvacloud.com - misma forma, misma longitud, distinto punto de código, y un dominio que se codifica como xn--nvacloud-nbh.com. Todo lo demás en la etiqueta permanece intacto, así que el ojo apenas tiene nada que señalar. Los investigadores de seguridad llaman a este tipo de pareja de aspecto idéntico un "confusable", y un puñado de ellos cubre la mayor parte del alfabeto latino.

Comparación lado a lado del dominio real novacloud.com en escritura latina, el dominio calcado con una o cirílica sustituida por la o latina, y la forma xn--nvacloud-nbh.com que revela un navegador por debajo

Una vez registrado el dominio, el resto del ataque es phishing corriente: una página de inicio de sesión copiada píxel a píxel, un mensaje urgente que señala al enlace falsificado, y un objetivo que no tiene motivo para dudar de una dirección que parece exactamente correcta.

Qué hacen hoy los navegadores al respecto

Los fabricantes de navegadores cerraron hace años la mayor parte de la versión sencilla de este ataque con una regla sobre qué escrituras pueden mezclarse en una misma etiqueta. La política de Chrome, documentada en su guía de gestión de IDN, comprueba si cada carácter de una etiqueta pertenece de forma plausible a una sola escritura, o a un pequeño conjunto de combinaciones de escrituras que aparecen juntas de forma legítima, como el kanji japonés con el hiragana. Si se mezclan escrituras fuera de ese conjunto permitido, el navegador muestra la forma xn-- en bruto en lugar de decodificarla - el mejor activo del ataque, un dominio con aspecto completamente normal, vuelve a convertirse en una cadena claramente codificada. Firefox aplica una comprobación comparable, descrita en el algoritmo de visualización de IDN de Mozilla, y Safari aplica su propia versión.

No es una protección completa. Una etiqueta de escritura mixta construida solo con caracteres dentro de una combinación permitida todavía puede colarse como un nombre legible y engañoso, y la regla se aplica navegador por navegador, sin ninguna autoridad compartida que decida qué se considera seguro.

Dónde se detiene esa protección

La comprobación de mezcla de escrituras vive en el código de representación de la barra de direcciones del navegador. No viaja con la URL a ningún otro sitio, y esa brecha es donde un dominio falsificado todavía causa daño real.

Los clientes de correo son la mayor exposición: un mensaje puede mostrar cualquier texto de anclaje sobre un enlace sin importar el destino, y la mayoría de las aplicaciones de correo no ejecutan ninguna comprobación de confusables. Las aplicaciones de chat despliegan un enlace compartido en una tarjeta de vista previa construida a partir de los metadatos de la página, no con un renderizador consciente del punycode. Los códigos QR eliminan por completo el paso del texto, una brecha que cubrimos en ¿son seguros los códigos QR?, y el material impreso no tiene ninguna capa de software entre el ojo y el engaño.

CanalMuestra el destino real antes de actuarExposición típica
Navegador de escritorio modernoNormalmente, mediante reglas de mezcla de escriturasBaja en los navegadores más comunes, mantenidos actualizados
Cliente de correoRaramente - el texto de anclaje puede decir cualquier cosaAlta, especialmente en aplicaciones de correo móviles
Aplicaciones de chat y mensajeríaRaramente - las vistas previas de enlaces usan metadatos de la páginaAlta, los despliegues de enlaces parecen idénticos
Código QRNo - nada se representa hasta después del escaneoAlta, la decisión ocurre en una fracción de segundo
Material impresoNunca - no interviene ningún softwareLa más alta, no es posible ninguna comprobación técnica

Si tu equipo envía enlaces bajo un dominio que tus clientes ya reconocen, un calcado falsificado tiene mucho menos margen para imitarte de forma convincente en todos esos canales a la vez. Consulta cómo funciona un dominio de marca personalizado en Elido si todavía envías enlaces desde un dominio compartido o genérico.

Por qué un dominio de marca es tu mejor defensa

Un ataque homógrafo funciona explotando la familiaridad - necesita una marca reconocible que falsificar. Eso suena como un argumento en contra de construir un dominio propio y reconocible, y es justo lo contrario. Un enlace corto de marca distintivo que tu audiencia ya asocia contigo es algo con lo que puede comparar un mensaje sospechoso; un dominio de acortador genérico o prestado le da a un atacante una plantilla que los clientes no pueden distinguir del proveedor real de todos modos, porque ninguno de los dos se parece a "ti".

Configurar un dominio personalizado para enlaces cortos significa que cada enlace que envías lleva un nombre que los destinatarios reconocen, lo que eleva el listón para cualquiera que intente falsificarlo. Vale la pena distinguirlo del encubrimiento de enlaces y el enmascaramiento de URL, una decisión deliberada y declarada de encaminar los enlaces a través de tu propio dominio. Un ataque homógrafo es el movimiento contrario - ocultar la identidad del atacante mientras imita la tuya - y la defensa es la transparencia sobre qué dominio es realmente el tuyo.

Los controles del registrador que realmente importan

Dos controles hacen la mayor parte del trabajo real una vez que posees un dominio que merece protección, y operan en niveles distintos de la pila.

El registrar lock es el habitual - un indicador de estado, a menudo mostrado como clientTransferProhibited, que bloquea las solicitudes de transferencia automatizadas rutinarias dentro del propio panel de tu registrador. Todo dominio que uses activamente debería tenerlo activado; no cuesta nada. El registry lock se sitúa un nivel más arriba, involucrando directamente al operador del registro para que cualquier cambio, transferencia o eliminación requiera una verificación manual fuera de banda - una llamada telefónica o una frase de paso segura - antes de que surta efecto. Esa fricción corresponde a los uno o dos dominios donde un cambio no autorizado resultaría realmente caro, lo que para la mayoría de las empresas significa, como mínimo, el dominio principal de la marca.

Ninguno de los dos bloqueos impide que alguien registre un dominio calcado junto al tuyo. Eso requiere monitorización activa: vigilar los nuevos registros de dominio y los registros públicos de transparencia de certificados en busca de nombres visualmente próximos a tu marca, para poder reportarlo al registrador o alertar a los clientes antes de que una campaña que lo use llegue a alguien.

Qué incluir en una política de protección de marca

Si posees un dominio que merece la pena suplantar, la sección de seguridad de tu política de protección de marca debería ser lo bastante específica como para que alguien nuevo en el equipo pudiera ejecutarla sin tener que preguntarte antes.

  • Registrar transfer lock en todos los dominios que posee la empresa, con registry lock añadido en el dominio principal de la marca y en cualquiera que gestione pagos o inicios de sesión.
  • Una cadencia recurrente para escanear los nuevos registros de dominio y los registros de transparencia de certificados en busca de nombres visualmente próximos a tu marca, no una comprobación puntual.
  • Registro defensivo de las etiquetas calcadas de mayor riesgo y de los dominios de nivel superior confusables que puedas justificar, priorizados según lo mucho que se parezcan a tu dominio principal.
  • Un responsable designado y una vía de escalado para reportar un dominio calcado descubierto a su registrador, además de orientación interna para que el personal de soporte reconozca el patrón cuando un cliente reporte uno. La lista de verificación de seguridad para elegir un proveedor de enlaces cubre los controles de proveedor relacionados.

Una receta de verificación que cualquiera puede seguir

No necesitas entender el punycode para comprobar un enlace de forma segura. Cuatro pasos, hechos en orden, detectan casi todo aquello en lo que se apoya un ataque homógrafo.

  1. Expande primero el enlace, en lugar de hacer clic directamente en él. Cómo ver adónde lleva una URL corta repasa las herramientas para esto, y el propio verificador de enlaces de Elido hace lo mismo sin pedirte que confíes primero en el destino.
  2. Lee el dominio registrable - la parte inmediatamente anterior al dominio de nivel superior - en lugar de cualquier cosa que aparezca antes de él. Esa es la parte que un atacante tiene que controlar por completo.
  3. Comprueba si hay un prefijo xn--, ya sea en la URL expandida en bruto o en la barra de direcciones de tu navegador. Si ves uno donde esperabas un nombre de marca normal, detente y trátalo como un dominio calcado hasta que se demuestre lo contrario.
  4. Confirma el nombre del certificado en el sitio de destino. Un certificado refleja lo que realmente se emitió al propietario de un dominio, lo cual es más difícil de falsificar de forma convincente que una etiqueta representada.
Cuatro pasos de verificación antes de hacer clic en un enlace: expandir el enlace corto, leer el dominio registrable, comprobar si hay un prefijo xn--, y confirmar el nombre del certificado

Ninguno de estos pasos lleva más de unos segundos una vez que se convierten en hábito, y puedes enseñar los cuatro a un compañero no técnico en el tiempo que se tarda en leer esta sección una sola vez.

Un ataque homógrafo es un problema de visualización disfrazado de problema de seguridad. El punycode hace exactamente lo que se diseñó para hacer; el engaño ocurre en la brecha entre lo que es un dominio y lo que un programa te muestra en su lugar. Los navegadores han cerrado la mayor parte de esa brecha en la barra de direcciones. En todos los demás sitios la brecha sigue abierta, razón por la cual expandir un enlace y leer el dominio registrable sigue siendo el hábito que funciona sin importar qué canal puso el enlace delante de ti.

Relacionados en el blog

Preguntas frecuentes

¿Qué es un ataque homógrafo IDN?

Un ataque homógrafo IDN registra un dominio usando caracteres de una escritura distinta que resultan idénticos o casi idénticos a los de un dominio real, de modo que quien lo lee no puede distinguir los dos a simple vista. El caso clásico sustituye una sola letra latina por su equivalente cirílico o griego, por ejemplo la a cirílica por la a latina, mientras que el resto del dominio permanece sin cambios. Como el carácter sustituto tiene un punto de código distinto, los dos dominios son técnicamente diferentes y pueden registrarse y controlarse por propietarios distintos. El ataque funciona únicamente por la apariencia, razón por la cual apunta a nombres de marca reconocibles y de confianza en lugar de a marcas poco conocidas.

¿Qué es el punycode y por qué existe?

El punycode es la codificación que convierte las etiquetas de dominio no ASCII en una cadena ASCII que el sistema de nombres de dominio puede almacenar y resolver, definida en el RFC 3492. Existe porque el DNS solo entiende un conjunto limitado de caracteres ASCII, así que un dominio escrito en cirílico, árabe, chino o con letras latinas acentuadas tiene que traducirse a esa forma antes de poder consultarse. La etiqueta codificada siempre empieza con el prefijo xn--, que indica a los resolutores y a los navegadores que lo que sigue es una cadena codificada en punycode y no un nombre en ASCII normal. Los navegadores la decodifican después de vuelta a la escritura original para mostrarla, lo cual es una función legítima y necesaria, no la vulnerabilidad en sí misma.

¿Qué significa el prefijo xn-- en una URL?

El prefijo xn-- marca una etiqueta de dominio como codificación compatible con ASCII, producida por el punycode, e indica que el nombre legible se tradujo a partir de caracteres no ASCII. Todo lo que va después del prefijo es la forma codificada de la etiqueta original - xn--nvacloud-nbh.com, por ejemplo, se decodifica en un dominio que parece novacloud.com con una letra sustituida por otra de aspecto idéntico. Ver la forma xn-- donde esperabas un nombre de marca normal es exactamente la señal que usan los navegadores para avisarte, porque significa que la etiqueta mezclaba escrituras de un modo que el navegador no consideró seguro mostrar en su versión legible. Un dominio sin caracteres no ASCII nunca produce una forma xn--, así que ver una siempre merece una segunda mirada.

¿Los navegadores protegen contra los ataques homógrafos?

Los navegadores modernos aplican reglas de mezcla de escrituras que detectan la mayoría de los intentos de ataque homógrafo y, en su lugar, muestran la forma en punycode sin decodificar en vez de la versión engañosa. Chrome y Firefox comprueban si los caracteres de la etiqueta de un dominio pertenecen de forma plausible a una sola escritura o a un pequeño conjunto de escrituras que suelen usarse juntas, y si no es así, muestran la versión xn-- en lugar de decodificarla en algo que pudiera pasar por un nombre familiar. Eso cierra el paso a los ataques de escritura completa más sencillos, para que no se muestren como impostores convincentes, aunque los atacantes todavía pueden encontrar caracteres dentro de los conjuntos permitidos que sean visualmente confundibles con letras latinas. La protección también está estrictamente limitada a la barra de direcciones del navegador - nada más en la cadena la hereda automáticamente.

¿Cómo puedo saber si un enlace es un dominio calcado antes de hacer clic?

Expande primero el enlace para ver el destino completo en lugar de una versión corta o truncada, y luego lee el dominio registrable en vez de cualquier cosa que aparezca antes de él. Si la barra de direcciones o el expansor muestran un prefijo xn-- donde esperabas un nombre de marca normal, trátalo como un dominio calcado hasta que se demuestre lo contrario. Confirmar el nombre del certificado en el sitio de destino es una comprobación final útil, ya que un certificado refleja lo que realmente se emitió y no simplemente lo que se muestra. Nada de esto necesita software especial - solo el hábito de hacerlo antes de introducir una contraseña o un número de tarjeta.

¿Qué es el registry lock y necesita mi dominio esta protección?

El registry lock es un control establecido a nivel del registro del dominio que bloquea cualquier cambio, transferencia o eliminación del dominio hasta que se verifica manualmente fuera de banda, normalmente por teléfono o con una frase de paso segura, lo cual impide mover el dominio incluso si la cuenta del registrador está comprometida. Es una garantía más sólida que el registrar lock, más habitual, que solo evita las transferencias automáticas rutinarias dentro del propio panel de tu registrador. El registry lock merece su modesto coste anual en cualquier dominio cuya caída o secuestro resultaría caro, lo que para la mayoría de las empresas significa, como mínimo, el dominio principal de la marca. No impedirá que alguien registre un dominio de aspecto similar junto al tuyo - eso es un problema aparte que se resuelve con monitorización, no con bloqueos.

Prueba Elido

Pega una URL, obtén un enlace corto

Sin registro. El enlace vive 30 días. Crea una cuenta para conservarlo.

Gratis, sin registro · 2 por día

Prueba Elido

Acortador de URL alojado en la UE: dominios personalizados, análisis profundo y API abierta. Plan gratuito - sin tarjeta de crédito.

Etiquetas
homograph attack
punycode
idn homograph attack
lookalike domain
xn-- prefix
spoofed domain

Seguir leyendo