域Kerberos认证详解
文章目录
一、Kerberos协议简介
Kerberos 是一种网络认证协议,通过密钥系统为客户端/服务端应用提供强身份验证。其核心目标是解决“如何证明自己是自己”的信任问题,避免明文传输密码,依赖可信第三方(KDC)进行安全认证。
特点:
- 不依赖主机地址信任
- 不要求全网物理安全
- 基于共享密钥加密技术
经典场景:
- 老板向财务发送账号密码时,双方无法验证身份真实性。
- Kerberos通过引入“买票中心”(KDC)解决此问题。
二、Kerberos协议角色组成
角色 | 功能说明 |
---|---|
客户端 | 发起请求的用户或设备 |
服务端 | 提供服务的资源(如文件服务器) |
KDC(密钥分发中心) | 包含两个子角色: |
◾ AS(认证服务器) | 验证客户端身份,发放TGT(入场券) |
◾ TGS(票据授权服务器) | 根据TGT发放服务票据(ST) |
三、Kerberos认证流程
1. 获取TGT(入场券)
- 步骤:客户端向AS发送身份信息(如用户名、时间戳),AS验证后返回TGT。
- TGT内容:用户信息、有效期、会话密钥(CT_SK),用KDC的krbtgt密钥加密。
2. 获取服务票据(ST)
- 步骤:客户端携带TGT向TGS申请访问特定服务的票据(ST)。
- ST内容:用户信息、服务名、有效期、会话密钥(CS_SK),用服务端密钥加密。
3. 访问服务端
- 步骤:客户端将ST发送给服务端,服务端解密验证后允许访问。
- 验证逻辑:服务端用自身密钥解密ST,检查时间戳和用户信息是否匹配。
四、通信原理与数据包分析
客户端与AS通信(AS-REQ/AS-REP)
-
AS-REQ:包含加密时间戳(用户密钥加密)、请求的服务名(krbtgt)。
-
AS-REP:返回TGT(krbtgt密钥加密)和会话密钥(CT_SK,用户密钥加密)。
数据包类型 关键字段 示例值/说明 AS-REQ PA-ENC-TIMESTAMP
(用户密钥加密的时间戳)cname
(客户端用户名)加密时间戳: 0x802f...
AS-REP enc-part
(用户密钥加密的CT_SK)ticket
(krbtgt加密的TGT)TGT有效时间: 8小时
客户端与TGS通信(TGS-REQ/TGS-REP)
-
TGS-REQ:提交TGT和认证符(CT_SK加密),请求服务票据。
-
TGS-REP:返回ST(服务端密钥加密)和会话密钥(CS_SK,CT_SK加密)。
数据包类型 关键字段 技术细节 TGS-REQ ticket
(原始TGT)authenticator
(CT_SK加密的认证符)服务名: cifs/web.contoso.com
TGS-REP enc-part
(CT_SK加密的CS_SK)ticket
(服务端密钥加密的ST)ST包含服务IP和有效期
客户端与服务端通信(AP-REQ/AP-REP)
-
AP-REQ:发送ST和认证符(CS_SK加密)。
-
AP-REP(可选):服务端返回验证结果。
数据包类型 关键字段 验证逻辑 AP-REQ ticket
(ST)authenticator
(CS_SK加密的认证符)服务端校验时间戳偏差(默认5分钟) AP-REP 可选字段,用于双向认证时服务端返回加密挑战码 AP-REP出现率 <10%
五、Kerberos协议安全问题
攻击类型 | 原理 | 防御建议 |
---|---|---|
黄金票据(Golden Ticket) | 伪造krbtgt密钥生成任意TGT | 定期重置krbtgt密码 |
白银票据(Silver Ticket) | 伪造服务端密钥生成ST | 限制服务账户权限 |
Kerberoasting | 暴力破解服务票据加密密钥 | 使用强密码策略 |
委派滥用 | 利用服务委派权限横向移动 | 严格管理委派配置 |
六、获取ST票据(TGS-REQ阶段)
# 使用TGT请求CIFS服务票据
tgs::ask /tgt:contoso.com.kirbi /service:cifs/dc01.contoso.com
总结 Kerberos通过“三次票据交换”实现安全的身份认证,但需注意密钥管理和协议漏洞。理解其流程与角色分工,是防御相关攻击的关键。