Punycode et homographes : quand un faux domaine ressemble au vrai
Regardez ces deux adresses : paypal.com et pаypal.com. Elles sont identiques ? Pour nos yeux, oui. Pour un ordinateur, pas du tout : dans la seconde, le deuxième « а » est une lettre de l'alphabet cyrillique, pas un « a » latin. Ce sont deux domaines différents, qui peuvent appartenir à deux personnes différentes. C'est le principe des attaques par homographes, et pour les comprendre, il faut faire un petit détour par la façon dont Internet écrit les noms.
Unicode, ASCII et Punycode : trois mots, une idée simple
À l'origine, les noms de domaine n'acceptaient qu'un tout petit alphabet, appelé ASCII : les lettres de a à z sans accent, les chiffres et le tiret. Pas de « é », pas de « ü », et encore moins d'arabe, de chinois ou de cyrillique.
Or le monde écrit dans des dizaines d'alphabets. Unicode est le grand catalogue qui donne un numéro à chaque caractère de chaque écriture : le « a » latin porte le numéro U+0061, le « а » cyrillique le numéro U+0430. Même dessin, numéros différents.
Pour permettre des noms de domaine dans toutes les langues sans changer tout le réseau, on a inventé un traducteur : le Punycode. Il transforme un nom écrit en Unicode en un nom qui n'utilise que l'alphabet ASCII, et le signale par le préfixe xn--. Le navigateur affiche la belle version ; le réseau, lui, ne voit que la version traduite.
Comment fonctionne un domaine en « xn-- »
Prenons un exemple tout à fait honnête : le domaine société.fr. Le réseau ne sait pas lire « é ». Le Punycode met de côté les lettres spéciales, garde les lettres ordinaires, et ajoute à la fin un petit code qui dit où replacer les accents :
société.fr → xn--socit-esab.fr
On retrouve « socit » (les lettres ordinaires), puis « esab », le code qui indique quels caractères insérer et où. Le préfixe xn-- prévient simplement : « attention, ce nom a été traduit ». Des millions de noms légitimes fonctionnent ainsi, en allemand, en arabe, en chinois, en russe. Un xn-- n'est donc pas suspect en soi. Il devient suspect quand il imite une marque connue.
Les attaques par homoglyphe : les faux jumeaux
Un homoglyphe, c'est un caractère qui ressemble à s'y méprendre à un autre. Et Unicode en contient beaucoup : le « а », le « е », le « о », le « р » et le « с » cyrilliques sont des sosies parfaits de nos a, e, o, p et c. Le « ο » grec imite le « o ».
L'arnaqueur achète un domaine où une ou plusieurs lettres sont remplacées par leur sosie. En 2017, un chercheur l'a démontré de façon spectaculaire : il a enregistré xn--80ak6aa92e.com, qui s'écrit аррӏе.com avec des lettres entièrement cyrilliques, et plusieurs grands navigateurs affichaient alors tout simplement « apple.com » dans la barre d'adresse. Les navigateurs ont depuis corrigé ce cas.
Pourquoi l'adresse peut sembler légitime
Les navigateurs modernes appliquent des règles de prudence : quand un nom mélange des alphabets de façon suspecte, ou ressemble trop à un domaine connu, ils affichent la forme xn-- au lieu de la belle version. C'est une bonne protection, mais elle a des limites :
- ailleurs que dans la barre d'adresse, ces règles ne s'appliquent pas toujours : dans le texte d'un e-mail, un SMS, un document PDF ou une messagerie instantanée, la version « déguisée » s'affiche telle quelle ;
- les règles varient d'un navigateur, d'une version et d'une application à l'autre ;
- un regard pressé, sur un petit écran, ne voit pas la différence entre deux caractères identiques. Et il n'y a pas toujours besoin d'Unicode :
rnimitem,1imitel, comme l'explique le guide Phishing : comment les arnaqueurs font passer leurs e-mails.
Et comme pour tout domaine piégé, le site peut avoir un certificat HTTPS valide et un joli cadenas : ils prouvent que la connexion est chiffrée, pas que le site est honnête.
Comment vérifier réellement un domaine
Face à un doute, on ne se fie pas à ce que l'on voit, on fait parler le vrai nom :
- On ne clique pas. On copie le lien (clic droit, « copier l'adresse du lien »).
- On le colle dans un convertisseur Punycode (il en existe beaucoup, gratuits, en ligne) : si une forme
xn--apparaît pour un nom censé être tout à fait ordinaire, c'est un piège. - On isole le domaine : la partie juste avant le premier « / ». Le guide Quishing : quand le phishing se cache derrière un QR code détaille cette lecture.
- On passe par un chemin sûr : un favori enregistré soi-même, ou l'application officielle. Un gestionnaire de mots de passe aide aussi : il ne se laisse pas tromper par un sosie et ne propose rien sur un faux domaine.
Baitback fait une partie de ce travail automatiquement : quand on y colle un e-mail, il signale les liens en Punycode (forme xn--) et les domaines sosies des marques qu'il connaît, y compris par homoglyphe, et vérifie aussi la destination finale après redirections.
Identifier le registrar et l'hébergeur
Pour faire disparaître le domaine, on cherche qui l'a vendu et qui l'héberge. On utilise toujours la forme xn-- dans les outils de recherche : c'est le vrai nom, celui que connaissent les registres.
- Une recherche RDAP ou WHOIS sur le domaine donne le registrar, son adresse de signalement (« abuse ») et la date de création du domaine. Un sosie de marque créé la semaine dernière ne laisse guère de doute.
- L'adresse IP du site permet de trouver son hébergeur, ou le CDN placé devant lui, qui accepte lui aussi les signalements et les transmet.
Le registrar est ici l'acteur le plus efficace : un domaine qui imite une marque par homoglyphe est un cas d'abus très clair, et la suspension du nom coupe d'un coup le site, les e-mails et toutes les pages associées.
Signaler le domaine
Un bon signalement tient en quelques lignes : la forme Unicode et la forme xn-- du domaine, la marque imitée, l'adresse complète de la page, une capture d'écran, la date et l'heure. On l'envoie au registrar et à l'hébergeur ou au CDN, et on prévient la marque imitée.
Si le domaine est arrivé par e-mail, on commence par Baitback : on colle la source complète du message, l'outil retrouve le serveur d'envoi et son hébergeur, relève les liens suspects et prépare les messages de signalement. Il rappelle aussi les plateformes des navigateurs (Google Safe Browsing, Microsoft, Netcraft…), qui peuvent afficher un avertissement rouge à tous les visiteurs en quelques heures.
- Deux lettres identiques à l'œil peuvent être deux caractères différents pour l'ordinateur : c'est l'homoglyphe.
- Le Punycode traduit les noms en Unicode en une forme ASCII qui commence par
xn--. - Un
xn--n'est pas suspect en soi, mais il l'est dans un nom censé être ordinaire ou qui imite une marque. - On vérifie un domaine en copiant le lien, pas en le regardant, et on passe par un favori ou l'application officielle.
- On signale au registrar avec les deux formes du nom : la suspension coupe tout d'un coup.