Attacchi omografi IDN: come i caratteri "gemelli" ingannano i tuoi utenti (e come fermarli)
Un dipendente riceve un'email da un dominio che conosce bene, clicca e il sito è identico all'originale, con il lucchetto SSL verde e attivo, eppure le credenziali inserite finiscono nelle mani sbagliate. Non è un errore umano, è un attacco omografo, e il certificato SSL valido non c'entra nulla con l'autenticità del dominio.
Un attacco omografo IDN registra un dominio con lettere di alfabeti diversi (cirillico, greco) identiche a occhio nudo a quelle latine, così un indirizzo come paolo-rossi.com può avere un gemello ingannevole, tecnicamente diverso e con SSL valido proprio, usato per il phishing. Si riconosce controllando il Punycode, la forma xn-- del dominio, che browser come Chrome e Safari mostrano già in automatico nei casi sospetti.
In parole semplici: immagina di dover distinguere due gemelli identici solo dal loro nome scritto su un badge, ma qualcuno ha stampato uno dei due badge con un font leggermente diverso, invisibile a occhio nudo. Per te sono la stessa persona, ma il sistema che controlla gli accessi li riconosce come due individui completamente diversi. Con i siti internet succede la stessa cosa: alcune lettere di alfabeti diversi (come il cirillico o il greco) sono disegnate in modo identico alle nostre lettere latine, ma per il computer sono caratteri differenti, quindi un indirizzo web può sembrare quello della tua banca o del tuo fornitore ed essere invece un sito costruito apposta per rubare le tue credenziali.
Cosa sono gli attacchi omografi IDN
Un IDN Homograph Attack sfrutta i domini internazionalizzati (IDN), lo standard che permette di registrare indirizzi web con caratteri non latini come il cirillico, il greco o gli alfabeti estesi, e il problema è che molti di questi caratteri sono, a livello visivo, indistinguibili dalle lettere latine standard, pur avendo un codice Unicode completamente diverso.
Punycode reale del dominio ingannevole: xn--polo-rssi-v1g15j.com
Per un occhio umano le due stringhe sono identiche. Per DNS e browser sono due domini completamente distinti, con proprietari, certificati e infrastrutture diverse. Il meccanismo che rende tutto questo possibile si chiama Punycode, ovvero la rappresentazione ASCII di un dominio Unicode, riconoscibile dal prefisso xn--. Ogni volta che digiti un IDN, il browser lo traduce internamente in Punycode per interrogare il DNS, per poi ri-mostrartelo in Unicode nell'indirizzo, ed è proprio in questo passaggio di traduzione visiva che si nasconde il rischio.
Non è una teoria, i precedenti sono reali
Il problema non è nuovo. Nel 2005 il ricercatore Eric Johanson dimostrò a ShmooCon che Firefox 1.0, Safari 1.2.5 e Opera 7.54 mostravano come autentico un dominio PayPal contraffatto con una "a" cirillica al posto di quella latina. Nel 2017 Xudong Zheng registrò un dominio Punycode che i principali browser convertivano in una versione visivamente identica ad apple.com, riaprendo pubblicamente la questione, e sempre nel 2017 il ricercatore Ankit Anubhav individuò una campagna che sfruttava un dominio omografo di Adobe per distribuire il trojan Betabot. Da allora Chrome, Firefox e gli altri browser hanno rafforzato i controlli, ma nessuna protezione nativa è infallibile al cento per cento, soprattutto fuori dal browser, perché email, social e messaggistica restano vettori scoperti.
Come difendere utenti e infrastrutture: tre livelli di controllo
1. Forzare la visualizzazione in Punycode
Chrome e Safari applicano già in modo nativo un rilevamento dei mix di alfabeti sospetti, il cosiddetto mixed-script detection, e mostrano il Punycode quando un dominio appare ambiguo. Firefox invece non lo fa di default, e l'opzione che forza sempre la visualizzazione in Punycode si chiama network.IDN_show_punycode ed è disattivata per impostazione predefinita, quindi per attivarla su un parco browser aziendale va impostata su true in about:config, oppure distribuita via policy con il file mozilla.cfg per tutta l'organizzazione.
2. Controlli lato endpoint e DNS
I filtri DNS e il safe browsing bloccano gran parte dei domini malevoli noti, ma non sempre intercettano un dominio omografo appena registrato, quindi un secondo livello di verifica, a livello di endpoint, che analizzi in tempo reale il set di caratteri effettivamente usato nella pagina o nel dominio visitato, permette di intercettare mix anomali di alfabeti prima che l'utente inserisca dati sensibili.
3. Strumenti di analisi per incident response
In fase di investigazione, l'URL va scomposto nei suoi singoli code point Unicode e non semplicemente letto. CyberChef, lo strumento open source sviluppato da GCHQ, include l'operazione dedicata "To Punycode" (e la sua inversa "From Punycode") proprio per questo tipo di analisi, e permette di individuare esattamente quale carattere, di quale alfabeto, è stato sostituito: un passaggio utile per motivare un blocco a livello di firewall o EDR durante una perizia o un'indagine forense.
| Controllo | Dove si applica | Effetto |
|---|---|---|
| network.IDN_show_punycode = true | Firefox, via about:config o policy GPO | Mostra sempre xn-- invece dell'Unicode |
| Mixed-script detection nativa | Chrome, Safari | Già attiva di default sui domini ambigui |
| Analisi code point (es. CyberChef) | Incident response, perizia informatica | Identifica l'alfabeto esatto usato nell'attacco |
| Formazione utenti | Tutta l'organizzazione | Utile ma insufficiente da sola |
Le domande che le persone cercano su Google
Come faccio a capire se un sito che sto visitando è falso anche se nella barra dell'indirizzo vedo il lucchetto verde e la connessione sicura?
Perché un link che sembra quello della mia banca o del mio fornitore in realtà porta a un sito diverso anche se scritto in modo identico?
Cosa significa quando un indirizzo internet inizia con xn-- invece del nome del sito che conosco?
È possibile che un'email arrivi da un indirizzo praticamente identico a quello del mio fornitore abituale e sia comunque una truffa?
Esistono estensioni del browser che avvisano quando un dominio usa caratteri di alfabeti diversi mescolati tra loro?
Domande frequenti
Cos'è un attacco omografo IDN?
Un certificato SSL valido garantisce che il dominio sia autentico?
Come riconosco un dominio in Punycode?
La formazione degli utenti è sufficiente?
Se il dubbio riguarda proprio un caso che ti è capitato, un'email o un sito che ti sembra sospetto, scrivici e ti aiutiamo a capire di cosa si tratta. Contattaci qui.
Riconoscere un attacco omografo a occhio nudo è, per definizione, quasi impossibile, ed è un problema di configurazione tecnica e di processo prima ancora che di attenzione individuale. Quando un dominio sospetto è già stato cliccato, o quando serve ricostruire con precisione come un attacco di questo tipo si è verificato all'interno della tua organizzazione, la parte più delicata non è la teoria ma la prova: individuare i code point esatti usati, ricostruire la cronologia degli accessi, mettere tutto nero su bianco in una forma che regga anche in sede legale. È esattamente il lavoro che facciamo con le nostre attività di digital forensics e incident response, dall'analisi tecnica del dominio fino alla perizia utilizzabile a supporto di denunce, cause civili o procedimenti assicurativi.
Come sta affrontando la tua organizzazione questo tipo di rischio, sui browser aziendali e nei processi di incident response? Se hai il sospetto di essere già stato coinvolto in un attacco simile, o vuoi semplicemente capire quanto la tua infrastruttura sia esposta, siamo a disposizione per una prima valutazione.
ContattaciArticoli correlati
Se il tema della sicurezza digitale ti interessa, qui trovi altri approfondimenti utili, oltre ai servizi con cui Alchimie Digitali affianca le aziende su questo fronte, dai test di phishing simulato alla formazione anti-phishing rivolta sia agli addetti che al board.
Se sospetti di essere già stato coinvolto in un attacco di questo tipo, o vuoi semplicemente far verificare quanto la tua azienda sia esposta a domini omografi e phishing mirato, scrivici e fissiamo insieme una prima valutazione tecnica.
Contattaci per una valutazioneRFC 3492, IETF, "Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)" - datatracker.ietf.org