1. windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文?
windows内部是不保存明文密码的,只保存密码的hash。其中本机用户的密码hash是放在本地的SAM文件里面,域内用户的密码hash是存在域控的NTDS.DIT文件里面。
2. 我们通过hashdump 抓取出 所有用户的密文,分为两个模块,为什么? 这两个模块分别都代表什么?
在Windows系统导出密码的时候,经常看到这样的密码格式
Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::
其中的AAD3B435B51404EEAAD3B435B51404EE
是LM Hash,
31D6CFE0D16AE931B73C59D7E0C089C0
是NTLM Hash。
3. 为什么第一个模块永远是一样的aad3
Microsoft 于1993年在Windows NT 3.1中引入了NTLM协议。从Windows Vista 和 Windows Server 2008开始,默认情况下只存储NTLM Hash,LM Hash将不再存在。如果空密码或者不储蓄LM Hash的话,我们抓到的LM Hash是AAD3B435B51404EEAAD3B435B51404EE
。所以在win7 中我们看到抓到LM Hash都是AAD3B435B51404EEAAD3B435B51404EE
,这里的LM Hash并没有价值。
4. 这两个模块的加密算法有什么不同,如何加密的
LM hash全称是LAN Manager Hash, windows最早用的加密算法,由IBM设计。
LM Hash的计算:
-
用户的密码转换为大写,密码转换为16进制字符串,不足14字节将会用0来再后面补全。
-
密码的16进制字符串被分成两个7byte部分。每部分转换成比特流,并且长度位56bit,长度不足使用0在左边补齐长度
-
再分7bit为一组,每组末尾加0,再组成一组
-
上步骤得到的二组,分别作为key 为 "
KGS!@#$%
"进行DES加密。 -
将加密后的两组拼接在一起,得到最终LM HASH值。
NTLM Hash的计算
1.先将用户密码转换为十六进制格式。
2.将十六进制格式的密码进行Unicode编码。
3.使用MD4摘要算法对Unicode编码数据进行Hash计算