JACKSON-PC$
)使用S4U2self扩展名代表用户(administrator
)获得针对服务本身(JACKSON-PC$
)的服务票证。该服务将填写PA_FOR_USER 数据结构,类型为S4U2SELF
,并将KRB_TGS_REQ消息发送到TGS。 如下图,由于服务JACKSON-PC$
代表用户向服务本身(也是JACKSON-PC$
)发起请求,因此这里面cname是JACKSON-PC$
,sname也是JACKSON-PC$
JACKSON-PC$
) 被配置了非约束的委派,那么JACKSON-PC$
可以接受任何用户的委派的去请求其他所有服务。在协议层面的实现就是,某个用户委托JACKSON-PC$
去访问某个服务,那么这个用户会将 TGT(在TGS里面)发送到JACKSON-PC$
并缓存到LSASS中,以方便以后使用。 然后JACKSON-PC$
模拟用户去请求某个服务。JACKSON-PC$
可以接受任何用户的委派的去请求特定的服务。具体过程是收到用户的请求之后,首先代表用户获得针对服务自身的可转发的kerberos服务票据(S4U2SELF),拿着这个票据向KDC请求访问特定服务的可转发的TGS(S4U2PROXY),并且代表用户访问特定服务,而且只能访问该特定服务。format("$krb5tgs${0}$*{1}${2}${3}*${4}${5}", encType, userName, domain, spn, cipherText.Substring(0, 32), cipherText.Substring(32))
就可以拼接处hash cat(13100)能跑的hash。JACKSON-PC$
,并且通过一定手段拿下该账户的权限,然后诱导域管访问该JACKSON-PC$
,这个时候域管会将自己TGT发送到JACKSON-PC$
并缓存到LSASS中,那我们就可以从LSASS中导出域管的TGT票据,然后通过PTT,从而拥有域管的权限。(&(objectCategory=computer)(objectClass=computer)(userAccountControl:1.2.840.113556.1.4.803:=524288))
JACKSON-PC$
)JACKSON-PC$
,并且通过一定手段拿下该账号所在的机子。我们就可以利用这个服务账号代表任意用户(这里面很重要的一点是服务代表用户获得针对服务自身的kerberos票据这个过程,服务是不需要用户的凭据的)进行s4u2self获得一个可转发的票据,然后把获取到的票据用于s4u2proxy(作为AddtionTicket),从未获取一个可转发的TGS,服务就可以代替任意用户访问另外一个服务(既被配置的约束委派的服务,这里面就是cifs/WIN-JQO4OSMOGK2.JMU.com)。(&(objectCategory=computer)(objectClass=computer)(userAccountControl:1.2.840.113556.1.4.803:=16777216))
kerberoast
支持对所有用户或者特定用户执行kerberoasting操作,其原理在于先用LDAP查询于内的spn,再通过发送TGS包,提取拼接得到hashcat或者john能爆破的格式。.kirbi
pass the key
,只需要pass the key
的程序里面加-k -no-pass
就行。secretsdump.py
为例ccache
.