Ghost Academy SecLearn // MATERIAL EDUCATIVO
⚠ THREAT MODULE — PHISHING AVANZADO
Ataques Homográficos
y Ataques de Punycode
"Si el dominio puede engañar a tu cerebro,
puede engañar a tu contraseña."
IDN Homograph Punycode Unicode Spoofing Phishing Visual Deception Cybersecurity
#01 ¿Qué es un Ataque Homográfico?
📖DEFINICIÓN

Un ataque homográfico (Homograph Attack) es una forma de engaño visual que hace creer al usuario que está visitando un sitio web legítimo cuando en realidad está siendo dirigido a una página fraudulenta controlada por un atacante.

Se basa en el concepto de homógrafo: caracteres que parecen idénticos visualmente pero son completamente diferentes en su representación digital (distinto codepoint Unicode).

El atacante registra un dominio visualmente casi idéntico al objetivo y espera que el usuario no note la diferencia.

⚡DOS GRANDES FAMILIAS

1. Ataques Homográficos Unicode / Punycode (IDN)
Usan caracteres de otros alfabetos (cirílico, griego, armenio) visualmente idénticos a letras latinas. El dominio se codifica como Punycode: xn--...

2. Ataques ASCII look-alike (tipográficos)
No usan Unicode. Usan combinaciones de caracteres ASCII visualmente parecidos: rn → m, l → I, 0 → O. Son 100% ASCII válidos, más difíciles de detectar.

Clave: HTTPS y el candado verde no garantizan que el dominio sea legítimo. Cualquiera puede obtener un certificado TLS para un dominio falso.
🖥️LO QUE VE EL USUARIO — DEMOSTRACIÓN VISUAL
SIMULACIÓN DE BARRA DE DIRECCIONES DEL NAVEGADOR
✅ SITIO LEGÍTIMO
🔒
apple.com/login
❌ SITIO FALSO (Punycode)
🔒
apple.com/login (аррӏе.com)
⚠ Ambos sitios tienen candado 🔒 (HTTPS). Visualmente son idénticos. La única diferencia está en los bytes del dominio — invisible para el ojo humano sin inspección detallada.
🔢EJEMPLOS BÁSICOS DE URL HOMOGRÁFICA
URL LegítimaURL MaliciosaCarácter sustituidoTipo
amazon.comamaz0n.com'o' → '0' (zero)ASCII look-alike
paypal.compaypal.com'a' latina → 'а' cirílica (U+0430)IDN Homograph
microsoft.comrnicrosoft.com'm' → 'rn' (dos chars ASCII)ASCII tipográfico
google.comgooglе.com'e' latina → 'е' cirílica (U+0435)IDN Homograph
paypal.compaypaI.com'l' → 'I' mayúsculaASCII look-alike
#02 Punycode: El Mecanismo Técnico
🔧¿QUÉ ES PUNYCODE?

Punycode es un estándar de codificación (RFC 3492) que permite representar nombres de dominio con caracteres no-ASCII usando únicamente caracteres ASCII válidos. Es la tecnología que hace posibles los Nombres de Dominio Internacionalizados (IDN).

El DNS solo puede procesar caracteres ASCII. Cuando alguien registra un dominio como españa.com, el sistema lo convierte a Punycode: xn--espaa-rta.com. Todos los dominios Punycode comienzan con el prefijo xn--.

