简短回答

简短回答

假设我有一台装有 win7 的计算机,并且我创建了 2 个不同的帐户。现在我为这两个帐户设置了相同的密码。我的问题是 SAM 文件中的密码哈希值是否相同?

谢谢。

答案1

简短回答

是的:拥有相同密码的用户将共享相同的哈希值。


长答案

Windows 不会以明文形式存储用户帐户密码,而是使用两种不同的密码表示形式(通常称为“哈希”)来生成和存储用户帐户密码。当您将用户帐户的密码设置为或更改为包含少于 15 个字符的密码时,Windows 会同时生成该密码的 LAN Manager 哈希(LM 哈希)和 Windows NT 哈希(NT 哈希)。这些哈希存储在本地安全帐户管理器 (SAM) 数据库或 Active Directory 中。

来源:如何防止 Windows 在 Active Directory 和本地 SAM 数据库中存储密码的 LAN 管理器哈希值

NT 哈希和 LM 哈希均未加盐。

来源:密码技术概述

证明

  1. 以管理员身份打开命令提示符,并执行以下命令:

    net user "UserA" "Passw0rd!" /add
    net user "UserB" "Passw0rd!" /add
    
  2. 使用以下方法转储本地 LM/NT 哈希值fgdump

以下是不同操作系统下的结果:

  • Windows 2000 / XP

    UserA:1001:B34CE522C3E4C87722C34254E51BFF62:FC525C9683E8FE067095BA2DDC971889:::
    UserB:1002:B34CE522C3E4C87722C34254E51BFF62:FC525C9683E8FE067095BA2DDC971889:::
    
  • Windows Vista / 7

    UserA:1001:NO PASSWORD*********************:FC525C9683E8FE067095BA2DDC971889:::
    UserB:1002:NO PASSWORD*********************:FC525C9683E8FE067095BA2DDC971889:::
    

简而言之,第一个字段是用户帐户名称;第二个字段是唯一的安全标识符对于该帐户;第三个字段是 LM 哈希;第四个字段是 NT 哈希。

主要区别在于,从 Windows Vista 开始,出于安全原因,默认不再存储 LM 哈希。除此之外,您可以清楚地看到哈希是相同的。

进一步阅读

答案2

从 Windows Vista 开始,Windows 使用 NTLMv2 对密码进行哈希处理。在此之前,密码不会被加盐,这使得密码哈希变得简单且易于获取。由于此加盐,两个使用相同密码的用户不应该拥有 SAM 哈希。

Salt 的作用是在密码的某些部分添加字符,使得密码哈希更难被暴力破解。

相关内容