Kerberos协议攻击概述

admin 2020年7月31日21:25:48评论426 views字数 4478阅读14分55秒阅读模式

Kerberos协议攻击概述

 

Kerberos协议攻击概述

 

Kerberos协议攻击概述

 

Kerberos协议攻击概述

 

Kerberos协议攻击概述

Kerberos协议攻击概述

 

Kerberos协议攻击概述

Kerberos协议攻击概述

Kerberos协议攻击概述

Kerberos协议攻击概述

Kerberos协议攻击概述

Kerberos协议攻击概述

Kerberos协议攻击概述

 

AS-REP Roasting

 

 

Kerberos协议攻击概述

 

Kerberos协议攻击概述

 

Kerberoasting

 

Kerberos协议攻击概述

 

黄金票据

 

 

Kerberos协议攻击概述

Kerberos协议攻击概述

 

白银票据

 

如果金票是伪造的TGT,则银票是伪造的TGS。黄金票证攻击需要与KDC内发生一笔交易,即发出了TGT,这使防御者可以对这些交易发出警报,并有可能捕获黄金票证攻击。白银票据攻击更加隐蔽,因为这种攻击不会接触KDC。由于需要伪造服务票据,因此需要知道目标服务的密码哈希。在大多数情况下,这是计算机帐户密码哈希。对于设置了SPN的服务帐户,可以为该SPN生成白银票。

 

例如,如果在用户名“ MSSQLServiceAcct”下创建了一个服务帐户并注册了MSSQLSVC主体,则SPN将为MSSQLSVC / MSSQLServiceAcct。如果攻击者(通过Kerberoasting或其他方式)获得了该帐户的密码哈希,则它可能会为该SPN伪造一个TGS并访问使用该密码的服务(MSSQLSVC)。

 

对于某些服务(例如CIFS),其中已为用户帐户(例如CIFS / Alice)进行了SPN,使用用户密码的CIFS白银票据将不起作用,因为用户无法控制对该服务的访问,而计算机机器帐户是可以的。

 

在下面显示的示例中,攻击者获得了域控制器的计算机帐户哈希的知识,并生成了一张用于CIFS对其文件系统进行访问的白银票。

Kerberos协议攻击概述

PAC验证是此攻击的一个警告,票证将被发送到KDC进行验证,这可能导致此攻击失败。

 

委派攻击

 

Kerberos委派的原理,是指一个帐户可以重用或“转发”到另一台主机或应用程序。

例如,在下图中,用户登录到使用另一台服务器上的SQL DB的Web应用程序。这种情景下,可以配置委派,以便Web应用程序服务器上的服务帐户只能访问SQL Server上的SQL服务,而不具有对运行SQL DB的整个服务器的完全访问权限。此外,服务帐户用于委派,这意味着它将代表用户并使用该用户的票证访问SQL Server。这既限制了服务帐户无法完全访问SQL Server,又限制了只有授权用户才能通过Web应用程序访问SQL DB服务。

Kerberos协议攻击概述

共有三种主要的委派类型,每种类型都有自己的攻击方式:

  • 无约束委派
  • 约束委派
  • 基于资源的约束委派
 

无约束委派

 

在Windows 2000中,无约束委派是执行委派的一种非常古老的方法。它在AD中计算机对象的“委派”选项卡上进行配置。

Kerberos协议攻击概述

Kerberos协议攻击概述

将计算机配置为不受约束的委派时,发送到主机并包含SPN的任何TGS都将带有TGT,并且该TGT将保留在内存中以进行模拟。这样做会产生安全性问题,如果攻击者正在监视内存中的Kerberos票证活动,则一旦将TGS发送到该主机,攻击者就可以提取TGT并重新使用它。

Kerberos协议攻击概述

域中任何计算机通过打印机错误,可以强制验证到不受约束的委托主机。打印机错误是Windows打印系统远程协议中的“功能”,该错误使主机可以查询另一台主机,以请求更新打印作业。然后,目标主机通过TGS(在无约束委派的情况下包含TGT)对发起请求的主机进行身份验证进行响应。

 

这意味着,如果攻击者使用不受约束的委托来控制计算机,则他们可以使用打印机错误来强制域控制器向其受控计算机进行身份验证并提取域控制器的计算机帐户TGT。

Kerberos协议攻击概述

使用Rubeus和SpoolSample可以做到这一点。

最后重要的一点是,域控制器默认情况下始终会启用无约束的委派。

 

 

约束委派

 

Windows 2003期间引入了约束委派,以改进无约束委派。主要的变化是,在模拟用户(即被委派)时,服务仅限于帐户/机器。受约束的委托设置位于Active Directory用户和计算机中对象的“委托”选项卡中。

Kerberos协议攻击概述

也可以通过PowerView函数在帐户/计算机中查找msDS-AllowedToDelegateTo属性来在整个域中进行检查:

Get-DomainUser USERNAME -Properties msds-allowedtodelegateto,useraccountcontrol

在攻击之前,必须了解受约束委派如何合法工作。约束委派使用两个主要的Kerberos扩展:S4U2Self和S4U2Proxy。S4U2Self允许帐户代表任何其他用户(无需他们的密码)向自己请求服务票证。如果将TRUSTED_TO_AUTH_FOR_DELEGATION位置1,则TGS将被标记为可转发。

Kerberos协议攻击概述

利用S4U2Proxy,委托帐户通过使用可转发的TGS来向指定的SPN请求TGS。这是通过MS-SFU Kerberos扩展来完成的,该扩展允许通过TGS请求TGS。

Kerberos协议攻击概述

现在,服务1(HTTP / WebServiceAcct)具有服务2的票证(MSSQLSvc / SQLSA),服务1将票据提供给服务2,服务2然后验证是否允许用户通过TGS PAC中的SID访问该服务。

