Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Buscador

Entradas Mensuales

Suscripción

¿Quieres recibir las últimas novedades del blog en tu correo?

¡Suscríbete al feed!

elhacker.NET en Facebook

Entradas populares

PostHeaderIcon Cuidado con lo que copias: caracteres de ancho cero




Los caracteres de ancho cero son caracteres invisibles, "sin impresión", que no se muestran en la mayoría de las aplicaciones. Esto permite, por ejemplo, al copiar un texto se pueden copiar otros campos de un formulario de forma oculta e invisible para el usuario usando JavaScript. Estos caracteres se pueden usar para 'huella digital' de texto para ciertos usuarios.



Zero-width space (ZWSP)


Los caracteres invisibles suelen ser un tipo de caracteres unicode que no podemos ver a simple vista, por ejemplo, el zero-width space, un espacio que no ocupa ancho en el texto y que se puede camuflar junto a cualquier otro texto, o los zero-width non-joiner, signos de puntuación igualmente invisibles.

Los caracteres invisibles son una técnica muy utilizada en la red que permite, por ejemplo, introducir una serie de caracteres que no se imprimen en pantalla es un texto de manera que se pueda saber cuándo alguien copia ese texto sin permiso a otra página, ya que copiaría igualmente estos caracteres y los pegaría donde se introdujera el texto.

Para evitar problemas con URLS, Las reglas de la ICANN prohíben que los nombres de dominio incluyan caracteres no mostrados como espacio de ancho cero y la mayoría de los navegadores incluyen su uso en nombres de dominio, ya que pueden usarse para crear un ataque homógrafo, donde una URL maliciosa es indistinguible visualmente de una legítima..


¿Cómo?
 

Para explicarlo simplemente; se puede copiar la cadena de un campo de un nombre de usuario se convertiría en su forma binaria y luego el binario se convertiría en una serie de caracteres de ancho cero que representan cada dígito binario. La cadena de ancho cero podría insertarse de forma invisible en el texto. Si dicho texto se publicó en otro lugar, se puede extraer la cadena de caracteres de ancho cero y se puede invertir el proceso para descubrir el nombre de usuario de la persona que lo copió.

 Convertir a binario:
const zeroPad = num => ‘00000000’.slice(String(num).length) + num;
const textToBinary = username => (
  username.split('').map(char =>
    zeroPad(char.charCodeAt(0).toString(2))).join(' ')
);
 Pasar de binario a carácteres de ancho cero

const binaryToZeroWidth = binary => (
  binary.split('').map((binaryNum) => {
    const num = parseInt(binaryNum, 10);
    if (num === 1) {
      return '​'; // zero-width space
    } else if (num === 0) {
      return '‌'; // zero-width non-joiner
    }
    return '‍'; // zero-width joiner
  }).join('') // zero-width no-break space
);

Unicode tiene los siguientes caracteres de ancho cero:
  • U + 200B espacio de ancho cero
  • Punto de código Unicode non-joiner de ancho cero U + 200C
  • U + 200D punto de código Unicode de unión de ancho cero
  • U + FEFF ancho cero espacio sin interrupción punto de código Unicode

Unicode has the following zero-width characters:
  • U+200B zero width space
  • U+200C zero width non-joiner Unicode code point
  • U+200D zero width joiner Unicode code point
  • U+FEFF zero width no-break space Unicode code point

Demostración

En esta página web encontramos un ejemplo práctico:

  • campo 1: escribes un nombre deu suario 
  • campo 2: seleccionas y copias la frase que hay ahí escrita en inglés
  • campo 3: pegas lo frase anteriormente copiada.
  • campo 4: aparece lo que has escrito en campo 1
El código fuente lo podemos ver en:

Phishing con caracteres Unicode


Con el uso de Punycode se pueden representar caracteres Unicode mediante el subconjunto de caracteres ASCII empleado para los nombres en Internet. De esta forma se pueden registrar dominios que hagan uso de caracteres no permitidos, por ejemplo podríamos registrar un dominio como España.com que quedaría como xn--espaa-rta.com. Evidentemente no es muy empleado porque para temas como el SEO, promoción y marca, no es muy eficiente. Queda raro que haya que escribir algo como xn--espaa-rta.com.

Ahora bien, las implicaciones en el mundo de la seguridad que pueden representar estos dominios son grandes, ya que muchos caracteres Unicode pueden ser difíciles de distinguir de los caracteres ASCII normales. De esta forma, es posible registrar dominios como "xn--pple-43d.com", equivalente a "аpple.com" por el uso de la a en cirílico "а" (U+0430) en vez de la "a" en ASCII (U+0041). Este tipo de ataques son conocidos como ataques homográficos.

Los navegadores modernos tienen mecanismos para evitar o limitar este tipo de ataques. En Chrome y Firefox la forma Unicode se esconde si un dominio contiene caracteres de varios lenguajes diferentes. De esta forma, por ejemplo el dominio "xn--pple-43d.com" aparecerá como tal (en vez de "аpple.com") al contar con caracteres de dos lenguajes, de esta forma se evita la confusión con el dominio real.

Extensión para Google Chrome muestra los “caracteres invisibles” en una web

 La extensión muestra los carácteres con emoticonos.




Fuente:
https://medium.com/@umpox/be-careful-what-you-copy-invisibly-inserting-usernames-into-text-with-zero-width-characters-18b4e6f17b66 

0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.