如何使用 Windows RUNAS 命令以 nt 权限\系统身份运行程序(如果 runas 不起作用,则使用内置工具)

YJi*_*xGR 5 administrator runas

如何在nt authority/system 使用第 3 方应用程序(例如psexec)的情况下运行程序?

我已经尝试过runas "/user:system@nt authority" <app>runas "/user:nt authority\system" <app>但他们都说unable to acquire user password

(至少如果无法使用,runas是否有办法不使用第 3 方应用程序?)

Eri*_*sen 6

一种方法是运行一个临时计划任务NT AUTHORITY\SYSTEM。您可以通过将以下内容粘贴到 PowerShell 中来完成此操作。

说明:该脚本会提示您输入命令及其参数。如果没有参数,请按Enter将其留空。然后,该脚本创建一个名为 的临时计划任务RunAs_LocalSystem_$(New-Guid),该任务设置为运行为NT AUTHORITY\SYSTEM。最后,脚本运行计划任务,然后将其删除。

param( `
  [Parameter(Mandatory)][string]$Command, `
  [Parameter(Mandatory)][AllowEmptyString()][string]$Arguments `
) `
Import-Module ScheduledTasks; `
$name = "RunAs_LocalSystem_$(New-Guid)"; `
$actionArguments = @{ '-Execute' = $Command; }; `
if (-not [string]::IsNullOrEmpty($Arguments)) { $actionArguments['-Argument'] = $Arguments } `
$action = New-ScheduledTaskAction @actionArguments; `
$principal = New-ScheduledTaskPrincipal -UserId 'NT AUTHORITY\SYSTEM' -LogonType Interactive; `
Register-ScheduledTask -TaskName $name -Action $action -Principal $principal | Start-ScheduledTask; `
Unregister-ScheduledTask $name -Confirm:$false
Run Code Online (Sandbox Code Playgroud)


Law*_*ceC 1

您无法使用runas可能是因为以下原因:

“LocalSystem 帐户是服务控制管理器使用的预定义本地帐户。安全子系统无法识别该帐户,因此您无法在调用 LookupAccountName 函数时指定其名称它在本地计算机上拥有广泛的权限,并且充当网络上的计算机。其令牌包括 NT AUTHORITY\SYSTEM 和 BUILTIN\Administrators SID;这些帐户可以访问大多数系统对象。所有区域设置中帐户的名称为 .\LocalSystem。名称为 LocalSystem 或 ComputerName \LocalSystem 也可以使用。此帐户没有密码。”

参考

PSExec 基本上通过 SMB 上传并启动 Windows 服务 PSEXECSVC。使用管理员权限(由 PSExec 命令行提供)安装的 Windows 服务可以作为 LocalSystem 帐户(可在services.msc例如,可在 中指定)运行。当您通过 PSExec“远程连接”到系统时,您实际上是通过 SMB 协议与临时安装在另一端的正在运行的 PSEXECSVC 进行通信。我不确定更详细的细节,但这可能是 PSExec 能够作为 LocalSystem 帐户执行操作的方式。

参考

因此,您可以通过将可执行文件包装在服务包装器中(例如srvany.exeWindows 2000 资源工具包(如果它仍然有效)或NSSM )中来将其作为本地系统运行来将其作为本地系统运行,但如果可执行文件尝试使用 Windows UI 元素,它可能无法工作( Windows XP 之后被禁用)。

另请阅读此内容