window本地认证之NTML哈希和LM哈希
本地认证流程
windows的登录密码是储存在本地的SAM文件中的,在登陆Windows的时候,系统会将用户输入的密码与 SAM文件中的密码进行对比。
SAM文件是位于 %SystemRoot%\system32\config\
目录下的,用于储存本地所有用户的凭证信息,但是这并不代表 着你可以随意去查看系统密码。
windowsbending认证流程如下:
首先,用户注销、重启、锁屏后,操作系统会让winlogon.exe显示登陆界面,也就是输入框界面,接收用户的输入 信息后,将密码交给lsass进程,这个过程中会存一份明文密码,将明文密码加密成NTLM Hash,对SAM数据库进 行比较认证。
LM和NTLM哈希
Windows操作系统中的密码一般由两部分组成,一部分为 LM Hash,另一部分为NTLMHash。在 Windows操作系统中,Hash的结构通常如下
username:RID:LM‐HASH:NT‐HASH
LM HASH原理
1、将明文口令转换为其大写形式 假设这里以明文Admin@123为例,转换为大写格式为:ADMIN@123 2、 将字 符串大写后转换为16进制字符串转换后为 41 44 4D 49 4E 40 31 32 33 3、密码不足14字节要求用0补全, 1Byte=8bit,上面的16进制字符串共9个字节,还差5个字节 我么使用 00 00 00 00 00 补全为 41 44 4D 49 4E 40 31 32 33 00 00 00 00 00 4、将上述编码分成2组7字节
41444D494E4031 第一组
32330000000000 第二组
2、将每一组7字节的十六进制转换为二进制,每7bit一组末尾加0,再转换成十六进制组成得到2组8字节的编码:
第一组
16进制:41 44 4D 49 4E 40 31 转换为二进制:01000001010001000100110101001001010011100100000000110001 七个为一组末尾补
01000000
10100010
00010010
10101000
10010100
01110010
00000000
01100010 合并后为0100000010100010000100101010100010010100011100100000000001100010 在转换为16进制:40A212A894720062
第二组
16进制:32 33 00 00 00 00 00 转换为二进制:00110010001100110000000000000000000000000000000000000000 七个为一组末尾补
00110010
00011000
11000000
00000000
00000000
00000000
00000000
00000000 合并后为0011001000011000110000000000000000000000000000000000000000000000 在转换为16进制:3218C00000000000
3、将以上步骤得到的两组8字节编码,分别作为DES加密key为魔术字符串 KGS!@#$% 进行加密 KGS!@#$%的16进制为 4B47532140232425
4、最终结果拼接即可6F08D7B306B1DAD4B75E0C8D76954A50
NTLM Hash原理
1、将明文口令转换成十六进制的格式 如:Admin@123 转换成Unicode格式,即在每个字节之后添加0x00
Admin@123转16进制 41646D696E40313233
添加00:410064006D0069006E004000310032003300
2、对Unicode字符串作MD4加密,生成32位的十六进制数字串 570a9a65db8fba761c1008a51d4c95ab