1. 在windows中,用户登录的密码一般不会以明文的形式保存在计算机中,而是通过保存密码的hash值来确保它的安全性;Windows默认使用NTLM或Kerberos身份认证协议进行加密存储用户登录的密码。
NTLM
1) NTLM是windows早期版本中使用的一种身份验证协议,现在仍然在某些情况下使用,尽管在现代系统已经被Kerberos取代。
2 )在NTLM身份验证中,服务器向客户端发送一个随机的质询(challenge),客户端使用用户的密码来计算响应(response),然后将响应发送回服务器,服务器使用与存储的密码哈希值相同的算法来验证响应。
3 )NTLM身份验证中存在一些安全问题。传输过程中可能被中间人攻击截获密码哈希值的风险;在某些情况下可能会暴露密码的明文形式在内存中。
4 )在NTLM认证中,NTLM响应分为NTLM v1,NTLMv2,NTLM session v2三种协议,不同协议使用不同格式的Challenge和加密算法,所以也就存在不同协议的Net-NTLM hash,即Net-NTLM v1 hash,Net-NTLM v2 hash。
Kerberos
Kerberos是一种网络身份验证协议,它提供了更安全和更复杂的身份验证机制,已经成为Windows领域中的主要标准。
在Kerberos身份验证中,用户首先通过用户名和密码向Kerberos认证中心(Key Distribution Center,KDC)进行身份验证。KDC会向用户颁发一个特殊的票据(ticket),该票据用于后续与其他网络服务进行通信。
当用户尝试访问网络资源时,客户端会向KDC请求服务票据(service ticket)。KDC会验证用户的身份,并向用户颁发包含加密凭据的服务票据,使其可以访问所请求的资源。
Kerberos通过使用密钥加密通信,以及使用票据和票据授信等机制,提供了更高的安全性,相比于NTLM,Kerberos更难以被中间人攻击利用。
2. LM Hash:LMHash 是 Windows 系统早期版本中用于存储密码哈希的一种较旧的算法。它将用户密码转换成固定长度(16 字节)的哈希值。然而,由于 LMHash 的弱点在于易于破解,现代的 Windows 操作系统通常不再使用 LMHash 存储密码,而是更安全的 NTLM Hash。
NTLM Hash:NTLM Hash 是一种更安全的密码哈希算法,用于在 Windows 系统中存储用户密码的哈希值。NTLM Hash 使用更复杂的算法和更长的哈希值来存储密码,通常是 32 个字符的长度。相比于 LMHash,NTLM Hash 更难以破解,并提供了更高的安全性。
3. 第一个模块 永远是一样的aad3是为了保证系统的兼容性,windows只是将LM hash禁用了,但仍然会生成LM hash并且是固定值aad3,所以第一个模块永远都是add3
4. LM和NT的区别
1)LM和NT都是使用hash算法加密
2)LM是将明文转为16字节固定长度的hash值
NTNTLM Hash 使用更复杂的算法和更长的哈希值来存储密码,通常是 32 个字符的长度,具有更高的安全性