web-dev-qa-db-fra.com

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

J'aimerais obtenir la date de création d'un compte d'utilisateur local (Win 7 si cela compte). J'ai examiné les objets WMI suivants (et Google bien sûr):

Win32_UserAccountWin32_NetworkLoginProfile

Les objets sont revenus de NetworkLoginProfile ont la dernière heure de connexion, mais pas la date de création. Vérification de la Date Created La propriété de leur dossier de profil donne simplement la date à laquelle -dossier a été créé, pas nécessairement le compte lui-même.

8
MDMoore313

Les données sont dans le SAM mais cela ne semble pas être publiquement documentée par Microsoft et je ne trouve pas d'API officielle pour la récupérer. Je peux voir, regarder le code source pour l'utilitaire chntpw que la valeur est stockée dans la clé de registre "F" de chaque compte. Demandez 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 a un plugin, Samparse qui signalera la date de création de compte.

Un outil médico-légal n'est probablement pas ce que vous voulez, mais cela semble que Microsoft ne le rend pas facile.


Dans la recherche de cela, j'ai trouvé cela amusant que A Microsoft MVP ne savait pas que les données de création de compte sont stockées dans le SAM . À son avantage, il n'est peut-être pas absent de l'utilitaire chntpw, qui est où j'ai commencé ma recherche d'informations sur les structures SAM non documentées.

10
Evan Anderson

Le seul moyen de savoir réellement serait d'avoir audit de gestion de compte activé sur la calcul R lorsque le compte a été créé. Ensuite, vous verriez EfeviceID 4720 dans le journal des événements à la date de création. (L'article indique Active Directory, mais il en va de même pour les comptes locaux; j'ai vérifié.)

Sans cela, le plus proche que vous puissiez venir est de vérifier la date de création sur la ruche de registre de l'utilisateur, ntuser.dat Fichier, dossier de profil utilisateur, etc., mais comme mentionné dans les commentaires, cela n'est précis que pour la première connexion de l'utilisateur, comme c'est le cas où ces choses sont créées.

Malheureusement pour vous, ceci est un cas de "si vous ne l'avez pas connecté, cette information n'existe pas."

3
HopelessN00b

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 la logique chntpw est incorrecte. La valeur qu'il appelle le délai de création est en réalité le temps de jeu de mot de passe, bien que ces valeurs soient identiques sur la création de compte initial. Voir ICI pour une description exhaustive du SAM.

Le deuxième lien d'Evan, pour samparse, pourrait le faire correctement. En regardant sa fonctionne réellement. Si vous regardez sa source ici , ligne 99:

$c_date = $create->get_timestamp();

vous verrez cela appelle get_timestamp de Perl's Parse::Win32Registry. Je suis sûr que c'est en fait le dernier temps d'écriture de la clé. Comme il apparaît cette clé particulière (HKLM\SAM\SAM\Domains\Account\Users\Names\<USERNAME>) ne contient que un pointeur sur la touche RID correspondante, elle ne devrait pas changer après la création et le dernier temps d'écriture sera égal au temps de création.

Je veux rester avec des outils plus intégrés, voici une série d'articles de gars de script expliquant comment Via PowerShell:

tilisez PowerShell pour accéder au registre du timbre de la dernière modification du registre

Réutilisation du code de timbre de l'heure du registre PowerShell

Créez une fonction proxy pour afficher les horaires de clés de registre

timbres d'horodatage de registre de registre via PowerShell

1
charleswj81