10

Kerberos协议之TGS_REQ & TGS_REP

 3 years ago
source link: https://y4er.com/post/kerberos-tgs_req-and-tgs_rep/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
📅 2020年11月12日  ·  ☕ 2 分钟

继续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加密。

image.png

发包

image.png

TGS_REQ

在TGS_REQ请求中需要ap-req字段

image.png
这部分包含了tgt里的信息,kdc以此校验tgt,正确则返回tgs票据。

PA_FOR_USER字段

image.png

类型是S4U2SELF,值是一个唯一的标识符,该标识符指示用户的身份。该唯一标识符由用户名和域名组成。

image.png
S4U2proxy 必须扩展PA_FOR_USER结构,指定服务代表某个用户(图片里面是administrator)去请求针对服务自身的kerberos服务票据。

PA_PAC_OPTIONS字段
image.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

image.png

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

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

TGS_REP

image.png

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

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

image.png

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK