如何在本地系统帐户下运行 CD.exe?

我目前正在运行 Vista,我想手动完成相同的操作作为我的 Windows 服务。由于 Windows 服务是在本地系统帐户下运行的,因此我想模拟同样的行为。基本上,我想在本地系统帐户下运行 CMDEXE。

我在网上找到了一些建议使用 DOS 任务计划程序 AT 命令启动 CMDexe 的信息,但是我收到了 Vista 的警告: “由于安全性增强,这个任务将在除外的时间运行,但是不能交互。”下面是一个示例命令:

AT 12:00 /interactive cmd.exe

另一个解决方案建议通过服务控制(sc.exe)创建一个辅助 Windows 服务,该服务只是启动 CD.exe。

C:\sc create RunCMDAsLSA binpath= "cmd" type=own type=interact
C:\sc start RunCMDAsLSA

在这种情况下,服务无法启动,并导致以下错误消息:

FAILED 1053: The service did not respond to the start or control request in a timely fashion.

第三个建议是通过调度任务启动 CMDexe。虽然您可以在不同的帐户下运行计划任务,但我不认为本地系统帐户是其中之一。

我也尝试过使用 Runas,但是我认为我遇到了与运行计划任务时相同的限制。

到目前为止,我的每次尝试都以失败告终。有什么建议吗?

432113 次浏览

找到了一个答案 给你,它似乎可以通过在 binPath 参数中添加/k start 来解决这个问题。所以你会得到:

sc create testsvc binpath= "cmd /K start" type= own type= interact

然而,Ben 说这对他不起作用,当我在 Windows Server 2008上尝试时,它确实在本地系统下创建了 cmd.exe 进程,但它不是交互式的(我看不到窗口)。

我不认为有一个简单的方法来完成你的要求,但我想知道你为什么要这样做呢?您只是想知道运行服务时发生了什么吗?似乎您可以使用日志记录来确定发生了什么,而不必将 exe 作为本地系统运行..。

如果您可以编写一个不需要交互的批处理文件,请尝试将该批处理文件作为服务运行,以完成需要完成的工作。

虽然我没有亲自测试过,但我有充分的理由相信上述 AT COMMAND 解决方案将适用于 XP、2000和 Server 2003。根据我和 Bryant 的测试,我们发现同样的方法不适用于 Vista 或 Windows Server 2008——很可能是由于增加了安全性和/交互式交换机被弃用。

然而,我偶然发现了这个 文章,它演示了从 SysInternals(微软在2006年7月收购的)使用 电子工具我通过以下命令启动了命令行,突然间我像变魔术一样在本地管理帐户下运行:

psexec -i -s cmd.exe

PSTools 工作得很好。它是一个轻量级的、文档化很好的工具集,为我的问题提供了适当的解决方案。

非常感谢那些提供帮助的人。

另一个替代方案是 Process hacker,如果你进入... (Interactive 不能为具有安全性增强的人工作,但这不重要) ,当框打开时,将 Service 放入 输入框类型,把 SYSTEM 放入用户框中,然后放入 C: Users Windows system32 cmd.exe leave the rest 点击确定和 boch 你有一个带 cmd 的窗口,然后像系统一样运行现在为自己做其他的步骤,因为我建议你知道这些步骤

  1. 从 SysInternal als 下载 psexec.exe。
  2. 把它放在你的 C: 驱动器里。
  3. 作为标准用户或管理用户登录,并使用以下命令: cd \。这将您置于驱动器的根目录中,psexec 位于该目录中。
  4. 使用以下命令: psexec -i -s cmd.exe,其中-i 用于交互,-s 用于系统帐户。
  5. 命令完成后,将启动一个 cmd shell
  6. 打开任务管理器,杀死 Explorer.exe。
  7. 从提升的命令 shell 类型 start explorer.exe
  8. 启动资源管理器时,请注意开始菜单栏中的名称“系统”。现在您可以删除 System32目录中的一些文件,作为管理员您无法删除这些文件,或者作为管理员您必须努力更改删除这些文件的权限。

