Comment trouver la date de création d'un compte utilisateur local?

8

Je souhaite obtenir la date de création d'un compte utilisateur local (Win 7 si c'est important). J'ai regardé les objets WMI suivants (et google bien sûr):

Win32_UserAccount Win32_NetworkLoginProfile

Les objets retournés NetworkLoginProfileont la dernière heure de connexion, mais pas la date de création. La vérification de la Date Createdpropriété de leur dossier de profil donne simplement la date de création du dossier , pas nécessairement le compte lui-même.

MDMoore313
la source
2
Pour ajouter à partir du chat: je peux voir la ruche de l'utilisateur dans la date de création du registre, mais cela n'est basé que sur leur première connexion, pas sur la date de création du compte.
TheCleaner

Réponses:

10

Les données sont dans le SAM, mais elles ne semblent pas être documentées publiquement par Microsoft et je ne trouve pas d'API officielle pour les récupérer. Je peux voir, en regardant le code source de l' chntpwutilitaire que la valeur est stockée dans la clé de registre "F" pour chaque compte. Quoth le code source:

#define USER_F_PATH "\\SAM\\Domains\\Account\\Users\\%08X\\F"

struct user_F {
  ...
  char t_creation[8]; /* Time of account creation */
  ...
}

Le projet regripper forensics dispose d'un plugin, samparse qui rapportera la date de création du compte.

Un outil de criminalistique n'est probablement pas ce que vous voulez, mais il semble que Microsoft ne vous facilite pas la tâche.


En recherchant cela, j'ai trouvé amusant qu'un MVP Microsoft ne sache pas que les données de création de compte sont stockées dans le SAM . À son avantage, il n'est peut-être pas en dehors de l' chntpwutilitaire, c'est là que j'ai commencé ma recherche d'informations sur les structures SAM non documentées.

Evan Anderson
la source
vos idées m'intriguent et je souhaite --- vous abonner à votre newsletter --- , je veux dire apprendre à utiliser cet outil pour l'essayer moi-même. Auriez-vous, par hasard, des liens dont je pourrais me prévaloir à cette fin? (Damn you markdown!)
HopelessN00b
Juste le lien vers le projet regripper ci-dessus. Je ne l'ai pas utilisé personnellement, mais cela semble assez facile à gérer. Il semble qu'il ait été inclus dans Kali Linux maintenant ( bugs.kali.org/print_bug_page.php?bug_id=246 ) si vous préférez simplement démarrer un CD live plutôt que d'installer un environnement Perl pour exécuter regripper. Apparemment, il y avait un livre écrit sur ces outils. Cela semble cher: amazon.com/Windows-Registry-Forensics-Advanced-Forensic/dp/… Je devrais probablement jouer avec ces outils à un moment donné - je n'en ai tout simplement pas eu l'occasion.
Evan Anderson
Je pense qu'Evan pourrait devoir des excuses à Richard Mueller;)
charleswj81
Je n'ai pas essayé les outils. Trouvez-vous que la date n'est pas remplie?
Evan Anderson
Je ne sais pas encore si vous avez vu ma propre réponse ci-dessous, mais le champ appelé "date de création" est en fait "dernier mot de passe modifié", qui sera évidemment la même valeur jusqu'au premier changement de mot de passe de création post-compte.
charleswj81
3

La seule façon de savoir réellement serait d' activer l'audit de la gestion des comptes sur le calcul r lors de la création du compte. Ensuite, vous verriez EventID 4720 dans le journal des événements à la date de création. (L'article dit Active Directory, mais il en va de même pour les comptes locaux; j'ai vérifié.)

Sans cela, le plus proche que vous pouvez faire est de vérifier la date de création dans la ruche, le ntuser.datfichier, le dossier de profil utilisateur, etc. de l'utilisateur, mais comme mentionné dans les commentaires, cela n'est exact que pour la première connexion de l'utilisateur, car c'est à ce moment-là sont créées.

Malheureusement pour vous, il s'agit de "si vous ne l'avez pas enregistré, alors cette information n'existe pas".

HopelessN00b
la source
1

J'étais sur le point de vous donner un script POC PowerShell pour extraire et analyser le temps de création, mais j'ai réalisé que chntpwla logique est incorrecte. La valeur qu'il appelle l'heure de création est en fait la dernière heure définie pour le mot de passe, bien que ces valeurs soient les mêmes lors de la création du compte initial. Voir ici pour une description exhaustive du SAM.

Le deuxième lien d'Evan, pour samparse, pourrait bien faire les choses cependant. Regarder son fonctionne vraiment. Si vous regardez sa source ici , ligne 99:

$c_date = $create->get_timestamp();

vous verrez qu'il appelle get_timestampde Perl Parse::Win32Registry. Je suis presque sûr que c'est en fait la dernière heure d'écriture de la clé. Puisqu'il apparaît que la touche particulière ( HKLM\SAM\SAM\Domains\Account\Users\Names\<USERNAME>) ne contient qu'un pointeur sur la clé RID correspondante, elle ne devrait pas changer après la création et la dernière heure d'écriture sera égale à l'heure de la création.

Si vous souhaitez vous en tenir à des outils plus intégrés, voici une série d'articles de Scripting Guy expliquant comment via PowerShell:

Utiliser PowerShell pour accéder à l'horodatage de dernière modification du registre

Réutilisation du code d'horodatage du registre PowerShell

Créer une fonction proxy pour afficher les horodatages des clés de registre

Tirez parti des horodatages des clés de registre via PowerShell

charleswj81
la source
-3

Cette commande dans powershell devrait faire l'affaire:

systeminfo | findstr /C:"Install Date"
Mike
la source
1
Comment est-ce lié? Avez-vous lu la question?
Sven
-5

Naviguez via Mon ordinateur pour

C: \ Users et vous verrez tous les comptes d'utilisateurs répertoriés sur la machine locale. Vous pouvez cliquer avec le bouton droit sur le compte d'utilisateur approprié et accéder aux propriétés et il vous montrera une date de création, cela devrait être la même que la création du compte d'utilisateur

Juste mes 2 cents

Kevin
la source
2
-1 - Cela vous montre quand le répertoire de profil a été créé. Cela ne vous dit pas quand le compte a été créé car le répertoire de profil peut être supprimé et recréé à tout moment après la création du compte.
Evan Anderson
Bien que cela soit possible, 99% du temps, ce sera précis, et c'est assez bon pour la plupart
Kevin
On m'a toujours dit de rester simple ... il semble que nous obtenions tous les deux la même réponse, vous avez dû aller écrire un programme, et je viens de prendre les données déjà disponibles devant vous
Kevin
2
Désolé Kevin, ne le coupe presque pas pour cette solution particulière. Plus précisément, cela devait être fait pour les ordinateurs d'un laboratoire, où les dossiers de profil devaient être supprimés régulièrement pour maintenir les temps de connexion acceptables et le gaspillage d'espace, donc cette solution n'est en aucun cas plausible, car cette date est juste une date de création de dossier, pas une date de création de profil utilisateur .
MDMoore313
1
@Kevin La réponse "Keep it simple" est la mienne, c'est-à-dire qu'elle ne peut pas être effectuée, à moins que l'audit n'ait été activé avant la création du compte, bien que la création de la ruche de registre de l'utilisateur, du fichier ntuser.dat ou du dossier de profil utilisateur puisse fournir une approximation. La réponse complexe est celle d'EvanAnderson, qui fonctionne réellement, à ma grande surprise.
HopelessN00b