Kerberos协议之TGS_REQ & TGS_REP
2020-11-12 12:37:42 Author: y4er.com(查看原文) 阅读量:14 收藏

继续Kerberos协议

前面解释了AS_REQ & AS_REP,在AS_REP中,kdc返回了使用krbtgt hash加密的tgt票据。在TGS_REQ & TGS_REP阶段,就是client拿着AS_REP获得的tgt票据去KDC换可以访问具体服务的tgs票据,然后再使用TGS票据去访问具体的服务。这一阶段,微软引进了两个扩展S4U2SELF和S4U2PROXY。

配置以下Kerberos发包工具。把AS_REP的票据导入,同样勾上RC4加密。 1.png

发包 2.png

在TGS_REQ请求中需要ap-req字段 3.png 这部分包含了tgt里的信息,kdc以此校验tgt,正确则返回tgs票据。

PA_FOR_USER字段 4.png

类型是S4U2SELF,值是一个唯一的标识符,该标识符指示用户的身份。该唯一标识符由用户名和域名组成。 5.png S4U2proxy 必须扩展PA_FOR_USER结构,指定服务代表某个用户(图片里面是administrator)去请求针对服务自身的kerberos服务票据。

PA_PAC_OPTIONS字段 6.png

类型是 PA_PAC_OPTIONS,值是以下flag的组合

  1. Claims(0)
  2. Branch Aware(1)
  3. Forward to Full DC(2)
  4. Resource-based Constrained Delegation (3)

微软的MS-SFU 2.2.5, S4U2proxy 必须扩展PA-PAC-OPTIONS结构。 如果是基于资源的约束委派,就需要指定Resource-based Constrained Delegation(RBCD)位。

req-body 7.png

sname指要请求的服务名,tgs的票据是由该服务用户的hash加密的。如果该服务名为krbtgt,那么tgs的票据可以当tgt用。

AddtionTicket:附加票据,在S4U2proxy请求里面,既需要正常的TGT,也需要S4U2self阶段获取到的TGS,那么这个TGS就添加到AddtionTicket里面。 8.png

9.png

ticket字段是tgs票据,用于下一步的AP_REQ认证。ticket中的enc_part是使用服务账户的hash加密的,如果有服务账户的hash,就可以自己签发一个给任意用户的tgs票据(白银票据)。

最后一个enc_part可以解密,其中的session_key用作下一阶段的认证密钥。 10.png

挖坑,S4U2SELF、S4U2PROXY和委派暂时放后面说。(等我看懂)

  1. https://daiker.gitbook.io/windows-protocol/kerberos/2

文笔垃圾,措辞轻浮,内容浅显,操作生疏。不足之处欢迎大师傅们指点和纠正,感激不尽。


文章来源: https://y4er.com/post/kerberos-tgs_req-and-tgs_rep/
如有侵权请联系:admin#unsafe.sh