域渗透
01-本地认证
02-本地密码抓取
03-网络认证
04-域基础知识
05-域环境部署
06-域认证
07-域密码抓取
08-横向移动
09-凭证传递
10-票据
11-委派
-
+
10-票据
浏览
2
# 一、黄金票据 ## 概述 黄金票据是完全离线伪造的 TGT(票据授予票据),是域渗透中最经典的后门攻击。 拿到 krbtgt 账户的密钥后,攻击者可以伪造任意域用户、任意权限、任意有效期的 TGT,进而获取全域资源的访问权限。 ## 攻击原理 - Kerberos 体系中,所有 TGT 都由域控 KDC 使用 krbtgt 账户的密钥加密签发。 - KDC 校验 TGT 时,只会用自己的 krbtgt 密钥解密验证,不会校验 TGT 是否真的由自己签发。 - 一旦攻击者获取 krbtgt 账户的 NT Hash(RC4 密钥)或 AES 密钥,就可以完全离线构造 TGT,自定义用户名、所属组、有效期、权限等所有字段。 ## 利用条件 - 必须知道Krbtgt机器账户的HASH值 - 域内域名 - 域的SID值 - 需要伪造的用户(大部分情况下都是administrator) SID值:在 Windows AD 域中,SID(Security Identifier,安全标识符) 可以理解为系统给每个安全主体分配的唯一“身份证号”。Windows 判断权限时看的是 SID,而不是用户名、组名或计算机名。 ```bash 域 SID:代表这个 AD 域本身,格式通常是: S-1-5-21-<A>-<B>-<C> 例如:S-1-5-21-1111111111-2222222222-3333333333 ``` ## 攻击流程 1. 攻击者拿下域控,从 NTDS.dit 或 LSASS 内存中提取 krbtgt 账户的密钥 2. 离线使用工具伪造域管理员身份的 TGT,可设置有效期长达 10 年(远超默认 10 小时) 3. 将伪造的 TGT 注入本地 Kerberos 会话缓存 4. 使用伪造的 TGT 向 KDC 的 TGS 服务申请任意目标服务的 ST(如域控的 CIFS、LDAP 服务) 5. KDC 用 krbtgt 密钥解密 TGT,验证通过后下发高权限 ST 6. 攻击者使用 ST 访问目标资源,获得全域管理员权限 ## 获取Hash ```bash #1.控制域控后,直接获取 lsadump::dcsync /domain:abc.com /user:krbtgt #2,控制非域控服务器后,再获取 #win08账号加入domain admins组,再使用 lsadump::dcsync /domain:abc.com /user:krbtgt ``` 以下用户组中的域用户权限,可以使用Dcsync攻击: - administrators组 - domain admins组 - enterprise admins组 - 域控制器的计算机账户 ## 生成票据 SID值:  ```bash #1.生成票据,出现KRB_AP_ERR_SKEW是因为和域控的时间不同步导致的 tgt::ask /user:administrator /domain:abc.com /password:a1b2c3.. #2.伪造票据,ptt表示自动注入到当前内存中 kerberos::golden /user:用户名 /domain:域名 /sid:sid值 /krbtgt:NTLM-HASH值 /ptt kerberos::golden /user:administrator /domain:abc.com /sid:S-1-5-21-3783786980-4151936079-2952669593 /krbtgt:1d7a5aa4e990ee6190d07410208e2f0d /ptt ``` 注入内存中:  访问域控共享C盘:  # 二、白银票据 ## 概述 白银票据是伪造的单个服务 ST(服务票据),只能访问指定的单个服务 / 单台主机,无法跨服务跳转。 它不需要经过域控 KDC,全程离线伪造,隐蔽性远高于黄金票据。 ## 攻击原理 Kerberos 中,访问具体服务的 ST 票据,是由对应服务账号的密钥加密的。 服务端校验 ST 时,只会用自身服务账号的密钥解密验证,默认不会向 KDC 二次校验 PAC 签名。 攻击者只要拿到目标服务对应账号的密钥,就可以离线伪造访问该服务的 ST,直接访问目标服务,全程不与 KDC 交互。 ## 前提条件 - 获取目标服务对应服务账号的密钥 - 目标服务未强制开启 PAC 签名验证 - 域名 - 域SID值 - 需要伪造的用户名 ## 攻击流程 1. 攻击者获取目标主机计算机账户的 NT Hash 2. 离线伪造针对该主机 CIFS 服务的 ST,自定义用户身份为域管理员 3. 将伪造的 ST 注入本地 Kerberos 会话缓存 4. 直接访问目标主机的 SMB 共享、执行远程命令,全程不经过域控 KDC ## 获取Hash ```bash #1.控制域控后,直接获取 lsadump::dcsync /domain:abc.com /all /csv ```  ```bash #2.知道域管理员的明文户与密码,win08成员服务器执行 secretsdump.exe 域名/administrator:密码@IP地址 secretsdump.exe abc.com/administrator:a1b2c3..@192.168.88.200 ```  ## 生成票据 ```bash #在win08中使用mimikatz生成票据,如果携带/ptt则会自动注入到内存中,不携带则在本地生成票据, kerberos::golden /domain:域名 /sid:SID值 /target:目标机器 /service:服务名 /rc4:目标机器上的机器账户NTLM-HASH值 /user:伪造的账户名 /ptt kerberos::golden /domain:abc.com /sid:S-1-5-21-3783786980-4151936079-2952669593 /target:dc.abc.com /service:CIFS /rc4:f093c6687aa6c59bbeaa3da1e96f986e /user:administrator /ptt ``` 注入票据:  访问域控的共享磁盘:  再次查看当前会话中的票据:  # 三、钻石票据 ## 概述 钻石票据是黄金票据的隐蔽升级版,它不凭空伪造 TGT,而是篡改 KDC 真实签发的 TGT:先申请一张合法的普通用户 TGT,解密后修改其中的 PAC(特权属性证书)提升权限,再重新加密使用。 票据主体是 KDC 真实签发的,仅权限字段被篡改,极难被检测。 ## 攻击原理 PAC 是 TGT 中携带用户权限信息的结构,包含用户所属组 SID、权限标识等。KDC 校验 TGT 时,会解密验证 PAC 的完整性,但不会校验 PAC 中的权限是否和申请用户匹配。 攻击者: 1. 用普通域用户身份申请一张真实合法的 TGT 2. 用 krbtgt 的 AES 密钥解密 TGT 的加密部分 3. 修改 PAC 结构,向组 SID 中添加域管理员、企业管理员等高权限组 SID 4. 重新计算 PAC 签名,再用 krbtgt 密钥重新加密 TGT 最终得到一张 “身份是普通用户、权限是域管理员” 的篡改 TGT,除了 PAC 被修改,其余所有字段(认证时间、会话密钥、签发者)都是 KDC 原生的。 ## 攻击前提 - 获取 krbtgt 账户的 AES256 密钥(现代 Windows 默认 AES 加密 TGT,RC4 密钥无法解密) - 拥有任意一个普通域用户的权限(用于申请真实 TGT) - 可访问域控 88 端口 ## 攻击流程 1. 使用普通域用户账号向 KDC 发起 AS 请求,获取一张真实有效的普通用户 TGT 2. 用 krbtgt 的 AES256 密钥解密 TGT 的加密数据部分 3. 解析并修改 PAC,在用户组列表中插入域管理员组 SID 4. 重新生成 PAC 签名,再用 krbtgt 密钥重新加密 TGT 5. 将篡改后的 TGT 注入本地 Kerberos 会话 6. 向 KDC 申请目标服务的 ST,KDC 解密验证通过,下发高权限 ST 7. 使用 ST 访问目标资源,获得域管理员权限 ## 特点 - 权限范围:全域级,和黄金票据一致 - 是否访问 KDC:全程需要,先申请真实 TGT,再申请 ST - 隐蔽性:高。TGT 由 KDC 真实签发,日志呈现完整的正常登录流程(AS_REQ + TGS_REQ),无明显异常特征 - 检测难点:传统基于 “票据是否伪造” 的规则失效,只能通过 PAC 权限与用户身份不匹配检测 # 四、蓝宝石票据 ## 概述 蓝宝石票据是钻石票据的进一步演进,是目前隐蔽性最高的 Kerberos 票据攻击之一。它不手动修改 PAC,而是利用 Kerberos 委派机制(S4U2Self + U2U)获取高权限用户的真实 PAC,再将其替换到自己的 TGT 中,PAC 本身完全合法原生,几乎无法通过特征检测。 ## 攻击原理 核心利用 Kerberos 的两个扩展机制: - S4U2Self:服务可以代表用户向 KDC 申请一张针对自己的服务票据,票据中包含该用户的完整 PAC - U2U(User-to-User):允许使用用户的 TGT 作为服务密钥,完成用户到用户的认证 攻击者利用普通用户权限,通过 S4U2Self + U2U 组合,获取到域管理员等高级用户的原生真实 PAC(包含完整合法签名),再用 krbtgt 密钥将这个高权限 PAC 替换到自己的 TGT 中,得到一张权限拉满、所有签名均合法的 TGT。 ## 攻击前提 - 获取 krbtgt 账户的 NT/AES 密钥 - 拥有任意一个普通域用户权限 - 域环境支持 Kerberos S4U2Self 与 U2U 委派机制 - 知道高权限用户的用户名(不需要其密码或哈希) ## 攻击流程 1. 使用普通域用户向 KDC 发起 AS 请求,获得自身的真实 TGT 2. 利用 S4U2Self + U2U 机制,以域管理员为目标用户,向 KDC 申请一张针对自身的服务票据 3. 这张 ST 中包含域管理员的完整、原生、带合法签名的 PAC 4. 提取该 ST 中的高权限 PAC 5. 用 krbtgt 密钥解密自身的 TGT,将原有普通权限 PAC 替换为高权限真实 PAC 6. 重新加密 TGT 并注入本地会话 7. 使用修改后的 TGT 申请 ST,获得域管理员级别的资源访问权限 ## 特点 - 权限范围:全域级 - 是否访问 KDC:全程需要 - 隐蔽性:极高。PAC 是高权限用户的原生真实结构,签名完全合法,票据整体与正常票据几乎无差异 - 检测难点:常规的 PAC 签名校验、票据合法性校验均会通过,仅能通过行为异常(普通用户突然出现高权限票据)发现
毛林
2026年11月15日 18:30
转发文档
收藏文档
上一篇
下一篇
评论(0)
登录
后可发表评论
还没有评论,来抢沙发~
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
还没有评论,来抢沙发~