【安全通告】Windows 域内机器本地提权攻击

作者:???广州非凡信息安全技术有限公司(总部广州) 2019/03/08 15:51:05 379次阅读 国际

【安全通告】Windows 域内机器本地提权攻击
b8b2c5adf4b6981e48a39ffab8547a69.png
来自Shenanigans Labs的安全研究员公布了一种利用基于资源的约束委派(Resource-Based Constrained Delegation)进行活动目录攻击的方式,该攻击方式可能对域环境造成严重威胁,攻击者能够令普通的域用户以域管理员身份访问本地计算机的服务,实现本地权限提升。
参考相关链接:
https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog
http://blog.nsfocus.net/analysis-attacks-entitlement-resource-constrained-delegation/

相关背景

委派(Delegation)是一种让用户可以委托服务器代表自己与其他服务进行验证的功能,主要用于当服务需要以某个用户的身份来请求访问其他服务资源的场景。
c0e39aa8366f9fcffbb77175b0911c43.png
对于不同委派的工作模式,假设A为IIS Web Server,B为SQL Server,A需要使用数据库B以支撑用户访问。
6a3225743edc98b9348ef715ce386bae.png
传统的约束委派是“正向的”,通过修改服务A属性”msDS-AllowedToDelegateTo”,添加服务B的SPN(Service Principle Name),设置约束委派对象(服务B),服务A便可以模拟用户向域控制器请求访问服务B以获得TGS服务票据来使用服务B的资源。
而基于资源的约束委派则是相反的,通过修改服务B属性”msDS-AllowedToActOnBehalfOfOtherIdentity”,添加服务A的SPN,达到让服务A模拟用户访问B资源的目的。

攻击原理

安全研究员Elad Shami在其报告中指出,无论服务账号的UserAccountControl属性是否被设为TrustedToAuthForDelegation,服务自身都可以调用S4U2Self为任意用户请求访问自己的TGS服务票据。但是当没有设置时,通过S4U2Self请求得到的TGS服务票据是不可转发的。
如果通过S4U2Self获得的TGS服务票据被标志为可转发,则该票据可以在接下来的S4U2Proxy中被使用,而不可转发的TGS服务票据是无法通过S4U2Proxy转发到其他服务进行传统的约束委派认证的。
可关键在于,不可转发的TGS服务票据竟然可以用于基于资源的约束委派。S4U2Proxy会接收这张不可转发的TGS服务票据,请求相关服务并最后得到一张可转发的TGS 服务票据。
更多详情参见:
http://blog.nsfocus.net/analysis-attacks-entitlement-resource-constrained-delegation/#i-2

攻击流程

引用报告中原图说明该攻击步骤:
1d6ffe422c043ae757b7ed5681d84b54.png
如果能够在B上配置基于资源的约束委派让服务A访问(拥有修改服务B的msDS-AllowedToActOnBehalfOfOtherIdentity属性权限),并通过服务A使用S4U2Self向域控制器请求任意用户访问自身的TGS 服务票据,最后再使用S4U2Proxy转发此票据去请求访问服务B的TGS服务票据,那么就将能模拟任意用户访问B的服务!
更多详情参见:
http://blog.nsfocus.net/analysis-attacks-entitlement-resource-constrained-delegation/#i-4

缓解措施

1、 在高权限账户属性设置中,将其设置为“敏感账户,不能被委派”。
e0e4741f56c7b8b3fa6f8a882e8c246c.png
2、 将高权限账户加入被保护组。
3、 启用LDAP签名 和 channel binding能修复通过NTLM中继的本地提权。


指导单位
广东省公安厅网络警察总队 广东省信息安全等级保护协调小组办公室