Il s'agit d'une technique d'injection de DLL de l'Explorateur Windows qui utilise la boîte de dialogue de changement d'icône sous Windows.
Tout d'abord, un dossier est créé dans le répertoire temporaire et les propriétés du dossier sont ouvertes à l'aide de SHObjectProperties. Pour récupérer le handle de la fenêtre indépendamment de la langue du système, EnumWindows est utilisé avec une fonction de rappel qui vérifie le nom du dossier distinct dans chaque fenêtre ouverte.
Via la page de propriétés, la boîte de dialogue de changement d'icône est invoquée, dont le handle est également récupéré avec EnumWindows. Enfin, le chemin de l'icône est remplacé par une DLL (qui a une extension .ico dans ce cas), ce qui oblige l'explorateur à charger la DLL après avoir appuyé sur le bouton OK.
L'"icône" est en fait un simple fichier DLL avec une extension .ico qui ouvre l'application de calculatrice avec une ressource d'icône qui a été ajoutée à l'aide de Resource Hacker.
Il existe quelques anomalies en ce qui concerne l'apparence de l'icône dans la vue des dossiers. J'ai testé cela sur deux versions différentes de Windows 10 (la plus récente et l'ancienne) et sur Windows 11.
Sur les deux versions de Widnows 10, l'icône stockée dans la DLL ne s'affichait pas lorsque l'extension était remplacée par .ico.
Cependant, sur la dernière version de Windows 10, cela a fonctionné jusqu'à ce que j'essaye d'ouvrir « l'icône » à l'intérieur de l'application photo. Depuis, je n'ai pas pu le recréer.
Sous Windows 11, l'icône s'affichait comme une icône normale dans la vue Explorateur. Cependant, lors de son ouverture dans l’application photo, une erreur s’affiche.
Ce comportement est certainement intéressant, puisqu'un utilisateur qui souhaite simplement changer l'icône d'un dossier peut à la place injecter une DLL malveillante dans son explorateur. Cela pourrait ressembler à ceci :
Il s'agit d'un moyen très furtif d'injecter une DLL dans le processus Explorer car il n'utilise pas l'API habituelle d'injection de DLL. Il produit deux courtes fenêtres contextuelles, qui ne sont cependant pas trop dérangeantes. Il peut donc être utilisé comme technique d’évasion antivirus par un acteur malveillant pour exécuter du code via le processus d’exploration légitime ou pour charger un rootkit UMD.
De plus, la diffusion de DLL masquées sous forme de fichiers .ico peut constituer un vecteur d’attaque intéressant.
Pour obtenir les bonnes poignées de fenêtre, j'ai utilisé Spy++, qui est un outil installé avec Visual Studio.
Un grand merci à Bill G. de Microsoft pour la magnifique icône de dossier !
Merci, gars au hasard sur Internet, pour la belle icône d'injection !