当前位置: 首页 > news >正文

Active Directory Certificate Services(AD CS)攻击基础

一、引言

在现代企业网络环境中,Active Directory Certificate Services(AD CS) 是微软提供的一项关键服务,用于构建和管理公钥基础设施(PKI)。AD CS通过颁发和管理数字证书,支持多种安全场景,例如智能卡登录、Wi-Fi/VPN认证、加密文件系统(EFS)以及自动化证书注册。然而,AD CS的复杂性和配置灵活性使其成为攻击者的潜在目标。一旦配置不当,攻击者可以利用AD CS的漏洞迅速从普通域用户提权至域管理员,威胁整个域环境的完整性。


二、AD CS攻击简介

2.1 AD CS的核心功能

AD CS是Active Directory环境中用于管理数字证书的核心组件,其主要功能包括:

  • 证书颁发机构(CA):负责生成、颁发和撤销数字证书。
  • 智能卡登录:通过证书实现高安全性的用户认证。
  • Wi-Fi和VPN认证:利用证书确保设备和用户的安全连接。
  • 加密文件系统(EFS):为文件提供基于证书的加密保护。
  • 自动化证书注册(Autoenrollment):简化证书的分发和管理流程。
  • 网络设备注册服务(NDES):支持非域设备(如路由器)获取证书。
  • Web Enrollment:通过Web界面提供证书申请功能。

这些功能使AD CS成为企业安全基础设施的重要组成部分,但也因其复杂性带来了潜在风险。

2.2 AD CS攻击的威胁

AD CS攻击的核心目标是利用CA服务或证书模板的配置漏洞,伪造高权限用户(如域管理员)的身份,从而获取对域控制器的完全控制。常见的攻击场景包括:

  • 伪造Kerberos票据(TGT):通过伪造用户身份获取域内任意服务的访问权限。
  • 权限提升:从低权限用户(如普通域用户)提权至域管理员。
  • 持久化攻击:利用证书实现长期的隐秘访问。

由于AD CS的广泛部署(尤其在大型企业中),攻击者只需满足少量条件即可实施高危攻击。因此,深入了解AD CS攻击的条件和原理对红蓝双方都至关重要。


三、AD CS攻击的前提条件与环境特征

要成功实施AD CS攻击,攻击者需要满足一系列网络、权限和配置条件。以下是详细的前提条件分析。

3.1 网络层面前提

攻击者需要在目标域环境中获得初始立足点(Foothold),这通常包括以下情况:

  • 域内用户凭据:攻击者通过钓鱼、密码喷洒或漏洞利用获取普通域用户账户。
  • 普通域权限:如域用户组(Domain Users)的默认权限。
  • 机器权限:控制域内某台工作站或服务器的本地管理员权限。
  • 网络连通性:攻击者需要与目标CA服务器通信,通常通过以下协议:
    • HTTP/HTTPS:用于访问Web Enrollment服务(如certsrv)。
    • DCOM/RPC:用于与CA服务器交互或执行证书请求。

如果目标网络启用了防火墙或网络分段,攻击者可能需要进一步利用代理(如SOCKS)或横向移动技术来确保通信畅通。

3.2 AD CS部署特征

