Certipy 详细指南

morpheus

版主

morpheus Rep
0
0
0
Rep
0
morpheus Vouches
Vouches
0
8 MONTHS
8 8 MONTHS OF SERVICE
morpheus 获得
0
0
0
获得
0
morpheus 凭证
0
0
0
凭证
0
主题
15
点赞
0
HakB
8
在社区成长 8 月
LEVEL 1 1 XP
 
在本Certipy Active Directory 利用指南中,我们探讨了如何使用Certipy(专为Active Directory 证书服务(AD CS) 设计的进攻性和防御性工具包)来枚举错误配置和滥用CA 模板。无论您的目标是ESC1 到ESC16 攻击向量,还是伪造证书以实现权限升级和持久性,本文都将引导您逐步完成从识别易受攻击的模板到获得域身份验证的必要阶段。

目录​

Certipy 概述
ADCS 关键概念
先决条件
寻找易受攻击的模板
检查帐户权限
操纵账户
索取证书
通过证书进行身份验证
管理影子凭证
修改模板CA
伪造中继证书
缓解措施

Certipy 概述​

Certipy 是一款专用工具,旨在识别和利用Active Directory 证书服务(ADCS) 中的弱点。虽然ADCS 在Windows 环境中启用基于证书的身份验证和加密方面发挥着关键作用,但错误配置和过于宽松的模板可能会将其变成具有高影响力的攻击媒介。
攻击者和红队成员可以使用Certipy 发现这些错误配置、升级权限、模拟用户并获得持久的域访问权限,而无需密码。这是通过各种已知的滥用路径来实现的,这些路径通常被归类为ESC1-ESC16,这些路径与模板设计、权限和CA 信任模型中的特定漏洞相对应

关键的 Certipy 命令和技术利用 Certipy 来识别这些错误配置、升级权限、模拟用户以及无需请求即可获得持久域访问权限。​

Certipy 支持多个命令,每个命令映射到特定的ADCS 攻击路径:
find – 枚举AD CS 配置以识别证书颁发机构、模板和潜在的ESC 漏洞,以进行审核或攻击准备。
帐户– 管理证书的用户或计算机帐户属性,启用设置SPN、UPN 或为基于证书的高级攻击创建计算机帐户等操作。
req – 向CA 请求证书,指定模板和CA 名称,使用备用凭据,支持RPC、DCOM 或HTTP(S),攻击者使用certipy req 来利用模板进行模拟
auth – 使用证书(PFX) 进行身份验证,以便通过Kerberos PKINIT 或Schannel 访问LDAP,检索TGT 和NTLM 哈希。
Shadow – 执行影子凭证攻击以在用户上创建证书链接凭证,从而允许通过证书进行身份验证。
模板– 通过转储、修改和恢复模板配置来管理AD 中的证书模板对象,对于ESC4 等场景很有用。
ca – 管理CA 设置以启用/禁用模板、批准/拒绝请求以及添加/删除CA 管理员。
forge – 使用受损CA 的私钥伪造证书以创建任意证书,如果根或从属CA 受到威胁,这对于持久性很有用。
中继– 执行针对AD CS HTTP(S) 或RPC 端点的NTLM 中继攻击,以获得为受害者颁发的证书,从而自动执行ESC8 和ESC11 攻击。

为什么这些技术有效​

这些技术不依赖于代码漏洞,而是依赖于滥用信任和薄弱策略:
CA 信任身份验证,而不是真实身份- 如果请求看起来有效,则可能会向攻击者颁发证书。
模板配置错误– 允许客户端身份验证和SAN 控制,从而实现模拟。
影子凭证– 绕过密码和MFA,以不可见的方式注入备用凭证。
基于证书的身份验证绕过密码– 无需目标密码即可授予域登录权限。
强大的CA 角色– 证书官员和CA 管理员可以为任何人颁发证书,从而冒域被接管的风险。

ADCS 关键概念​

