1. windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文
2. 我们通过hashdump 抓取出 所有用户的密文,分为两个模块,为什么? 这两个模块分别都代表什么
3. 为什么第一个模块 永远是一样的aad3
4. 这两个模块的加密算法有什么不同,如何加密的
一、windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文
在Windows系统中,用户的登录密码不会以明文形式存储。相反,系统会将密码通过特定的算法转换成加密的哈希值(hash value),然后存储这个哈希值以确保安全性。
这些明文密码会被加密成两种类型的哈希值:LM哈希和NT哈希。LM哈希是基于DES算法加密的,而NT哈希则是基于MD4算法加密的。
用户密码的哈希值通常存储在安全账户管理器(Security Account Manager,简称SAM)数据库中。在Windows操作系统中,SAM数据库文件位于`C:\Windows\System32\config\sam`路径下。
通常情况下,这个SAM文件是受到保护的,并且无法直接打开查看。此外,即使能够打开SAM文件,由于密码是以哈希值的形式存储的,没有相应的解密密钥和算法,也无法直接查看到明文密码。
总结来说,Windows系统中的明文密码不会直接存储,而是转换成哈希值后存储在SAM数据库中,这个文件受到系统保护,正常情况下无法打开查看,且直接查看也无法获得明文密码。
二、我们通过hashdump 抓取出 所有用户的密文,分为两个模块,为什么? 这两个模块分别都代表什么
通过hashdump抓取出所有用户的密文分为两个模块,这两个模块分别是LMhash和NThash。LM Hash全名为“LAN Manager Hash”,而NThash则是另一种类型的哈希值。
这两种哈希算法分别对应不同的密码存储和认证机制,因此在使用工具如hashdump抓取密码哈希时,会分为两个模块来分别表示它们。
这种分组的原因在于Windows系统中存储密码的机制。在早期版本的Windows系统中,如Windows 95、98等,使用的是LM Hash来存储用户的密码。而从Windows NT(例如Windows 2000及以上版本)开始,引入了NT Hash作为新的密码存储方式。因此,hashdump工具在处理不同版本的Windows系统时,需要区分这两种不同的哈希值,以便正确地提取和分析密码信息。
hashdump工具抓取的密码哈希分为两个模块的原因是为了区分这两种不同的哈希算法,因为它们代表了不同的安全级别和兼容性。LM哈希虽然安全性较低,但在某些旧系统或特定环境下可能仍在使用;而NTLM哈希则提供了更强的安全性。
三、为什么第一个模块 永远是一样的aad3
LM哈希(LAN Manager Hash)的一个特点是它对密码进行分组处理,并且如果密码长度小于14个字符,LM哈希会将密码补齐到14个字符。在补齐过程中,LM哈希会将密码分成两组7个字符,如果密码不足14个字符,它会在每个组的末尾添加一个特定的填充字符,然后分别对这两组字符进行哈希处理。
LM哈希的前7个字符(如果原始密码长度足够)或补齐到7个字符后的密码,会被转换成DES哈希,并且通常会有一个固定的前缀 aad3b435b51404eeaad3b435b51404ee
。这个固定的前缀是LM哈希算法的一部分,用于在密码的DES哈希计算中模拟密码的第一个字符是"AAA"的情况。
因此,当使用LM哈希算法时,不管原始密码是什么,只要密码长度不足14个字符,LM哈希的第一部分(即对应密码前7个字符的哈希)都会包含这个固定的前缀。这就是为什么LM哈希的“第一个模块”看起来总是一样的。
四、这两个模块的加密算法有什么不同,如何加密的
LM哈希和NTLM哈希是两种不同的加密算法,它们在Windows系统中用于存储和验证用户密码。以下是这两种算法的主要区别和加密过程:
LM哈希(LAN Manager Hash):
1. 密码处理:LM哈希算法将用户的密码转换为大写,并且只考虑前14个字符。
2. 长度补足:如果密码长度不足14个字符,LM哈希会用0填充至14个字符。
3. 分组:将14个字符的密码分成两组7个字符,每组转换成56位的二进制数据。
4. 密钥生成:每组二进制数据进一步划分为8个7位的块,每块后面填充一个0,形成两个8字节的密钥。
5. DES加密:使用DES(Data Encryption Standard)算法和固定的魔术字符串“KGS!@#$%”作为明文,对每组密钥进行加密。
6. 拼接哈希:将两次DES加密的结果拼接起来,形成最终的LM哈希。
NTLM哈希(NT LAN Manager Hash):
1. 十六进制转换:将用户的明文密码转换成十六进制格式。
2. Unicode编码:将十六进制格式的密码进行Unicode编码,即在每个字节之后添加0x00。
3. MD4哈希:使用MD4算法对Unicode编码的字符串进行哈希计算,生成128位的哈希值,即NTLM哈希。
加密过程的不同
- LM哈希使用的是DES算法,并且有一个固定的魔术字符串作为加密的一部分,而NTLM哈希使用的是MD4哈希算法。
- LM哈希在处理密码时对长度有限制,并且不区分大小写,而NTLM哈希则没有这个限制,且大小写敏感。
- LM哈希的加密过程包括将密码分割并使用DES算法加密,而NTLM哈希则是将整个Unicode编码的密码通过MD4算法一次性哈希。
安全性
- LM哈希因其固定密钥和较短的密码长度而被认为是不安全的,容易受到暴力破解攻击。
- NTLM哈希相比LM哈希更为安全,但由于MD4算法本身的局限性,NTLM哈希也可以被破解,尤其是在使用较弱的密码时。
现代系统中的应用
- 从Windows Vista和Windows Server 2008开始,默认情况下只存储NTLM哈希,LM哈希不再被使用。
- 微软推荐使用更安全的Kerberos认证协议,它在现代Windows系统中被广泛采用。
综上所述,LM哈希和NTLM哈希在加密方法和安全性方面有显著的不同,NTLM哈希更为安全,而LM哈希由于其已知的弱点,已经在较新的Windows系统中被淘汰。