Spoofing d’extension et falsification d’adresses URL

Avant de parler hacking,  spoofing d’extension et de lien hypertexte je commencerais par un peu de pratique.

L’Unicode c’est quoi

Vous avez du le remarquer les touches de nos claviers sont encombrées! on trouve plusieurs signes par touche et non pas un et un seul caractère comme les bonnes vieilles machines à écrire qu’on utilisait dans la série policière TV de 1643 avec l’inspecteur « Derrick » 🙂
Figurez vous qu’avec Internet, la mondialisation et l’abolition des frontières électronique, nous naviguons dans plus de 90 scripts (langues, symboles …) et plus de 109000 caractères que nos Pcs doivent gérer si le besoin s’en fait ressentir. Comment s’en sortir? Grâce à l’Unicode, c’est une organisation qui identifie tous ces caractères et qui leur attribue un identifiant unique (appelé point de code). voici un exemple de ce qui, pour nous, peut paraitre un dérivé de la lettre e, alors que pour d’autres c’est notre « e » qui est bizarre 🙂

e é è ê ë ē ĕ ė ę ě ǝ ȅ ȇ ȩ ɇ ɘ ə ѐ ё ӗ

L’unicode qui aujourd’hui est à sa version 6.0 est constitué de « plans » à l’intérieur desquelles il y a des « blocs » comme par exemple le bloc latin que nous utilisons tous les jours ou le bloc arabe, le bloc grec étendu, le bloc des pictogrammes de commande ou encore le bloc des symboles mathématique.

