GUIDE
导读
这篇文章是一个网络安全工程师对SeRelabelPrivilege权限的滥用进行分析和实验的记录。作者通过分析Microsoft文档和借鉴James Froshaw的文章,探索了该权限的潜在滥用可能性。作者首先通过组策略向标准用户授予了SeRelabelPrivilege权限,并通过实验发现,该权限赋予了用户一系列有趣的权限,包括获取资源所有权、授予自身对资源的完全控制权等。作者进一步演示了如何利用这些权限实现本地权限提升,甚至获取SYSTEM账户的权限。
最近的评估中发现,特定的组策略通过“用户权限分配”授予内置用户组SeRelabelPrivilege ,并应用于多个计算机帐户。
我以前从未发现过这种特权,显然我很好奇想了解其潜在影响以及任何(误)使用场景的可能性。
微软的文档一如既往地不太清楚和有帮助,总结一下:
“任何拥有 “修改对象标签” 用户权限的人都可以更改文件或进程的完整性级别,使其升高或降低到可以被完整性级别较低的进程删除的程度。”
幸运的是,James Froshaw 于 2021 年发表的一篇文章提供了有关可能存在的滥用行为的更多细节和有用信息😉。我强烈建议在继续阅读之前先阅读它。
我决定做一些实验来了解我能走多远。
我首先通过组策略为标准用户分配SeRelabelPrivilege :
该权限仅在高完整性级别下可用(在 cmd.exe 的情况下 -> 以管理员身份运行):
但是这个特权赋予你什么呢?嗯,很多有趣的权限!
-
它允许你拥有资源的所有权
-
此外,与SeTakeOwnsership权限不同,它允许您拥有完整性级别甚至高于您自己的资源
-
一旦您拥有所有权,您就可以完全控制资源(流程、令牌等)。
-
快速而粗略:与滥用 SeDebugPrivilege相同 🙂
我的目标是取得 SYSTEM 进程的所有权,授予自己完全控制权,然后在 NT AUTHORITYSYSTEM 帐户下创建一个进程。
完美的本地权限升级……抱歉,只是违反了“安全边界”😉
为此,我创建了一个简单的 POC:
首先,我需要获取当前用户 SID 并启用特定权限。之后,我获得了该进程的所有权:
我需要使用 WRITE_OWNER 访问权限打开该进程。在SetSecurityInfo调用中,“LABEL_SECURITY_INFORMATION”标志是必需的,否则,我无法拥有完整性级别高于我的高 IL 进程的进程。
一旦我获得了所有权,就可以非常轻松地授予完全控制权:
在这种情况下,我需要使用 WRITE_DAC 访问权限打开该进程,并在将显式访问权限设置为 PROCESS_ALL_ACCESS 后,我就获得了对该进程的完全控制权!
旁注:这只是一个示例,通过使用其他 API 调用,可以用不同的方式实现相同的结果。
让我们看看它是否有效... 7116 是 winlogon 进程,它在系统完整性下运行并归 SYSTEM 所有:
所有权已发生变更并且已成功授予完全控制权:
滥用此功能的最简单方法是执行父进程注入。为此,我使用了旧的psgetsystem工具(记得注释掉Process.EnterDebugMode())
瞧!获得系统访问权限🙂
为了好玩,我还获得了令牌的所有权,授予了对令牌的完全访问权限,并将 IL 从系统降低到中等😉
结论
据我对这个非常奇怪的特权的理解:
-
它允许您拥有资源的所有权,即使它是您的 IL >。
-
一旦您拥有所有权,您就可以授予自己对流程和令牌的完全访问权限。
-
从滥用的角度来看,结果与调试权限非常相似
-
操纵强制标签只是一种后果。
-
我还是不明白微软为什么实施这一措施
-
简单又愚蠢的 POC 源代码可以在这里找到
https://github.com/decoder-it/RelabelAbuse
感谢 James Forshaw 提供的有用提示,帮助我揭开这一特权的神秘面纱
就这样🙂
Abusing the SeRelabelPrivilege
https://decoder.cloud/2024/05/30/abusing-the-serelabelprivilege/
原文始发于微信公众号(Ots安全):滥用 SeRelabelPrivilege
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论