星期一一大早,大伙儿一如既往地投入在工作之中。

正在大伙儿忙得不可开交的时候,刘秘书突然急匆匆跑来找我,说又出事儿了!


原来,今天一早阚总有个重要会议,直到10点多才结束,这期间他都不在办公室。

等他回到办公室时,发现他的笔记本电脑怎么也登录不上了,密码怎么试都不对。

明明前一天还在用还好好的,怎么今天就不行了?

不知道是不是今早心情不好还是咋的,阚总居然因此大发雷霆,说肯定是谁碰了他的电脑,要让保安查监控。


其实根本就不用看监控,阚总的办公室前后拢共只有三个人进去过,刘秘书一直在门口盯着呢!

一个是维修工,趁没人正好修理办公室里的电器设备,大概在8点10分到8点30分之间进入;

另一个是清洁工,一大早办公室里没人正好打扫卫生,在维修工之后,大概在8点30分到8点50分之间进入;

还有一个就是刘秘书,送一份之前整理好的资料,大概在8点55分到9点05分之间进入。


究竟是谁动了阚总的电脑呢?

大伙儿直呼冤枉,特别是刘秘书,说阚总真是个难伺候的主,求我务必得帮帮她!

我心想,这电脑问题怎么还上升到了刑事案件了,还特么查监控,有点吃饱了那个啥了吧!

我也看过了,电脑的确无法登录,原先的密码根本就不正确。

后来我用 PE 光盘将 Administrator 用户激活后成功登录,但阚总的用户密码没有去动它。

原因很简单,大家伙都希望我帮他们证明清白,而我也很好奇,要是能看到什么时候修改的密码不就方便了嘛!

那能不能看到密码的修改时间呢?

如果能,又如何查看密码是啥时间修改的呢?


域用户查看最后一次修改密码的时间

打开 ADSI 编辑器(需要安装客户端 AD 管理工具),找到对应用户后查看其属性。

在用户属性窗口中的 属性编辑器 选项卡中,我们找到 pwdLastSet 一项,即可看到最近密码修改时间。


如果嫌打开 ADSI 编辑器麻烦的话,直接用条命令就可以快速查看最近密码修改时间了。

# 使用 PowerShell 执行以下命令
Get-ADUser -Filter 'Name -like "Username*"' -Properties * | Select-Object name, passwordlastset
 


很方便就知道了最后修改密码的时间,不过事情好像并没有那么简单!

阚总的这台笔记本电脑并不是域成员,也就是说,他的电脑是个独立的单机,由于新买还没有加入到公司域网络中。

这种情况下我们并不能通过查询域信息来定位密码修改时间了。

那么眼前的问题会无解吗?


单机系统也能查看最近密码修改时间

经过资料的查找,单机系统也有记录密码修改的功能,这一点已经被证实了。

不过虽说是这样,但很显然与统一管理的域环境相比,单机系统要想查询密码修改时间就显得相对复杂一些。


首先,我们就要找到存放密码修改时间的场所。

有的小伙伴可能猜到了,没错,它就藏在注册表中!

不过我前面说了,它并没有那么简单地能让你很方便地找出来。

因为它的藏身之处是需要高级管理员权限的,这个权限并不是 Administrators ,而是系统用户 SYSTEM

通常 SYSTEM 是用来跑系统服务的,一般它都是在站在后台的,在前面我们是看不到的,因此一般情况下我们几乎不太用这个 SYSTEM

但是这次我们想要看到密码修改时间,那就不得不要用到这个 SYSTEM 了。


怎么用 SYSTEM 呢?

照以前我们是要自己写程序才行的,灰常麻烦,不过现在有现成的便利工具了。

我们可以到 Nirsoft 上下载一个叫作 nircmd 的小工具,利用这个工具我们就可以以 SYSTEM 用户身份运行一切程序了。

流口水了吗,先擦一擦,我们还没开始干活呢!

下载我就不啰嗦了,如果你找不到可以关注我留言给我,我会发给你一份。


好了,长话短说,使用 nircmdSYSTEM 用户身份运行 regedit.exe ,命令如下。

nircmd.exe elevatecmd runassystem c:\windows\regedit.exe
 


如果打开成功,那么你会看到这样子。


如果你没有使用 SYSTEM 来打开注册表,那么就可能看不到什么了。


OK!没错,我们终于找到了记录在注册表中的系统用户项,就是下面这个路径。

HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users
 


其中 Names 项中的各个用户名都一一对应着相应不同的 16 进制数字。

比如我这儿的 Administrator 其数字是 0x1f4 ,那么在 Users 项中就对应的是 000001F4


