黄金票据攻击的完整复现步骤
TOPIC SOURCE
权限提升实战:Windows 与 Linux 提权技巧
攻防演练里,拿下域控往往意味着结束,但现实远比这复杂。当蓝队开始全网封堵、重置管理员密码时,如何保证自己不会白忙一场?这就需要一张无论域控密码怎么变都能畅通无阻的通行证——黄金票据(Golden Ticket)。说白了,它就是一场针对Kerberos协议底层信任机制的降维打击,伪造的不是某个用户的身份,而是整个域的签发权威。
核心物料的精准提取
伪造票据的前提是拿到KDC的签发权。这需要两个绝对核心的数据:域的SID和krbtgt账户的NTLM Hash。krbtgt是KDC的服务账户,它的Hash就是TGT(票据授予票据)的签发密钥。通常在已获得域控权限后,通过Dcsync攻击直接提取:
mimikatz # lsadump::dcsync /domain:corp.local /user:krbtgt
拿到SID(如S-1-5-21-...)和Hash后,攻击者就掌握了域的“印钞机”。值得注意的是,微软默认不强制krbtgt定期改密,甚至改一次历史Hash依然有效,这成了防守方最大的噩梦。
伪造与注入的闭环
有了印钞机,接下来就是印钱。伪造TGT时,用户名甚至可以随意捏造,比如写个FakeAdmin,因为KDC在验证TGT时只看密钥是否匹配,根本不查用户是否真实存在于Active Directory中。
mimikatz # kerberos::golden /user:FakeAdmin /domain:corp.local /sid:S-1-5-21-xxx /krbtgt:xxx /ptt
/ptt参数直接将票据注入当前内存会话。验证环节最直观的方法是尝试访问域控的CIFS共享:
dir \DC01C$
如果能列出目录,说明伪造的身份已经被系统完全接纳。原本需要熬几个通宵抓取的权限,现在一杯咖啡的时间就搞定了。
防御的阿喀琉斯之踵
黄金票据最让人脊背发凉的地方在于其持久性。就算防守方发现了入侵,重置了所有域管密码,只要没有强制重置krbtgt密码两次(清除历史Hash库),攻击者依然能用旧物料随时生成新票据夺回控制权。这也是为什么在成熟的应急响应流程中,重置krbtgt是必须且要执行两遍的死命令。不过,现实里有多少蓝队能在慌乱中记得这条铁律呢?

参与讨论
krbtgt改两次这个坑我踩过,当时差点没救回来。