Windows机制
1.域
AD
Active Directory,活动目录
存储网络对象(用户、用户组、计算机、安全策略等)信息
功能
1.服务器及客户端计算机管理:Client 和 Server 计算机账户的组策略等管理
2.用户服务:账户信息、用户组、用户组、身份认证、用户授权等管理
3.资源管理:打印机、文件共享服务等管理
4.桌面配置:配置桌面策略(用户使用域资源权限限制、界面功能限制、安全配置等)
5.应用系统支持:支持财务、人事、邮件、补丁管理、防病毒系统等应用系统
2.本地认证
winlogon.exe 接收用户输入的密码,交给 lsass.exe 进行认证
lsass.exe 将密码加密为 NTLM Hash,与 C:\Windows\System32\config\SAM 中的 NTLM Hash 进行比对
比对通过后将 User SID 和 Group SID 发送给 winlogon.exe,准备登陆界面
3.NTLM
工作组 和 域 的认证协议,同时也是一种加密算法
认证流程
协商
Client 向 Server 确认协议版本等信息
质询
客户端:Client 向 Server 提供用户名
服务端:
Server 从本地 SAM 中查找 Client Hash,找不到则不允许
Client Hash 是用户名对应的密码的 NTLM Hash
随机生成Challenge
Net-NTLM Hash = Client Hash(Challenge)
用 Client Hash 将 Challenge 加密为 Net-NTLM Hash
响应Challeng
验证
客户端:
Response = Client Hash(Challenge)
Client 向 Server 提供 Response
服务端:
比对 Net-NTLM Hash 与 Response 是否相同
如果相同,认证成功
NTLM v1 和 NTLM v2 的区别
1.Challenge:v1 8位,v2 16位
2.加密算法:v1 DES、v2 HMAC-MD5
4.Kerberos
域的认证协议
KDC
Key Distribution Center,域控上的密钥分发中心
包含 AS服务(Authentication Service) 和 TGS服务(Ticket Granting Service)
认证流程
第一次通信
客户端:
Client 向 KDC 请求,主要包含:
1.Pre-authentication data = Client Hash(时间戳1)
2.Client Info
3.Server Info
————————————————————————————
KDC:
AS 先验证 Client Info,通过后用 Client Hash 解密 Pre-authentication data 得到 时间戳1
如果不超时,随机生成 Session Key
响应信息,主要包含:
1.TGT = KDC Hash(Session Key, Client Info, TGT到期时间)
2.enc-part = Client Hash(Session Key)
——————————————————————————————————————————————————————
TGT 有效时间一般为 8h
KDC Hash 是 krbtgt用户 的密码的 NTLM Hash
第二次通信
客户端:
用 Client Hash 解密 enc-part 得到 Session Key
Client 向 KDC 请求,主要包含:
1.TGT
2.Authenticator = Session Key(Client Info, 时间戳2)
3.Server Info
————————————————————————————
KDC:
用 KDC Hash 解密 TGT,得到 Session Key、Client Info、TGT到期时间
如果 TGT 没过期,用 Session Key 解密 Authenticator 得到 Client Info、时间戳2
如果不超时,比对两个 Client Info 是否相同,并且判断 Client 是否有权限访问对应服务
如果没问题,随机生成 Server Session Key
响应信息,主要包含:
1.Service Ticket = Server Hash(Server Session Key, Client Info, Service Ticket到期时间)
2.enc-part = Session Key(Server Session Key)
———————————————————————————————————————————————————————————————————————————————————————
Server Hash 是通过 Server Info 对应到的 NTLM Hash
第三次通信
客户端:
用 Session Key 解密 enc-part 得到 Server Session Key
Client 向 Server 请求,主要包含:
1.Service Ticket
2.Server Session Key(Client Info, 时间戳3)
————————————————————————————
服务端:
用 Server Hash 解密 Service Ticket,得到 Server Session Key、Client Info、Service Ticket到期时间
如果 Service Ticket 没过期,用 Server Session Key 解密得到 Client Info、时间戳3
如果不超时,比对两个 Client Info 是否相同
如果相同,认证成功