- Windows登录的明文密码存储过程和密文存储位置
明文密码存储过程:
Windows操作系统不会以明文形式存储用户密码。相反,当用户设置或更改密码时,系统会对密码进行哈希处理,然后存储其哈希值。哈希处理的目的是为了提高密码的安全性,使得即使攻击者获得了存储的哈希值,也很难逆向破解出原始的明文密码。
密文存储位置:
Windows存储用户密码哈希值的主要地方是系统的安全账户管理数据库(SAM,Security Account Manager)和活动目录(对于域环境)。
本地SAM文件:
位置:C:\Windows\System32\config\SAM
特点:该文件被系统锁定,通常情况下无法直接访问。
活动目录(域控制器上的密码存储):
位置:%SystemRoot%\NTDS\ntds.dit
能否打开查看密文:
直接打开这些文件查看密文是不可行的。文件是系统保护的,并且哈希值是经过加密和混淆的,直接读取并不能得到用户的明文密码。
- 通过hashdump抓取出所有用户的密文,分为两个模块的原因
使用工具如hashdump提取用户密码哈希时,结果通常会显示两个部分:
LM Hash(LAN Manager Hash):
存在于较老的Windows系统中,为了兼容性,一些系统依旧支持。
由两部分组成:每个部分是7字节的密码块,用DES加密。
例如:aad3b435b51404eeaad3b435b51404ee
NT Hash(NTLM Hash,New Technology LAN Manager):
是Windows NT以来使用的较新哈希方式,使用MD4算法。
例如:8846f7eaee8fb117ad06bdd830b7586c
3. 为什么第一个模块永远是一样的aad3
LM Hash中,如果密码长度不足14个字符,系统会用空字符填充。当填充空字符时,产生的哈希部分会是AAD3B435B51404EE。因此,当密码长度不足14个字符且使用LM Hash时,第一个模块会始终显示AAD3B435B51404EE。
- 这两个模块的加密算法不同
LM Hash加密算法:
将密码转为大写。
如果密码少于14字符,用空字符填充至14字符。
将密码分成两个7字节块。
使用DES加密每个块。
将两个加密结果合并,形成16字节的LM Hash。
NT Hash加密算法:
将密码转为UTF-16LE编码。
使用MD4哈希算法对编码后的密码进行哈希运算。
结果为16字节的NT Hash。
总结
Windows不存储明文密码,而是存储密码的哈希值。
本地用户的密码哈希值存储在SAM文件中,域用户的存储在活动目录中。
通过hashdump抓取的哈希值分为两个部分,分别是LM Hash和NT Hash。
LM Hash存在较老系统中,第一个模块常为AAD3B435B51404EE。
LM Hash使用DES加密,NT Hash使用MD4哈希。