Kerberos协议攻击概述

攻击原理是滥用S4U2Self和S4U2Proxy扩展。如果在帐户的msDS-AllowedToDelegateTo属性中设置了SPN,并且userAccountControl属性包含“TRUSTED_TO_AUTH_FOR_DELEGATION”的值,则该帐户可以模拟任何用户使用该SPN中的任何服务。尽管已经解释了S4U2Self扩展允许服务代表任何用户向其自身请求TGS,但攻击的另一部分是,(第二个)TGS中SPN的sname(服务名称)字段不受保护,攻击者可以将其更改为他们想要的任何服务。

完整的攻击路径如下所示:

  • 攻击者通过Kerberoast拥有了一个帐户(WebSA),该帐户的msds-AllowedToDelegateTo属性设置为该属性的MSSQLSvc / LABWIN10.LAB.local的SPN,这意味着WebSA可以委派其他帐户访问LABWIN10.LAB.local上的MSSQLSvc。
  • Rubeus用于自动使用S4U2Self扩展名代表用户“Admin”向当前用户WebSA请求TGS。返回的TGS被标记为“可转发”。
  • 然后Rubeus自动使用S4U2Proxy扩展来使用MS-SFU扩展并为委派的SPN请求TGS,但是将服务部分更改为用户指定的任何内容,例如而不是MSSSQLSvc / LABWIN10.LAB.local,它请求HOST / LABWIN10.LAB.local的TGS。由于未验证服务部件,因此将以用户“Admin”和SPN HOST / LABWIN10.LAB.local的身份返回TGS。
  • 该票证已导入内存,用户现在可以按照TGS中的“管理员”用户身份访问HOST / LABWIN10。

Kerberos协议攻击概述

Kerberos协议攻击概述

关于约束委派攻击的最后一点说明:

S4U2Self需要TRUSTED_TO_AUTH_FOR_DELEGATION,但在帐户上添加用于委派的SPN时,默认情况下不存在。如果您在域控制器上拥有SeEnableDelegationPrivilege,则可以对其进行修改、添加。

 

基于资源约束委派

 

基于资源的约束委派(RBCD)是对约束委派的改进,并随Windows Server 2012一起引入。委派的主要变化是,现在可以控制委派设置,而不是在帐户的“委派”选项卡中指定SPN。由资源代替。在具有约束委派的上一个示例中,这意味着委派是在后端SQL服务上配置的,而不是在Web服务帐户中委派给SQL服务的。

 

在受约束的委派在msDS-AllowedToDelegateto属性中设置SPN的情况下,RBCD在计算机对象上使用msDS-AllowedToActOnBehalfOfOtherIdentity属性。埃拉德·沙米尔(Elad Shamir)撰写了一篇关于如何滥用它的出色文章。文章的介绍的主要内容是,如果userAccountControl不存在TRUSTED_TO_AUTH_FOR_DELEGATION 标志,则S4U2Self仍将起作用,但是返回的服务票证不会被标记为“可转发”。在传统的约束委派的情况下,这意味着它不能在S4U2Proxy扩展中使用。但是,使用RBCD,即使未将票证标记为可转发票证,它也仍然有效。

 

那么,攻击原理是,如果攻击者控制了设置了SPN的帐户,并且有一个计算机帐户设置了msDS-AllowedToActOnBehalfOfOtherIdentity属性,则该计算机可能会受到威胁。此外,如果攻击者对计算机帐户具有GenericWrite特权,则他们可以修改计算机账户的“AllowedToAct”属性,并将其设置为他们控制的SPN,从而危害计算机。

 

如果攻击者没有设置SPN的帐户,则可以创建一个帐户。默认情况下,AD中的标准用户最多可以创建10个计算机对象。

 

攻击路径如下所示:

  • 攻击者发现他们对计算机具有GenericWrite特权
    如果攻击者没有设置SPN的帐户,则可以创建计算机帐户,因此现在攻击者可以使用带有SPN的帐户。

 

或者

 

  • 攻击者发现计算机上的msDS-AllowedToActOnBehalfOfOtherIdentity设置为用户已经泄露的SPN

 

接下来

  • Rubeus的S4U功能用于代表任何用户通过S4U2Self向具有SPN设置的帐户请求票证(例如,为TNT管理员获取TGS)
  • 然后Rubeus的S4U功能使用S4U2Proxy以管理员身份请求TGS(带有来自S4U2Self的TGS)到目标计算机。该票证未标记为可转发,在传统的受约束委派下,该票证将失败,但在RBCD之下,该票证无关紧要而成功。
  • 攻击者现在可以访问目标计算机

在下图中,攻击者已破坏具有SPN设置的用户帐户Bob。

Kerberos协议攻击概述

 

来源及参考

 

https://posts.specterops.io/kerberosity-killed-the-domain-an-offensive-kerberos-overview-eb04b1402c61http://www.harmj0y.net/blog/activedirectory/the-most-dangerous-user-right-you-probably-have-never-heard-of/https://www.harmj0y.net/blog/redteaming/another-word-on-delegation/https://blogs.uw.edu/kool/2016/10/26/kerberos-delegation-in-active-directory/https://www.cnblogs.com/felixzh/p/9855029.htmlhttps://blog.csdn.net/wy_97/article/details/87649262https://blog.csdn.net/sky_jiangcheng/article/details/81070240https://hausec.com/2020/03/10/kerberosity-killed-the-domain-an-offensive-kerberos-overview/

Kerberos协议攻击概述

Kerberos协议攻击概述

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2020年7月31日21:25:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Kerberos协议攻击概述http://cn-sec.com/archives/78638.html

发表评论

匿名网友 填写信息