Usurpation de DLL (détournement de DLL)

Bonjour à tous. À l'heure actuelle, OTUS a ouvert un ensemble pour le lancement en avril du cours de rétro-ingénierie mis à jour . En prévision du début du cours, nous avons traditionnellement préparé une traduction de matériel intéressant.




Dans le système d'exploitation Windows, les applications et services au démarrage recherchent les DLL nécessaires à leur bon fonctionnement. Si ces DLL ne sont pas trouvées ou que leur chargement est implémenté de manière non sécurisée (les DLL sont appelées sans utiliser le chemin complet), vous pouvez augmenter les privilèges en forçant l'application à télécharger et à exécuter un fichier DLL malveillant.

Il convient de noter que lorsque l'application doit télécharger la DLL, sa recherche est effectuée dans l'ordre suivant:

  • Le répertoire à partir duquel l'application est téléchargée
  • C: \ Windows \ System32
  • C: \ Windows \ System
  • C: \ Windows
  • Répertoire de travail actuel
  • Répertoires dans la variable d'environnement PATH utilisateur
  • Répertoires dans la variable d'environnement système PATH

Étape 1 - Processus avec des DLL manquantes


La première étape consiste à rechercher les processus qui s'exécutent sur SYSTEM et à essayer de charger la DLL manquante. Cela peut être fait à l'aide de Sysinternals Process Monitor en appliquant le filtre ci-dessous:


Filtres Procmon pour rechercher les processus qui téléchargent les DLL manquantes

Process Monitor identifiera les DLL manquantes que l'application tente de charger et affichera le chemin réel que cette DLL est recherchée.


Un processus avec une DLL manquante

Dans cet exemple, un processus n'a Bginfo.exepas plusieurs fichiers .dll qui peuvent être utilisés pour élever les privilèges.

Étape 2 - Autorisations de dossier


Si le logiciel est installé dans le répertoire à la C:\place C:\Program Files, par défaut, les utilisateurs authentifiés auront un accès en écriture à ce répertoire. De plus, des logiciels tels que Perl, Python, Ruby, etc. sont généralement ajoutés à la variable PATH. Cela permet d'augmenter les privilèges, car l'utilisateur peut écrire une DLL malveillante dans ce répertoire, qui sera chargée au prochain démarrage du processus et gagner les droits sur ce processus.


Autorisations de dossier faibles

Étape 3 - DLL de substitution


À l'aide de Metasploit, vous pouvez générer une DLL de charge utile en tant que session avec des privilèges de service.


Génération de DLL malveillantes

Le processus est Bginfo.exelancé sous SYSTEM, donc après le redémarrage, la DLL malveillante aura les mêmes privilèges, car la DLL est chargée et exécutée par ce processus.


Le processus est lancé sous SYSTEM.

Comme indiqué ci-dessus, le processus est introuvable Riched32.dll, pentestlab.dllvous devez donc le renommer Riched32.dll. Cela confondra l'application et essaiera de charger la DLL car il pense qu'il s'agit d'une DLL légitime. La DLL malveillante doit être placée dans l'un des dossiers dans lesquels Windows recherche des fichiers DLL.


DLL malveillante renommée et hébergée

Comme vous pouvez le voir ci-dessous, lorsque vous redémarrez le service à l'aide de la DLL d'usurpation d'identité, une session Meterpreter avec les privilèges SYSTEM s'ouvre.


Metasploit - Escalade de privilèges via une usurpation de DLL

Powersploit


Le processus de remplacement des DLL peut être effectué via PowerSploit, dans lequel il existe trois modules qui aideront à trouver des services avec des DLL manquantes, à rechercher des dossiers avec des droits de modification et à générer des DLL.

Le module Find-ProcessDLLHijacktrouvera tous les processus du système qui tentent de charger la DLL manquante.


PowerSploit - Détection des processus avec des DLL manquantes

L'étape suivante consiste à identifier les dossiers dont l'utilisateur peut modifier le contenu. Des dossiers seront trouvés où les DLL malveillantes doivent être lancées.


Recherche de dossiers avec des droits de modification

La dernière étape consiste à créer une DLL malveillante dans l'un des dossiers avec les autorisations Modifier (M).


Créer une DLL dans un dossier avec des autorisations faibles

Conclusion


Pour pouvoir élever des privilèges via une DLL d'usurpation d'identité, les conditions suivantes doivent être remplies:

  • Autorisations pour écrire dans le dossier système
  • Installation du logiciel dans un répertoire autre que le répertoire par défaut
  • Un service qui s'exécute sous SYSTEM et tente de charger une DLL manquante
  • Redémarrage du service

Il Program Filesn'est pas difficile de trouver des applications qui ne sont pas installées , car en dehors des applications tierces qui ne sont pas forcées à installer le long de ce chemin, il existe divers programmes logiciels personnalisés situés en dehors de ces dossiers protégés. En outre, il existe un certain nombre de services Windows, tels que IKEEXT (IKE et AuthIP IPsec Keying Modules) avec des DLL manquantes ( wlbsctrl.dll), qui peuvent être utilisés manuellement ou automatiquement. Il existe un module Metasploit spécial pour IKEEXT:

exploit/windows/local/ikeext_service



.



All Articles