[Windows 7 & 8] Escalade de privilège et password reset

04
juil.
2012
  • Google Plus
  • LinkedIn
  • Viadeo
Posted by: Yann C.  /   Category: Administration réseaux et systèmes / OS / Vulnérabilités, exploits et PoC / Windows   /   2 commentaires

La perte de mot de passe pour l’accès à sa propre session est un des problèmes récurrents quelque soit le système d’exploitation utilisé.

Différentes méthodes existent pour réinitialiser les mots de passes ou bien même les déchiffrer d’une machine bloquée. Windows 8 n’échappe pas à la règle.

La technique du processus « sethc.exe »

Cette technique remonte à Windows XP, et s’avère toujours fonctionnelle à travers les âges. Combien de fois, au cours d’un jeu vidéo par exemple, avez-vous été déconcentré par « l’activation des touches rémanentes » ? En effet, lors de l’appui successif 5 fois sur la touche « Shift » de votre clavier, sous Windows, une fenêtre apparaît demandant l’activation de cette fonctionnalité. Cette petite fenêtre est générée par le processus « sethc.exe » se trouvant dans « System32 » de votre OS.

La particularité de ce processus, est qu’il est exécutable dès le « Winlogon ». Autrement dit, vous n’êtes pas obligé d’être connecté à une session pour activer les touches rémanentes. Cela signifie que, puisqu’aucune session n’est ouverte au « Winlogon », « sethc » s’exécute avec les droits « NT AUTHORITY/SYSTEM ». Ce compte dispose de tous les droits sur le système, comme la réinitialisation des mots de passes des comptes sans connaissance des précédents.

Les combinaisons de touches suivantes permettent de lancer le processus « sethc.exe » dès le « Winlogon » :

  • 5 fois la touche shift (droite ou gauche) pour les « touches rémanentes ».
  • 8 secondes sur le shift droit pour les « touches filtres » qui gèrent la fréquence de répétition du clavier.
  • 5 secondes sur la touche « verrnum » pour le verrouillage du pavé numérique afin d’activer les « touches bascules ».
  • Alt (gauche) + Shift (gauche) + Impr écran, pour activer le contraste élevé
  • Alt (gauche) + Shift (gauche) + verrnum, pour activer les « touches souris » (utilisation du pavé numérique comme souris).

Ainsi, l’objectif pour une telle escalade de privilège, est de remplacer le processus « C:\Windows\System32\sethc.exe » original par la console Windows « cmd.exe » que l’on nommerait pareillement. Ceci ne peut être fait qu’avant le démarrage du système, donc par l’intermédiaire d’un LiveCD Linux, ou d’un CD d’installation Windows (en mode réparation pour accéder au terminal).

La technique des processus d’accessibilité

Windows a tout prévu pour le maniement et l’accès à son système d’exploitation. Notamment pour les personnes en difficulté, celles-ci disposent d’outils améliorant la visibilité à l’écran. Ces outils sont les processus d’ergonomie ou d’accessibilité. Ils sont utilisables dès  l’écran de connexion (Winlogon) sous Windows 7 et 8.

Pour les mêmes raisons que la technique via « sethc », les outils d’accessibilité permettent une élévation des privilèges et l’obtention d’un shell NT AUTHORITY/SYSTEM puisqu’aucune session n’est encore ouverte au Winlogon.

Outils d'accessibilité sous Windows 8

Outils d’accessibilité sous Windows 8

Outils d'accessibilité sous Windows 7

Outils d’accessibilité sous Windows 7

Il suffit de remplacer avant le démarrage du système, un des processus d’accessibilité par la console « cmd.exe » avec un nom similaire à l’outil pour permettre une élévation de privilège.

Ces processus d’accessibilité sont les suivants :

  • Magnify.exe : La loupe d’écran (pour les mal-voyants)
  • Narrator.exe : Le lecteur vocale des textes de l’écran (pour les mal-entendants)
  • osk.exe : On Screen Keyboard, le clavier visuel, pour ceux qui souhaitent cliquer sur les touches.
  • Utilman.exe : Le gestionnaire des processus d’accessibilité en tant que tel

