利用原理

黄金票据发生在AS-REP的阶段,黄金票据就是伪造TGT票据。

Kerberos认证过程中可以知道,TGT票据是通过krbtgt用户的hash值进行加密的,而krbtgt用户的hash值只存在域控制器上面的ntds文件中。

需要知道域控上面krbtgt用户的hash来进行伪造TGT票据,即为Golden Ticket黄金票据

黄金票据的作用:横向移动、权限维持

利用条件

  1. 必须知道域控krbtgt用户的Hash值

  2. 域名

  3. 域的SID值

  4. 需要伪造的用户(一般都为Administrator用户)

域的SID值

在域内执行whoami /all,去掉最后的的值即为域的SID值,如:

这里:S-1-5-21-3067532395-4024955116-1698367832即为域的SID值。

在域内任意用户进行执行该命令都可以获取域的SID值,并且都一样,只是最后的数字不同。

krbtgt-Hash获取

1、控制域控后可以通过复制和克隆影盘的方法来获取ntds文件,并进行解密该文件来获取krbtgt的hash值。(krbtgt是域用户,不是域控上的本地用户,所以它的hash值不储存在SAM文件中,而是NTDS文件中)。

2、可以通过dcsync的技术来获取,利用Mimikatz的dcsync来进行获取krbtgt的hash值。

这里使用dcsync方法进行测试:

该方法需要用户权限为:

  1. Administrator组内的用户

  2. Domain Admin组内的用户

  3. Enterprise Admin组内的用户

  4. 域控制器的计算机用户

  5. 域控的Administrator和system用户也可以

方法1

这里使用impacket工具包中的Ticketer工具来进行生成黄金票据。

.\ticketer.exe -domain-sid [域SID] -nthash [krbtgt的hash值] -domain [域名] [伪造管理员用户名]

然后使用MimiKatz或其他工具进行注入黄金票据,这里使用Mimi Katz进行测试利用:

先清除票据:klist purge

由于生成的是.ccache文件,则mimikatz执行命令:kerberos::ptc [票据文件名]

注入票据后执行查看票据命令:klist和查看域控文件:dir \\dc.abc.com\c$

方法2

直接利用mimiKatz进行生成票据,或者直接将票据注入内存之中

清除票据:

使用mimikatz进行生成黄金票据,命令:

kerberos::golden /user:[伪造的管理用户名] /domain:[域名] /sid:[Sid值] /krbtgt:[krbtgt的hash值]  #生成TGT黄金票据
kerberos::golden /user:[伪造的管理用户名] /domain:[域名] /sid:[Sid值] /krbtgt:[krbtgt的hash值]  /ptt #加上/ptt会直接注入到内存中

这里直接使用命令将票据注入内存中:

查看票据,并查看域控文件: