9. Ataques

9.3. Punycode


Unicode ( Introducción)

Antes de explicar que es Punycode, repasemos que es UNICODE.


La tabla ASCII es un subconjunto de UNICODE.

A partir de la versión 15.1 de Unicode, hay 149.878 caracteres con puntos de código, que cubren 161 escrituras modernas e históricas, así como múltiples conjuntos de símbolos.

Link a tabla de Unicode.



Unicode es un sistema de codificación de caracteres utilizado por los equipos informáticos para el almacenamiento y el intercambio de datos en formato de texto. Asigna un número único (un punto del código) a cada carácter de los principales sistemas de escritura del mundo.También incluye símbolos técnicos y de puntuación, y otros muchos caracteres utilizados en la escritura de textos.

En Unicode, un carácter se corresponde con un punto de código. Los puntos de código son los números asignados por Unicode Consortium a cada carácter en cada sistema de escritura. Los puntos de código se representan como U+ seguido de cuatro cifras o letra. Ejemplo: l = U+006C

Unicode define cómo se interpretan los caracteres, no cómo se representan o visualizan.

Un glifo, que es la representación visual de un carácter, es la marca realizada en la pantalla del equipo o la página impresa.


En el sistema Unicode existes tres formas o esquemas de codificación que se conocen como Unicode Trasnformation Format (UTF). Tanto UTF-8, como UTF-16 o UTF-32 funcionan de la misma manera, esto es muy usado en las definiciones del tipo de dato en por ejemplo las Bases de Datos.

Punycode.

Punycode (código púny) es una sintaxis de codificación usada en programación que usa una cadena Unicode que puede ser traducida en una cadena de caracteres más limitada compatible con los nombres de red.

Punycode se llama a la técnica que se utiliza para confundir, la representación visual que realizamos para los equipos  en realidad es interpretado de otra manera!

Resumen: se ve como un caracter pero es otro!!

Desde el navegador puede ser difícil o se debe prestar mucha atención ya que son similares los caracteres.-

La sintaxis está publicada en Internet en el documento  RFC 3492. La codificación es usada como parte de IDNA, que es un sistema que habilita el uso de IDNA (iniciales de nombres de dominios internacionalizados en inglés) en todos los archivos de órdenes soportados por Unicode.  Un nombre de dominio internacionalizado o Internationalized Domain Name (IDN) es un nombre de dominio de Internet que (potencialmente) contiene caracteres no ASCII.

Por ejemplo "münich" sería codificado como "mnich-kva". Un IDN (nombre de dominio internacionalizado) toma la codificación punycode y agrega "xn--" delante de ella. Entonces "münich.com" se convertiría en "xn--mnich-kva.com".

Mostraremos solo algunos a modo de ejemplo, esto fue obtenido de:

https://cybersecurityventures.com/beware-of-lookalike-domains-in-punycode-phishing-attacks/