关于 detecting-golden-ticket-attacks-in-kerberos-logs
面向安全分析人员的 Kerberos 日志威胁狩猎技能,用于识别伪造票据 Golden Ticket 的迹象。它通过关联 Windows 事件中的票据请求、加密类型、有效期和 SID 异常来辅助调查。
主要功能
- 01关联 Kerberos 事件日志
- 02检测 RC4 加密异常
- 03识别票据有效期异常
- 04核查 TGS 与 TGT 请求关系
- 05检查 KRBTGT 密码轮换情况
适用场景
- 01调查 KRBTGT 哈希可能泄露事件
- 02排查域内持久化访问迹象
- 03分析加密类型降级
- 04评估修复后 Golden Ticket 是否仍有效
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill detecting-golden-ticket-attacks-in-kerberos-logs安装后在 Claude Code 中输入/detecting-golden-ticket-attacks-in-kerberos-logs确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdscripts/agent.py详细介绍
在 Kerberos 日志中检测黄金票据攻击
何时使用
- 当 KRBTGT 账户哈希可能已通过 DCSync 或 NTDS.dit 提取被泄露时
- 当搜寻用于持久化域访问的伪造 Kerberos 票据时
- 在事件响应发现域级别的凭据窃取之后
- 当调查不可能的登录模式时(用户同时从多个位置登录)
- 在入侵后评估期间,确定是否在使用黄金票据
前提条件
- 域控制器上的 Windows 安全事件 ID 4768、4769、4771
- Kerberos 策略配置知识(最大票据生存期、加密类型)
- 启用 Kerberos 服务票据操作的域控制器审核策略
- 能够在多个 DC 之间关联 Kerberos 事件的 SIEM
工作流
- 监控 TGT 请求(事件 4768):跟踪 Kerberos 身份验证服务请求。黄金票据完全绕过 AS-REQ/AS-REP 交换,因此 4769 之前缺少 4768 是可疑的。
- 检测加密类型异常:黄金票据通常使用 RC4(0x17)加密。如果你的域强制使用 AES(0x12),任何 RC4 TGT 都是危险信号。监控事件 4769 中的 TicketEncryptionType。
- 检查票据生存期异常:默认 Kerberos TGT 生存期为 10 小时,续期为 7 天。黄金票据可以被伪造为 10 年生存期。检测持续时间超过策略的票据。
- 搜寻不存在的 SID:黄金票据可以包含任意 SID(包括不存在的账户或组)。将 TGS 请求与已知的 AD SID 清单进行关联。
- 检测没有先前 TGT 的 TGS:当服务票据(4769)出现,而同一 IP/账户没有先前的 TGT 请求(4768)时,这可能表明存在预先存在的黄金票据。
- 监控 KRBTGT 密码年龄:跟踪 KRBTGT 上次重置的时间。如果 KRBTGT 哈希自已知泄露以来未更改,则该期间的黄金票据仍然有效。
- 验证 PAC 签名:在 KB5008380+ 和 PAC 验证强制下,域控制器拒绝伪造的 PAC。监控指示 PAC 验证错误的 Kerberos 失败。
检测查询
Splunk -- Kerberos TGS 中的 RC4 加密
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
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 -- 黄金票据指标
SecurityEvent
| where EventID == 4769
| where TicketEncryptionType == "0x17"
| where ServiceName != "krbtgt"
| summarize Count=count() by TargetUserName, IpAddress, ServiceName
| where Count > 5
常见场景
- DCSync 后的黄金票据:在提取 KRBTGT 哈希后,攻击者使用 Domain Admin SID 伪造 TGT,在 KRBTGT 轮换两次之前有效数月。
- RC4 降级:在仅 AES 环境中使用 RC4 加密伪造黄金票据,可通过加密类型不匹配检测到。
- 跨域黄金票据:使用伪造的域间 TGT 在 AD 域/林之间进行横向移动。
- 修复后的持久化:黄金票据在密码重置后仍然存在,因为 KRBTGT 只轮换了一次(当前和先前的哈希都有效)。
输出格式
Hunt ID: TH-GOLDEN-[DATE]-[SEQ]
Suspected Account: [Account using forged ticket]
Source IP: [Client IP]
Target Service: [SPN accessed]
Encryption Type: [RC4/AES128/AES256]
Anomaly: [No prior TGT/RC4 in AES environment/Extended lifetime]
KRBTGT Last Reset: [Date]
Risk Level: [Critical]
评论
支持 Markdown