Touver sur //www.bellamyjc.net/fr/windowsnt.html#pwdNT
Cette situation est assez classique : un poste de travail, sous NT4 ou Windows 2000, 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!
Les mots de passe 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).
Il faut donc pouvoir accéder au fichier SAM (répertoire \winnt\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!
Si le lecteur de disquette est disponible sur le poste NT (ou W2k), il suffit de booter le PC avec une disquette LINUX (mais oui!) conçue pour cela, depuis laquelle on va lancer 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 fixer 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://home.eunet.no/~pnordahl/ntpasswd/
Télécharger les fichiers suivants :
bd010114.zip (1.4Mo) (sur ce site : bd010114.zip)
rawwrite2.zip (10 ko) (sur ce site : rawwrite2.zip)
sc010114.zip (773 ko) (sur ce site : sc010114.zip ) (éventuellement, en cas de disques SCSI)
à la date de mise à jour de ce document, il existe une version plus récente, la bd010819, mais l'auteur déconseille fortement son utilisation avec des partitions de type NTFS5 (Windows 2000 et au-delà), car elle risque de provoquer un "BSOD" au redémarrage en raison d'une corruption du fichier SAM, et oblige à pratiquer une récupération de ce fichier. En conséquence, il est prudent de s'en tenir à la bd010114 qui fonctionne très bien d'ailleurs.
Les dézipper , ce qui donne les fichiers :
bd010114.img, ou bd010114.bin suivant les versions (c'est une image de disquette 1.44Mo)
le nom du fichier et son extension n'ont AUCUNE importance!
chntpw (exécutable Linux au format ELF, inutilisé ici, étant inclus d'origine dans l'image de la disquette)
rawrite2.exe (utilitaire DOS servant à copier secteur par secteur l'image sur une disquette)
un ensemble de fichiers xxxxx.o.gz, (drivers SCSI)
Créer la disquette de boot Linux par la commande (sous DOS, Windows 9x , NT4 ou Windows 2000) :
rawrite2 -f: bd010114.bin -d: A (si "A" est la lettre du lecteur de disquette)
cette disquette est au format FAT, donc accessible sous DOS ou Windows
copier le cas échéant le driver SCSI approprié xxxx.o.gz dans le répertoire \scsi de la disquette
Rebooter le PC avec cette disquette.
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>&
Après les messages de démarrage de Linux, il est demandé 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)
La partition est alors montée. On peut lire ceci, p.ex. :
/dev/hda6 is NTFS
Trying to mount as readwrite on /mnt
Success. Mounted NTFS /dev/hda5 on /mnt
Il est alors demandé ce que l'on veut faire :
Définir le mot de passe (option par défaut)
Editer la BDR
Indiquer ensuite le chemin complet (par rapport à la partition) où est stockée la Base de Registres
(par défaut \winnt\system32\config)
La liste des fichiers ("ruches" ) de la BDR s'affiche alors :
-rw------- 1 0 0 167936 Jul 19 14:17 default
...
-rw------- 1 0 0 28672 Jul 20 05:54 SAM
...
Par défaut le fichier SAM est présélectionné.
Le programme chntpw est alors lancé automatiquement, il examine le contenu du fichier SAM et affiche les noms des différents comptes :
Hive's name (from header): <\SystemRoot\System32\Config\SAM>
...
RID: 01f4, Username: <Administrateur>
RID: 03e8, Username: <BELLAMY>
RID: 03ef, Username: <HOMER>
...
Une détection de SYSKEY est ensuite opérée. C'est un système qui accroît la sécurité en renforçant le chiffrement des mots de passe contenus dans la base SAM Ce dispositif est mis en place à l'aide de la commande syskey.exe et de la définition d'une "clef maître" (cf.article Q143475) . Si SYSKEY est détecté, on est amené à le désactiver ou non.
Sous Windows 2000, il n'est plus possible ensuite de réactiver SYSKEY si on l'a désactivé.
Si on désactive SYSKEY, cela va effacer tous les mots de passe.
Bien que travaillant sous Windows 2000, avec SYSKEY détecté, je n'ai pas été amené à le désactiver, et tout a bien fonctionné.
Le programme demande alors le nom du compte à modifier (Administrateur par défaut).
Taper ce nom (ou "." - obtenu par action de la touche ":" sur un clavier AZERTY- pour réafficher la liste des comptes). Les caractéristiques du compte sont alors affichées.
Exemple :
Username to change (! to quit, . to list users): [Administrateur] HOMER
RID : 1007 [03ef]
USername: HOMER
fullname: Homer SIMPSON
comment :
homedir :
Crypted NT pw: 01 00 01 00 ad ... 4d c5
Crypted LM pw: 01 00 01 00 57 ... df ee
MD4 hash : 6a 4f e5 2a 3e ... 36 c0
LANMAN hash : 5e 7f 0a a9 06 ... 04 e3
Please enter new password
or nothing to leave unchanged: marge
NEW MD4 hash : 23 1e 07 ... ea 43
NEW LANMAN HASH : 7a e0 c7 ... 04 ee
NEW DES crypt : e5 0b 56 ... 47 19
NEW LANAMN crypt: 77 e6 9a ... 1f d3
Do you want really wish to change it? (y/n) [n] y
Username to change (! to quit, . to list users) : [Administrateur] !
Taper ! pour quitter (touche MAJ-& sur un clavier AZERTY)
Le programme demande (avec double confirmation) s'il doit enregistrer les fichiers ruches modifiés
Hives that have changed:
# Name
0 <sam>
Write hive files? (y/n) [n] : y
0 <sam> - OK
Callingwrite.rc to select write back sam file
About to write file(s) back! Do it? [n] : y
On peut relancer éventuellement la procédure en tapant la commande
sh /scripts/main.rc
Appuyer sur CTRL-ALT-DEL pour rebooter le PC sous Windows NT/W2k , le(s) mot(s) de passe a(ont) été modifié(s)
J'ai testé avec SUCCÈS cette procédure
sous Windows 2000 Professionnel et Serveur, sur plusieurs machines, SYSKEY étant activé !
Commentaire :
Cette méthode montre la vulnérabilité d'un poste de travail ou serveur sous NT ou Windows 2000. Donc, dans le cas où un PC a un caractère "sensible", il faut le protéger physiquement contre une attaque éventuelle :
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
Le probléme c'est que ça marche pas chez moi
une idée ?????