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进行比较,相同则认证成功反之,则失败 密文存在的位置:SAM保留了计算机本地所有用户的凭证信息,可以理解为一个数据库。
2. 我们通过hashdump 抓取出 所有用户的密文,分为两个模块,为什么? 这两个模块分别都代表什么
NTLM模块:这个模块代表的是NT LAN Manager,这是一种较早的加密方式,主要用于Windows NT/2000/XP等操作系统中的用户密码存储。NTLM加密算法较为简单,容易被破解工具如hashdump所利用。
LM模块:这个模块代表的是LAN Manager,同样是一种较早的加密方式,用于Windows95/98/ME等操作系统中的用户密码存储。与NTLM类似,LM加密算法也较为简单,容易被破解工具所利用。
总结来说,将hashdump抓取的密文分为两个模块是为了分别处理这两种不同的加密算法,
因为它们各自有不同的特点和破解难度。这种分模块处理的方法有助于更有效地提取和分析密码信息,
尤其是在进行安全审计或渗透测试时。
3. 为什么第一个模块 永远是一样的aad3
至于为什么第一个模块永远是相同的固定值,这是因为早期版本的Windows使用了一种名为LAN Manager Hash(LM Hash)的加密方法。由于LM Hash使用的DES加密算法安全性较低,较容易被破解,微软在新的Windows版本中默认禁用了LM Hash,但出于兼容性考虑,系统仍然会生成一个固定的LM Hash值。
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计算