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 domaineCe 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
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).
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 :
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)
Télécharger les fichiers suivants :
bd080526.zip (1.4 Mo) (sur ce site :
bd080526.zip)
et suivant le type de disques installés :
Les décompresser (avec Winzip, Winrar,...) , ce qui donne les fichiers suivants :
bd080526.bin (ou éventuellement une autre extension
suivant les versions)
le nom du fichier et son
extension n'ont AUCUNE importance!
Ce fichier est une image (binaire) de disquette bootable 1.44
Mo
rawrite2.exe
C'est un utilitaire DOS (16 bits) servant à copier secteur par secteur l'image sur une
disquette.
Il fonctionne sous DOS et toute version de Windows (9x, NT4, 2000, XP, 2003)
install.bat
C'est un script qui lance rawrite2 avec les paramètres
appropriés.
un ensemble de fichiers xxxxx.o.gz (49 drivers SCSI dans
la version actuelle)
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 quand c'est fini, on peut lire :
Track: 79 Head: 1 |
R:\PWDNT>dir a: |
Copier le cas échéant le driver SCSI approprié xxxx.o.gz
dans le répertoire \scsi de la disquette
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)
Télécharger le fichier suivant :
cd080802.zip (2.8 Mo) (sur ce site :
cd080802.zip)
la version
CDROM contient tous
les fichiers nécessaires, PATA, SCSI et SATA compris.
Le décompresser (avec Winzip, Winrar,...), ce qui donne le fichier suivant :
cd080802.iso
Ce fichier est une image ISO de CD bootable (norme "El
Torito")
Graver le CDROM à partir du fichier .ISO à l'aide d'un
outil quelconque (NERO, CDRWIN,...)
Exemple (réalisé avec Nero Express) :
Sélectionner "Image de disque ou projet sauvegardé" |
|
Sélectionner le type : Fichiers image (*.nrg,*.iso,*.cue) Sélectionner le fichier image, ici (suivant l'arrivée de nouvelles versions, le nom de ce fichier est susceptible de varier) |
|
Si tout est correct, insérer un CD
vierge dans le graveur et appuyer sur Suivant La gravure va s'effectuer |
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 |
/ |
! |
||
. |
: |
||
! | <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. |
|
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 :
|
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. |
|
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) | |
|
|
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 : | |||||||||
|
|||||||||
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
Dans le cas d'un serveur de domaine Windows 2000 ou Windows 2003,
il faut le démarrer en |
|||||||||
(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 :
|
|
||||||||
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 ! |
|
||||||||
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 |