【问题标题】:Prevent administrator from taking ownership of an object阻止管理员获取对象的所有权
【发布时间】:2018-11-29 17:36:10
【问题描述】:

作为前提我想让你知道这与游戏无关 作弊,因为我只对知道 Windows 的方式感兴趣 作品。我什至不亲自玩电子游戏。

EasyAntiCheat,Fortnite 自带的,防止游戏进程被修改和他的参数被改变。

例如,尝试更改优先级(我不是在寻找更改优先级的方法,因为已经在 Wayback Machine 捕获中发布了解决方案 herehere)导致 访问被拒绝错误。

使用 Process Hacker 或 Process Explorer 修改进程的 ACL 也会产生相同的错误,即使用户是管理员并拥有 SeTakeOwnershipPrivilege 权限。


自:

  • PatchGuard 已启用,因此即使是 EAC 驱动程序也无法使用旧式内核挂钩
  • 内核公开的 API 仅允许驱动程序在系统调用发生时得到通知,而不是更改现有内核行为
  • EasyAntiCheat 驱动程序文件系统微过滤器不应影响进程 ACL。事实上,即使使用 FLTMC.exe 卸载过滤器,结果也是一样的
  • 似乎没有发生进程内的代码注入,至少在使用进程监视器列出 Load Image 事件时,即使可以通过其他方式实现注入(我没有对此有足够的了解)
  • 进程不受保护光保护

Windows 10 x64 (1803) 允许 EAC 执行上述操作的机制是什么?也许要找到答案,多关注第四种方法就足够了。

Here 您可以在 Sysinternals Process Monitor 中找到从 ProcessHacker.exe 启动到结束显示的 Load Image 事件列表的链接.

P.S.:如有语法错误,请见谅,英语不是我的主要语言。

【问题讨论】:

  • 除非访问在内核中被阻止,否则启用 SeDebugPrivilege 应该授予对未受保护进程的所有访问权限。
  • SeTakeOwnershipPrivilege 允许写入所有者访问。一旦用户成为所有者,在大多数情况下,用户应该被隐式授予 write-DAC 访问权限,这允许修改对象的自主和强制安全性。但是,现有的 DACL 可能有一个显式的 owner-rights 条目,它会覆盖隐式的 owner rights,这可能不会授予 write-DAC 访问权限。
  • Process Hacker(或 Process Explorer)以管理员权限运行,包括 SeDebugPrivilege。但是,当我尝试将自己设置为所有者时,我得到一个明确的“无法为 设置新所有者:访问被拒绝”。

标签: windows permissions administrator dll-injection


【解决方案1】:

所以我几乎随机在 Reddit 上发了 this 帖子,我认为这可以解释这一点。

关键是我不知道的ObRegisterCallbacks内核模式函数。

它允许驱动程序注册有关进程、线程和(从 Windows 10 开始)桌面对象的事件。

我最初知道PsSetCreateProcessNotifyRoutine,它不仅允许“被动”监视进程的创建/终止,而且还为驱动程序提供了一种通过在回调中返回错误来“主动”取消创建的方法。

然而,这不是我要处理的情况:没有进行进程创建,只是我试图提高不受 受保护 的进程的优先级光保护

ObRegisterCallbacks 的用法是这样的: 保护驱动程序,从注册的回调中,将句柄请求的DesiredAccess 剥离为它想要的,使句柄创建操作继续进行,因为进程实际上从未要求能够终止/设置进程优先级,从而有效地阻塞它。

this GitHub repo 中提供了一个很好的示例。此链接是访问CreateHandleInformation(或DuplicateHandleInformation)的DesiredAccess 成员的代码点的永久链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-23
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 2014-01-16
    • 1970-01-01
    相关资源
    最近更新 更多