请求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票据里面会携带padatareq-body数据块。

padata中的ap-req.ticket是请求的TGT票据。KDC会校验TGT票据,如果票据正确,就返回TGS票据。

AP-1

req-body块中,cname.CNameString表示发起请求的用户是jmsname.SNameString表示要访问的spn为cift/srv2012.yunwei.lab

AP-2

响应

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

AP-3