windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文
1.window的存储过程:
1.尝试登录
2.将用户输入的明文密码进行hash,丢弃明文明码,将缓存hash发送至服务器进行验证
3.服务器会生成一个16字节的随机数,挑战码
4.当客户端收到challenge以后,会复制一份出来,然后用缓存中的hash对他进行加密
结果为response,之后客户端将response,challenge,用户名一起发给服务器
5.服务端收到客户端的三个值后会把他们都转发给DC
6.当DC接到这三个值后,会根据用户名到AD里面找到用户名对应的NTLM Hash,然后用这个hash和传过来的challenge值再混合加密一次
7.最后将其hash与系统中存储的密文进行比较
密文存储在:C:\Windows\System32\config\SAM
2. 我们通过hashdump 抓取出所有用户的密文,分为两个模块,为什么? 这两个模块分别都代表什么
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 hash计算:
(1)用户的密码转换为大写,密码转换为16进制字符串,不足14字节将会用0来再后面补全。密码的16进制字符串被分成两个7byte部分。每部分转换成比特流,并且长度位56bit,长度不足
使用0在左边补齐长度
(2)再分7bit为一组,每组末尾加0,再组成一组
(3)上步骤得到的二组,分别作为key 为 "KGS!@#$%"进行DES加密。
(4)将加密后的两组拼接在一起,得到最终LM HASH值。
NTLM hash计算:
(1)先将用户密码转换为十六进制格式。
(2)将十六进制格式的密码进行Unicode编码。
(3)使用MD4摘要算法对Unicode编码数据进行Hash计算