如果用户试图重命名或删除任何受保护的 windows 目录中的系统文件,应该知道所有的 windows 文件都受到 DACLS 的保护,同时重命名一个文件,你必须更改文件的所有者,并替换拥有该文件的 TrustedInstaller,使任何用户像管理员组的用户一样成为文件的所有者,然后尝试在更改权限后重命名它,它将工作,当你运行内核特权的文件资源管理器时,出于安全原因,你在网络访问方面受到一定限制,重新获得访问权限仍然是我的

使用安全桌面将 cmd.exe作为 system运行

在 Windows XP/Vista/7/8.1中,通过附加一个调试器,我们可以很容易地通过 CMD访问内核:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
  1. 以管理员身份运行 CMD

  2. 然后使用以下命令:

     CMD REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
    
  3. Then run osk (onscreenkeyboard). It still does not run with system Integrity level if you check through process explorer, but if you can use OSK in service session, it will run as NT Authority\SYSTEM

so I had the idea you have to run it on Secure Desktop.

Start any file as Administrator. When UAC prompts appear, just press Win+U and start OSK and it will start CMD instead. Then in the elevated prompt, type whoami and you will get NT Authority\System. After that, you can start Explorer from the system command shell and use the System profile, but you are somewhat limited what you can do on the network through SYSTEM privileges for security reasons. I will add more explanation later as I discovered it a year ago.

A Brief Explanation of how this happens

Running Cmd.exe Under Local System Account Without Using PsExec. This method runs Debugger Trap technique that was discovered earlier, well this technique has its own benefits it can be used to trap some crafty/malicious worm or malware in the debugger and run some other exe instead to stop the spread or damage temporary. here this registry key traps onscreen keyboard in windows native debugger and runs cmd.exe instead but cmd will still run with Logged on users privileges, however if we run cmd in session0 we can get system shell. so we add here another idea we span the cmd on secure desktop remember secure desktop runs in session 0 under system account and we get system shell. So whenever you run anything as elevated, you have to answer the UAC prompt and UAC prompts on dark, non interactive desktop and once you see it you have to press Win+U and then select OSK you will get CMD.exe running under Local system privileges. There are even more ways to get local system access with CMD

还有一个办法。有一个叫 PowerRun 的程序可以运行升级版的 cmd。即使拥有 TrustedInstaller 权限。它同时支持控制台和 GUI 命令。

我使用 < em > RunAsTi 实用程序作为 TrustedInstaller(高特权)运行。即使在 Windows 的恢复模式(通过执行 Shift + Restart进入的模式)下也可以使用该实用程序,但是 Psexec实用程序在那里不起作用。但是你需要将你的 C:\WindowsC:\Windows\System32(而不是 X:\WindowsX:\Windows\System32)路径添加到 PATH环境变量,否则 Restart0不会在恢复模式下工作,它只会打印: Restart1。

使用任务调度程序,使用/add:/user: 和/pass: 的适当参数调度在 SYSTEM 下运行的 CMDKEY 运行:

不需要安装任何东西。

(评论)

我现在还不能评论,所以在这里发帖... 我刚刚尝试了上面的 OSK.EXE 调试技巧,但是当我将填充的“ C: windows system 32 cmd.exe”保存到已经创建的调试器键中时,regedit 会立即关闭,因此微软正在积极阻止本地方式来做这件事。这真的很奇怪,因为其他事情不会引发这种情况。

使用任务调度程序确实创建了一个 SYSTEMD,但是它位于系统环境中,并且没有显示在人工用户配置文件中,因此现在也不再使用它(尽管它是合乎逻辑的)。

当前使用 Microsoft Windows [ Version 10.0.20201.1000]

因此,在这一点上,它必须是第三方软件,中介这一点和进一步的技巧正在更积极地密封由微软这些天。

我用了 Paul Harris 的推荐信,创建了一个批处理文件。Cmd 或。Bat 使用我需要在系统下运行的任何命令,并使用计划任务运行一次。 而不是在需要的时候触发它。并根据需要更新批处理。所以任何命令,我需要在系统下运行我只是更新批处理。