Dans cet article, nous allons introduire une technique de manipulation sur windows qui se base sur une idée très simple : le DLL highjacking. Nous allons ensuite introduire un outil pour auditer les binaires Windows qui sont vulnérables à cette typologie d’attaque après avoir introduit une définition des librairies DLL et de la technique du DLL Highjacking pour une exploitation du binaire.
Définition des DLL :
Une Dynamic Link Library (en français, bibliothèque de liens dynamiques) est une bibliothèque logicielle dont les fonctions sont chargées en mémoire par un programme, au besoin, lors de son exécution, par opposition aux bibliothèques logicielles statiques ou partagées dont les fonctions sont chargées en mémoire avant le début de l’exécution du programme.
.dll est une extension de nom de fichier utilisée par des fichiers contenant une Dynamic Link Library.
Ces bibliothèques logicielles ont été inventées dans Multics en 1964 et existent dans Windows depuis 1985. Elles constituent une des fondations des systèmes d’exploitation Windows et sont utilisées pour les interfaces de programmation, les pilotes, les widgets et les polices de caractères.
Le détournement de DLL, ou DLL Highjacking
Windows a un chemin de recherche pour les DLL dans son architecture sous-jacente, il s’agir de variables d’environnement PATH. Si vous pouvez déterminer quelles DLL un exécutable demande sans chemin absolu (déclenchant ce processus de recherche), vous pouvez ensuite placer votre DLL hostile quelque part plus haut dans le chemin de recherche afin qu’elle soit trouvée avant la version réelle, et Windows sera heureux envoyez votre code d’attaque à l’application.
Imaginons donc que le chemin de recherche des DLL de Windows ressemble à ceci:
- répertoire de travail actuel de l’exécutable, priorité la plus élevée, première vérification
- Windows
- Windows\system32
- Windows\syswow64 <- priorité la plus basse, dernière vérification
et un executable “Foo.exe” qui fait appel à “bar.dll”, qui se trouve dans le sous-répertoire syswow64 (4). Cela vous donne la possibilité de placer votre version malveillante en 1), 2) ou 3) et elle sera chargée dans l’exécutable.
utiliser le chemin absolu n’est pas dénué de danger non plus, à noter que l’attaque consiste à modifier le comportement d’un DLL “populaire” pour avoir le plus de change d’être exécutée par les différents programmes de Windows.
Microsoft Windows protège les chemins d’accès système comme System32 à l’aide du mécanisme de protection des fichiers Windows, mais la meilleure façon de protéger l’exécutable contre le détournement de DLL dans les solutions d’entreprise est:
- Utiliser un chemin absolu au lieu d’un chemin relatif
- Si vous avez la possibilité d’utiliser les procédures de verifications, signez vos fichiers DLL et vérifiez le signe dans votre application avant de charger la DLL en mémoire. sinon vérifiez le hachage du fichier DLL avec le hachage DLL d’origine.
Et bien sûr, cela n’est pas vraiment limité à Windows non plus. Tout système d’exploitation qui permet la liaison dynamique de bibliothèques externes est théoriquement vulnérable à cela.
Outil d’exploitation : ROBBER
ROBBER utilise un mécanisme simple pour déterminer les DLL susceptibles d’être détournées :
1) Analyser la table d’importation d’un binaire et trouver les DLL liées à l’exécutable.
2) Recherchez les fichiers DLL placés à l’intérieur de l’exécutable qui correspondent à la DLL liée
3) Si une DLL est trouvée, scannez la table d’exportation du thème
4) Comparer la table d’importation de l’exécutable avec la table d’exportation de la DLL et si une correspondance a été trouvée, l’exécutable et les fonctions communes correspondantes sont marqués comme candidats au détournement de DLL.
Fonctionnalités de ROBBER :
- Possibilité de sélectionner le type de scan (applications signées / non signées)
- Déterminer le signataire exécutable
- Déterminer quelle DLL référencée est candidate au détournement
- Déterminer les noms de méthode exportés des DLL candidates (très utile pour l’injection du code malveillant)
- Configurer des règles pour déterminer quels détournements sont les meilleurs ou les meilleurs choix à utiliser et afficher le thème dans différentes couleurs
- Possibilité de vérifier l’autorisation d’écriture du répertoire exécutable qui est un bon candidat pour le piratage.
Téléchargement :
Robber dans sa dernière version est trouvable sur le github suivant : https://github.com/MojtabaTajik/Robbe
Leave a Reply