题目
一.windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文
二.我们通过hashdump 抓取出 所有用户的密文,分为两个模块,为什么? 这两个模块分别都代表什么
三.为什么第一个模块 永远是一样的aad3
四.这两个模块的加密算法有什么不同,如何加密的
一:
存储过程:在windows中,用户登录的密码一般不会以明文的形式保存在计算机中,而是通过保存密码的哈希值来确保它的安全性;当用户注销、重启或锁屏后,操作系统会让winlogon.exe显示登录界面,接收用户的输入信息。用户输入密码后,密码信息会交给lsass进程。在这个过程中,会存一份明文密码,并将其加密成NTLM Hash。加密后的密码哈希值会与存储在SAM(Security Accounts Manager)数据库中的哈希值进行比较认证。
Windows默认使用NTLM或Kerberos身份认证协议进行加密存储用户登录的密码。
1、NTLM
它是一种质询/应答身份验证协议,用于在网络环境中验证用户的身份。NTLM协议既可以为工作组中的机器提供身份验证,也可以用于域环境身份验证。在NTLM认证的过程中,客户端回和服务器进行一系列的交互,以便于验证用户的身份;它提供了数据完整性和加密功能,适用于工作组和域环境
2、Kerberos
Kerberos是一种身份验证协议,旨在为大型网络环境提供强大的身份验证和访问控制。它涉及客户端、服务器和密钥分发中心的参与,通过票据授权实现安全访问。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下,kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。它的加密功能比NTLM更加强大;
密文一般存储在:C:\Windows\System32\config\SAM文件中
此文件保存了Windows系统中所有用户的密码哈希值,是一个二进制文件,因此无法直接打开并查看到明文密码;为了保护用户的密码安全,SAM文件是被Windows系统保护的,普通用户无法直接访问或修改。
如果想要查看到hash值或进一步获取明文密码,需要一定的技术手段。例如,可以使用mimikatz这类工具读取lsass.exe进程内存来获取已登录用户的NTLM hash。另外,也可以通过修改特定的注册表项,强制让系统在特定条件下暴露出明文密码。
二:
通过hashdump抓取出所有用户的密文,分为两个模块,分别是 LM Hash 和 NT Hash。
LM Hash全称是LAN Manager Hash,是Windows最早用的加密算法,由IBM设计,使用硬编码密钥的DES,且存在缺陷。
为了解决LM Hash的安全问题,从Vista开始的版本都使用NTLM Hash,NTLM Hash基于MD4加密算法进行加密的。
三:
LM Hash 加密算法存在一些漏洞,它使用的是分组的DES,密码长度最大只能为14个字符,如果密码强度是小于7位,那么第二个分组会用0来在后面补全,加密后的结果就会是固定的
四:
LM Hash的加密:
- 用户的密码转换为大写,密码转换为16进制字符串,不足14字节将会用0来在后面补全。
- 密码的16进制字符串被分成两个7byte部分。每部分转换成比特流,并且长度位56bit,长度不足使用0在左边补齐长度
- 再分7bit为一组,每组末尾加0,再组成一组
- 上步骤得到的二组,分别作为key 为 "
KGS!@#$%
"进行DES加密。 - 将加密后的两组拼接在一起,得到最终LM HASH值。
NTLM Hash 的加密:
-
先将用户密码转换为十六进制格式。
-
将十六进制格式的密码进行Unicode编码。
-
使用MD4摘要算法对Unicode编码数据进行Hash计算