1.windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文?
Windows登录的明文密码在存储过程中会被转换成哈希值,而不是直接以明文形式存储。这种机制主要是为了提高系统的安全性,防止密码泄露。在Windows系统中,通常使用的是NTLM或Kerberos身份认证协议来进行密码的加密存储。
加密后的密码哈希值(密文)通常存储在C:\Windows\System32\config\SAM
文件中。这个文件是一个数据库,保存了Windows系统中所有用户的密码哈希值。
SAM文件受到Windows系统的保护,普通用户无法直接访问或打开它。即使具有管理员权限的用户,也需要通过特定的工具或方法才能访问该文件。
2.我们通过hashdump 抓取出 所有用户的密文,分为两个模块,为什么? 这两个模块分别都代表什么?
LM Hash和NTLM Hash,它们代表了两种不同的加密方式。
LM Hash(LAN Manager Hash)是Windows早期版本中使用的一种密码哈希算法。由于其安全性较低,现代Windows系统默认禁用了LM Hash,或者仅在密码长度超过14个字符时才使用它。如果LM Hash被禁用或未使用,hashdump工具可能会显示一个固定的值(如aad3b435b51404eeaad3b435b51404ee),表示LM Hash为空或未使用。而NTLM Hash(NT LAN Manager Hash)是Windows系统中更为常用的密码哈希算法,用于存储用户的密码信息。与LM Hash不同,NTLM Hash没有密码长度的限制,并且使用了更安全的加密算法。因此,在大多数情况下,NTLM Hash是Windows系统中更为可靠和安全的密码哈希方式。
3.为什么第一个模块永远是一样的aad3?
LM哈希不安全,都是aad3这样的内容说明LM Hash为空值或被禁用了。
4.这两个模块的加密算法有什么不同,如何加密的?
-
LM Hash的加密过程
- 转换为大写:首先将用户的明文密码全部转换为大写字母。
- 转换为16进制:接着将大写密码转换为16进制字符串。
- 补全长度:如果转换后的16进制字符串不足14字节,使用0来补全。
- 分割数据:将14字节的密码分成两组7字节的数据。
- 数据转换:每组7字节数据转换为64位二进制,每7位后面加0,再转换回16进制。
- DES加密:使用DES算法对每组数据进行加密,密钥为特定的字符串。
- 拼接结果:将两组加密后的数据拼接,得到最终的LM Hash值。
-
NTLM Hash的加密过程
- Unicode编码:将明文密码转换为Unicode编码。
- MD4加密:使用MD4算法对Unicode编码后的密码进行加密。
- 生成哈希值:得到的128位哈希值即为NTLM Hash值。
由于LM Hash的安全性较低,现代Windows系统默认禁用了该算法,或者仅在密码长度超过14个字符时才使用它。而NTLM Hash则没有长度限制,并且使用了更安全的MD4算法进行加密,这使得它比LM Hash更难以被破解。因此,在大多数情况下,NTLM Hash是Windows系统中更为可靠和安全的密码哈希方式。