问题1. windows登录的明文密码,存储过程是怎么样的?密文存在哪个文件下?该文件是否可以打开,并且查看到密文?
回答:
Windows登录的明文密码的存储过程是:
- 当用户尝试登录Windows时,系统会要求用户输入密码。
- 用户输入的密码不会以明文形式直接存储在计算机上,而是会传递给本地安全机构(LSA)。
- LSA会对密码进行哈希处理(加密),生成密码的哈希值。
- 加密后的哈希值会存储在Windows注册表中的安全账户管理器(SAM)数据库中。
密文(即密码的哈希值)存储在SAM数据库中,该数据库通常位于
C:\Windows\System32\config\SAM
目录下。
SAM文件是系统级文件,并且受到操作系统的保护,因此一般情况下无法直接打开。并且由于SAM文件是以二进制形式存储的,并且包含加密的哈希值,因此即使能够打开文件,也无法直接查看到明文密码或易于理解的密文形式。
问题2. 我们通过hashdump 抓取出 所有用户的密文,分为两个模块,为什么? 这两个模块分别都代表什么?
回答:
可以看到 windows hash由二部分组成,分别是LM HASH和NTLM HASH
这是对同一个密码的两种不同的加密方式。
组成为:username:RID:LM-HASH值:NTLM-HASH值
我们通过hashdump抓取出所有用户的密文时,密文被分为两个模块,这是因为Windows系统为了兼容性和安全性,采用了两种不同的哈希算法来存储用户密码的散列值。这两个模块分别代表:
这种分组的原因在于Windows系统中存储密码的机制。在早期版本的Windows系统中,如Windows 95、98等,使用的是LM Hash来存储用户的密码。而从Windows NT(例如Windows 2000及以上版本)开始,引入了NT Hash作为新的密码存储方式。因此,为了兼容旧系统和新系统,hashdump工具在抓取密码哈希时,会分为两个模块来分别表示它们。
问题3. 为什么第一个模块 永远是一样的aad3?
回答:
aad3是由于Windows禁用了LM-hash 或者为空时LM Hash值为AAD3B435B51404EEAAD3B435B51404EE,当hashdump工具显示LM Hash字段为“AAD3B435B51404EEAAD3B435B51404EE”时,这表示LM Hash已被禁用,且该值是一个固定的占位符,用于标识LM Hash的不可用状态。
问题4. 这两个模块的加密算法有什么不同,如何加密的?
回答:
LM Hash和NTLM Hash的加密算法区别:
-
算法原理:
- LM Hash:
- LM Hash全称为LAN Manager Hash,是微软早期为了提高Windows操作系统的安全性而采用的散列加密算法。
- 其本质是基于DES(Data Encryption Standard)加密的,但由于DES算法本身存在安全漏洞,LM Hash也较易被破解。
- NTLM Hash:
- NTLM Hash是Windows系统后续版本中用于替换LM Hash的更安全的哈希算法。
- 它本质上使用了MD4(Message Digest Algorithm 4)加密算法,但MD4虽然较DES安全,也已被证明存在安全漏洞,因此NTLM Hash也不是最安全的解决方案。
- LM Hash:
-
加密流程:
- LM Hash加密过程(以明文密码"Admin@123"为例):
- 将明文密码转换为大写(ADMIN@123)。
- 将大写密码转换为16进制字符串(41444D494E40313233)。
- 如果密码不足14字节,用0补全至14字节。
- 分组并转换为二进制,然后按7位一组取出并末尾补0,转换为16进制。
- 使用DES算法进行加密。
- NTLM Hash加密过程(同样以明文密码"Admin@123"为例):
- 将明文密码转换为16进制字符串(41646D696E40313233)。
- 将16进制编码转换为Unicode格式(在每个字节后添加0x00)。
- 对Unicode格式的编码进行MD4加密,生成32位的十六进制数字串。
- LM Hash加密过程(以明文密码"Admin@123"为例):
-
安全性:
- LM Hash:由于其基于的DES加密算法较容易受到攻击,因此在Windows Vista和Windows Server 2008以后的版本中,LM Hash被默认禁用。
- NTLM Hash:虽然NTLM Hash较LM Hash更安全,但MD4算法本身也存在安全漏洞,因此它也不是一个长期可依赖的安全解决方案。现代Windows系统更倾向于使用Kerberos或更安全的身份验证机制。
LM Hash和NTLM Hash在算法原理、加密流程和安全性方面存在显著差异。LM Hash基于DES加密,较容易被破解,因此在现代Windows系统中已被禁用;而NTLM Hash则基于MD4加密,相对更安全,但MD4本身也存在安全漏洞。