Kerberos协议基础:认证框架与核心安全风险

由 晨星运营组 发布

域协议

Kerberos协议

Kerberos协议是一种计算机网络授权协议,用来在非安全网络中对个人通信实现安全身份认证。其设计目标是通过密钥系统为客户机与服务器应⽤程序提供强大的认证服务。

该协议不依赖于主机操作系统认证,无需基于主机地址的信任,不要求所有主机的物理安全,并假定网络上传送的数据包可被任意地读取、修改和插入数据。

在此情况下,Kerberos作为一种可信任的第三方认证服务,通过共享密钥等传统的密码技术执行认证服务。Kerberos协议在在内网域渗透领域中至关重要,白银票据、黄金票据、攻击域控等都离不开Kerberos协议。

Kerberos认证

Kerberos提供了单点登录(SSO,Single Sign-On)机制,对于每个会话只需向服务进行一次自我验证,即可自动保护该会话过程中所有后续事务的安全。

Kerberos 协议中主要的三个角色

  1. 访问服务的Client

  2. 提供服务的Server

  3. KDC(Key Distribution Center):密钥分发中心,默认安装在域控上,包含下⾯两个核心服务(AS和TGS)

AS(Authentication Service):身份验证服务,负责⽤户信息认证,给客户端提供TGT(Ticket Granting Tickets)。

它接收⽤户的初始登录请求,验证⽤户的身份。如果认证成功,它向客户端颁发TGT,这就是“黄金票据”的基础(黄金票据是伪造的、权限提升的TGT)。

TGS(Ticket-Granting Service):票证授予服务,向客户端提供ST(Service Ticke)和Session Key(服务会话密钥)。

客户端持有有效的TGT后,可以向TGS请求访问特定的网络服务(如文件共享、数据库等)。

若TGS验证TGT有效,则向客户端颁发针对该特定服务的ST,这就是“白银票据”的基础(白银票据是伪造的、⽤于访问特定服务的ST)。同时,TGS还会生成⼀个Session Key,客户端会用它来加密与⽬标服务进⾏后续通信的部分内容。

协议可以分为三个步骤

⼀:获得票据许可票据

1.AS_REQ

客户端⽤⾃身密码的NTLM哈希加密时间戳,发送给KDC。

2.AS_REP

KDC用客户端哈希解密时间戳,验证成功后:

⽣成TGT票据(使用krbtgt账户的NTLM哈希加密)。

TGT内嵌PAC(特权属性证书),包含客户端SID,组信息等

⼆:获取服务许可票据

3.TGS_REQ

客户端将收到的TGT票据发送给KDC,请求访问特定服务(如CIFS、HTTP等)。

4.TGS_REP

KDC⽤krbtgt哈希解密TGT,仅验证TGT有效性(不检查服务权限)。

验证通过后,返回用服务账户哈希加密的ST票据。

三:获得服务

5.AP_REQ

客户端将ST票据发送给⽬标服务。

6.AP_REP&权限验证

服务端行为:

ⅰ. 用自身账户的NTLM哈希解密ST票据。
ⅱ. 提取其中的PAC,向域控制器(DC)发送PAC验证请求。

域控制器行为:

ⅰ. 解密PAC,获取客户端的SID及所属组。

ⅱ. 根据该服务的ACL(访问控制列表) 判断客户端权限。

ⅲ. 将权限验证结果返回给服务端。

最终访问决策:

服务端依据域控返回的权限结果允许或拒绝访问。

关键安全特性

1.TGT与ST分离

TGT用于身份认证,ST用于服务访问,实现权限最小化。

2.PAC的双重作用

身份声明(SID/组信息)+动态权限验证(通过DC)。

3.权限验证延迟

服务权限检查发生在最终AP_REP阶段,而非TGS阶段(KDC不处理服务ACL)。

攻击面提示

黄金票据:伪造krbtgt哈希签发恶意TGT(绕过AS_REQ)。
白银票据:伪造服务哈希签发恶意ST(绕过TGS_REQ,但受PAC验证制约)。
PAC篡改:早期漏洞(MS14-068),可通过伪造高权限PAC提升权限。
此流程清晰区分了身份认证(KDC负责)和权限验证(服务与DC协同),是域环境安全的基石

作者:晨星安全团队——007


0条评论

发表评论