1.windows登录的明文密码,存储过程是怎么样的?密文存放在哪个文件下?该文件是否可以打开,并且查看到密文?
系统通过保存密码的哈希值来确保安全性,进行加密存储的方法通常为NTLM或Kerberos身份认证协议。该密文存放在C:\Windows\System32\config\SAM下,但由于系统的保护,这个文件无法直接打开查看到密文,即使通过管理员权限访问到了SAM文件,里面存储的也是经过哈希函数处理过的哈希值而非明文密码
2.通过hashdump抓取出所有用户的密文,分为两个模块,为什么?这两个模块分别代表什么?
通过hashdump抓取出的所有用户密文分为LMhash和NThash两个模块:
其中,LMhash是微软早期为了提高Windows操作系统的安全性而采用的散列加密算法,由于当时的技术限制,LMhash只支持最多14个字符的密码,且容易破解。因此现在的Windows系统中默认情况下不会使用LMhash来存储密码。
NThash则是如今windows系统常用的密码哈希算法,它是对LMHash的改进,支持更长的密码,这使得它比LM Hash更难以被破解。提供了更强的安全性。
为了兼容性考虑,LMhash被禁用,因此系统不再存储实际的LM Hash值,而是使用一个占位符来表示LM Hash已被禁用。因此在进行hashdump抓取时,除了NThash外会还得到一个固定的字符串“aad3b435b51404eeaad3b435b51404ee”。
3.为什么第一个模块永远是一样的aad3?
为了兼容性考虑,LMhash被禁用,因此系统不再存储实际的LM Hash值,而是用一个固定的字符串“aad3b435b51404eeaad3b435b51404ee”来代表被禁用的LMhash。
4.这两个模块的加密算法有什么不同,如何加密的
LMhash:
①将密码全大写,然后转换为16进制,其中不足14字节的用0补全;
②将上述转换后的编码按每组7字节分成2组;
③将上述分组后的每组数据分别转换为2进制,然后每7位后面加0,再转换为16进制得到2组8字节的编码;
④使用DES算法对上述的两组数据分别进行加密,密钥为特定的字符串;
⑤将加密后的两组拼接在一起,得出LMhash值。
NThash:
①先将密码转换为16进制,然后在每个字节后添加0x00变成Unicode编码格式;
②对得到的Unicode字符串进行MD4加密,得出一个32位的16进制字符串,即NThash值
两者最大的不同点在于LMhash采用了DES加密,而NThash则采用了MD4加密。