Kerberos票据伪造
工作原理
| client | KDC | |
|---|---|---|
| 阶段1 AS Exchange(认证服务交换) |
目的:获取 TGT(票据授予票据),用于后续请求服务票据。 | |
发送明文请求,包含:用户名、服务名(通常是 krbtgt)、时间戳(防止重放攻击) -> |
AS | |
| <- 将 TGT(加密) 和 SK1(用 Client 密码的 Hash 加密) 返回给 Client。 |
AS 验证用户身份(检查域账户数据库)。 生成 Logon Session Key(临时会话密钥,记为 SK1)。 生成 TGT,包含: Client 信息(用户名、SID 等)。SK1(加密)。 TGT 有效期。 加密方式:用 krbtgt 账户的 NTLM Hash(或 AES 密钥)加密 TGT。 |
|
| **利用方法:**获取 krbtgt 账户的 NTLM Hash(需域管理员权限)。 **影响范围:**域内的所有服务 伪造流程: 1.生成恶意 TGT: 使用工具(如 Mimikatz)用 krbtgt 的 Hash 加密伪造的 TGT,包含: 任意用户名(如 Domain Admin)。 自定义的 SK1(攻击者生成)。 超长有效期(如 10 年)。 2.绕过 AS 认证: 直接向 TGS 发送伪造的 TGT,请求 ST。 TGS 无法区分 TGT 的真伪(因加密密钥正确),返回合法的 ST。 3.访问任意服务: 用伪造的 TGT 获取任意服务的 ST,完全控制域内资源。 特点: 权限最大化:可伪造域管理员身份。 持久性:即使域管理员密码修改,只要 krbtgt Hash 未变,票据仍有效。 |
||
| 阶段2 TGS Exchange(票据授予服务交换) |
目的:获取 ST(服务票据),用于访问特定服务。 | |
TGT(从 AS 获取)。 Authenticator1:包含时间戳、Client 信息,用 SK1 加密。 目标服务名(如 CIFS/file-server)。-> |
TGS | |
| <- 将 ST(加密) 和 SK2(用 SK1 加密) 返回给 Client |
TGS 用 krbtgt 的 Hash 解密 TGT,获取 SK1。 用 SK1 解密 Authenticator1,验证时间戳和 Client 身份。 生成 Service Session Key(记为 SK2),用于 Client 与 Server 的通信。 生成 ST(服务票据),包含: Client 信息。 SK2(加密)。 ST 有效期。 加密方式:用 目标服务账户的 NTLM Hash(如文件服务器的机器账户 Hash)加密 ST。 |
|
| **利用方法:**获取 目标服务账户的 NTLM Hash(如文件服务器的机器账户 Hash)。 **影响范围:**域内特定服务 伪造流程: 1.生成恶意 ST: 使用工具(如 Mimikatz)用目标服务的 Hash 加密伪造的 ST,包含: 任意用户名。 自定义的 SK2(攻击者生成)。 目标服务名(如 CIFS)。 2.绕过 TGS 认证: 直接向目标服务发送伪造的 ST 和 Authenticator2。 服务无法区分 ST 的真伪(因加密密钥正确),允许访问。 特点: 精准攻击:仅对特定服务有效(如文件共享、SQL 数据库)。 隐蔽性高:无需与 KDC 交互,难以被检测。 |
||
| 阶段3 AP Exchange(应用服务交换) |
目的:使用 ST 访问目标服务。 | |
| ST(从 TGS 获取)。 Authenticator2:包含时间戳,用 SK2 加密。 -> |
Server | |
| <- 若验证通过,允许 Client 访问服务。 |
Server 用 自己的 NTLM Hash 解密 ST,获取 SK2。 用 SK2 解密 Authenticator2,验证时间戳和 Client 身份。 |
攻击特征
黄金票据
日志特征
- 事件 ID 4768(TGT 请求)
- 异常用户:请求 TGT 的用户名不存在于域账户数据库中,或权限异常(如普通用户请求高权限服务)。
- 异常加密类型:使用弱加密算法(如 RC4)而非 AES。
- 时间戳异常:TGT 请求时间与用户正常活动时间不符(如深夜)。
- 事件 ID 4769(服务票据请求)
- 大量跨服务请求:短时间内通过同一 TGT 请求多个高权限服务的 ST(如域控、SQL 服务)。
- 目标服务异常:普通用户频繁请求域管理员相关服务(如
LDAP、CIFS)。
票据属性
- 超长有效期:黄金票据的 TGT 有效期通常远超默认值(默认 10 小时,黄金票据可能设为数年)。
- 伪造的 PAC:黄金票据中的 PAC(特权属性证书)可能包含不匹配的 SID 或组权限(如普通用户被标记为域管理员)。
网络行为
- 绕过 AS 阶段:攻击者直接与 TGS 交互,无初始 AS 认证日志(事件 ID 4768 缺失)。
- 跨域请求:从非域内主机(如外部 IP)发起 TGS 请求。
权限提升
- 异常权限访问:普通账户突然访问域控、DNS 管理等敏感服务。
白银票据
日志特征
- 事件 ID 4769(服务票据请求)
- 缺失 TGT 记录:白银票据直接伪造 ST,因此无对应的 TGT 请求日志(事件 ID 4768)。
- 无效的请求来源:ST 请求来自未通过 AS 认证的 Client。
- 事件 ID 4624(登录日志)
- 服务登录异常:服务账户(如机器账户
FILE-SERVER$)的登录行为异常(如非工作时间)。
- 服务登录异常:服务账户(如机器账户
票据属性
- 服务限制性:伪造的 ST 仅针对特定服务(如
CIFS、HTTP),且用户名与服务权限不匹配。 - 时间戳冲突:票据时间戳与系统时间偏差过大(可能因攻击者未正确同步时间)。
网络行为
- 直接与服务通信:绕过 KDC,Client 直接向目标服务发送 ST,无 TGS 交互记录。
- 无预认证请求:未通过 AS 和 TGS 阶段,直接进行 AP 交换。
服务端异常
- 重复票据使用:同一 ST 被多次使用(正常 ST 仅使用一次)。
- 无效的 PAC 校验:服务端若启用 PAC 验证,可能记录 PAC 校验失败的日志。