Wie finde ich das Erstellungsdatum eines lokalen Benutzerkontos?

8

Ich möchte das Erstellungsdatum eines lokalen Benutzerkontos erhalten (Win 7, wenn es darauf ankommt). Ich habe mir die folgenden WMI-Objekte angesehen (und natürlich Google):

Win32_UserAccount Win32_NetworkLoginProfile

Die von zurückgegebenen Objekte NetworkLoginProfilehaben die letzte Anmeldezeit, jedoch nicht das Erstellungsdatum. Wenn Sie die Date CreatedEigenschaft ihres Profilordners überprüfen, wird lediglich das Erstellungsdatum des Ordners angegeben , nicht unbedingt das Konto selbst.

MDMoore313
quelle
2
So fügen Sie aus dem Chat hinzu: Ich kann sehen, dass sich der Benutzer im Erstellungsdatum der Registrierung befindet, dies basiert jedoch nur auf der ersten Anmeldung und nicht auf dem Erstellungsdatum des Kontos.
TheCleaner

Antworten:

10

Die Daten befinden sich im SAM, scheinen jedoch von Microsoft nicht öffentlich dokumentiert zu sein, und ich finde keine offizielle API zum Abrufen. Ich kann anhand des Quellcodes des chntpwDienstprogramms sehen, dass der Wert im Registrierungsschlüssel "F" für jedes Konto gespeichert ist. Quoth den Quellcode:

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

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

Das Regressipper Forensics-Projekt verfügt über ein Plugin, das das Erstellungsdatum des Kontos angibt .

Ein Forensik-Tool ist wahrscheinlich nicht das, was Sie wollen, aber es sieht so aus, als würde Microsoft es nicht einfach machen.


Als ich dies recherchierte, fand ich es amüsant, dass ein Microsoft MVP nicht wusste, dass die Daten zur Kontoerstellung im SAM gespeichert sind . Zu seinem Vorteil ist er vielleicht nicht von dem chntpwDienstprogramm entfernt, in dem ich meine Suche nach Informationen über undokumentierte SAM-Strukturen begonnen habe.

Evan Anderson
quelle
Ihre Ideen faszinieren mich und ich möchte --- Ihren Newsletter abonnieren --- , ich meine, lernen Sie, wie Sie dieses Tool verwenden, um dies selbst zu versuchen. Würden Sie vielleicht eine Verbindung haben, die ich zu diesem Zweck nutzen könnte? (Verdammt, Sie Markdown!)
HopelessN00b
Nur der Link zum Regripper-Projekt oben. Ich persönlich habe es nicht benutzt, aber es sieht ziemlich einfach aus, damit umzugehen. Es sieht so aus, als ob es jetzt in Kali Linux enthalten ist ( bugs.kali.org/print_bug_page.php?bug_id=246 ), wenn Sie lieber nur eine Live-CD booten möchten, anstatt eine Perl-Umgebung zu installieren, um Regripper auszuführen. Anscheinend gab es ein Buch über diese Werkzeuge. Es sieht teuer aus: amazon.com/Windows-Registry-Forensics-Advanced-Forensic/dp/… Ich sollte wahrscheinlich irgendwann mit diesen Tools herumspielen - ich hatte einfach keine Gelegenheit dazu.
Evan Anderson
Ich denke, Evan könnte Richard Mueller eine Entschuldigung schulden;)
charleswj81
Ich habe die Werkzeuge nicht ausprobiert. Finden Sie, dass das Datum nicht ausgefüllt wird?
Evan Anderson
Ich bin mir nicht sicher, ob Sie meine eigene Antwort unten gesehen haben, aber das Feld, das als "Erstellungsdatum" bezeichnet wird, lautet "Passwort zuletzt geändert". Dies ist offensichtlich der gleiche Wert bis zur ersten Änderung des Passworts für die Erstellung nach dem Konto.
Charleswj81
3

Die einzige Möglichkeit, dies tatsächlich zu wissen, besteht darin, die Überwachung der Kontoverwaltung auf dem Computer zu aktivieren, als das Konto erstellt wurde. Dann wird EventID 4720 zum Erstellungsdatum im Ereignisprotokoll angezeigt. (Der Artikel sagt Active Directory, aber das gleiche gilt auch für lokale Konten; ich habe es überprüft.)

Ohne dies können Sie am nächsten kommen, indem Sie das Erstellungsdatum in der Registrierungsstruktur, der ntuser.datDatei, dem Benutzerprofilordner usw. des Benutzers überprüfen. Wie in den Kommentaren erwähnt, ist dies jedoch nur in Bezug auf die erste Anmeldung des Benutzers korrekt, da dies dann der Fall ist erstellt werden.

