Windows认证
认证流程
电脑开机后,会运行一个名叫 winlogon.exe 的进程,它会调用电脑的登录界面并显示给用户,用户输入密码后,winlogon.exe 进程会把密码发送给 lsass.exe 进程,将用户的密码跟SAM文件的LM-HASH或者NTLM-HASH做对比,对比成功即登录成功。
winlogon.exe
该进程主要就是负责把登录界面显示给用户,让用户登录使用。
lsass.exe
Lsass.exe进程主要负责管理本地安全策略和认证机制,这些策略包
括密码策略、账户策略、用户权限、域策略等等。同时,它还负责对用户进行身份验证,以确保只有授权的用户才能访问系统资源。
- 该进程会把winlogon.exe进程发送来的密码进行加密(LM-Hash、NTLM-Hash),跟SAM文件中的密码做对比;
- 同时将收到的明文账号密码在本地内存中保留一份用作备用。
SAM文件
该文件在C:\Windows\System32\config
目录下,是用来存储用户账号密码的,该文件中的密码是经过加密的(LM-Hash、NTLM-Hash)。
大概格式如下:
用户名
:RID
:LM-Hash
:NTLM-Hash
Administrator:500:64822E174CBB6CD287916C896CBF48D9:C7C654DA31CE51CBEECFEF99E637BE15
LM-HASH
LM-HASH 要点
采用DES加密,易被破解,从Windows vista系统开始被禁用。LM-Hash如果是AAD3B435B51404EEAAD3B435B51404EE
,则表示LM-Hash被禁用或值为空。
LM-HASH加密算法
假设明文密码为Admin@666
:
1.密码转换为大写
Admin@666 -> ADMIN@666
- 转为16进制
转换地址:https://www.sojson.com/hexadecimal.html
ADMIN@666 -> 41444d494e40363636
- 长度补全(如果密码的十六进制不足14个字节,也就是28位十六进制,则会自动在最后用0字节也就是十六进制00补全)
41444d494e40363636 -> 41444d494e403636360000000000
- 将
41444d494e403636360000000000
编码分成2组7字节,把分好的两组十六进制字符串转换为二进制
41444d494e4036 -> 0100 0001 0100 0100 0100 1101 0100 1001 0100 1110 0100 0000 0011 0110
36360000000000 -> 0011 0110 0011 0110 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 每7位二进制为一组,在每组最后加0,然后再转换成十六进制
第一组:
01000001010001000100110101001001010011100100000000110110
分组 ->
0100000
1010001
0001001
1010100
1001010
0111001
0000000
0110110
加0 ->
01000000
10100010
00010010
10101000
10010100
01110010
00000000
01101100
合并 ->
0100000010100010000100101010100010010100011100100000000001101100
转换成十六进制 ->
40A212A89472006C
第二组:
00110110001101100000000000000000000000000000000000000000
分组 ->
0011011
0001101
1000000
0000000
0000000
0000000
0000000
0000000
加0 ->
00110110
00011010
10000000
00000000
00000000
00000000
00000000
00000000
合并 ->
0011011000011010100000000000000000000000000000000000000000000000
转换成十六进制 ->
361A800000000000
- 把每组十六进制作为DES加密的密钥,对
KGS!@#%
也需要是十六进制
KGS!@#$%
的16进制为4B47532140232425
第一组
内容为:4B47532140232425
密钥为:40A212A89472006C
结果为:64822E174CBB6CD2
64822E174CBB6CD2
第二组
内容为:4B47532140232425
密钥为:361A800000000000
结果为:87916C896CBF48D9
87916C896CBF48D9
最终拼接结果:64822E174CBB6CD287916C896CBF48D9
https://www.toolkk.com/tools/lm-hash
LM hash加密缺点
- 密码长度最大只能为14个字符
- 密码不区分大小写
- 如果明文密码长度小于7个,第二个分组的加密结果一定是
aad3b435b51404ee
- DES容易被破解 密码强度不高
NTLM-HASH
NTLM-HASH 简介
NTLM-Hash是微软为了在提高安全性的同时保证兼容性而设计的散列加密算法。NTLM Hash是基于MD4加密算法进行加密的。Windows操作系统个人版从Windows vista之后,服务器版从Windows Server2003之后, 认证方式均为NTLM-Hash。
NTLM-HASH加密算法
假设明文密码为Admin@666
:
- 将明文口令转换成十六进制的格式
Admin@666 -> 41646d696e40363636
转换地址:https://www.sojson.com/hexadecimal.html
- 将16进制转换成Unicode格式,即在每个
字节
之后添加0x00
41646d696e40363636 -> 410064006d0069006e004000360036003600
- 使用MD4摘要算法对Unicode编码数据进行Hash计算,结果即为NTLM-HASH值
410064006d0069006e004000360036003600 -> c7c654da31ce51cbeecfef99e637be15
验证:
https://www.toolkk.com/tools/ntlm-hash