华域联盟 安全资讯 漏洞预警|Windows域服务权限提升漏洞最新分析

漏洞预警|Windows域服务权限提升漏洞最新分析

#威胁通报
17 个内容
#漏洞预警
13 个内容


01 漏洞概况



近日,微步在线研究响应中心监测到,微软域服务权限提升漏洞细节及利用工具被公开,相关漏洞编号为:cve-2021-42287/cve-2021-42278,由于windows域服务没有对用户操作进行合理限制,使得攻击者将这两个漏洞结合起来能实现从域内普通用户到域管理的权限提升。
漏洞复现:

相关工具:
https://github.com/cube0x0/noPac/


02 漏洞原理分析验证 

当前关于该漏洞细节相关的分析推测主要为参考链接[1][2],从参考链接中我们可以初步猜测:该漏洞主要是在 s4u2self 的过程中,当dc查询service 账户 bob 信息时,如果该账户不存在,会默认在账户后添加一个$字符继续查找即bob$,如果 bob$ 被找到,那么会以bob$的hash生成一个 tgsticket,如果 bob 为 dc 账户呢?那攻击者便有能力通过 s4u2self 获得一张 dc 的任意用户访问票据。

在有了上述猜测后,我们便可以通过代码层面去验证我们的猜测:
首先既然是 s4u2self 阶段出现的问题,那么我们排查的入手点就应该是 tgsreq 阶段的处理逻辑,对应于 kdcsvc!HandleTGSRequest 函数,那么对于这个函数我们重点关注的流程是哪一块呢?这里我们采用的是一个逆推的思路,漏洞利用的核心在于 dc 用自己的 hash 去生成了一个tgs,那么我们就应该去寻找到用于加密 tgs ticket 的函数,该函数为kdcsvc!KerbpackticketEx:

如上所示,两个函数引用了该函数,这也很好理解,TGT 和 TGS ticket 都需要调用该函数进行加密,在该漏洞中我们需要关注的是 KerbpackticketEx 函数的第二个参数,即用于加密ticket的key,我们需要知道 HandleTGSRequest 中加密 tgs ticket 的 key 是哪里来的,是取的那个用户名的 hash 为 key?

经过层层引用查找最终我们找到了 kdcsvc!KdcGetTicketInfo,在该函数中有这样一段代码逻辑:

当用户名查询不存在时,会在用户名后拼接一个$字符再继续查找,找到对应账户后将相关信息用于加密ticket,同时也会更新pac信息。

那么至此我们也就明白了整个漏洞的数据流了:

(1)  攻击者将受控机器的机器名改为和dc一致(去掉$)

(2)  为受控机器申请一张TGT

(3)  将受控机器重命名

(4)  利用2中获取的 TGT,通过 s4u2self 申请一张任意用户访问 dc 的 tgs,dc 会首先以 servername 作为 username 去查找该用户是否存在,如果不存在则拼接上$字符继续查找,这时发现存在,即 dc 的机器账户,接着便用 dc 的 hash 加密 tgs ticket 并且更新pac。

参考链接:

(1)https://www.thehacker.recipes/ad/movement/kerberos/samaccountname-spoofing

(2)https://exploit.ph/cve-2021-42287-cve-2021-42278-weaponisation.html



03 检测及修复方案 



厂商已发布更新补丁,请及时修复:

(1)https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-42287

(2)https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-42278



点击下方名片,关注我们


第一时间为您推送最新威胁情报

阅读原文,可加入粉丝交流~

本文由 华域联盟 原创撰写:华域联盟 » 漏洞预警|Windows域服务权限提升漏洞最新分析

转载请保留出处和原文链接:https://www.cnhackhy.com/155715.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部