Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
IconJector — Injecter des DLLs dans le processus explorer à l'aide d'icônes | Kitploit
Outils/GitHubGitHub/d419h/iconjector
ExploitationPost-ExploitationIngénierie SocialeRed TeamingDéveloppement de Charges UtilesAttaque Adversariale
GitHubd419h/iconjector

IconJector

Injecter des DLLs dans le processus explorer à l'aide d'icônes

Voir le dépôt
415496il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

IconJector

Il s'agit d'une technique d'injection de DLL dans l'Explorateur Windows qui utilise la boîte de dialogue de changement d'icône de Windows.

Elle peut tromper les utilisateurs en les amenant à charger une DLL malveillante dans leur processus explorateur :

https://github.com/0xda568/IconJector/assets/61665703/06428402-764c-4279-b762-1d01082552c8

De plus, elle peut être utilisée pour injecter une DLL depuis un autre processus dans l'explorateur :

https://github.com/0xda568/IconJector/assets/61665703/bbf53775-ad8d-422b-b186-663ff5074976

Comment ça fonctionne ?

Outre le fait de contenir du code, les DLL sont également utilisées pour stocker des ressources comme les icônes. Dans la démonstration, vous pouvez voir que les icônes par défaut sont stockées dans shell32.dll :

image

En réalité, dans les versions modernes de Windows, elles sont stockées dans shell32.dll.mui, mais elles sont toujours affichées comme shell32.dll

Pour que le processus explorateur puisse afficher toutes les icônes stockées dans la DLL dans la boîte de dialogue, il doit charger la DLL en mémoire afin qu'elle puisse être analysée.

De plus, les DLL sous Windows ont la capacité de définir une fonction optionnelle DllMain, qui est appelée lorsque la DLL est chargée ou déchargée à l'aide des fonctions LoadLibrary et FreeLibrary.

Télécharger l’outil
root@kitploit:~
BOOL WINAPI DllMain(
    HINSTANCE hinstDLL,  // handle to DLL module
    DWORD fdwReason,     // reason for calling function
    LPVOID lpvReserved )  // reserved
{
    // Perform actions based on the reason for calling.
    switch( fdwReason ) 
    { 
        case DLL_PROCESS_ATTACH:
         // Initialize once for each new process.
         // Return FALSE to fail DLL load.
            break;

        case DLL_THREAD_ATTACH:
         // Do thread-specific initialization.
            break;

        case DLL_THREAD_DETACH:
         // Do thread-specific cleanup.
            break;

        case DLL_PROCESS_DETACH:
        
            if (lpvReserved != nullptr)
            {
                break; // do not do cleanup if process termination scenario
            }
            
         // Perform any necessary cleanup.
            break;
    }
    return TRUE;  // Successful DLL_PROCESS_ATTACH.
}

Cela signifie que si une DLL avec une fonction DllMain est chargée par l'explorateur, le code défini dans la fonction DllMain s'exécutera dans la mémoire de l'explorateur.

Et c'est exactement ce qui est fait ici. En plus de cela, la DLL est déguisée en icône :

L'icône

L'« icône » est en réalité un simple fichier DLL avec une extension .ico qui ouvre l'application Calculatrice avec une ressource d'icône qui a été ajoutée à l'aide du Resource Hacker. (L'icône peut également être ajoutée dans Visual Studio)

Il y a quelques anomalies en ce qui concerne l'apparence de l'icône dans l'affichage des dossiers. J'ai testé cela sur deux versions différentes de Windows 10 (la plus récente et une plus ancienne) et sur Windows 11.

Windows 10

Sur les deux versions de Windows 10, l'icône stockée dans la DLL n'était pas affichée lorsque l'extension a été changée en .ico

win10 dll

Sur la version la plus récente de Windows 10, cela a toutefois fonctionné jusqu'à ce que j'essaie d'ouvrir l'« icône » dans l'application Photos. Depuis, je n'ai pas réussi à reproduire le résultat.

new win10 icon

Windows 11

Sur Windows 11, la DLL déguisée s'affichait comme une icône normale dans l'affichage de l'Explorateur. Cependant, lorsqu'elle est ouverte dans l'application Photos, une erreur s'affiche.

https://github.com/0xda568/IconJector/assets/61665703/748c1012-1d2c-47dd-915f-860ffc6d1b05

Injecter une DLL par programmation

Outre le fait de tromper un utilisateur pour qu'il charge la DLL manuellement, un attaquant a également la possibilité d'utiliser cette technique pour injecter un fichier DLL dans le processus explorateur par programmation :

Premièrement, un dossier est créé dans le dossier 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 recherche le nom distinctif du dossier dans chaque fenêtre ouverte.

callback function

Via la page des 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 amène l'explorateur à charger la DLL après clic sur le bouton OK.

Pourquoi ?

C'est une façon très discrète d'injecter une DLL dans le processus de l'Explorateur car elle n'utilise pas l'API d'injection de DLL habituelle. Elle produit certes deux petites fenêtres contextuelles, qui ne sont toutefois pas trop dérangeantes. Elle peut donc être utilisée comme technique d'évasion antivirus par un acteur malveillant pour exécuter du code via le processus légitime de l'explorateur ou pour charger un rootkit UMD.

De plus, propager des DLL déguisées en fichiers .ico peut constituer un vecteur d'attaque intéressant.

Outils utilisés

Pour obtenir les bons handles de fenêtres, j'ai utilisé Spy++, un outil qui est installé avec Visual Studio.

spy++

Remerciements

Merci beaucoup à Bill G. de Microsoft pour la belle icône de dossier !

Merci, internaute anonyme, pour la belle icône d'injection !