Windows认证
本地认证
- 本地认证流程
Windows登录密码储存在系统本地的SAM文件中(C:\Windows\system32\config),登录时系统会将用户输入的密码与SAM文件中的密码进行对比(登录的密码会在lsass.exe进程中明文保存)

LM和NTLM哈希
Windows操作系统通常使用两种方法对用户的明文密码进行加密处理。LM Hash(LAN Manager Hash)本质是DES加密,明文密码限定在14位以内。NTLM Hash是基于MD4算法进行加密的(Windows 2000、XP、2003默认使用LM Hash,支持NTLM Hash)
Windows中,Hash的结构通常为username:RID:LM-HASH:NT-HASH
- LM Hash加密过程
1.将明文的小写字母转为大写
2.将大写字符串转换为16进制字符串
3.转换后不足14字节则用0补全
4.分为两组7字节,每组的16进制转换为二进制,每7bit加0
5.两组二进制转为16进制字符串,依次作为DES加密key为魔术字符串KGS!@#$%的16进制进行加密
6.拼接两次DES加密的结果即为LM Hash - NTLM Hash加密过程
1.将明文转换为Unicode格式
2.对Unicode字符串进行MD4加密,生成32位16进制字符串即为NTLM Hash
网络认证
工作组中的计算机只能点对点进行信息的传输。主机A想访问主机B的资源,就要向主机B发送一个存在于主机B上的一个账户,主机B接收到后在本地进行验证,验证成功就允许主机A进行访问
NTLM协议
NTLM协议是基于Challenge/Response认证机制,仅支持Windows的网络认证协议。NTLM协议v1的challenge有8位,主要加密算法是DES。NTLM协议v2的challenge有16位,主要加密算法是HMAC-MD5。
- NTLM协议认证流程
1.协商:向下兼容,双方确定传输协议的版本等信息
2.认证:
(1)主机A向B发送用户名,B本地存在该用户则随机生成16位字符(challenge)
(2)B使用该用户的NTLM Hash和challenge加密生成challenge1并存储在本地
(3)主机B发送challenge给A,A对该用户的NTLM Hash和challenge进行加密得到Response并发送给主机B
3.验证:B收到Response后与challenge1进行比较,相同则验证成功,允许A访问资源
域认证
在域环境中,用户信息存储在ntds.dit中
Kerberos网络认证协议,通过密钥系统为客户机/服务器应用程序提供认证服务,是一种可信任的第三方认证服务
- 密钥分发中心(Key Distribution Center,KDC):
AS(Authentication Server):认证服务器,专门用来认证客户端的身份,认证后发放客户用于访问TGS的TGT(票据授予票据)
TGS(Ticket Granting Server):票据授予服务器,用来发放认证过程和客户端访问服务端时所用的ST(服务授予票据) - 认证流程
1.客户端以明文方式发送用户名、主机IP、当前时间戳给AS。AS验证用户身份,验证完发送TGS密码加密的TGT和client密码加密的CT_SK(客户端和TGS的会话密钥)给客户端

2.客户端解密出信息获得CT_SK和TGS信息,发送CT_SK加密的信息、TGT和要访问的server服务给TGS。TGS解密出信息,对比TGT中的用户信息和请求用户是否一致,验证完发送Server密码加密的ST(服务票据)和CT_SK加密的CS_SK(客户端和服务器的会话密钥)给客户端

3.客户端解密出CS_SK,发送使用CS_SK加密的信息和ST给服务端。服务端验证服务信息并检查ST的用户信息和请求用户是否一致,同意请求建立连接
