Ce qui suit concerne :
 
  • Windows NT4 (station et serveur),
    Windows 2000
    (professionnel et serveur),
    Windows XP
    (familial et professionnel),
    Windows 2003
    Windows VISTA
    en ce qui concerne l'effacement de mots de passe de comptes locaux
     
  • Windows 2000 (serveur)
    Windows 2003
    en ce qui concerne l'effacement de mots de passe de comptes de domaine

Ce n'est en aucune façon une incitation à l'utilisation frauduleuse d'ordinateur, mais seulement la description de méthodes permettant à un administrateur authentique de recouvrer la maitrise d'une machine après l'oubli de son mot de passe.

Toutefois cela met en évidence la vulnérabilité d'un poste de travail ou serveur sous Windows (NT, 2000, XP, 2003).

Donc, dans le cas où un ordinateur présente un caractère "sensible", il faut avant toute chose le protéger physiquement :

  • en l'enfermant dans un local protégé
  • en définissant un mot de passe suffisamment solide pour la configuration du BIOS
  • en désactivant le lecteur de disquette et de CDROM au niveau du BIOS

 

 

Introduction

La situation est assez classique : un poste de travail ou un serveur, sous Windows NT4, 2000, XP ou 2003, est à reconfigurer (par exemple modification d'adresse IP), mais son utilisateur habituel a des droits insuffisants pour le faire. Naturellement (loi de Murphy!), cela arrive juste le jour où l'administrateur est absent, et l'utilisateur doit absolument pouvoir utiliser son PC en urgence!

Deux cas seront à distinguer, suivant qu'il s'agit de compte local (serveur ou station de travail) ou de compte de domaine (serveur de domaine).

Compte local

Les mots de passe des comptes locaux de  tous les utilisateurs sont stockés, sous forme chiffrée, dans une "ruche" de la Base de Registres, en l'occurrence le fichier SAM (Security Accounts Manager), et plus précisément la branche HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users

Il faut donc pouvoir accéder au fichier SAM (répertoire %systemroot%\system32\config), mais dans le cas de partition NTFS, c'est impossible sous DOS (à moins d'utiliser des outils spécialisés payants, tels que ceux fournis par Winternals). On peut  éventuellement accéder à une partition NTFS en installant un autre exemplaire de NT, ce qui est assez lourd et  requiert de l'espace disque libre.

Pas de panique

Il va suffire de démarrer le PC sur une version (réduite) de LINUX (mais oui!), contenant un programme (chntpwd) qui sait accéder à la base de données SAM (Security Account Manager) située dans la partition système de NT, et permettre ainsi de définir un nouveau mot de passe pour l'administrateur (ou n'importe quel autre utilisateur). 

Cette méthode diffère de celle employée dans des intentions "moins louables", qui consiste à essayer de deviner le mot de passe, par  essais successifs de mots préétablis (dictionnaires, lexiques,...) ou aléatoires (technique dite "attaque en force brute").


Cette petite merveille, due à Petter NORDHAL-HAGEN
 est disponible gratuitement (sous licence GNU GPL) à l'adresse suivante :
http://pogostick.net/~pnh/ntpasswd/ 
 

Depuis le 13/12/02, il est possible de démarrer le PC sur CDROM, et non plus seulement sur disquette!

On utilisera donc soit la version disquette, soit la version CDROM, suivant les périphériques disponibles sur le PC, étant donné que la version CDROM est plus pratique à utiliser.

Cette procédure fonctionne avec  :

Dans le cas des serveurs sous Windows 2000 et Windows 2003, la procédure s'applique :

Création de la disquette

les versions (et noms) des fichiers à télécharger sont susceptibles d'évoluer au cours du temps.
Consulter le site de Petter Nordhal pour s'informer de la dernière version disponible.

Le site http://ntpass.blaa.net/  permet aussi de télécharger des versions précédentes