Leider ist dies ein Fall von "Wenn Sie es nicht protokolliert haben, sind diese Informationen nicht vorhanden."

HopelessN00b
quelle
1

Ich wollte Ihnen gerade ein POC PowerShell-Skript geben, um die Erstellungszeit zu extrahieren und zu analysieren, aber mir wurde klar, dass chntpwdie Logik falsch ist. Der Wert, der als Erstellungszeit bezeichnet wird, ist tatsächlich die zuletzt festgelegte Kennwortzeit, obwohl diese Werte bei der ersten Kontoerstellung identisch sind. Sehen Sie hier für eine ausführliche Beschreibung des SAM.

Evans zweiter Link samparsekönnte es jedoch richtig machen. Das Betrachten funktioniert tatsächlich. Wenn Sie sich die Quelle hier ansehen , Zeile 99:

$c_date = $create->get_timestamp();

Sie werden sehen, dass es get_timestampvon Perl ruft Parse::Win32Registry. Ich bin mir ziemlich sicher, dass dies tatsächlich die letzte Schreibzeit des Schlüssels ist. Da es den Anschein hat, dass ein bestimmter Schlüssel ( HKLM\SAM\SAM\Domains\Account\Users\Names\<USERNAME>) nur einen Zeiger auf den entsprechenden RID-Schlüssel enthält, sollte er sich nach der Erstellung nicht ändern, und die letzte Schreibzeit entspricht der Erstellungszeit.

Wenn Sie sich an mehr integrierte Tools halten möchten, finden Sie hier eine Reihe von Scripting Guy-Artikeln, in denen erläutert wird, wie dies über PowerShell geschieht:

Verwenden Sie PowerShell, um auf den zuletzt geänderten Zeitstempel der Registrierung zuzugreifen

Wiederverwenden des PowerShell-Registrierungszeitstempelcodes

Erstellen Sie eine Proxy-Funktion zum Anzeigen von Zeitstempeln für Registrierungsschlüssel

Nutzen Sie Zeitstempel für Registrierungsschlüssel über PowerShell

charleswj81
quelle
-3

Dieser Befehl in Powershell sollte den Trick machen:

systeminfo | findstr /C:"Install Date"
Mike
quelle
1
Wie hängt das zusammen? Hast du die Frage gelesen?
Sven
-5

Navigieren Sie über Arbeitsplatz zu

C: \ Benutzer und Sie sehen alle auf dem lokalen Computer aufgelisteten Benutzerkonten. Sie können mit der rechten Maustaste auf das entsprechende Benutzerkonto klicken und zu den Eigenschaften wechseln. Daraufhin wird ein Erstellungsdatum angezeigt. Dies sollte mit der Erstellung des Benutzerkontos übereinstimmen

Nur meine 2 Cent

Kevin
quelle
2
-1 - Das zeigt Ihnen, wann das Profilverzeichnis erstellt wurde. Das sagt Ihnen nicht, wann das Konto erstellt wurde, da das Profilverzeichnis jederzeit nach der Erstellung des Kontos gelöscht und neu erstellt werden konnte.
Evan Anderson
Während das möglich ist, wird es in 99% der Fälle genau sein, und dies ist für die meisten gut genug
Kevin
Mir wurde immer gesagt, ich solle es einfach halten ... anscheinend haben wir beide ungefähr die gleiche Antwort, Sie mussten ein Programm schreiben und ich habe nur die Daten genommen, die bereits vor Ihnen verfügbar waren
Kevin
2
Tut mir leid, Kevin, für diese spezielle Lösung ist das fast nicht der Fall. Dies musste insbesondere für Computer in einem Labor durchgeführt werden, in denen die Profilordner regelmäßig gelöscht werden mussten, um die Anmeldezeiten akzeptabel und den verschwendeten Speicherplatz niedrig zu halten. Daher ist diese Lösung in keiner Weise plausibel, da dieses Datum gerecht ist Ein Erstellungsdatum für Ordner, kein Erstellungsdatum für Benutzerprofile .
MDMoore313
1
@ Kevin Die Antwort "halte es einfach" ist meine, dh es kann nicht durchgeführt werden, es sei denn, die Überwachung wurde vor der Kontoerstellung aktiviert, obwohl die Erstellung der Registrierungsstruktur, der Datei ntuser.dat oder des Benutzerprofilordners des Benutzers möglicherweise dies ermöglicht eine Annäherung. Die komplexe Antwort ist die von EvanAnderson, die zu meiner Überraschung tatsächlich funktioniert.
HopelessN00b