Windows分为本地认证和网络认证
本地认证
本地认证由Lsass.exe 提供认证,用户从winlogon.exe进程输入密码,密码提交给lsass.exe用于认证(保留明文,如果打了2871997补丁后默认不保存,需要修改注册表重新登录,并将明文密码通过LM和NTLM生成算法处理后得到用户Hash与SAM数据库中保存密码进行对比)
1 | %SystemRoot%\system32\config\sam 本地数据库文件 |
其中LM hash为DES加密
1 | 密码转换为大写,处理密码为16进制字符串,不足14字节的末尾添0补齐 |
(03之后默认不使用,密码最大长度为14位,超过14位后不使用,由于加密前有转换操作,大小写不敏感,密码长度小于7字节,后面添0补齐的7字节加密结果固定,可以判断密码长度,高版本为AAD3B435B51404EEAAD3B435B51404EE 表示空)
NTLM hash为MD4加密
1 | 密码转换为16进制格式,进行Unicode编码 |
网络认证
网络认证分为NTLM和Kerberos协议的认证
NTLM认证采取质询响应的方式,由客户端发送协商请求,指定自身允许的方法,被访问服务器对协商进行筛选并生成Challenge返回给客户端,客户端按照被请求服务器的功能列表要求,以NTLM hash作为密钥对Challenge以协商的算法加密生成Net-hash,将Net-hash,访问用户以及Challenge发送给被访问服务器,被访问服务器读取对应访问用户的NTLM hash 同样对Challenge进行加密比对。 有效防止了通信信道上的监听问题。
如果请求用户的Hash不在本地,则服务器会通过NetLogon 与域控建立安全通道,发送所有认证涉及的流量包,由域控对客户端Challenge进行加密比较 (Pass Through Authentication认证流程)
其中认证响应有6种类型 LmCompatibilityLevel(本地组策略)设置决定
1 | Windows 2000 以及 Windows XP: 发送 LM & NTLM 响应 |
1 | LM |
1 | 格式 |