WriteSPN滥用

WriteSPN滥用

今天逛推看到的一篇大佬的研究,感觉很有意思,所以记录一下,顺便复习一下委派

引言

域内的信息收集工具 BloodHound 升级到版本4.1,添加了对 WriteSPN 的检测。众所周知,当攻击者控制了一台配置了约束委派的机器,可以攻击其锁配置的允许委派的服务账户与机器,该属性为 msDS-AllowedToDelegateToSeEnableDelegation 权限)该权限的更改权限默认赋予域管理员用户,但是如果攻击者拥有了对SPN关联用户的 `WriteSPN 权限,则有机会同样可以获取该机器的权限。

委派回顾

具体的可以参见前文

无约束委派

无约束委派直接将用户的 tgt 发送给服务A,A使用 tgt 可以A的身份访问服务B

约束委派

约束委派设置了服务A允许委派的服务,服务A获取用户的 ST 去访问服务B

约束委派允许服务凭空模拟用户,无论他们是否通过服务验证。即当拥有服务A的ntlm,可模拟任意用户访问服务B

基于资源的约束委派

基于资源的约束委派与约束委派过程相似,方向相反。他将允许委派对象的被设置权 由域控授予了被委派者自己。当攻击者对该服务有可写权限,则可通过设置该机器允许被攻击者自己创建的机器委派而攻击该机器。

Abuse WriteSPN

Ghost SPN

当委派机器A 被委派到一个不存在的或过期的计算机或服务的SPN时,可能是已删除或者改名。此时,该机器被设置了一个GhostSPN。

此时,攻击者可将此SPN添加到目标机器B ,当A运行完整S4U攻击时,即可获得针对该SPN的服务票证,此时该服务票证指向的是B,因为该SPN设置给了B。

然而该票据B并不能使用,因为服务与机器名与B都不匹配。但该票据是使用B的hash加密的,而前面的服务名并不在加密部分,攻击者可以更改为 想要攻击的服务/B

img

img

临时SPN

若 A 配置了指向 C 的SPN,而攻击者同时拥有对B、C的 WriteSPN 权限。则可以进行临时SPN攻击

域内并不允许非管理员用户配置冲突的SPN,即相同的SPN,因此像之前给 B 配置SPN会提示失败,因为该SPN并非失效,已经关联C。此时可将C的SPN临时删除,在配置给B,然后重复上面的攻击步骤。

img

HOST SPN

这感觉是一种特性。默认情况下,计算机帐户具有与服务类 TERMSRV、RestrictedKrbHost 和 HOST 关联的 SPN。

HOST默认映射到:

1
alerter, appmgmt, cisvc, clipsrv, browser, dhcp, dnscache, replicator, eventlog, eventsystem, policyagent, oakley, dmserver, dns, mcsvc, fax, msiserver, ias, messenger, netlogon, netman, netdde, netddedsm, nmagent, plugplay, protectedstorage, rasman, rpclocator, rpc, rpcss, remoteaccess, rsvp, samss, scardsvr, scesrv, seclogon, scm, dcom, cifs, spooler, snmp, schedule, tapisrv, trksvr, trkwks, ups, time, wins, www, http, w3svc, iisadmin, msdtc

如果攻击者试图攻击映射到 HOST 的服务类,域控将拒绝将该服务类添加到 B,即使它与 C 没有直接关联。攻击者首先必须从 C 中删除 HOST SPN,然后将目标 SPN 显式添加到 B。然而,在将目标 SPN 添加到 B 后,攻击者可以将 HOST SPN 添加回 C 而不会遇到任何验证错误,尽管已经有与 B 关联的映射 SPN

img

攻击链为

img


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!