You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Appinfo服务创建高权限进程的底层机制及令牌获取方式探究

Appinfo服务创建高权限进程的机制与对应WinAPI实现

一、高IL特权令牌的获取流程

当用户通过UAC同意权限提升后,运行在SYSTEM上下文的Appinfo服务会从LSASS中获取未经过UAC筛选的高完整性级别(IL)用户令牌,具体流程如下:

  • 首先定位当前用户的登录会话:通过WTSGetActiveConsoleSessionId获取当前会话ID,结合LsaGetLogonSessionData提取会话的登录元数据。
  • 调用LSASS的内部交互接口(或通过LsaCallAuthenticationPackage)获取该会话对应的完整管理员令牌——用户登录时LSASS会生成两个令牌:一个是默认分发的中等IL筛选令牌(移除了管理员组的有效权限),另一个是完整保留的高IL令牌,专门用于UAC提升场景。
  • 对获取到的令牌做最终调整:设置令牌的Mandatory Label为High Mandatory Level,确保所有管理员组权限处于有效状态。

二、高权限进程的创建机制

Appinfo服务创建高权限进程的核心依赖CreateProcessAsUserW API,同时会伪造父进程以保证进程树的合理性,具体步骤:

  • 伪造父进程:先打开当前用户的Explorer进程,通过未公开的原生API NtSetInformationProcess,将即将创建的进程的父进程ID设置为Explorer的PID,避免进程显示为“无父进程”的异常状态。
  • 调用CreateProcessAsUserW:传入高IL令牌,同时在lpStartupInfo中指定当前用户的桌面路径(如"WinSta0\\Default"),确保进程能正常加载UI;根据程序类型设置CREATE_NEW_CONSOLE或CREATE_NO_WINDOW等参数。
  • 完成进程初始化:如果以CREATE_SUSPENDED模式创建进程,会先调整进程的安全属性,再恢复进程运行,确保继承正确的权限上下文。

三、模拟该流程的WinAPI实现

普通程序要实现类似逻辑,必须先获取SYSTEM级权限(否则无法访问LSASS中的高IL令牌),大致步骤如下:

  1. 获取SYSTEM权限:通过OpenProcessToken打开当前进程令牌,启用SE_DEBUG_NAME特权;使用DuplicateTokenEx创建SYSTEM权限的令牌副本,再通过CreateProcessAsUserW启动SYSTEM上下文的子进程(或直接提升当前进程权限)。
  2. 获取高IL令牌:
    • 方式一:调用WTSQueryUserToken获取当前会话的中等IL用户令牌,使用DuplicateTokenEx创建令牌副本,再通过SetTokenInformation将TokenIntegrityLevel设置为High Mandatory Level。
    • 方式二:调用LsaLogonUser,指定LOGON32_LOGON_INTERACTIVE登录类型和LOGON32_PROVIDER_WINNT50提供程序,传入当前用户凭据直接生成高IL令牌(需SYSTEM权限)。
  3. 创建高权限进程:调用CreateProcessAsUserW,传入高IL令牌,指定正确的桌面路径和进程创建参数。
  4. 伪造父进程(可选):使用NtSetInformationProcess(需引入ntdll.h并链接ntdll.lib),设置ProcessInformationClass为ProcessParentInformation,将新进程的父ID指定为Explorer的PID。

注意:普通用户权限的程序无法直接获取未筛选的高IL令牌,必须经过UAC提升或获取SYSTEM权限,这是Windows安全模型的强制限制。

内容的提问来源于stack exchange,提问作者pralaynath_gainda_swamy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:45:28