本文主要是介绍windows登录的明文密码存储过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文:
在windows中,一般是通过保存密码的hash值来确保安全性,Windows 默认使用NTLM或Kerberos 身份认证协议进行加密存储密码。
存储过程:
(1)尝试登录
(2)客户端对密码进行哈希处理并缓存密码hash,丢弃实际的明文密码()然后将用户名发送到服务器,发起认证请求。
(3)服务器会生成一个16字节的随机数,挑战码(challenge),再传回客户端
(4)当客户端收到challenge以后,会复制一份出来,然后用缓存中的密码hash对它加密,结果称为response,表现形式是Net-NTLM Hash,之后客户端再将challenge,response及用户名一并都传给服务器。
(5)服务器端在收到客户端传过来的这三个值以后会把它们都转发给DC
(6)当DC接到过来的这三个值以后,会根据用户名到AD里面找到该用户名对应的NTLM Hash,然后用这个hash和传过来的challenge值再混合加密一次
(7)将加密后的hash值跟传过来的response进行比较,相同则认证成功反之,则失败
NTLM(NT LAN Manager):
(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:
(1)Kerberos是一种网络身份验证协议,他提供了更安全和更复杂的身份验证机制,已经成为windows领域中主要的标准。
(2)在Kerberos身份验证中,用户首先通过用户名和密码向Kerberos认证中心(Key Distribution Center,KDC)进行身份验证。KDC会向用户颁发一个特殊的票据(ticket),该票据用于后续与其他网络服务进行通信。
(3)当用户尝试访问网络资源时,客户端会向KDC请求服务票据(service ticket)KDC会验证用户的身份,并向用户颁发包含加密凭据的服务票据,使其可以访问所有请求的资源。
(4)Kerberos通过使用密钥加密通信,以及使用票据和票据授信等机制,提供了更高的安全性,相比于NTLM,Kerberos更难以被中间人攻击利用。
密文存在的位置:SAM保留了计算机本地所有用户的凭证信息,可以理解为一个数据库。
C:\Windows\System32\config\SAM
2. 我们通过hashdump 抓取出所有用户的密文,分为两个模块,为什么? 这两个模块分别都代表什么
hashdump模块:
通过利用目标系统上的漏洞或提权后的权限,来读取系统内存种SAM数据并提取密码哈希值。它通常利用的原理通常是通过注入恶意代码到目标系统的内存中,或者利用系统漏洞来获取密码哈希值。
hashdump抓取的密文分为LMhash和NThash:
LM Hash(LAN Manager Hash):微软为了提高windows操作系统的安全性而采用的散列加密算法,其本质是DES加密。尽管LM Hash较容易破解,但是为了保证系统的兼容性,windows只是将LM Hash禁用了,LM Hash明文密码被限制再14位以内,也就是说如果停止使用LM Hash,将用户的密码设置位14位以上就可以了。
NTLMHash:微软为了在提高安全性的同时保证兼容性而设计的散列加密算法,NTLMHash是基于MD4加密算法进行加密的。
为了保证系统的兼容性,windows只是将LM hash禁用了,但仍然会生成LM hash并且是固定值aad3b435b51404eeaad3b435b51404ee,所以在hashdump抓取结果可以看见两个密文模块。
3. 为什么第一个模块永远是一样的aad3
为了保证系统的兼容性,windows只是将LM hash禁用了,但仍然会生成LM hash并且是固定值aad3b435b51404eeaad3b435b51404ee,所以第一个模块永远都是add3。
4. 这两个模块的加密算法有什么不同,如何加密的
LM和NTLM都是使用hash算法加密的,但是LM是将明文转为16字节固定长度的hash值,而NTLM Hash使用更复杂的算法和更长的哈希值来存储密码,通常是32个字符的长度。
这篇关于windows登录的明文密码存储过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!