ADCS 是身份验证和安全通信(例如智能卡、TLS、VPN 访问、电子邮件加密)的基石,它也代表了攻击者的高价值目标。这是因为ADCS 与Active Directory 深度集成,并且在整个域中隐式信任。
为什么ADCS 是一个攻击面
证书模板或CA 设置中的错误配置可能会引发各种攻击媒介:
证书模板: 配置错误的模板可能会允许低权限用户为特权帐户(ESC1) 请求证书。
Web Enrollment: 在启用NTLM 的情况下通过HTTP 公开AD CS 接口(/certsrv) 可被利用进行NTLM 中继攻击(ESC8)。
Shadow Credentials: 对keyCredentialLink 的不当处理允许持久性技术在密码更改后继续存在(ESC9/10)。
升级证书(ESC): 攻击者可以利用错误配置的SAN (ESC1)、NTLM 中继(ESC8) 和影子凭证(ESC9/10) 等误用模式来进行域入侵。

先决条件​

Windows Server 2019 作为支持PKINIT 的Active Directory。
域必须配置Active Directory 证书服务和证书颁发机构并启用Web 注册角色。
Kali Linux 包含各种工具
Tools: certipy-ad、PetitPotam
当ADCS 配置错误时,我们不需要零日漏洞。有缺陷的证书模板可能会导致整个域受到攻击,就像远程代码执行漏洞一样,但使用的是本机工具和合法协议。
Certipy 等工具可以发现ADCS 中这些隐藏的权限升级和基于信任的漏洞。
现在我们对Active Directory 证书服务(ADCS) 和ESC 技术的滥用途径有了深入的了解,很清楚配置错误的信任设置如何使ADCS 成为攻击者的主要目标。
考虑到这些漏洞,让我们继续使用certipy-ad 在实践中利用它们。

查找易受攻击的模板​

让我们首先找出弱点。存在漏洞的模板通常允许任何经过身份验证的用户自动注册客户端身份验证证书。
certipy-ad find -u raj -p 密码@1 -dc-ip 192.168.1.20 -target-ip 192.168.1.20 -vulnerable -enable -stdout
此命令扫描CA 中是否存在配置错误的证书模板,这些配置会导致权限升级,例如ESC1 类型的滥用。
1.png

易受攻击的模板通常表现出诸如客户端身份验证EKU、“按请求提供”SAN、未经批准自动发布以及低权限用户可访问等特征(例如,在我们的案例中为“sanjeet”)。现在,让我们看看我们所列举的内容。
这枚举了用于识别支持ESC 攻击(例如ESC6、ESC8)的配置的CA 和模板。
2.png

Note: 这一步为我们的整个攻击链奠定了基础。如果没有易受攻击的模板,大多数后续攻击都是不可能的。

检查帐户权限​

现在,让我们评估一下我们可以控制什么。如果我们的用户(例如raj)能够读取或修改另一个用户帐户(例如sanjeet)上的敏感属性,我们可能会:
注入影子凭证以供以后使用
重置密码以升级权限
将我们自己添加到特权组以进行进一步控制
要执行此操作,请执行以下命令:
certipy-ad 帐户-u raj -p 密码@1 -dc-ip 192.168.1.20 -target 192.168.1.20 -user sanjeet read
Certipy 中的读取开关允许raj 检索和查看sanjeet 帐户的属性,例如cn、sAMAccount 和其他敏感信息,这些信息可用于权限升级或进一步利用。
3.png

操纵帐户​

确认我们的权限后,我们开始行动。我们现在可以使用这些命令来展示我们或管理员如何操作帐户:

更新密码​

此命令允许管理员在指定的域控制器(192.168.1.20) 上验证sanjeet 的密码并将其重置为Password@12,从而实现权限升级或控制sanjeet 帐户以进一步利用。
certipy-ad account -u 管理员-p 密码@1 -dc-ip 192.168.1.20 -target 192.168.1.20 -user sanjeet -pass 密码@12 update
一旦提升(例如通过ESC1),我们可以重置任何域用户(包括管理员)的密码,从而实现即时帐户劫持、控制多个帐户以及战略横向移动。
 
顶部