✅USO LEGÍTIMO DE PUNYCODE
Dominio visiblePunycode real (DNS)
español.comxn--espaol-zwa.com
münchen.dexn--mnchen-3ya.de
中文.comxn--fiq228c.com
日本語.jpxn--wgv71a309e.jp
الإنترنتxn--4gbrim.com
Uso legítimo: dominios en idiomas no latinos para usuarios de todo el mundo.
☠️USO MALICIOSO — IDN HOMOGRAPH ATTACK
Dominio visualDominio legítimoPunycode
аррӏе.comapple.comxn--80ak6aa92e.com
googlе.comgoogle.comxn--googl-r7a.com
microsоft.commicrosoft.comxn--microsft-n0g.com
раypal.compaypal.comxn--ypal-43d.com
La diferencia es invisible: la 'a' en аррӏе es cirílica (U+0430), no latina.
🎯FLUJO COMPLETO — IDN HOMOGRAPH ATTACK
1
Atacante — Preparación
Registra un dominio Punycode con caracteres cirílicos idénticos visualmente a un dominio real
Registra: xn--80ak6aa92e.com → se muestra como: аррӏе.com (todo cirílico)
▼
2
Atacante — Certificado TLS
Obtiene un certificado SSL/TLS válido para el dominio Punycode (Let's Encrypt o similar)
El candado 🔒 aparecerá en la barra del navegador — el usuario lo ve como señal de seguridad
▼
3
Distribución — Phishing
Envía emails de phishing con el enlace al dominio falso
Asunto: "Tu cuenta Apple ha sido comprometida. Verifica en: https://аррӏе.com/login"
▼
4
Filtro / WAF / Antispam
El filtro busca "apple.com" — no lo encuentra porque el dominio es Punycode
Busca: apple.com → No encontrado en xn--80ak6aa92e.com → ✅ PERMITIDO (falso negativo)
▼
5
Navegador — Decodificación
El navegador decodifica el Punycode y muestra el dominio visualmente
xn--80ak6aa92e.com → muestra: аррӏе.com (visualmente idéntico a apple.com)
▼
6
Víctima — Engaño completado
El usuario ve 🔒 аррӏе.com, cree que es legítimo, introduce sus credenciales
Resultado: credenciales robadas · acceso a cuenta comprometido · posible movimiento lateral
🔤DIAGRAMAS DE CARACTERES COMPARTIDOS ENTRE ALFABETOS
LATINO CIRÍLICO GRIEGO f g h j k q u v w б д ж з л п ф ш δ λ ξ π φ а е о р с т х i y B H A E O ⚠ Zona peligrosa: caracteres visualmente idénticos en Latino + Cirílico ⚠⚠ Triple solapamiento: idénticos en los 3 alfabetos
Los caracteres en la zona de solapamiento son los más peligrosos: visualmente indistinguibles en pantalla pero con codepoints completamente diferentes.
#03 Catálogo de Caracteres Homoglyphs
🔍COMPARACIÓN VISUAL — ¿PUEDES VERLO?
🧪 Prueba: ¿Ves alguna diferencia entre los pares de caracteres de cada columna? Los de la izquierda son latinos, los de la derecha son de otros alfabetos.
a
LATINA
U+0061
≈
а
CIRÍLICA
U+0430
e
LATINA
U+0065
≈
е
CIRÍLICA
U+0435
o
LATINA
U+006F
≈
о
CIRÍLICA
U+043E
w
LATINA
U+0077
≈
ω
GRIEGA
U+03C9
En la mayoría de tipografías de pantalla (especialmente sans-serif) estos caracteres son completamente indistinguibles a simple vista.
📋TABLA COMPLETA DE CARACTERES MÁS USADOS EN ATAQUES
Char visualUnicodeAlfabetoSustituye aRiesgoEjemplo de dominio
аU+0430Cirílicoa (U+0061)🔴 CRÍTICOаmazon.com
еU+0435Cirílicoe (U+0065)🔴 CRÍTICOgooglе.com
оU+043ECirílicoo (U+006F)🔴 CRÍTICOmicrоsoft.com
рU+0440Cirílicop (U+0070)🔴 CRÍTICOраypal.com
сU+0441Cirílicoc (U+0063)🟡 ALTOfaсebook.com
тU+0442Cirílicot (U+0074)🟡 ALTOyouтube.com
хU+0445Cirílicox (U+0078)🟡 ALTOeхample.com
ωU+03C9Griegow (U+0077)🟡 ALTOtωitter.com
νU+03BDGriegov (U+0076)🟡 ALTOνisa.com
ạU+1EA1Latin ext.a (U+0061)🔵 MEDIOgmạil.com
ιU+03B9Griegoi (U+0069)🔵 MEDIOlinkedιn.com
․U+2024Puntuación. (U+002E)🟡 ALTOlinkedin․com
☠️TABLA AMPLIADA DE DOMINIOS DE ATAQUE CONOCIDOS
Dominio visual (Unicode)Dominio legítimoChar engañosoUnicodePunycodeSector
аррӏе.comapple.comа р р ӏ е (cirílico)U+0430 U+0440 U+0440 U+04CF U+0435xn--80ak6aa92e.comTech
аpple.comapple.comа (cirílico)U+0430xn--pple-43d.comTech
googlе.comgoogle.comе (cirílico)U+0435xn--googl-r7a.comTech
microsоft.commicrosoft.comо (cirílico)U+043Exn--microsft-n0g.comCorporate
раypal.compaypal.comр а (cirílico)U+0440 U+0430xn--ypal-43d.comBanca
tωitter.comtwitter.comω (griego)U+03C9xn--titter-i2e.comSocial
fаcebook.comfacebook.comа (cirílico)U+0430xn--fcebook-43d.comSocial
instаgram.cominstagram.comа (cirílico)U+0430xn--instgram-43d.comSocial
gmạil.comgmail.comạ (diacrítico)U+1EA1xn--gmil-6q5a.comEmail
аmazon.comamazon.comа (cirílico)U+0430xn--mazon-43d.comE-Commerce
youтube.comyoutube.comт (cirílico)U+0442xn--youube-4fg.comMedia
linkedin․comlinkedin.com․ (punto Unicode)U+2024xn--linkedin-m2f.comCorporate
#04 ASCII Look-Alike: El Ataque Más Peligroso
⚠ Atención: Los ataques ASCII look-alike son los más peligrosos en la práctica porque son 100% ASCII válidos, no disparan alertas IDN, pueden tener HTTPS y son casi imposibles de detectar en tipografías pequeñas o móviles.
🔡EL CASO rnicrosoft.com
microsoft.com ✅ LEGÍTIMO — Una sola letra 'm' (U+006D) rnicrosoft.com ❌ FALSO — 'r' + 'n' ASCII parecen 'm' en muchas tipografías
CaracterísticaValor
TipoPhishing ASCII (no Unicode)
TécnicaHomoglifo tipográfico rn→m
¿Aplica Punycode?❌ NO — es 100% ASCII
¿Puede tener HTTPS?✅ SÍ — certificado válido
¿Dispara alerta IDN?❌ NO
Riesgo🔥 MUY ALTO

¿Por qué funciona?

  • En muchas tipografías sans-serif, rn y m son visualmente muy similares
  • El cerebro humano lee las primeras y últimas letras de las palabras, no cada carácter individualmente
  • En pantallas pequeñas (móvil), la diferencia es prácticamente nula
  • No hay ningún mecanismo técnico que alerte de este ataque — depende 100% de la atención del usuario
Este dominio puede aparecer en emails de "Seguridad de Microsoft", "Alerta de cuenta", "Microsoft 365". El usuario ve microsoft.com y confía.
📊TABLA AMPLIADA DE DOMINIOS ASCII LOOK-ALIKE
Dominio falsoDominio realEngaño visualTipoSector
rnicrosoft.commicrosoft.comrn → mTipográficoCorporate
paypaI.compaypal.comI mayúscula → l minúsculaLook-alikeBanca
faceb00k.comfacebook.com00 → ooNuméricoSocial
gmaiI.comgmail.comI mayúscula → lLook-alikeEmail
micros0ft.commicrosoft.com0 → oNuméricoCorporate
arnazon.comamazon.comrn → mTipográficoE-Commerce
l1nkedin.comlinkedin.coml1 → liMixtoCorporate
rnybank.commybank.comrn → mTipográficoBanca
lnstagram.cominstagram.coml → I (confusión)Look-alikeSocial
nnetflix.comnetflix.comn doble → n singleOmisiónMedia
🟡 Importante: Todos estos dominios son 100% ASCII válidos, pueden tener certificado HTTPS y NO disparan alertas de tipo IDN en ningún navegador.
🎯COMPARATIVA VISUAL: TIPOGRAFÍAS Y RIESGO
COMPARATIVA DE TIPOGRAFÍAS — rn vs m Sans-serif rn vs m ⚠ MUY SIMILAR Serif rn vs m ◐ ALGO DIFERENTE Monospace rn vs m ✓ DIFERENCIA CLARA Los clientes de email y navegadores usan mayoritariamente tipografías sans-serif → riesgo máximo
#05 Casos Reales y Escenarios de Ataque
🍎CASO: APPLE 2017

Uno de los ejemplos más documentados. El dominio xn--80ak6aa92e.com usaba caracteres completamente cirílicos que se mostraban como аррӏе.com en Chrome y Firefox de la época.

El atacante obtuvo un certificado SSL válido para el dominio Punycode, lo que añadía el candado verde y eliminaba cualquier señal visual de alerta.

Impacto: Usuarios que introducían sus credenciales de Apple ID, contraseñas e incluso datos de pago en el sitio falso.

Respuesta: Chrome y Firefox actualizaron sus heurísticas para mostrar la versión Punycode (xn--...) cuando detectan mezcla de alfabetos.

🎮CASO: STEAM 2017

La plataforma de videojuegos Steam fue objetivo de un esquema de phishing Punycode a gran escala. Los atacantes creaban URLs que parecían pertenecer a la comunidad oficial de Steam o a intercambios de items.

Los usuarios recibían ofertas de intercambio con links a steаmcommunity.com (con la 'а' cirílica).

Impacto: Robo de credenciales, acceso a cuentas con bibliofecas de juegos valoradas en miles de euros, reventa de cuentas y items en mercados grises.

Escenario típico: Item de alto valor → oferta de intercambio → link de login falso → credenciales robadas → cuenta vaciada.

📧ESCENARIO REAL: PHISHING MICROSOFT 365 (PASO A PASO)
1
El usuario recibe un email
Asunto: "⚠ Actividad sospechosa detectada en su cuenta Microsoft"
De: security@rnicrosoft.com | Para: usuario@empresa.com Hemos detectado un acceso no autorizado. Verifique su cuenta inmediatamente.
▼ El usuario hace clic en el enlace
2
Enlace en el email
La URL parece legítima: https://rnicrosoft.com/security-check
🔒 https://rnicrosoft.com/security-check Certificado válido · HTTPS · aspecto profesional
▼ El navegador carga la página
3
Página clonada perfectamente
Clon pixel-perfect del portal de login de Microsoft 365
Logo oficial · Tipografía correcta · Formulario de credenciales Sección "Seguridad" con aspecto oficial
▼ El usuario introduce sus credenciales
4
Credenciales enviadas al atacante
Username + Password → Servidor del atacante. Redirige a Microsoft real.
POST → atacante-server.com/collect?u=usuario&p=contraseña → 302 redirect → login.microsoft.com (usuario no nota nada)
▼ Consecuencias
5
Impacto — Business Email Compromise (BEC)
Acceso completo a correo, OneDrive, Teams, SharePoint — movimiento lateral en la empresa
Correos · Documentos confidenciales · Contactos · Movimiento lateral Fraude financiero BEC · Ransomware · Espionaje corporativo
FactorPor qué funciona
📖 Lectura rápidaEl cerebro autocorrige y lee "microsoft" aunque sea "rnicrosoft"
🖋️ Tipografías sans-serifLas usadas en email ocultan la diferencia entre rn y m
📱 Pantalla pequeñaEn móvil, la URL es más difícil de leer con atención
🔒 HTTPSEl candado genera falsa sensación de seguridad
😩 Fatiga del usuarioMúltiples emails diarios → menos tiempo para verificar
😱 Urgencia artificial"Tu cuenta ha sido comprometida" presiona a actuar rápido
#06 Lab: Generador de Dominios Homográficos
🧪 Objetivo: Experimenta generando dominios homográficos para comprender cómo los atacantes los construyen. Este conocimiento es clave para saber qué detectar y cómo defenderse.
⚡ GENERADOR DE HOMOGLYPHS INTERACTIVO
Introduce un nombre de dominio legítimo. El generador sustituirá automáticamente caracteres latinos por sus equivalentes homoglyphs de otros alfabetos y mostrará el resultado en Punycode.
// El resultado aparecerá aquí
🔄 CONVERSOR PUNYCODE ↔ UNICODE INTERACTIVO
Convierte entre la representación visual (Unicode) y la representación técnica (Punycode) de un dominio. Pega cualquier dominio sospechoso para ver su forma real.
// Conversión aparecerá aquí
🔍 INSPECTOR DE CARACTERES INTERACTIVO
Analiza cada carácter de una cadena y muestra su codepoint Unicode, nombre oficial y si es sospechoso de ser un homoglyph.
// Análisis carácter a carácter
#07 Lab: Detector de Dominios Sospechosos
🛡️ DETECTOR DE PHISHING VISUAL INTERACTIVO
Introduce cualquier URL o dominio para analizarlo en busca de indicios de ataque homográfico: caracteres no-ASCII, mezcla de alfabetos, similitud con dominios conocidos, variantes ASCII look-alike.
// Análisis aparecerá aquí
🎯 QUIZ VISUAL — ¿LEGÍTIMO O FALSO? PRÁCTICA
Se te mostrará un dominio. Decide si es legítimo o podría ser un ataque. Practica tu capacidad de detección.
DOMINIO A EVALUAR
?
// Elige una respuesta
Aciertos: 0/0
#08 Medidas de Defensa y Mitigación
👤PARA USUARIOS
Leer la URL letra a letra en sitios críticos
Especialmente en login de bancos, correo, redes sociales. No confiar en la lectura rápida.
Usar gestores de contraseñas
Un password manager solo autocompleta si el dominio coincide EXACTAMENTE — no lo hará con el dominio falso.
Acceder a servicios críticos solo desde marcadores
Guarda el enlace legítimo una vez verificado y úsalo siempre. No hagas clic en links de emails.
Desconfiar de rn, lI, 0O en dominios
Patrones típicos de ASCII look-alike. Si ves estas combinaciones, verifica con atención.
Verificar el certificado (detalles, no solo el candado)
Haz clic en el candado → "Información del certificado". Verifica que el Common Name coincide exactamente.
Pegar URLs sospechosas en un conversor de Punycode
Si la URL contiene xn-- al pegarla, es Punycode. Verifica a qué dominio corresponde realmente.
0 / 6 verificado
🏢PARA EMPRESAS Y DESARROLLADORES
Registro defensivo de variantes
Registrar dominios look-alike propios: rn-, l→I, 0→o, versiones Punycode de la marca con homoglyphs comunes.
Monitorización de dominios similares
Herramientas: dnstwist, URLcrazy, PhishTank. Alertas automáticas si se registran dominios parecidos.
MFA obligatorio en cuentas críticas
Reduce el impacto si las credenciales son robadas — el atacante no puede acceder sin el segundo factor.
Normalización Unicode en validación de inputs
Aplicar NFKC normalize en emails/dominios antes de validar. Detecta homoglyphs conocidos.
Formación específica en homoglyphs ASCII
Los ataques ASCII look-alike (rn→m) no tienen solución técnica automática — requieren formación de usuarios.
SPF + DKIM + DMARC estrictos
Reduce el éxito de emails phishing que usen tu dominio. DMARC policy: reject previene spoofing directo.
0 / 6 verificado
💻CÓDIGO — VALIDACIÓN SEGURA DE DOMINIOS
JAVASCRIPT — DETECCIÓN DE HOMOGLYPHS
// Mapa de homoglyphs conocidos → su equivalente ASCII const HOMOGLYPH_MAP = { '\u0430': 'a', // а cirílica → a latina '\u0435': 'e', // е cirílica → e latina '\u043E': 'o', // о cirílica → o latina '\u0440': 'p', // р cirílica → p latina '\u0441': 'c', // с cirílica → c latina '\u0442': 't', // т cirílica → t latina '\u03C9': 'w', // ω griega → w latina '\u03BD': 'v', // ν griega → v latina '\u1EA1': 'a', // ạ latino extendido → a '\u2024': '.', // ․ unicode → punto }; function detectHomoglyphs(domain) { const findings = []; const normalized = domain.normalize('NFKC'); // Verificar carácter a carácter for (let i = 0; i < domain.length; i++) { const char = domain[i]; const code = char.codePointAt(0); // Fuera del rango ASCII básico (>127) if (code > 127) { findings.push({ char, code: 'U+' + code.toString(16).toUpperCase().padStart(4,'0'), ascii_equiv: HOMOGLYPH_MAP[char] || '?', index: i }); } } // Comprobar similitud con dominios conocidos tras normalización const normalized_domain = domain.split('') .map(c => HOMOGLYPH_MAP[c] || c).join('') .toLowerCase(); return { findings, normalized_domain, is_suspicious: findings.length > 0 }; } // Uso: const result = detectHomoglyphs('googlе.com'); console.log(result.is_suspicious); // true console.log(result.normalized_domain); // 'google.com'
PYTHON — DETECCIÓN CON confusables + dnstwist
# pip install confusables unicodedata2 dnstwist import unicodedata from confusables import is_confusable def detect_homograph(domain: str) -> dict: findings = [] for i, char in enumerate(domain): code = ord(char) if code > 127: name = unicodedata.name(char, 'DESCONOCIDO') confusable = is_confusable(char, preferred_aliases=['latin']) findings.append({ 'char': char, 'index': i, 'unicode': f'U+{code:04X}', 'name': name, 'confusable_with': confusable }) # Normalizar NFKC para comparar con dominios conocidos normalized = unicodedata.normalize('NFKC', domain).lower() return { 'original': domain, 'normalized': normalized, 'findings': findings, 'is_suspicious': len(findings) > 0 } # Generar variantes look-alike para monitorización # dnstwist --registered --json example.com
🛠️HERRAMIENTAS DE DETECCIÓN Y MONITORIZACIÓN
HerramientaTipoFunciónUso
dnstwistCLIGenera variantes de un dominio y comprueba cuáles están registradasMonitorización proactiva
URLcrazyCLIGenera variantes typosquatting y look-alikeRed team / Blue team
confusables (Python)LibreríaDetecta caracteres Unicode confusables según Unicode.orgValidación en código
unidecode (Python)LibreríaConvierte Unicode a ASCII equivalente detectando substitucionesNormalización
PhishTankWebBase de datos colaborativa de URLs de phishing verificadasConsulta de URLs
VirusTotalWeb/APIAnálisis de URLs y dominios contra múltiples motoresVerificación URL
Whois + crt.shWebVerificar datos de registro y certificados de un dominioInvestigación OSINT
Punycode ConverterWebConvertir entre Punycode y Unicode visualmenteVerificación manual
#09 Quiz de Conocimiento
📝 Instrucciones: 10 preguntas para evaluar tu comprensión del módulo. Una sola respuesta correcta por pregunta.