一、Kerberos基础概念
-
Kerberos简介
- 由MIT提出的网络认证协议,基于对称加密(如AES)实现客户端/服务端的强身份验证。
- 核心目标:避免明文传输密码,通过票据(Ticket)机制实现安全认证。
-
核心组件与术语
- KDC(Key Distribution Center):包含AS(认证服务)和TGS(票据授权服务)。
- TGT(Ticket Granting Ticket):客户端首次认证后获得的票据,用于后续请求服务票据。
- ST(Service Ticket):访问特定服务时使用的票据。
- PAC(Privilege Attribute Certificate):嵌入在票据中的权限信息(用户SID、组权限等),由KDC签名。
-
认证流程(6步)
- AS_REQ/AS_REP:客户端用密码哈希加密时间戳请求TGT,AS返回加密的TGT(含PAC)。
- TGS_REQ/TGS_REP:客户端用TGT请求服务票据(ST),TGS验证后返回ST。
- AP_REQ/AP_REP:客户端用ST访问服务,服务端验证ST和PAC权限。
二、Kerberos数据结构与协议细节
-
关键数据结构
- TGT示例:包含
krbtgt
加密的会话密钥、有效期、PAC(用户SID、组列表)。 - PAC结构:用户身份(SID)、组权限、KDC签名(防篡改)。
- 加密类型:常见如
AES256-CTS-HMAC-SHA1-96
(TGT加密)、RC4-HMAC
(NTLM兼容)。
- TGT示例:包含
-
协议消息分析
- AS_REQ:包含
include-pac
标志(True/False)、加密时间戳(客户端哈希加密)。 - AS_REP:返回
krbtgt
加密的TGT(客户端无法解密)。 - TGS_REQ:携带TGT和认证器(Authenticator),请求特定服务。
- TGS_REP:返回服务哈希加密的ST(含PAC)。
- AS_REQ:包含
-
实战命令
- 查看票据:
klist
- 清除票据:
klist purge
或 Mimikatz的kerberos::purge
。
- 查看票据:
三、MS14-068漏洞原理与利用
-
漏洞背景
- CVE-2014-6324:Windows KDC未正确验证PAC签名,允许伪造高权限PAC提权至域管理员。
- 影响系统:Windows Server 2003-2012 R2。
-
利用步骤
- 生成无PAC的TGT:发起
AS_REQ
时设置include-pac=False
。 - 伪造PAC:用工具(如PyKEK)生成含管理员组SID的PAC。
- 注入PAC:在
TGS_REQ
的enc-authorization-data
字段插入伪造PAC。 - 获取高权限ST:KDC返回含伪造权限的ST。
- Pass-the-Ticket攻击:用Mimikatz导入ST访问域控资源(如
C$
共享)。
- 生成无PAC的TGT:发起
-
PoC工具与代码
- PyKEK:伪造PAC的Python库。
- Mimikatz:执行票据传递攻击。
利用MS14-068漏洞绕过正常认证流程,获取域内任意服务的访问权限后进行黄金票据攻击
四、黄金票据(Golden Ticket)攻击
1. 黄金票据概述
黄金票据是Kerberos协议中的一种高级持久化攻击技术,攻击者通过伪造TGT(Ticket Granting Ticket),绕过正常认证流程,获取域内任意服务的访问权限。其核心原理是利用域控的krbtgt
账户哈希伪造高权限票据。
2. 攻击原理
- 关键依赖:
krbtgt
账户的NTLM哈希。- 该哈希用于加密/解密Kerberos票据中的PAC(特权属性证书)。
- 漏洞利用:
- 攻击者获取
krbtgt
哈希后,可伪造任意用户的TGT,包括域管理员。 - KDC无法区分伪造的TGT与合法TGT(因为签名校验依赖
krbtgt
哈希)。
- 攻击者获取
3. 攻击步骤
-
获取
krbtgt
哈希 -
伪造黄金票据
- mimikatz.exe "kerberos::golden /domain:test.com /sid:S-1-5-21-568561908-1760150191-320543417 /krbtgt:36f9d4e9f4a6b8c7a5d2e1f3b6a8d7c /user:Administrator /ticket:golden.kirbi"
- 参数说明:
/domain
:目标域名(如qax.com
)。/sid
:域的SID(从whoami /all
获取)。/krbtgt
:krbtgt
账户的NTLM哈希。/user
:伪造的用户名(如Administrator)。
-
注入票据
-
验证权限
- 访问域控资源 dir \\qaxdc1.qax.com\c$
获取krbtgt 哈希 | ![]() |
伪造黄金票据和 注入票据 | ![]() ![]() |
验证权限 | ![]() |
4. 黄金票据 vs. 白银票据
特性 | 黄金票据 | 白银票据 |
---|---|---|
依赖票据 | TGT(可请求任意服务票据) | ST(仅针对特定服务) |
所需哈希 | krbtgt 账户哈希 | 目标服务账户哈希(如CIFS$) |
攻击范围 | 整个域 | 单个服务(如文件共享、SQL) |
持久性 | 长期有效(默认10小时,可续期) | 短期有效(依赖服务票据生命周期) |