请求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会作为下一阶段的认证密钥
