请求TGS票据我准备用kekeo。在普通域机器上执行下面的命令发起TGS请求。
# 先请求一张jm的TGT票据
kekeo.exe "tgt::ask /domain:yunwei.lab /user:jm /password:123.com"
# 再请求TGS票据
kekeo.exe "tgs::ask /tgt:TGT_.kirbi /service:cifs/srv2012.yunwei.lab" "exit"
请求
常规的请求TGS票据里面会携带padata
和req-body
数据块。
padata
中的ap-req.ticket
是请求的TGT票据。KDC会校验TGT票据,如果票据正确,就返回TGS票据。
req-body
块中,cname.CNameString
表示发起请求的用户是jm
;sname.SNameString
表示要访问的spn为cift/srv2012.yunwei.lab
,
响应
KDC 使用krbtgt hash解密TGT,不管用户有没有访问对应服务的权限,就会返回用请求的服务hash加密的TGS票据(ticket
),票据对应的服务为cifs/srv2012.yunwei.lab
。如下图,ticket.enc-part.cipher
使用该服务的NTLM hash加密。
同时,返回的数据包表明这张票据是jm这个用户请求的(cname.CNameString
)。
和ticket
同级还有一个enc-part
,这个是用第一阶段里面返回的session_key
加密的。这个enc-part
会作为下一阶段的认证密钥