Dans le cas de Windows VISTA, ne pas utiliser de fichiers dont la version serait antérieure à 0704xx (avril 2007)

  1. Télécharger les fichiers suivants :

  2. Les décompresser (avec Winzip, Winrar,...) , ce qui donne les fichiers suivants :

  3. Créer la disquette de boot Linux en exécutant la commande install (depuis le dossier où on a installé les fichiers)
    (sous DOS, Windows 9x , NT4, 2000, XP, VISTA) :

    R:\pwdnt\>install
    ##############################################################
    # #
    # Offline NT Password and Registry Editor Installation #
    # Version: bd050303 #
    # This installation creates a bootable floppy disk. #
    # #
    # Offline NT Password and Registry Editor must be booted #
    # from a floppy disk. #
    # #
    ##############################################################
    .
    RaWrite 2.0 - Write disk file to raw floppy diskette

    Enter target diskette drive: a
    Please insert a formatted diskette into drive A: and press -ENTER- :
    Number of sectors per track for this disk is 18
    Writing image to drive A:. Press ^C to abort.
    Track: 05 Head: 0

    quand c'est fini, on peut lire :

    Track: 79 Head: 1
    Done.
    Done
    To run Offline NT Password and Registry Editor, leave the floppy in the drive an
    d reboot.
    Appuyez sur une touche pour continuer...

    (si "A" est la lettre du lecteur de disquette)

    cette disquette est au format FAT, donc accessible sous DOS ou Windows

    R:\PWDNT>dir a:
    Le volume dans le lecteur A n'a pas de nom.
    Le numéro de série du volume est 4227-71B9

    Répertoire de A:\

    03/03/2005 21:21             8 104 ldlinux.sys
    03/03/2005 21:21             1 724 boot.msg
    03/03/2005 21:21           423 051 initrd.gz
    13/01/2005 21:43               152 syslinux.cfg
    26/02/2005 22:54           949 300 vmlinuz
                  5 fichier(s)        1 382 331 octets
                  0 Rép(s)          73 728 octets libres

    Copier le cas échéant le driver SCSI approprié xxxx.o.gz dans le répertoire \scsi de la disquette

Création du CDROM

le nom du fichier à télécharger est susceptible de changement au cours du temps.
En cas de problème, soit se reporter au site de Petter Nordhal, soit télécharger le fichier sur ce site.


Dans le cas de Windows VISTA, ne pas utiliser de fichiers dont la version serait antérieure à 0704xx (avril 2007)

  1. Télécharger le fichier suivant  :

  2. Le décompresser (avec Winzip, Winrar,...), ce qui donne le fichier suivant :

  3. Graver le CDROM à partir du fichier .ISO à l'aide d'un outil quelconque (NERO, CDRWIN,...)
    Exemple (réalisé avec Nero Express) :
     

Mise en oeuvre

IMPORTANT ! 

Cette version de LINUX est censée fonctionner avec un clavier de type QWERTY.
 
Si on utilise un clavier AZERTY, il faudra penser à modifier certaines frappes :
Pour obtenir
 le caractère

Il faut
appuyer sur

/

!

.

:

! <MAJ>&

Les captures d'écran affichées ci-dessous ont été réalisées à partir d'une version antérieure.
Si certains libellés peuvent différer par rapport à la version actuelle, le principe reste toujours le même.

Redémarrer le PC avec la disquette ou le CDROM obtenu précédemment.
Les messages de démarrage de Linux apparaissent alors :

Les réponses aux questions qui vont suivre sont prédéfinies par défaut.

La plupart du temps, une action sur la touche <ENTRER> suffira.

Il est demandé ensuite si on utilise des disques SCSI.

Répondre en conséquence.

 

Puis la liste de toutes les partitions est affichée, suivie (éventuellement) de la liste des partitions NTFS.
A l'invite de commande, la 1ère des partitions NTFS bootable est présélectionnée. 

Il est possible d'en changer (aussi bien NTFS que FAT) en donnant son nom complet :

p.ex. : /dev/hdc1/dev/sda2, ... sachant que le nom est défini ainsi :

  • 1er et 2ème caractères : hd (disque IDE) ou sd (disque SCSI)

  • 3ème caractère : a (1er disque), b (2ème disque), ... (d est la limite pour les disques IDE)

  • 4ème caractère : 1, 2, 3, 4, ... = le n° de la partition sur le disque, en sachant que :
    - les partitions primaires sont numérotées de 1 à 4
    - les partions logiques sont numérotées à partir de 5 (même s'il n'y a qu'une seule partition primaire) 

Le programme essaie alors de monter la partition choisie, en essayant FAT puis NTFS comme type (ne pas tenir des messages d'erreurs éventuels).

La liste des ruches s'affiche ensuite :

Par défaut, c'est la ruche SAM qui sera concernée

Une copie de la SAM est effectuée.

Il est alors demandé ce que l'on veut faire.

Par défaut, le choix 1 permet d'éditer les mots de passe.

La liste des comptes s'affiche :

Il est demandé de choisir le compte à modifier (par défaut le compte Administrateur)

Des messages indiquant un verrouillage du compte peuvent apparaître.

Répondre y le cas échéant afin que le compte soit déverrouillé.

Il est ensuite demandé le nouveau de passe.
Il est recommandé de taper * afin de fixer un mot de passe vide.
 

Le programme demande confirmation. Taper y

Taper ! si on n'a pas d'autre compte à modifier

Si on a terminé les opérations, taper q

Une nouvelle confirmation est demandée (écriture de la ruche) Taper y

On peut demander l'écriture d'un backup, (Taper y ) mais cela ne fonctionne pas toujours!

 

Après avoir retiré le CD ou la disquette, redémarrer le PC en appuyant sur CTRL-ALT-DEL
Windows redémarre, et on peut constater que le mot de passe a bien été modifié (ici aucun mot de passe)
   

 

  • Cette procédure a été testée avec succès sous Windows 2000 (PRO et SRV), Windows XP , Windows 2003, Vista, et sur plusieurs machines (et avec SYSKEY activé !)
     
  • Il peut arriver qu'au cours de la procédure un message indique que le disque est en lecture seule ("read only filesystem").
    Cela est du généralement au fait que Windows n'a pas été arrêté "proprement".
    Dans ce cas :
    • redémarrer l'ordinateur (sous Windows) en mode sans échec
      (appuyer sur la touche F8 tout au début pour faire apparaitre le menu)
    • lorsque l'écran de connexion apparait, arrêter l'ordinateur
    • répéter cette opération

Compte de domaine (serveur de domaine)

La procédure est un peu plus complexe.

Les mots de passe des comptes de domaine ne sont plus stockés dans la base SAM
(%systemroot%\system32\config\SAM),
mais dans la base de données constituée par Active Directory
(%systemroot%\NTFS\ntds.dit).

En effet, la méthode de Petter NORDHAL exposée précédemment, qui ne concerne que le fichier SAM, ne peut pas s'appliquer sur cette base AD.

Par contre, elle va servir à mettre en place un outil qui lui va pouvoir redéfinir le mot de passe d'un administrateur du domaine!

Dans un 1er temps, on va l'utiliser pour réinitialiser le mot de passe du compte administrateur local de l'ordinateur.
Se reporter aux paragraphes précédents.

Une fois que le mot de passe du compte administrateur local a été effacé, on va utiliser ce compte pour démarrer l'ordinateur. Mais un serveur ne permet pas, comme dans le cas d'une station de travail, lors de l'ouverture de session, de choisir une session locale.

Dans cet exemple (sous XP PRO), on voit que l'utilisateur peut au choix ouvrir une session :
  • dans le domaine "JCB" (AD)
  • dans le domaine JCBNT4 (NT4)
  • ou encore localement sur l'ordinateur lui-même.
     

 

Cette dernière option n'existe pas dans le cas d'un serveur de domaine :
NT4
 
2000
2003

 

Méthode applicable sous Windows 2000 et Windows 2003

 
  Cette méthode est inspirée de celle de Daniel PETRI     
(MVP Windows Server System - Exchange Server)

Je l'ai rendue automatique à l'aide de scripts VBS et BAT
 

Dans le cas d'un serveur de domaine Windows 2000 ou Windows 2003, il faut le démarrer en
mode de réparation Active Directory


(appuyer sur F8 pour faire apparaitre la liste complète des modes de démarrage) :
On peut vérifier le mode de démarrage :
 
On ouvre une session sous le compte administrateur (local) dont le mot de passe a été effacé par la méthode décrite plus haut.
On peut vérifier que l'on est bien en session locale, et non pas dans le domaine :

 

 

En particulier, la variable d'environnement USERDOMAIN contient le nom NetBIOS de l'ordinateur et non pas le nom du domaine.

Il faut ensuite exécuter l'exécutable auto extractible setpwdadm.exe :

 

 

 

 

 

Le dossier de destination importe peu.

Après exécution de ce fichier, on récupère les fichiers suivants :

 

 

 

 

setpwdadm.vbs script VBS servant à :
  • créer et installer automatiquement un service pwdadm (exécuté sous le compte SYSTEM) destiné à redéfinir le mot de passe d'un compte administrateur.
    Ce service entrera en action lors du prochain redémarrage normal.
  • créer un script stoppwdadm.bat destiné à arrêter et désinstaller le service précédent.
    Ce script sera exécuté manuellement par l'administrateur au cours de la session ouverte après le prochain redémarrage normal.
inststrv.exe utilitaire Microsoft d'installation d'une application quelconque en tant que service.
srvany.exe utilitaire Microsoft réellement exécuté en tant que service
Pour plus de détails sur le couple instsrv et srvany, se reporter au paragraphe qui leur est consacré
la commande suivante est exécutée par le service pwdadm :

le service pwdadm étant lancé sous le compte SYSTEM, les privilèges sont suffisants pour exécuter la commande de modification de mot de passe !
cmd /k net user  <account> <newpwd> /domain
avec :  
<account> nom du compte administrateur dont on veut définir le mot de passe
<newpwd> nouveau mot de passe du compte
Le script setpwdadm.vbs doit être exécuté avec en paramètres le nom du compte et le nouveau mot de passe.
Dans l'exemple, on désire affecter le mot de passe "toto" au compte "Superadmin"
On exécute donc la commande : setpwdadm.vbs Superadmin toto
 
Ensuite on redémarre normalement le serveur, puis on ouvre une session sur le domaine,
sous le compte SuperAdmin, avec le mot de passe toto précédemment défini

 On constate que la session s'ouvre sans problème !

On peut vérifier que l'on est bien en session de domaine :

 

 

En particulier, la variable d'environnement USERDOMAIN contient le nom  du domaine.

A l'aide de la MMC "Services.msc", on peut vérifier aussi l'existence du service pwdadm et son état démarré.
On termine la procédure en exécutant le script StopPwdAdm.bat, qui a été créé précédemment  par le script setpwdadm.vbs
 

Méthode applicable sous Windows 2000 uniquement

Comme dans la méthode précédente, on démarre Windows en mode Restauration Active Directory
Puis on ouvre une session sous le compte administrateur dont on aura effacé le mot de passe.
On ouvre REGEDIT afin de modifier certains paramètres du compte par défaut :
Clef/entrée Valeur à définir
HKEY_USERS\.DEFAULT\Control Panel\Desktop\SCRNSAVE.EXE cmd.exe
HKEY_USERS\.DEFAULT\Control Panel\Desktop\ScreenSaveTimeOut 10

Ainsi, lorsqu'aucune session n'est ouverte, l'économiseur d'écran qui se déclenche au bout de 10 secondes d'inactivité est la console (fenêtre de commandes), et le compte en cours n'est autre que SYSTEM !
 
On redémarre normalement Windows, en s'abstenant d'ouvrir toute session !
On attend une dizaine de secondes, afin que l'économiseur d'écran se déclenche, sous la forme d'une fenêtre console.
 

Cette console est ouverte sous le compte SYSTEM !

Depuis la fenêtre console, on exécute alors la MMC dsa.msc
(Utilisateurs et ordinateurs Active Directory)
On a le droit de le faire, étant sous le compte SYSTEM
On peut alors modifier le mot de passe de n'importe quel compte de l'Active Directory,
en particulier celui d'un compte administrateur.
Cette méthode n'est pas utilisable sous Windows 2003
En effet, de nouveaux comptes "de service" sont apparus,  en plus de SYSTEM :
  • LocalService
  • NetworkService

Et c'est Localservice (à la place de System sous Windows 2000) qui est utilisé lorsqu'aucune session n'est ouverte.
Or Localservice n'a pas les privilèges suffisants pour ouvrir la MMC dsa.msc