思考:
1. windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文
2. 我们通过hashdump 抓取出 所有用户的密文,分为两个模块,为什么? 这两个模块分别都代表什么
3. 为什么第一个模块 永远是一样的aad3
4. 这两个模块的加密算法有什么不同,如何加密的
---------------------------------------------------------------------------------------------------------------------------------
1:在Windows操作系统中,用户的登录密码永远不会以明文(原始形式)存储,相反,Windows会采用加密的方式保存密码。当用户设置或更改密码时,Windows会对其进行加密处理。这个加密过程通常涉及将密码转换为哈希值,这是一种不可逆的数学运算,意味着无法从哈希值还原出原始的明文密码。加密后的密码(哈希值)存储在特定的文件中,这个文件就是位于Windows系统目录下的SAM(Security Accounts Manager)文件。通常,这个文件的路径是C:\Windows\System32\config\SAM
需要注意的是,SAM文件是一个二进制文件,其内容无法直接查看或编辑,这也是为了保护存储其中的密码哈希值不被轻易访问或篡改。只有具有管理员权限的用户才能通过特定的工具或方法访问SAM文件,进行诸如密码重置等操作。普通用户是无法直接打开或查看这个文件的。
2:当使用hashdump抓取用户的密文哈希时,会看到两个模块,分别对应LM Hash和NT Hash,这主要是因为Windows系统中存在两种不同的密码哈希算法:LM Hash和NT Hash
LM Hash:这是微软早期为提高Windows操作系统的安全性而采用的散列加密算法,其本质是DES加密。但是,由于LM Hash存在一些安全弱点,并且容易被破解,从Windows Vista和Windows Server 2008版本开始,Windows操作系统默认禁用了LM Hash.
NT Hash:微软引入的NT Hash作为新的密码存储方式,NT Hash算法相比LM Hash更为安全,因为它采用了更强大的加密算法。
3:为了系统的兼容性,Windows虽然将LM禁用,但是任然会生成LM hash,并且这个值是固定的,为add3b435b51404eeaad3b435b51404ee.
4:LM hash通过DES加密
- 密码的16进制字符串被分成两个7byte部分。
- 每部分转换成比特流,并且长度位56bit。长度不足的部分使用0在左边补齐。
- 将每部分再分7bit为一组,每组末尾加0。
- 上步骤得到的两组,分别作为key,为KGS!@#$%进行DES加密。
- 将加密后的两组拼接在一起,得到最终LM HASH值
NTLM hash通过MD4加密算法加密
当Windows进行本地用户密码认证时,不是以用户输入的明文密码与系统密码直接比较,而是经过某种方式加密之后进行比较。因此,Windows中的用户密码凭证不是以明文的方式存储在系统中的SAM数据库,而是经过加密之后再存储到SAM数据库,这个明文加密的结果我们称之为NTLM hash。