【发布时间】:2017-10-17 02:21:16
【问题描述】:
我在 Windows 中找不到关于 Untrusted 完整性级别的太多信息,并且对此有一些疑问:
- 是否存在不受信任的完整性级别进程可以创建命名对象的地方? (互斥体、事件等)
- 不受信任的完整性级别进程是否应该能够打开现有的命名对象,该对象在创建时被赋予了安全描述符,
ACE和SYSTEM_MANDATORY_LABEL_NO_WRITE_UP到MandatoryLevelUntrusted?当我尝试它时,它会因0xc0000022(拒绝访问)而失败,而使用MandatoryLevelLow时效果很好。 - 通常不受信任的完整性进程如何与其代理进程通信? (比如 google chrome 选项卡如何与 google chrome 代理通信?)
【问题讨论】:
-
但是您是否可以使用 WinUntrustedLabelSid 创建进程,该进程在启动时不会失败?在我的测试中,当尝试加载 kernel32.dll 时,此进程发现失败 - 因为在加载进程过程中,他尝试使用
SECTION_MAP_WRITE打开 \KnownDlls\kernel32.dll 部分在访问掩码中。在这里失败,因为它需要写权限,但是这个部分有Low Mandatory Level,但没有untrusted。 -
据我了解,为了拥有一个不受信任的进程,您首先需要将其创建为低完整性,让它完成需要更高强制级别的工作(如加载 dll),然后使其变得不受信任。不过我自己没试过。
-
是的,这可行,但是您的目标是什么?
Is there a place where an untrusted integrity level process can create named objects- 这必须是带有Untrusted Mandatory Level的文件夹 - 如果我没记错的话(需要检查) - Windows NT 命名空间中没有默认文件夹带有这个。你需要自己创建它。对于 2.) - 对于只读访问,我们可以打开带有任何标签的对象。但对于写访问需要不受信任的标签。如果您在使用此标签分配 sid 时得到0xc0000022- 您的代码中有一些错误 -
Untrusted 就是这样一个级别,它本身有权不做任何事情。通常,具有更高完整性的父进程会创建子进程需要的任何对象,然后在设置权限作为启动的一部分后将它们显式传递给子进程。 Chromium source 应该有一个很好的例子。
标签: windows security winapi uac windows-security