Kerberos协议与NTLM认证
本文最后更新于:2022年6月29日 中午
Kerberos协议
简介:
Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。
协议内容:
client:需要进行认证的客户端
KDC(Key Distribution Center)= 密钥分发中心
AS(Authentication Server)= 认证服务器
TGS(Ticket Granting Server)= 票据授权服务器
AD (Active Directory) =存放client白名单和用户密码
TGT(Ticket Granting Ticket)= 票据授权票据,票据的票据
server:提供服务的服务端
进行验证时,AS和TGS是在KDC中的
简洁的验证流程:
在进行Kerberos验证时,分为三步:
- 首先我们需要client(客户端)向KDC(密钥分发中心)发送第一次请求,在KDC接受到请求后将发送过来的hash值交给AS(认证服务器)进行验证,此刻AD会验证client是否在白名单中,如果在白名单中,即AS验证成功,AS随即生成TGT(票据授权票据)。
- 在第一步client经过AS验证成功后,AS生成了TGT返回给了client,这是第一次验证。client在接收到TGT之后进行第二次验证,将刚刚接收到的TGT发送给KDC的TGS(票据授权服务器)进行验证,如果验证成功,TGS将会发送对应server的票据(ST)给client。
- 最后,经过两次验证,client已经从KDC那里拿到了server的ticket,所以最后一步,客户端只需要将得到的票据(ST)发送给Server进行效验,成功后即可访问server。
(图片来源:Y5neKO)
NTLM协议
简介:
NTLM 是指telnet的一种验证身份方式,即问询/应答身份验证协议,是 Windows NT 早期版本的标准安全协议,Windows 2000 支持 NTLM 是为了保持向后兼容。Windows 2000内置三种基本安全协议之一。
关键词:
- NTLM Hash:存储在SAM数据库及NTDS数据库中对密码进行 Hash摘要计算后的结果
- NTLM:除 Kerberos之外的一种网络认证协议,只支持 Windows
- LSASS:Windows系统的安全机制(lsass.exe)。用于本地安全和登陆策略
验证流程:
本地认证的过程中,用户登录时,系统会将用户输入的明文密码加密成NTLM Hash,然后和SAM文件中的NTLM Hash进行比较从而完成认证,在域环境中,域内用户的密码哈希是存在域控的 NTDS.dit 文件里面的。
SAM文件是windows的用户账户数据库,所有用户的登录名及口令等相关信息都会保存在这个文件中。
SAM文件路径 C:\Windows\System32\Config\SAM
当用户注销、重启、锁屏后,操作系统会让 winlogon.exe 显示登录界面(输入框)。当 winlogon.exe 接收输入后,会将密码交给lsass进程。lsass.exe 是一个系统进程,用于微软Windows系统的安全机制。
备注:在NTLM hash之前,windows是使用LM hash验证的LM Hash其本质是使用DES加密,从windows vista和windows server2008开始 windows默认禁用LM Hash。