
Exploitation de la vulnérabilité .lnk et des mécanismes de gestion du système d'exploitation concernant explorer.exe et les clés USB.
Créer 1 raccourci + 1 .DLL contenant un payload malveillant => Le mettre sur une clé USB et l'envoyer à la victime => la victime ouvre la clé USB => le payload se déclenche automatiquement !
Tout d'abord, nous devons savoir exactement d'où vient cette faille ! Elle provient de la fonctionnalité nommée Plug-and-Play. Le système d'exploitation détecte automatiquement le périphérique, alloue les ressources et charge le pilote approprié pour qu'il fonctionne immédiatement sans redémarrer la machine. Lorsque vous branchez une clé USB et ouvrez le dossier avec l'Explorateur Windows explorer.exe, le système d'exploitation analyse les fichiers pour afficher l'icône correspondante à l'utilisateur !
Depuis les anciennes versions de Windows, Microsoft voulait que les raccourcis (.lnk) pointant vers les fonctionnalités du Panneau de configuration (qui sont en réalité des fichiers .cpl ou .dll) puissent afficher des icônes dynamiques de manière flexible. Par conséquent, la bibliothèque de gestion d'interface centrale de Windows, shell32.dll, a été conçue avec une fonction nommée CPL_LoadCPLModule
Utilisation aveugle de LoadLibrary : Pour obtenir l'icône d'un fichier Applet du Panneau de configuration, le système d'exploitation ne lit pas un simple fichier image statique mais utilise la fonction LoadLibraryW pour charger directement toute la bibliothèque de liens dynamiques dans l'espace mémoire du processus explorer.exe. Après le chargement, il appelle une fonction d'export standard nommée CPlApplet pour obtenir l'icône à afficher à l'écran
Pour prouver que LoadLibraryW est réellement impliquée dans la chaîne d'exploitation ci-dessus :
1/ Activez
x64dbg avec les droits administrateur2/ Attachez-vous à
explorer.exe3/ Tapez la commande
bp LoadLibraryW4/ Appuyez sur F9 pour laisser
explorer.execontinuer à s'exécuter5/ Branchez la clé USB et le
point d'arrêt sera atteintimmédiatement !
J'ai rencontré un problème : la chaîne d'exploitation restait totalement silencieuse. J'ai essayé de vérifier et de déboguer diverses choses, mais je n'arrivais pas à trouver de correctif ! Ensuite, j'ai essayé de trouver le PoC de quelqu'un d'autre pour le tester, mais il échouait aussi !
Cependant, après être parti déjeuner et être revenu, j'ai retrouvé ma concentration et mon calme. J'ai commencé à me poser la question : pourquoi le PoC de ce type fonctionne-t-il alors que sur ma machine il ne fonctionne pas ? OK, j'ai commencé à désassembler légèrement le .lnk et le .dll de ce type et j'ai découvert deux choses !
1 / Mon .dll était plus long que le sien ! Mais ce n'est pas grave, ce n'était pas le problème !
2 / En passant le .lnk dans HxD pour lire les chaînes de caractères, j'ai découvert que ce type n'utilisait pas un chemin relatif mais un chemin absolu !
Relatif : ../example.dll
Absolu : O:/example.dll
OK, le correctif maintenant est le suivant : nous devons savoir sous quelle lettre de lecteur la clé USB sera automatiquement nommée sur la machine de la victime, puis attribuer le chemin absolu en conséquence. Comme sur mon Windows 7, brancher la clé USB lui attribue toujours la lettre F, ma syntaxe de construction est donc :
python Make_PoC.py FakeGoogleChrome F:\Pwned.dll
Comme il s'agit d'une faille relevant de la conception architecturale du système (défaut logique/architectural) et non d'un débordement de mémoire, Microsoft a dû modifier complètement la gestion du Panneau de configuration :
.cpl ou .dll chargés par un processus système soient signés numériquement par Microsoft ou se trouvent dans des dossiers système strictement protégés (comme System32) afin d'éviter toute faille de type « Binary Planting » à partir d'une clé USB.explorer.exe, les nouvelles versions de Windows exécutent les applets du Panneau de configuration via un processus intermédiaire isolé (comme dllhost.exe ou rundll32.exe). Si la DLL plante ou contient un code malveillant, cela ne fera planter que le processus intermédiaire sans pouvoir prendre le contrôle de tout le système d'interface utilisateur.Recherche VN
PoC
Outil de construction du .lnk vulnérable