如何找到本地用户帐户的创建日期?


8

我想获取本地用户帐户的创建日期(如果重要,请赢7)。我看过以下WMI对象(当然还有Google):

Win32_UserAccount Win32_NetworkLoginProfile

从中返回的对象NetworkLoginProfile具有最后的登录时间,但没有创建日期。检查Date Created他们的个人资料文件夹的属性仅仅给出了日期的文件夹的创建,不一定帐户本身。


2
从聊天中添加:我可以在注册表创建日期中看到用户配置单元,但这仅基于他们的首次登录,而不是帐户创建日期。
TheCleaner 2014年

Answers:


10

数据在SAM中,但Microsoft似乎未公开记录它,而且我也没有找到官方的API来检索它。我可以看到,查看chntpw实用程序源代码,该值存储在每个帐户的“ F”注册表项中。查看源代码:

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

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

regripper取证项目有一个插件,samparse将报告该帐户的创建日期。

取证工具可能不是您想要的,但看起来Microsoft并不容易。


在研究此问题时,我发现Microsoft MVP不知道帐户创建数据存储在SAM中很有趣。为了他的利益,他可能并没有离开该chntpw实用程序,在这里我开始搜索有关未记录的SAM结构的信息。


您的想法对我很感兴趣,我希望---订阅您的时事通讯---,我的意思是学习如何使用此工具自己尝试。您可能会为此目的与我联系吗?(该死的降价!)
HopelessN00b 2014年

只是上面的regripper项目的链接。我个人没有使用过它,但是看起来相当容易处理。如果您只想引导实时CD而不是安装Perl环境来运行regripper,则好像它已包含在Kali Linux中(bugs.kali.org/print_bug_page.php?bug_id=246)。显然有一本关于这些工具的书。它看起来很昂贵:amazon.com/Windows-Registry-Forensics-Advanced-Forensic/dp / ... 在某些时候,我可能应该使用这些工具-我只是没有机会。
埃文·安德森

我认为Evan可能会向Richard Mueller道歉;)
charleswj81 2014年

我没有尝试这些工具。您是否发现日期没有填充?
埃文·安德森

不知道您是否在下面看到了我自己的答案,但是被称为“创建日期”的字段实际上是“密码上次更改”,在首次更改帐户后创建密码之前,该值显然将是相同的。
charleswj81

3

真正知道的唯一方法是在创建帐户时在计算机上启用帐户管理审核。然后,您会在创建日期在事件日志中看到EventID 4720。(文章说的是Active Directory,但同样适用于本地帐户;我检查过。)

否则,您可以通过检查用户的注册表配置单元,ntuser.dat文件,用户配置文件文件夹等上的创建日期来找到最接近的结果,但是正如注释中所提到的,这仅对于用户的首次登录是准确的,因为那时被创建。

对于您来说不幸的是,这是“如果您不登录,则该信息不存在”的情况。


1

我正准备给您一个POC PowerShell脚本来提取和解析创建时间,但是我意识到chntpw的逻辑是不正确的。它称为创建时间的值实际上是上次设置的密码,尽管这些值在初始帐户创建时是相同的。有关SAM的详尽说明,请参见此处

埃文(Evan)的第二个链接samparse可能正确。看它实际上是可行的。如果在这里查看其来源,第99行:

$c_date = $create->get_timestamp();

您会看到get_timestamp来自Perl的调用Parse::Win32Registry。我很确定这实际上是密钥的最后写入时间。由于特定键(HKLM\SAM\SAM\Domains\Account\Users\Names\<USERNAME>)似乎仅持有指向相应RID键的指针,因此创建后不应更改它,并且上一次写入时间将等于创建时间。

我想使用更多内置工具,这是一系列脚本专家的文章,说明如何通过PowerShell:

使用PowerShell访问注册表的上次修改时间戳

重用PowerShell注册表时间戳代码

创建代理功能以显示注册表项时间戳

通过PowerShell利用注册表项时间戳


-3

Powershell中的此命令应该可以解决问题:

systeminfo | findstr /C:"Install Date"

1
这有什么关系?你看过问题了吗?
斯文

-5

通过“我的电脑”导航至

C:\ Users,您将看到本地计算机上列出的所有用户帐户。您可以右键单击相应的用户帐户,然后转到属性,它将显示创建日期,该日期应与用户帐户的创建日期相同

就是我的2美分


2
-1-显示配置文件目录的创建时间。这不会告诉您何时创建帐户,因为可以在创建帐户后随时删除配置文件目录并重新创建。
埃文·安德森

尽管这是可能的,但99%的时间是准确的,这对于大多数人来说已经足够了
Kevin

我总是被告知要保持简单……似乎我们两个人都得到了相同的答案,您不得不编写一个程序,而我只是拿走了面前已经存在的数据
Kevin

2
抱歉,凯文(Kevin),对于这个特定的解决方案,几乎没有削减它。具体来说,必须在实验室中的计算机上执行此操作,在该实验室中必须定期删除配置文件文件夹,以保持可接受的登录时间并减少空间,因此该解决方案绝不是可行的,因为该日期只是文件夹创建日期,而不是用户配置文件创建日期。
MDMoore313 2014年

1
@Kevin“保持简单”的答案是我的,这是不可能做到的,除非在创建帐户之前启用了审核,尽管创建用户注册表配置单元,ntuser.dat文件或用户配置文件文件夹可能会提供帮助一个近似值。复杂的答案是EvanAnderson的答案,它确实有效,令我惊讶。
HopelessN00b 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.