1.Netlogon服务1
Netlogon服务为域内的身份验证提供一个安全通道
它被用于执行与域用户和机器身份验证相关的各种任务,最常见的是让用户使用NTLM协议登录服务器。
默认情况下,Netlogon服务在域内所有机器后台运行
2.Netlogon服务2
Netlogon服务为域内的身份验证提供一个安全通道
它被用于执行与域用户和机器身份验证相关的各种任务,最常见的是让用户使用NTLM协议登录服务器。
默认情况下,Netlogon服务在域内所有机器后台运行
该服务的可执行文件路径为C:\Windows\system32\lsass.exe
3.Netlogon认证流程1
Neglogon 客户端和服务端之间通过 Microsoft Netlogon Remote Protocol(MS-NRPC)来进行通信。
MS-NRPC并没有使用与其他RPC相同的解决方案。
在进行正式通信之前,客户端和服务端之间需要进行身份认证并协商出一个Session Key
该值用于保护双方后续的RPC通信流量。
该服务的可执行文件路径为C:\Windows\system32\lsass.exe
4.Netlogon认证流程2
Neglogon 客户端和服务端之间通过 Microsoft Netlogon Remote Protocol(MS-NRPC)来进行通信。
MS-NRPC并没有使用与其他RPC相同的解决方案。
在进行正式通信之前,客户端和服务端之间需要进行身份认证并协商出一个Session Key
该值用于保护双方后续的RPC通信流量。
5.简要的Netlogon认证流程3
域内机器客户端
客户端发送Client Challenge
服务端发送Server Challenge
Session Key=Encrypt(SharedSecret,Client Challenge,Server,Challenge)
客户端发送Client Credential=(Encrypt(Session Key,Client Challenge))
服务端发送Server Credential=(Encrypt(Session Key,Server Challenge))
域控服务端
1)由客户端启动网络登录会话,客户端调用NetrServerReqChallenge函数给服务端发送随机的8字节的Client Challenge值。
2)服务端收到客户端发送的NetrServerReqChallenge函数调用指令后,服务端也调用NetrServerReqChallenge 函数发送随机的8字节的Server Challenge值。
3)此时,客户端和服务端均收到了来自对方的Challenge值,然后双方都使用共享的密钥secret(客户端机器账户的Hash)以及来自双方的Challenge值通过计算得到SessionKey [Session Key=KDF(secret,(Client Challenge+Server Challenge))]。
此时,客户端和服务端均拥有了相同的Client Challenge、Server Challenge、Session Key。
4)客户端使用Session Key 作为密钥加密Client Challenge 得到Client Credential并发送给服务端。
服务端收到客户端发来的Client Credential后,本地使用Session Key 作为密钥加密Client Challenge 计算出 Client Credential
然后比较本地计算出的Client Credential和从客户端发送来的Client Credential 是否相同。
如果两者相同,则说明客户端拥有正确的凭据以及Session Key。
5)服务端使用Session Key 作为密钥加密Server Challenge 得到Server Credential并发送给客户端。
客户端收到服务端发来的Server Credential后,本地使用Session Key作为密钥加密Server Challenge 计算出Server Credential
然后比较本地计算出的Server Credential和从服务端发送来的Server Credential是否相同。
如果两者相同,则说明服务端拥有相同的Session Key.
6)至此,客户端和服务端双方互相认证成功并且拥有相同的Session Key,此后使用Session Key 来加密后续的RPC通信流量。
6.协议漏洞分析
到底是以上哪步出现了问题导致漏洞的产生呢?后面空了再来说说这个问题哟