Escalade de privilège et réinitialisation de mot de passe

Une fois « cmd.exe » renommé en l’un des processus détaillés ci-dessus (sethc, Magnify, osk, Narrator et/ou utilman) avant le démarrage du système (donc via un LiveCD par exemple), il suffit de le lancer au Winlogon pour voir le shell apparaitre.

Escalade de privilège avec Magnify sous Windows 8

Escalade de privilège avec Magnify sous Windows 8

Escalade de privilège avec sethc sous Windows 8

Escalade de privilège avec sethc sous Windows 8

Escalade de privilège avec Magnify sous Windows 7

Escalade de privilège avec Magnify sous Windows 7

Escalade de privilège avec sethc sous Windows 7

Escalade de privilège avec sethc sous Windows 7

Pour remplacer ces processus par la commande « cmd.exe »  via un LiveCD Linux, il faut monter la partition (hdaX ou sdaX) contenant « Windows/System32 » et exécuter certaines commandes :

cd /media
mkdir disk
mount -f ntfs-3g /dev/hdaX /media/disk -o force
cd disk/Windows/System32
rm Magnify.exe
rm sethc.exe
rm osk.exe
rm Narrator.exe
rm Utilman.exe
cp cmd.exe Magnify.exe
cp cmd.exe sethc.exe
cp cmd.exe osk.exe
cp cmd.exe Narrator.exe
cp cmd.exe Utilman.exe
reboot

La méthode via un CD d’installation/restauration Windows (en l’occurrence 7) est disponible en vidéo sur la chaîne Youtube d’ASafety.

Note : Le fait de modifier les fichiers de Windows/System32 peut générer une restauration/réparation automatique au prochain démarrage du système. Ceci est dû à un contrôle d’intégrité de Windows à chaque démarrage. Ce contrôle s’effectue sur les fichiers présents dans les répertoires systèmes, non pas sur le contenu (hash/signature) de ces fichiers. Ainsi, lorsque vous touchez au processus dans Windows/System32 tels que « sethc.exe » ou « Magnify.exe », supprimer les bien avant de les remplacer par « cmd.exe ». Si vous en faites des sauvegardes « Magnify.exe.bak » l’intégrité du système sera altérée et au prochain redémarrage Windows va réinitialiser/réparer ses outils.

Pour parer à cela, il pourrait être intéressant de creuser autour du contrôle d’intégrité et du mode de récupération que Windows 7 et 8 utilisent au démarrage, au travers de l’outil « bcdedit » :

C:\Users\X\Desktop>bcdedit
 
Gestionnaire de démarrage Windows
---------------------------------
identificateur {bootmgr}
device partition=\Device\HarddiskVolume2
description Windows Boot Manager
locale fr-FR
inherit {globalsettings}
default {current}
resumeobject {fd510c55-744a-11e1-be60-f96dd3f60867}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
 
Chargeur de démarrage Windows
-----------------------------
identificateur {current}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7
locale fr-FR
inherit {bootloadersettings}
recoverysequence {fd510c57-744a-11e1-be60-f96dd3f60867}
recoveryenabled Yes
osdevice partition=C:
systemroot \Windows
resumeobject {fd510c55-744a-11e1-be60-f96dd3f60867}
nx OptIn

La récupération se désactive via la commande :

bcdedit /set {default} recoveryenabled No
  • Google Plus
  • LinkedIn
  • Viadeo
Yann C.

About the Author : Yann C.

Consultant en sécurité informatique et s’exerçant dans ce domaine depuis le début des années 2000 en autodidacte par passion, plaisir et perspectives, il maintient le portail ASafety pour présenter des articles, des projets personnels, des recherches et développements, ainsi que des « advisory » de vulnérabilités décelées notamment au cours de pentest.