然后,我们点击相应的用户数字,(比如 000001F4 ,也就是 Administrator 用户)找到名为 F 的键,它是一个二进制类型的注册表键,打开它我们看看它的值是什么。


我的乖乖,好家伙,我们可以看到是一堆16进制的数字,完全看不懂啊,它们都表示什么意思呢?

请注意了,从第四行,也就是从 00000018 字节开始,一共八位的数字,就是用来表示日期时间的。

有的小伙伴要说了,你开什么玩笑,这玩意怎么看得出来是日期时间?

别着急,后面会对它进行分析,要不前面怎么说这玩意就是有些复杂呢!


如果这几位数字都是 0 ,那么说明没有修改过密码,密码就是初始的空密码。

如果有数字就是修改过密码,比如我这儿的示例:

1C 3D B7 63 0C 7A D8 01
 


好了,为了让我们能看得懂这个16进制格式的日期时间,我们需要请出大神来帮助我们。

当然我们不用真的请大神出来,我们只要使用大神的便利工具 DCode 就行,可以轻易地获取到这串16进制字符串格式所表示的日期时间。


DCode-x86-EN-5.5.21194.40.zip(28.2M)

下载链接:https://pan.baidu.com/s/1uBeWnsrqv4AvDtknljIq5Q

提取码:

输入阅读密码,解锁隐藏内容...



★扫码关注公众号, 发送【000979】获取阅读密码


我们将16进制字符串 01d87a0c63b73d1c 输入到 Value 中,选择大尾端 Big-Endian ,并点击解码 Decode

字符串 01d87a0c63b73d1c 实际表示的就是 2022-06-07 09:17:43 这个时间,请看图片的左下角 Windows Filetime 一项。


最后,利用文件系统日期格式转化为人类能看得懂日期格式的算法,我自己写了一个简单小巧的程序。

输入大尾端 Big-Endian 16进制日期,然后点击 转换 即可查看实际日期。


XJFiletime2Datetime.7z(36.7K)

下载链接:https://pan.baidu.com/s/1x8J8LhBBAvE9ZSj5EKkfoQ

提取码:

输入阅读密码,解锁隐藏内容...



★扫码关注公众号, 发送【000979】获取阅读密码


有的小伙伴可能会懵,什么大尾巴小尾巴?

咳咳...是大尾端和小尾端啦!

这是指数据存放的方式,具体的请各位网上查一查资料,这里展开可能篇幅不够了。

我们只要记住:大小尾端可以互相转换,方法很简单,就是将首尾的16进制数字调换就行了。


如果不是 01 开头的字符串,那么可能这是小尾端格式(注册表中就是这样),将其首尾调换即可。

比如小尾端格式:

# 标记一下顺序,看得更清楚易懂
1  2  3  4  5  6  7  8
1C 3D B7 63 0C 7A D8 01
 

首尾调换一下顺序就成大尾端了,像这样:

# 标记一下顺序,看得更清楚易懂
8  7  6  5  4  3  2  1
01 D8 7A 0C 63 B7 3D 1C
 

注意:为了让大家看得更清楚,我用空格将数字隔开了,实际上不用加空格哦!


如果小伙伴们对这个十六进制换日期格式的算法有兴趣的话,可以到我以前写的文章中找一找。

有一篇《十六进制的时间格式到底是个什么鬼?》中写得很清楚,可以给大家拿来参考,我在这儿就不赘述了。


写在最后

后来从最后的调查结果来看,阚总电脑的密码是在前一天的 20:16:18 这个时间点修改的。

而前一天是个星期天,阚总将电脑带回家中,曾经让家里的孩子用电脑上了一会儿网课。

有可能是阚总去忙别的什么事情了,小孩子在下课之余又玩了一会电脑,有可能就在这时出于调皮恶作剧还是别的啥原因给修改了密码。

之后阚总也确认孩子确实改了他电脑密码这事儿,至此真相大白、水落石出。

事后阚总也为当初无端发火表示后悔,同时也向同事们表达了诚恳的歉意,大伙儿这才松了一口气。

大家也纷纷表示,多亏了我才让事情有了个圆满的结局。

而我呢并没有将此事放在心上,人人为我,我为人人嘛!

其实我一直在琢磨另一件事儿,我很想知道到底是谁动了我的微信余额......


扫码关注@网管小贾,个人微信:sysadmcc

网管小贾 / sysadm.cc



暂无评论

登录并提交评论

© 2020-present 网管小贾 | 微信公众号 @网管小贾
许可协议:CC-BY-NC 4.0 | 转载文章请注明作者出处及相关链接