Windows的密码是怎么存储和认证的
1、SAM 文件 Windows 的登陆密码是储存在系统本地的 SAM 文件中的,在登陆 Windows 的时候系统会将用户输入的密码与SAM 文件中的密码进行对比,如果相同,则认证成功。
SAM文件是位于%SystemRoot%\system32\config 目录下的,用于储存本机的凭证信息,但是这并不代表着你可以随意去查看系统密码。
如何认证:
本地认证中用来处理用户输入密码的进程即lsass.exe,密码会在这个进程中明文保存,供该进程将密码计算成NTLM Hash 与sam 进行比对我们使用 mimikatz 来获取的明文密码便是在这个进程中读取到的
LM和NTLM哈希介绍
Windows操作系统通常使用两种方法对用户的明文密码进行加密处理。在域环境中,用户信息存储在 ntds.dit_中加密后为散列值。Windows 操作系统中的密码一般由两部分组成一部分为 LM Hash,另一部分为 NTLMHash。在 Windows 操作系统中,Hash 的结构通常如下。
username:RID:LM-HASH:NT-HASHK
LM哈希(已过时)
加密过程
Admin@123 1、将明文口令转换为其大写形式
Admin@123----- ADMIN@123
2、将字符串大写后转换为 16 进制字符串
41444D494E40313233
3、密码不足14字节要求用0 补全
41 44 4D 49 4E 40 31 32 33 00 00 00 00 00
4、将上述编码分成2组,将每组字节的十六进制转换为二进制,每 组末尾加 0,再转换成十六进制组成得到2组8字节的编码
第一组:40A212A894720062\第二组:3218C00000000000
5、将以上步骤得到的两组8字节编码,分别作为DES 加密 key,为魔术字符串KGS!@#$%、进行加密。(使用des加密工具,明文输入魔法字符串的16进制)得出密文:
第一组:6F08D7B306B1DAD4\第二组: B75E0C8D76954A50
6、合并两组数据的出LM HASH(哈希)
6F08D7B306B1DAD4 B75EOC8D76954A50
NTML HASH
Admin@1234 1、将明文口令转换成十六进制的格式 41646D696E403132334
2、转换成Unicode 格式(每个子节后加两个零) 410064006D0069006E0040003100320033004
3、对Unicode字符串作MD4 加密(哈希计算器)
4、得到的密文就是 NTLM 570a9a65db8fba761c1008a51d4c95ab
Mimikztz(工具)抓取密码
1、直接抓取 SAM 文件的密码
2、去 lsass 进程抓取
实验PTH(pass the hash)攻击
利用条件:内网中管理员给不同pc配置啦相同密码
实验前提:已经控制内网中一台机器