我有两台机器 MachineA 和 MachineB。两台机器都有两个具有相同用户名的本地帐户。两个帐户都是这些机器上的本地管理员。
如果他们有相同的密码,我就可以\\MachineA\C$
从访问MachineB
。
但如果我更改上面的任何一个密码,它都不起作用。它会提示输入用户名和密码。现在,如果我提供 MachineA\username 和密码,它就会连接。
为什么密码相同时没有提示输入密码?我期望密码使用随机盐进行哈希处理,Windows 如何知道密码相同并授权访问?
这些机器运行的是 Windows Server 2008 R2。
PS. 我创建了以下注册表项以启用
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy
对 1 的驱动器访问
答案1
登录后,Windows 会获取您输入的密码并将其 LM 和 NT 哈希存储在内核内存中,以便在工作组和 NT4 域上提供此单点登录功能。(在 Active Directory 域上,登录期间获得的 Kerberos TGT 也会被存储。)
用户空间程序无法直接访问这些哈希值1,但它们可以要求内核使用存储的密码/票证连接到 SMB 服务器,或者执行NTLM 质询-响应或者凯尔伯罗斯代表程序进行身份验证(对于其他协议,如 IMAP 或 HTTP)。
此外,Windows NT 使用无盐本地身份验证和 NTLM 的 MD4 哈希值,但这并不重要——如果有必要,它也可以将纯文本密码保存在内存中。
1有一个工具西太平洋海岸带如果有足够的权限,它可以检查内核内存并显示存储的凭据。