# Detecting Golden Ticket Attacks In Kerberos Logs

> 通过分析 Kerberos TGT 异常（包括加密类型不匹配、不可能的票据生命周期、不存在的账户以及域控制器事件日志中的伪造 PAC 签名），检测 Active Directory 中的黄金票据攻击。

- Skill: `killvxk/detecting-golden-ticket-attacks-in-kerberos-logs` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add killvxk/detecting-golden-ticket-attacks-in-kerberos-logs`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/detecting-golden-ticket-attacks-in-kerberos-logs/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/detecting-golden-ticket-attacks-in-kerberos-logs

---


# 检测 Kerberos 日志中的黄金票据攻击

## 适用场景

- KRBTGT 账户哈希可能通过 DCSync 或 NTDS.dit 提取而遭到入侵时
- 狩猎用于持久域访问的伪造 Kerberos 票据时
- 事件响应揭示域级别的凭据盗取后
- 调查不可能的登录模式（用户同时从多地登录）时
- 泄露后评估以确定是否正在使用黄金票据时

## 前置条件

- 域控制器上的 Windows 安全事件 ID 4768、4769、4771
- Kerberos 策略配置知识（最大票据生命周期、加密类型）
- 启用 Kerberos 服务票据操作的域控制器审计策略
- SIEM 能够跨多个域控制器关联 Kerberos 事件

## 工作流程

1. **监控 TGT 请求（事件 4768）**：跟踪 Kerberos 认证服务请求。黄金票据（Golden Ticket）完全绕过 AS-REQ/AS-REP 交换，因此在 4769 之前缺少 4768 是可疑的。
2. **检测加密类型异常**：黄金票据通常使用 RC4（0x17）加密。若您的域强制使用 AES（0x12），任何 RC4 TGT 都是危险信号。监控事件 4769 中的 TicketEncryptionType。
3. **检查票据生命周期异常**：默认 Kerberos TGT 生命周期为 10 小时，可续期 7 天。黄金票据可伪造为 10 年的生命周期。检测超过策略的票据持续时间。
4. **狩猎不存在的 SID**：黄金票据可包含任意 SID（包括不存在的账户或组）。将 TGS 请求与已知 AD SID 清单进行关联。
5. **检测无先前 TGT 的 TGS**：当来自相同 IP/账户的服务票据（4769）出现而没有先前的 TGT 请求（4768）时，这可能表明存在预先创建的黄金票据。
6. **监控 KRBTGT 密码年龄**：跟踪 KRBTGT 上次重置时间。若 KRBTGT 哈希自已知入侵后未更改，来自该时期的黄金票据仍然有效。
7. **验证 PAC 签名**：通过 KB5008380+ 和 PAC 验证执行，域控制器会拒绝伪造的 PAC。监控指示 PAC 验证错误的 Kerberos 失败。

## 检测查询

### Splunk——Kerberos TGS 中的 RC4 加密
```spl
index=wineventlog EventCode=4769
| where TicketEncryptionType="0x17"
| where ServiceName!="krbtgt"
| stats count by TargetUserName ServiceName IpAddress TicketEncryptionType Computer
| where count > 5
| sort -count
```

### Splunk——无先前 TGT 的 TGS
```spl
index=wineventlog (EventCode=4768 OR EventCode=4769)
| stats earliest(_time) as first_tgt by TargetUserName IpAddress EventCode
| eventstats earliest(eval(if(EventCode=4768, first_tgt, null()))) as tgt_time by TargetUserName IpAddress
| where EventCode=4769 AND (isnull(tgt_time) OR first_tgt < tgt_time)
| table TargetUserName IpAddress first_tgt tgt_time
```

### KQL——黄金票据指标
```kql
SecurityEvent
| where EventID == 4769
| where TicketEncryptionType == "0x17"
| where ServiceName != "krbtgt"
| summarize Count=count() by TargetUserName, IpAddress, ServiceName
| where Count > 5
```

## 常见场景

1. **DCSync 后黄金票据**：提取 KRBTGT 哈希后，攻击者伪造包含域管理员 SID 的 TGT，在 KRBTGT 被轮换两次前有效期可达数月。
2. **RC4 降级**：仅 AES 环境中伪造的 RC4 加密黄金票据，可通过加密类型不匹配检测。
3. **跨域黄金票据**：伪造的跨域 TGT 用于在 AD 域/林之间横向移动。
4. **修复后持久化**：因 KRBTGT 仅被轮换一次（当前和之前的哈希均有效），黄金票据在密码重置后依然存活。

## 输出格式

```
Hunt ID: TH-GOLDEN-[DATE]-[SEQ]
Suspected Account: [使用伪造票据的账户]
Source IP: [客户端 IP]
Target Service: [访问的 SPN]
Encryption Type: [RC4/AES128/AES256]
Anomaly: [无先前 TGT/AES 环境中使用 RC4/超出生命周期]
KRBTGT Last Reset: [日期]
Risk Level: [Critical]
```

