S4U2Self在活动目录持久化中的应用
一、前言
Elad Shamir最近在Kerberos委派上做了不少研究(参考这篇文章),在这基础上,我们准备发表一系列文章,深入分析之前未发现的攻击方法,也会帮蓝队提出实用的解决方案,可以衡量这种攻击方法对活动目录(Active Directory)基础设施的影响。
这是我们发布的第二篇文章,重点介绍的是Kerberos的S4U2Self扩展。Shamir在那篇文章中介绍了基于该功能的一种新型AD后门。本文会介绍攻击者如何部署并使用这种后门,并将这种技术拓展到不同类型的AD账户。这里我们还将调整委派方向,描述可能存在的另一种漏洞。在文末我们也会提出一些建议,帮助安全团队防御此类攻击场景。
二、理解S4U2Self后门
在之前的研究文章中,Shamir提出攻击者可以通过某种方式利用msDS-AllowedToActOnBehalfOfOtherIdentity属性,以便在AD基础设施中隐藏特权访问权限。
如果在krbtgt账户的msDS-AllowedToActOnBehalfOfOtherIdentity属性中设置某个用户账户的SID(下文将详细介绍操作过程),那么任意账户就可以获取KDC(Key Distribution Centre)服务的TGS(Ticket Granting Service),最终获得一个有效的TGT(Ticket-Granting Ticket),这也意味着攻击者成功获得了黄金票据(Golden Ticket)。拥有黄金票据后,攻击者可以完全控制整个AD域。
三、部署S4U2Self后门
来回顾一下攻击者如何利用公开工具来植入S2USelf后门,然后使用该后门来获取管理员权限。
布置后门
假设攻击者已经可以利用adm-compromised账户临时获得域管(Domain Admins)权限(这种场景下,后门只能在后渗透阶段中使用),并且想利用Shamir介绍的后门技术实现目标环境的持久化访问。利用该账户,攻击者可以执行如下步骤:
1、寻找具备SPN并且密码永不过期的用户账户。在企业环境中这种情况非常常见,比如许多服务账户就会满足这种条件。
图1. 使用PS命令获取满足条件的服务账户
2、使用许多攻击型安全工具(如Mimikatz)中的“DCSync”功能提取该账户对应的哈希。
图2. 使用Mimikatz提取服务账户哈希
3、在krbtgt账户上设置S4U2Self后门。在本例中,攻击者使用的服务账户为svc-backdoor,并且对该账户具备完整控制权限。我们会在下文中介绍如何选择这类账户。
图3. 设置S4U2Self后门
利用后门重新获取管理员权限
这里我们要介绍攻击者如何利用先前植入的后门重新获取“Domain Admin”权限。为了重新获取管理员权限,攻击者会利用svc-backdoor账户执行如下3个步骤:
1、触发后门,为任意账户申请TGT,这里我们以administrator账户为例。
图4. 利用Rubeus及svc-backdoor账户的Kerberos AES秘钥获取该账户的TGT
图5. S4U2Self仿冒administrator账户身份,使用该TGT获取只适用于该服务账户的TGS
图6. S4U2Proxy成功获取administrator账户的TGS
重要事项:由于我们针对的是Krbtgt服务的TGS,因此从原理上讲,获取到是适用于administrator账户的TGT。
2、获得TGT后,攻击者可以为所仿冒的账户(这里为administrator)在域控上获取CIFS及LDAP服务的TGS,然后将这些TGS注入当前会话中。
图7. 利用之前获取的TGT来请求有效的TGS
3、最后,攻击者已经成功恢复高权限,可以执行各种恶意操作,如转储其他用户的凭据等。
图8. 使用已恢复的TGT再次提取管理员凭据
四、对S4U2Self后门持久化应用的分析
根据Shamir在文中的介绍,攻击者必须在msDS-AllowedToActOnBehalfOfOtherIdentity属性中设置某个用户的SID值,才能使后门具备可用性。由于该账户是唯一能够触发后门的账户,因此攻击者必须谨慎选择目标账户。
图9. 在krbtgt账户中设置John Doe为后门账户
目标账户不一定是特权账户,可以是用户账户或者主机账户,但必须设置SPN属性才能保证S4U2Self攻击过程顺利进行。
使用计算机账户
计算机账户对攻击者来说非常具有吸引力,因为这些账户天然就具备SPN属性,可以作为较为隐蔽的攻击目标。
这种方法有唯一一个限制条件:计算机账户密码的自动更新问题。(默认情况下)每隔30天,计算机账户密码就会自动更新,对应的凭据也会发生变化,使后门失去作用。攻击者可以有两种方法绕过这种限制:
一、前言
Elad Shamir最近在Kerberos委派上做了不少研究(参考这篇文章),在这基础上,我们准备发表一系列文章,深入分析之前未发现的攻击方法,也会帮蓝队提出实用的解决方案,可以衡量这种攻击方法对活动目录(Active Directory)基础设施的影响。
这是我们发布的第二篇文章,重点介绍的是Kerberos的S4U2Self扩展。Shamir在那篇文章中介绍了基于该功能的一种新型AD后门。本文会介绍攻击者如何部署并使用这种后门,并将这种技术拓展到不同类型的AD账户。这里我们还将调整委派方向,描述可能存在的另一种漏洞。在文末我们也会提出一些建议,帮助安全团队防御此类攻击场景。
二、理解S4U2Self后门
在之前的研究文章中,Shamir提出攻击者可以通过某种方式利用msDS-AllowedToActOnBehalfOfOtherIdentity属性,以便在AD基础设施中隐藏特权访问权限。
如果在krbtgt账户的msDS-AllowedToActOnBehalfOfOtherIdentity属性中设置某个用户账户的SID(下文将详细介绍操作过程),那么任意账户就可以获取KDC(Key Distribution Centre)服务的TGS(Ticket Granting Service),最终获得一个有效的TGT(Ticket-Granting Ticket),这也意味着攻击者成功获得了黄金票据(Golden Ticket)。拥有黄金票据后,攻击者可以完全控制整个AD域。
内容来自无奈安全网
三、部署S4U2Self后门
来回顾一下攻击者如何利用公开工具来植入S2USelf后门,然后使用该后门来获取管理员权限。
布置后门
假设攻击者已经可以利用adm-compromised账户临时获得域管(Domain Admins)权限(这种场景下,后门只能在后渗透阶段中使用),并且想利用Shamir介绍的后门技术实现目标环境的持久化访问。利用该账户,攻击者可以执行如下步骤:
1、寻找具备SPN并且密码永不过期的用户账户。在企业环境中这种情况非常常见,比如许多服务账户就会满足这种条件。
图1. 使用PS命令获取满足条件的服务账户
2、使用许多攻击型安全工具(如Mimikatz)中的“DCSync”功能提取该账户对应的哈希。
图2. 使用Mimikatz提取服务账户哈希
3、在krbtgt账户上设置S4U2Self后门。在本例中,攻击者使用的服务账户为svc-backdoor,并且对该账户具备完整控制权限。我们会在下文中介绍如何选择这类账户。 本文来自无奈人生安全网
图3. 设置S4U2Self后门
利用后门重新获取管理员权限
这里我们要介绍攻击者如何利用先前植入的后门重新获取“Domain Admin”权限。为了重新获取管理员权限,攻击者会利用svc-backdoor账户执行如下3个步骤:
1、触发后门,为任意账户申请TGT,这里我们以administrator账户为例。
图4. 利用Rubeus及svc-backdoor账户的Kerberos AES秘钥获取该账户的TGT
图5. S4U2Self仿冒administrator账户身份,使用该TGT获取只适用于该服务账户的TGS
内容来自无奈安全网
图6. S4U2Proxy成功获取administrator账户的TGS
重要事项:由于我们针对的是Krbtgt服务的TGS,因此从原理上讲,获取到是适用于administrator账户的TGT。
2、获得TGT后,攻击者可以为所仿冒的账户(这里为administrator)在域控上获取CIFS及LDAP服务的TGS,然后将这些TGS注入当前会话中。
图7. 利用之前获取的TGT来请求有效的TGS
3、最后,攻击者已经成功恢复高权限,可以执行各种恶意操作,如转储其他用户的凭据等。
图8. 使用已恢复的TGT再次提取管理员凭据
四、对S4U2Self后门持久化应用的分析
根据Shamir在文中的介绍,攻击者必须在msDS-AllowedToActOnBehalfOfOtherIdentity属性中设置某个用户的SID值,才能使后门具备可用性。由于该账户是唯一能够触发后门的账户,因此攻击者必须谨慎选择目标账户。
图9. 在krbtgt账户中设置John Doe为后门账户
目标账户不一定是特权账户,可以是用户账户或者主机账户,但必须设置SPN属性才能保证S4U2Self攻击过程顺利进行。
使用计算机账户
计算机账户对攻击者来说非常具有吸引力,因为这些账户天然就具备SPN属性,可以作为较为隐蔽的攻击目标。
这种方法有唯一一个限制条件:计算机账户密码的自动更新问题。(默认情况下)每隔30天,计算机账户密码就会自动更新,对应的凭据也会发生变化,使后门失去作用。攻击者可以有两种方法绕过这种限制:
无奈人生安全网