La technique du RTLO pour “Right To Left Override” en guise de camouflage (spoofing) d’extension de fichier n’est pas nouvelle, mais reste relativement méconnue. Longtemps exploitée pour rendre l’apparence de malware inoffensif, il convient de s’attarder sur cette technique qui fonctionne à merveille sur tous les Windows (XP, 7 et 8).
Le RTLO est un caractère unicode (\xe2\x80\xae) dont son équivalent inverse est le LTRO (Left To Right Override) (\xe2\x80\xad). Ces caractères permettent d’engendrer l’inversion de la chaîne de caractère qui suit pour une lecture de gauche à droite ou de droite à gauche. A l’origine exploité pour renverser des chaînes de caractères pour une langue précise qui se lit de droite à gauche, ce caractère permet de camoufler aisément des noms de fichiers potentiellement dangereux.
Il est ainsi possible au travers du RTLO de rendre le nom d’un fichier exécutable (.exe) camouflé au sein d’un fichier plus anodin comme un PDF, DOC, XLS ou JPG. L’idée est d’insérer le caractère RTLO dans le nom du fichier, ce qui inversera la suite du nom pour lui donner une autre apparence. Couplé à un changement d’icône judicieux de l’exécutable, les attaquants raffolent de cette méthode pour infecter des victimes.
Prenons l’exemple de la commande Windows que l’on transforme en un fichier RAR. Il convient tout d’abord de changer l’icône du programme cmd.exe par celui d’un fichier RAR simple. Le très connu “Resource Hacker” permet de réaliser cela sans difficulté :
On choisi une nouvelle ressources banales pour ses icônes, comme “WinRAR.exe” :
Enregistrement du nouvel exécutable dans les icônes ont été modifiés. Ne pas oublier de vérifier que l’exécutable est toujours fonctionnel après modification :
Une fois le programme avec l’icône qui convient, la tâche d’injection du RTLO dans son nom est réalisable. Pour cela, il faut définir le futur nom d’intérêt de l’application. Dans le cas présent, l’icône étant celui d’un fichier .rar, il convient que l’extension finale sera celle-ci. Il faut noter également que l’extension “.exe” ne disparaîtra pas complètement du futur nom de l’application, sinon celle-ci ne sera plus fonctionnelle. Le nom final doit donc répondre au masque suivant “*rar.exe” avec ce que l’on souhaite à la place de l’étoile. Par exemple :
- “Document annrar.exe” avec injection du RTLO : “Document ann[RTLO]rar.exe” pour produire finalement “Document annexe.rar”
- “Srar.exe” avec injection du RTLO : “S[RTLO]rar.exe” pour produire finalement “Sexe.rar”
L’injection du RTLO est très aisée sous Windows Vista, 7 ou 8, puisque directement utilisable via le menu contextuel :
Il suffit de placer son curseur au bon endroit dans le nom du fichier (dans notre cas, juste avant “rar.exe”), de faire un clique droit, “Insérer un caractère de contrôle unicode” puis finalement choisir “RLO”.
Notre nom de fichier devient à présent anodin, avec un icône “passe-partout” et lorsque celui-ci est lancé c’est bien la console Windows qui s’exécute :
Il est important de garder à l’esprit la dangerosité de cette technique si exploitée par des personnes malintentionnées. Il est très simple comme constaté de “spoofer” le nom d’un exécutable potentiellement infectieux.
Cette technique est fonctionnelle et testée sur toutes les Windows récents. Toutefois, si un assaillant tente d’envoyer un tel fichier en pièce jointe d’un mail, la plupart des navigateur et des serveurs de mails font un remplacement de caractères unicodes dans les noms des fichiers. Ainsi la véritable extension “.exe” sera visible et devrait, en théorie, vous alerter. Idem si de tels fichiers sont transférés via des applications comme Skype. Toutefois, si un fichier infectieux avec un nom comportant un RTLO est lui même archivé (via WinRAR par exemple) pour être envoyé par mail, alors la victime ne verra que du feu, car WinRAR traduit bien les RTLO au sein de ses archives :