Pour chaque blocs qui sont regroupés dans un plan auquel on attribue un numéro d’identification (plan 0, plan 1, plan 2 …) on attribue une plage d’identifiant (appelé point code). ces identifiant sont des nombres hexadécimaux qui suivent le signe « U+ » pour dire identifiant Unicode ou en anglais LDH (Letter Digit Hyphen). Par exemple les caractères du blocs latin de base sont codé de U+0000 à U+007f, un opération simple que vous pouvez faire avec la calculatrice Windows vous dira que cela revient en décimal à dire de 0 à 127. la lettre A par exemple est identifiée par le U+0041 (si on veut l’afficher sous Java ou Google Dart par exemple il faut l’écrire \u0041, si vous voulez utiliser ce code dans une page HTML il faudra écrire &#x0041 sans oublier le x qui force la valeur a être lu en hexadécimale et non décimal ) la lettre B par U+0042 etc.. etc… Pour donner un autre exemple (pour rester toujours dans le plan 0) le bloc de la langue arabe utilise les point de code allant de 0600 à 06FF (ce qui fait 256 combinaisons).

Si vous essayer d’afficher un caractère dans une langue ou en langage Unicode dans un bloc non géré par votre PC vous verrez que votre système essaiera de vous donner une réponse alternative qui dépend du programme utilisé. Il y a généralement deux cas qui sont observés, l’affichage simple d’un point d’interrogation en remplacement des caractères non affichés ou alors l’affichage d’une case dans laquelle est écrit le point de code de l’élément qui n’a pas pu être affiché (dans l’exemple donné il s’agit du code U+48F7).

Unitrix Exploit (ouaiiiiiiiis!!!!!)

Dans ce que j’ai présenté plus haut, j’ai omis de dire qu’on attribue un point de code pas seulement aux caractères mais à tout!! Les touches entrée, Basckspace pour effacer en arrière ou encore échappe (ESC) ont leur propre code.

Il existe aussi un code particulier qui lui est à la base de nombreux soucis le fameux Right To Left Override RTLO dont le code est +202E. Il est utilisé dans la langue arabe lorsqu’on veut écrire de droite à gauche. c’est lui qui nous permettra d’utiliser ce qu’on appelle l’Unitrix Exploit permettant ainsi de faire du spoofing (usurpation ou modification) d’extension de fichier (vous faire croire qu’un fichier est une image alors que c’est par exemple une application) ou de lien hypertexte.

Comment ça marche?

Étape 1: je récupère le caractère u+202E en faisant Windows+R puis en écrivant charmap (programme windows diminutif de character map) puis je valide

Étape 2:  une fois le programme charmap lancer vous cocher affichage avancé (1) puis vous rentrez le code du caractère RTLO 202E (2) ensuite vous cliquez sur sélectionner (3) puis enfin copier (4)

Étape 4 vous avez le code dans le presse papier et vous l’utiliser pour faire du spoofing 🙂

Remarque certains programme accepte un glisser déplacer du caractère provenant de « charmap »

le Principe d’utilisation de RTLO?

Utilisé pour écrire en arabe, il force l’écriture de droite à gauche par exemple si j’écris bonjour de droite à gauche cela affichera: ruojnob. Par contre utilisé en milieu de mot le sens de l’écriture ne change que lorsqu’on rencontre le caractère RTLO, par exemple si je tape 12345[RTLO]6789 cela m’affichera 12345‮6789‮

Tout ce qui est après le RTLO sera inversé 🙂

Comment faire du spoofing d’extension:

Tout d’abord il faut autoriser (ou demander) l’affichage des extensions par Windows qui par défaut masque l’extension évitant de nombreux soucis de renommage par les non initiés (sur window7 la gestion est meilleure car même avec l’extension affichée, il faut forcer pour pouvoir y toucher)

donc on lance avec Windows+R « control folders »

Ensuite dans l’onglet affichage on décoche la fameux Masquer les extensions des fichiers dont le type est connu

Bien une fois notre extension présente il suffit juste de retenir cette règle:  je renomme le fichier à modifier (sélection du fichier puis F2), je me positionne juste avant le . de l’extension, je colle le caractère RTLO et j’écris l’extension voulue mais à l’envers par exemple gpj pour qu’il affiche jpg ou 3pm pour afficher mp3.

La petite touche de l’artiste 🙂

Notre fichier s’appelle a présent calexe.jpg ce qui n’est ni charmant et ni attirant et en plus ça donne même pas envie de pondre une vanne dessus! Bref… on utilisera le principe de la plupart des virus envoyer par mail ou le nom de fichier attire 🙂 comme par exemple samantha.jpg ou iloveyou.vbs. le problème c’est qu’il faut garder ce « exe. »et ne pas y toucher (c’est l’extension réelle du fichier) il faut chercher un mot ou combinaison de mots contenant les 3 lettres exe au début ou à la fin et on va en plus du  RTLO (U+202E)  devoir faire appel à LTRO (U+202D): voici deux exemples

  • un mot commençant par .exe (attention le point doit rester)

calc.exe –> camille.exercice.gym.jpg

on écrit donc:

[RTLO]gpj.mygyecicr[LTRO]camille[LTRO].exe

Comment l’écrire?

Tout se passer sur le programme charmap,

  1. Tout d’abord dans « grouper par » on choisis Rangé Unicode puis dans la liste qui apparait on va sur « Ponctuation générale » (c’est le bloc de caractère qui contient RTLO et LTRO)
  2. Ensuite dans la zone de texte caractères à copier on écrit: [RTLO]gpj.mygyecicr[LTRO]camille[LTRO].exe
  3. On sélectionne [RTLO] et on double clique sur la case correspondant à U+202E
  4. Ensuite on sélectionne chaque [LTRO] et on double clique sur la case correspondant à U+202D
  5. Puis enfin on copie le résultat et on renomme avec notre fichier.

On copie le résultat et on renomme avec notre fichier.


Des mots terminant par exe en français seraient par exemple: annexe, biconvexe, circonflexe, complexe, connexe, décomplexe, désannexe, indexe, duplexe, perplexe, réflexe, simplexe, télexe, vexe.

L’Astuce!!

C’est bête j’aurais pu le dire plus tôt !!!  il existe une combinaison de touches qui vous permet d’avoir un raccourci vers n’importe qu’elle caractère Unicode sans avoir a passer par charmap, pour le RTLO il faut faire:

Maintenir appuyer simultanément CTRL + SHIFT et taper la combinaison de touche, une touche après l’autre (sans lacher le CTRL ni le shift: u 2 0 2 e

Cela donne donc CTRL+SHIFT + u + 2 + 0 + 2 + e

Seulement le problème c’est que cela ne marche que sur l’explorateur Windows d’où le besoin de connaitre « charmap ».

Falsification de liens hypertexte:

Ici c’est un petit peu plus vague. A la base, le spoofing est une technique de confusion, une partie de chirurgie esthétique parfaitement bien faite qui ne laisse planer aucun doute sur l’identité du site auprès du visiteur (je ne parle pas du phishing qui est le site frauduleux, je parle de la falsification de lien pouvant aider le phishing). En d’autre terme c’est une sorte de contre façon qui s’opère au niveau du domaine et donc de l’adresse URL

1ère technique, utilisation de caractères sosies 🙂

On utilise deux caractères proche d’un point de vu visuel mais qui n’appartiennent pas au même bloc (généralement il appartiennent au Plan zero de la grille unicode le PMB)

Exemple dans le bloc Latin étendu B on a le point U+0185 qui est très proche du b on peut donc créer avec une fausse adresse facebook:

Le test: www.facebook.com  & www.faceƅook.com (vous verrez que le second ne mène à rien)

Ops! vous utilisez Firefox!!! et ben firefox et l’un des rares navigateurs qui évite a ces utilisateurs le spoofing d’adresse 🙂 les « suspicious IDN adress« 

Un autre exemple: regardons la table des caractères de bloc Unicode Cyrillique (utilisé pour le grec) et observez les point de code U+0430 « а », U+0435 « е » et U+043E « о »

Faisons le test: www.google.com & www.gооgle.com

2ème technique, plaque d’immatriculation 🙂

vous avez du le voir dans un film, ces plaques extravagantes qui laisse libre cours à l’imagination, un type se pointe, il demande la plaque « the boos » et paf! manque de pot elle n’est pas disponible, que fait t’il? il change les « o » avec des « 0 » (zéros) pour avoir enfin la plaque « the b00s » 🙂 on voit pas trop la différence et c’est ce qui est voulu!

Pour le cas de Google on peut très bien écrire www.g00gle.com et la Firefox n’y voit que du feu car les deux caractères (la lettre o et le chiffre 0) sont dans le même bloc du PMB (Plan Unicode 0).

Bien sur l’attaquant ne vous fournira pas une adresse susceptible d’être lu rapidement, om va la noyer dans un tonne de variable passer en get et d’option loufoque pour faire de: https://www.g00gle.com on aura https://www.g00gle.com/search?q=recherche+scientifique&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:fr:official

pour facebo0k ou en utilisant aussi le « 1 » c’est pareil, m1cros0ft, le cred1t lyonnais, la 3anque p0pula1re etc etc…

3ème technique utilisation de RTLO seulement!

Pourquoi seulement? bien qu’on ai vu qu’en jouant avec RTLO et LTRO on pouvais créer l’inimaginable!

voir l’RFC3491 et surtout a spécification de l’RFC3454 qui est claire sur ce point! pas d’utilisation simultanée de RTLO et LTRO. Donc dans notre cas la seule chose intéressante c’est RTLO qui doit être mis au tout début du lien URL.

Voici quelques exemples

[RTLO] http://www.sitemechant.com/moc.koobecaf.www//:ptth

donnera http://www.facebook.com/moc.tnahcemetis.www//:ptth

ou alors

[RTLO] http://www.site.com/?gnal=hcraes?moc.elgoog.www//:ptth

qui donne http://www.google.com?search=lang?/moc.etis.www//:ptth

Ici le principe est plus « sain » si on peut se permettre d’utiliser ce terme dans une telle situation. Pour un attaquant, l’utilisation du point d’interrogation va grandement lui faciliter la tache il peut se permettre par exemple car ce qui est après le point ? sont des paramètre dont il n’a pas besoin.

4ème technique La faute d’orthographe qui tue

On essai de modifier en ôtant ou rajoutant une lettre dans l’adresse puis en prenant soin comme dans les autres cas d’enregistrer le domaine a son nom. par exemple :

http://twitter.com/  -> en ->  http://twiter.com/

ou encore

mon blog https://tutorielsinformatique.wordpress.com -> en -> http://tutorielsinformatique.wordpresse.com

5ème technique ajout de l’arobase

l’arobase (« a » rond bas de casse) est un signe qui va permettre de faire de l’authentification, seulement si jamais on s’authentifie sur un site qui ne le demande pas ça ne causera (en principe) pas de problème

j’explique:

http://identifiant:password@url signifie qu’on va sur l’adresse « url » et qu’on donner comme mot de passe « password » pour l’identifiant « identifiant »

donc http://www.adressedevotrebanque.banque/param/rep/def:test@www.google.com

va aller sur http://www.google.com (en principe 🙂 nous verrons plus loin pourquoi?)

A quoi peut bien servir ces attaques de « spoofing »?

Dans le spoofing d’extension de fichier on peut très bien faire croire au gens que le fichier est ce qu’il n’est pas 🙂 en faisant en sortes que cette chose « qu’il n’est pas » est très recherchée par les internautes, leur faire croire au dernière album de tel ou la vidéo choquante de untel ou encore un antivirus gratuit révolutionnaire bref tout ce qui incitera l’internaute a double cliquer sur ce fichier ce qui installera un trojan permettant de prendre le contrôle de sa machine ou au minimum de surveiller ces actions à distance.

Dans le cas des adresses URL cela facilite les attaques de phishing (hameçonnage) permettant de vous voler des informations qui généralement permettrons aux personnes mal intentionnées d’usurper votre identité et causer beaucoup de dégâts.

Quelle sécurité pour nous?

Primo être attentif et prudent, bien que l’être humain peut facilement être induit en erreur. Pour ceux qui utilise par exemple firefox ils doivent savoir que de nombreuses avancés on été faite dans ce domaine 🙂

Le plus important dans tout cette histoire c’est de savoir que cela existe pour que l’on puisse savoir ou porter notre attention :o)

Advertisements

3 commentaires

  1. ça devrait fonctionner… je te répète la manip’.:)
    tu sélectionnes le fichier à renommer (qui est en principe un exécutable)
    ensuite tu te positionnes juste avant l’extension (avant le point) et tu as le choix:
    1 – Soit tu insères RTLO via CharMap comme dans l’article
    2 – Soit tu insères RTLO via le clavier avec un CTRL+SHIFT+2+0+2+E
    —>SI l’extension change de position c’est que cela fonctionne!
    A ce moment tu as juste à écrire la nouvelle extension à l’envers 🙂
    par exemple pour « jpg » tu écris « gpj », pour « mp3 » ce sera « 3pm » etc…

    Pour vérifier que cela fonctionne, dans ton explorateur de fichier sous WIndows 7 tu cliques sur la petite flèche en haut à droite qui te permet de changer la vue. dans la liste qui se déroule choisit « Détails » (sinon via le menu Affichage > Détails)
    tu devrais voir à coté du présumé fichier « jpg » ou « mp3 » voir écrit (sous la colonne Type) « Application » preuve que le spoofing fonctionne 🙂

    ________________________________________________________________
    Sinon si tu es à l’aise avec MS-DOS tu peux refaire cette manipulation en faisant la commande suivante (sous le répertoire contenant par exemple le fichier notepad.exe, pas l’originale!!! mais une copie pour test):

    ren notepad.exe notepad[RTLO]cod.exe

  2. Excellent article. En fait, je cherchais à la base des explications sur les encodages UTF-8, ISO et compagnie et un récap sur les différences. Au final, j’ai appris tout à fait autre chose mais c’était très intéressant.

    Par contre, mon programmeexe.jpg (écrit programme[RTLO]pgj.exe) ne se lance pas. Windows 7 renvoie « Cannont execute program »

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s