目标环境中必须部署AD CS,且包含以下组件之一:

  • 企业CA(Enterprise CA):与Active Directory深度集成,允许基于域用户权限的证书申请。
  • Web Enrollment服务:通过Web界面(如https://<CA-Server>/certsrv)提供证书申请功能,通常是攻击的切入点。
  • 网络设备注册服务(NDES):允许非域设备申请证书,某些场景下可能被滥用。
  • 证书模板:企业CA的核心组件,定义了证书的用途、权限和属性。攻击者通常针对配置不当的模板展开攻击。

3.3 配置漏洞(攻击的关键)

AD CS攻击的成功往往依赖于目标环境的配置错误。以下是常见的漏洞类型:

3.3.1 弱权限控制的证书模板(Misconfigured Certificate Templates)

证书模板是AD CS攻击的核心目标。以下配置错误可能导致模板被滥用:

  • 低权限用户可注册:模板允许Authenticated Users或低权限组(如Domain Users)申请证书。
  • 启用高危EKU:模板包含Client Authentication(客户端认证)或Smartcard Logon(智能卡登录)扩展密钥用法(EKU),可用于Kerberos认证。
  • 支持ALT UPN:模板允许在证书的Subject Alternative Name(SAN)字段中指定任意用户主名称(UPN),从而伪造高权限用户身份。
  • 自定义SAN:攻击者可以自由指定SAN字段,构造恶意证书。

攻击场景(ESC1):攻击者利用支持Client Authentication且允许低权限用户申请的模板,请求包含域管理员UPN的证书,进而通过PKINIT协议获取域管理员的TGT。

3.3.2 证书模板滥用(ESC系列漏洞)

SpecterOps的研究团队提出了ESC(Exploitable Security Configuration)系列漏洞,总结了AD CS中常见的模板滥用场景。以下是主要漏洞类型:

漏洞编号条件描述
ESC1模板允许Authenticated Users请求,EKU包含客户端认证攻击者可申请包含任意UPN的证书,用于伪造Kerberos TGT。
ESC2模板允许“任意主体”注册,支持自定义UPN攻击者可伪造任何用户身份,包括域管理员。
ESC3模板允许签名证书用于身份认证攻击者可利用签名证书执行S4U2Self/S4U2Proxy攻击。
ESC6攻击者可写入危险模板属性通过修改模板配置实现横向移动或权限提升。
ESC8CA允许任意模板申请攻击者可利用未授权模板注册高权限证书。
3.3.3 Web Enrollment服务漏洞

Web Enrollment服务(certsrv)通常通过HTTP/HTTPS提供证书申请功能。如果该服务未启用身份验证或配置不当,攻击者可能通过以下方式滥用:

  • 使用工具如certreqcertutil直接申请证书。
  • 结合PetitPotamNTLM Relay攻击,强制CA服务器向攻击者控制的服务器发起认证,窃取凭据或证书。
3.3.4 CA服务账户权限错误

CA服务器的权限配置不当可能导致严重后果,例如:

  • CA服务以域管理员账户运行:攻击者可直接提取高权限凭据。
  • CA服务账户拥有过多权限:如对域对象的写权限,可用于提权或持久化。

3.4 工具支持的环境

AD CS攻击依赖于成熟的工具链和域环境的默认配置:

  • AD CS服务启用:目标域内至少存在一台CA服务器。
  • Kerberos认证:Active Directory默认使用的认证协议,支持PKINIT(基于证书的Kerberos认证)。
  • 常用工具
    • Certify:用于枚举CA服务器和证书模板。
    • Certipy:支持证书申请、滥用和Kerberos票据生成。
    • Rubeus:执行PKINIT认证,获取TGT。
    • Mimikatz:提取凭据或执行后续攻击。

四、AD CS攻击的基本原理与典型攻击链

4.1 攻击原理概述

AD CS攻击的核心在于利用CA服务或证书模板的配置漏洞,生成伪造的高权限证书。攻击者通过以下步骤实现提权:

  1. 枚举环境:识别CA服务器、可用模板和权限配置。
  2. 申请恶意证书:利用弱权限模板,请求包含高权限用户(如域管理员)UPN的证书。
  3. 伪造身份:使用恶意证书通过PKINIT协议获取Kerberos TGT。
  4. 权限提升:利用TGT访问域控制器或其他高价值目标。

4.2 典型攻击链:ESC1场景

以下是一个基于ESC1漏洞的完整攻击流程,假设攻击者已获得普通域用户凭据:

  1. 获取初始凭据:通过钓鱼或漏洞利用获得普通域用户账户(如user1@domain.local)。
  2. 枚举证书模板:使用Certify运行以下命令,枚举CA服务器和可用模板:
    Certify.exe /ca:ca.corp.local\Corp-CA /enum
    
    输出显示存在一个名为UserCert的模板,支持Client Authentication,允许Authenticated Users申请。
  3. 确认漏洞:检查模板是否允许自定义SAN字段。
  4. 申请恶意证书:使用Certipy请求包含域管理员UPN的证书:
    certipy req -u user1@domain.local -p password -ca Corp-CA -template UserCert -upn admin@domain.local
    
    输出为一个PFX格式的证书文件。
  5. 执行PKINIT认证:使用Rubeus将证书转换为Kerberos TGT:
    Rubeus.exe asktgt /user:admin@domain.local /certificate:user1.pfx
    
    输出为域管理员的TGT。
  6. 访问域控制器:使用TGT通过Mimikatz或其他工具访问域控制器,提取所有域凭据:
    mimikatz.exe "sekurlsa::logonpasswords" "exit"
    

结果:攻击者从普通域用户提权至域管理员,获得对整个域环境的完全控制。


五、优化与高级攻击策略

5.1 提高攻击隐蔽性

为避免触发防御机制(如EDR或SIEM),攻击者可优化以下方面:

  • 减少网络指纹:通过代理(如proxychains)隐藏请求来源。
  • 绕过监控:使用混淆后的工具或自定义Certipy脚本,避免特征检测。
  • 清理日志:在申请证书后,删除或修改CA服务器的日志记录(如Event ID 4886)。

5.2 结合其他攻击向量

AD CS攻击可与其他技术结合,形成更复杂的攻击链:

  • NTLM Relay:利用PetitPotam强制CA服务器发起NTLM认证,结合Web Enrollment服务窃取凭据。
  • Golden Ticket:在获取域管理员TGT后,生成长期有效的Golden Ticket以实现持久化。
  • Pass-the-Ticket:将TGT传递到其他攻击节点,扩大攻击范围。

5.3 防御与缓解措施

防御者可通过以下措施降低AD CS攻击的威胁:

  1. 加固证书模板
    • 禁用不必要的模板,限制Authenticated Users的申请权限。
    • 移除高危EKU(如Client Authentication)或禁止自定义SAN。
  2. 限制CA服务权限
    • 确保CA服务以低权限账户运行,避免使用域管理员账户。
  3. 启用监控
    • 监控CA服务器的异常证书申请事件(如Event ID 4887)。
    • 检查Kerberos认证日志,检测异常的PKINIT请求。
  4. 网络隔离
    • 限制CA服务器与普通工作站的直接通信,启用强认证。
  5. 定期审计
    • 使用工具如PingCastleBloodHound定期扫描AD CS配置,识别潜在漏洞。

六、总结

AD CS攻击是现代域环境渗透测试中的高级技术,利用了企业CA和证书模板的配置缺陷,进而为攻击者提供了从普通域用户到域管理员的快速提权路径。通过深入理解AD CS的配置、漏洞和攻击链,红队可以更高效地发现和利用漏洞,而蓝队则可以采取加固措施降低风险。

http://www.xdnf.cn/news/1017757.html

相关文章:

  • Java单例模式有几种实现方式
  • 为什么py文件打包后大小会增加很多?
  • 亚马逊云 Lambda 容器化部署教程
  • Rust 学习笔记:关于处理任意数量的 future 的练习题
  • Redis 使用场景、缓存什么数据?怎么保证数据一致性?
  • 自定义线程池 4.0
  • 基于51单片机的简易售货机系统
  • 使用 C/C++ 和 OpenCV 构建智能停车场视觉管理系统
  • 在GIS 工作流中实现数据处理(4)
  • 用Java实现常见排序算法详解
  • 玩转Docker | 使用Docker部署vaultwarden密码管理器
  • 让 Deepseek 写电器电费计算器(html版本)
  • 使用docker compose部署netmaker打通内网
  • JDK 8u231安装教程 - Windows 64位下载安装及环境变量配置指南
  • 解决U盘安装Win11无法命令行跳过联网激活的问题
  • java复习 11
  • 使用 C++/OpenCV 和 libevent 构建远程智能停车场管理系统
  • 每天宜搭宜搭小知识—报表组件—柱线混合图
  • 算法第15天:继续二叉树|前序递归+回溯与前序递归的场景总结、最大二叉树、合并二叉树、二叉搜索树中的搜索、验证二叉搜索树
  • Mac电脑 系统监测工具 System Dashboard Pro
  • 【leetcode】543. 二叉树的直径
  • uni-app项目实战笔记4--使用组件具名插槽slot定义公共标题模块
  • 案例:城市“光革命”背后,塔能科技的智能照明进化方程式
  • 欧美简洁时尚风格通用PPT模版分享
  • 麒麟信安支撑2025年电力监控系统安全运维新技能推广应用示范培训班顺利举办
  • Java + easyexcel 新旧数据对比,单元格值标红
  • 优化 Excel 文件可以提升文件性能、减少文件大小并加快计算速度
  • mysql中替换字符串(正则)
  • mapbox进阶,切片网格生成实现
  • 深入理解Python协程:asyncio、异步并发、事件循环