在 Windows 上使用指定的权限级别运行程序

跟前一篇一样,这也是来自于 V2EX 的帖子,原贴在这里

Windows 上进程的权限

Privexec 使用指定的权限级别运行程序。在 Windows 上,程序的权限级别可分为如下:

  • TrustedInstaller 可信安装,此权限属于 Windows Modules Installer service (TrustedInstaller.exe),常用于 Windows Update 和 Windows 资源保护。
  • System 本地服务权限。
  • Administrator 管理员(组)权限
  • Not Elevated 标准用户权限
  • Mandatory Integrity Control 低完整性
  • AppContainer UWP/Store APP 权限

在 Windows 上,可能存在一些需求,比如在管理员权限获得 System/TrustedInstaller 权限去做一些事情(一帮不建议这么做)。也有可能以较低权限启动进程,或者实现进程权限从管理员降低到标准受限用户(这个建议)。还有一些,用于对 Windows 做安全分析,比如启动一个 AppContainer 进程,然后研究 Sandbox 逃逸机制。等等。

Privexec 的特性

Privexec 这个工具,自身以管理员权限运行时,可以启动 System/TrustedInstaller 权限进程,以标准用户启动时常常用于启动 AppContainer 进程。

在 Windows 8/8.1/10 中,应用商店,UWP 进程都是使用 AppContainer 隔离,当你启动 UWP 程序后你可以使用 Process Explorer 或者 Process Hacker 去分析进程的权限信息。

Privexec 能够支持在 以 AppContainer 启动 Win32 进程,并且支持 LPAC, 也就是 Windows 10 新增的 Less Privileged AppContainer

App Container has access to resources protected with ALL APPLICATION PACKAGES SID: This SID has read permission on all folders by default. LPAC is a more restricted version of the App Container. it denies access by default for everything. One can access only the secured objects that are granted explicitly to LPAC.

开启了 LPAC,你如果没有 lpacCOM,COM 对象都无法调用。LPAC 借鉴了 Google Project Zero sandbox-attacksurface-analysis-tools

管理员权限:

Admin

启动 AppContainer 进程:

AppContainer

Privexec 支持命令别名:

Alias

命令行版本:

wsudo

关于在 Windows 上以不同权限启动进程的原理有相应的博客:Privexec 杂谈

Privexec 主要用在 Windows 10 上,故代码仅支持 Windows 较高版本,建议至少是 1803 或者更高。

下载 CI 构建的 64bit: https://ci.appveyor.com/project/fcharlie/privexec/build/artifacts

许可证 MIT。

类似工具

  1. NSudo – A Powerful System Administration Tool

NSudo 主要擅长权限开启,Privexec 更擅长 AppContainer。NSudo 知名度更广,Privexec 基本只有少数人知道。

其他

Process Hacker 推荐下载 Nightly (v2 比较陈旧,有些特性未支持):https://wj32.org/processhacker/nightly.php

Privexec 安全论坛上的介绍:https://www.wilderssecurity.com/threads/privexec-run-the-program-with-the-specified-permission-level.410734/


在评论区,还有人提到了 AdvancedRun,能把权限级别当配置文件保存。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注