Le 4 juillet 2012, ASafety (re)présentait diverses techniques, qui commencent à avoir de l’âge, permettant d’élever ses privilèges sur un système Windows (7 et 8). Ces techniques facilitent la redéfinition de mot de passe de comptes administrateurs notamment, dans le cas de pertes d’accès.
L’article initial (qu’il est conseillé de consulter avant celui-ci) a été enrichi en citant également le processus « Utilman.exe » se trouvant également dans C:\Windows\System32\. Ce processus est le gestionnaire des différents outils d’accessibilité en tant que tel, et permet ainsi la récupération d’un shell au niveau du winlogon, donc sous l’autorité du compte « SYSTEM » :
La technique présentée consiste à remplacer les binaires d’accessibilité par la console « cmd.exe » renommée comme ces utilitaires ; celle-ci est donc accessible avant même qu’une session Windows soit ouverte, et ce avec le maximum des privilèges.
L’inconvénient de cette technique est qu’un LiveCD (Linux ou un DVD de réinstallation Windows 7/8) est nécessaire, pour altérer le contenu du répertoire System32. En effet, une fois Windows lancé, même sous un compte d’administration, il n’est pas directement possible d’éditer le contenu du répertoire System32 :
Les Windows 7 et 8 demandent explicitement de lancer un processus « en tant qu’administrateur » via l’interface graphique, même si l’on considère être l’administrateur de la machine :
Cette demande est suivie d’une validation par l’UAC (User Account Control) de Windows pour confirmer l’action :
A partir d’un shell lancé en tant qu’administrateur, certains droits additionnels sont disponibles au sein des répertoires Windows tels que System32 comme la copie/création de fichier. Toutefois la suppression d’entité système ne l’est toujours pas :
La raison de ces droits partiels, et notamment de l’impossibilité de supprimer un fichier dans System32, vient du fait que le fichier n’appartient pas à l’utilisateur courant (même en tant qu’administrateur avec une shell lancé « en tant qu’administrateur »). Il faut donc changer le propriétaire des fichiers à modifier/supprimer. De plus, les ACL (Access Control List) du fichier n’autorisent pas l’édition de celui-ci par un membre de l’administration.
Ainsi, pour remédier à ces manques de droits, il est nécessaire d’exécuter les commandes suivantes dans un shell lancé en tant qu’administrateur :
takeown /f monfichier.exe # permet de rendre l'utilisateur courant propriétaire du fichier monfichier.exe icacls monfichier.exe /grant Administrateurs:f # Donne le contrôle total "F" (Full) à l'ensemble des membres du groupe Administrateurs
Une fois le fichier attribué à l’utilisateur courant et avec ces ACL de modifiés (ASafety détaille également l’utilisation des ACL dans un article dédié pour le camouflage de données sous Windows), sa suppression se déroule sans problème et la copie de la console « cmd.exe » également :
Cette technique permet aisément de modifier les fichiers de System32, en vue de l’obtention d’un shell sous le compte SYSTEM au niveau du Winlogon, et ce sans avoir à redémarrer la machine sur un LiveCD quelconque.
A noter toutefois que l’exécution du processus « cmd.exe » doit pouvoir être réalisée sous le compte courant « en tant qu’administrateur ». L’UAC alerte aussitôt pour confirmer la transmission des droits, si celle-ci est active bien évidemment.
Ressources :