165

我目前正在运行 Vista,我想手动完成与我的 Windows 服务相同的操作。由于 Windows 服务在本地系统帐户下运行,我想模拟这种相同的行为。基本上,我想在本地系统帐户下运行 CMD.EXE。

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

AT 12:00 /interactive cmd.exe

另一种解决方案建议通过仅启动 CMD.exe 的服务控制 (sc.exe) 创建辅助 Windows 服务。

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.

第三个建议是通过计划任务启动 CMD.exe。尽管您可以在各种帐户下运行计划任务,但我不相信本地系统帐户是其中之一。

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

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

4

10 回答 10

254

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

但是,我遇到了这篇文章,它演示了SysInternals 2006 年 7 月被微软收购)的 PSTools 的使用。我通过以下命令启动了命令行,突然我像魔术一样在本地管理员帐户下运行

psexec -i -s cmd.exe

PSTools 运行良好。这是一套轻量级的、有据可查的工具,可为我的问题提供适当的解决方案。

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

于 2008-09-17T00:36:37.227 回答
65
  1. 从 Sysinternals 下载 psexec.exe
  2. 将它放在您的 C:\ 驱动器中。
  3. 以标准或管理员用户身份登录并使用以下命令:cd \. 这会将您置于驱动器的根目录中,即 psexec 所在的位置。
  4. 使用以下命令:psexec -i -s cmd.exe其中 -i 用于交互,-s 用于系统帐户。
  5. 命令完成后,将启动一个 cmd shell。类型whoami;它会说“系统”
  6. 打开任务管理器。杀死 explorer.exe。
  7. 从提升的命令外壳类型start explorer.exe
  8. 当资源管理器启动时,请注意开始菜单栏中的名称“系统”。现在您可以删除 system32 目录中的一些文件,作为管理员您无法删除,或者作为管理员您必须努力更改权限才能删除这些文件。

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

于 2013-06-07T01:17:01.513 回答
10

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

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

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

我认为没有一种简单的方法可以按照您的要求进行操作,但是我想知道您为什么要这样做?您是否只是想查看运行服务时发生了什么?似乎您可以只使用日志记录来确定正在发生的事情,而不必将 exe 作为本地系统运行...

于 2008-09-16T21:56:26.940 回答
6

使用 Secure Desktop 作为cmd.exe运行system

CMD我们可以通过附加调试器轻松地在 Windows XP/Vista/7/8.1中获取内核访问权限:

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. 然后在 Elevated 中使用此命令:

     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. 然后运行osk(屏幕键盘)。如果您通过进程资源管理器检查,它仍然不会以系统完整性级别运行,但如果您可以在服务会话中使用 OSK,它将运行为NT Authority\SYSTEM

所以我想到你必须在 Secure Desktop 上运行它。

以管理员身份启动任何文件。当出现 UAC 提示时,只需按Win+U并开始OSK,它就会开始CMD。然后在提升的提示符中,键入whoami,您将获得NT Authority\System. 之后,您可以从系统命令 shell 启动 Explorer 并使用系统配置文件,但出于安全原因,您可以通过 SYSTEM 权限在网络上执行的操作有些受限。当我在一年前发现它时,我将在稍后添加更多解释。

简要说明这是如何发生的

Cmd.exe在不使用本地系统帐户下运行PsExec. 此方法运行之前发现的调试器陷阱技术,该技术有其自身的优点,可用于在调试器中捕获一些狡猾/恶意的蠕虫或恶意软件,并运行其他一些 exe 来临时阻止传播或损坏。在这里,此注册表项在 Windows 本机调试器中捕获屏幕键盘并运行 cmd.exe,但 cmd 仍将以登录用户权限运行,但是如果我们在 session0 中运行 cmd,我们可以获得系统 shell。所以我们在这里添加另一个想法,我们跨越安全桌面上的 cmd 记住安全桌面在系统帐户下的会话 0 中运行,我们得到系统外壳。因此,每当您以提升的方式运行任何内容时,您都必须在黑暗的非交互式桌面上回答 UAC 提示和 UAC 提示,一旦看到它,您必须按Win+U然后选择OSK您将CMD.exe在本地系统权限下运行。还有更多方法可以访问本地系统CMD

于 2015-05-30T07:06:24.853 回答
4

如果您以...的身份运行,则另一种方法是进程黑客(交互式对具有安全增强功能的人不起作用,但这无关紧要),并且当框打开时,将服务放入框类型并将系统放入用户框并放入 C :\Users\Windows\system32\cmd.exe 剩下的点击确定,然后你有一个带有 cmd 的窗口并以系统身份运行现在自己做其他步骤,因为我建议你知道它们

于 2011-02-21T08:24:52.477 回答
2

还有另一种方法。有一个名为 PowerRun 的程序允许运行提升的 cmd。即使拥有 TrustedInstaller 权限。它允许控制台和 GUI 命令。

于 2018-05-14T11:56:50.490 回答
2

(评论)

我还不能发表评论,所以在这里发布......我刚刚尝试了上面的 OSK.EXE 调试技巧,但是当我将填充的“C:\windows\system32\cmd.exe”保存到已经创建的调试器密钥中时,regedit 立即关闭所以微软正在积极努力阻止本地方式来做到这一点。这真的很奇怪,因为其他事情不会触发这个。

使用任务调度程序确实会创建一个 SYSTEM CMD,但它位于系统环境中,并且未显示在人类用户配置文件中,因此现在它也已失效(尽管它是合乎逻辑的)。

目前在 Microsoft Windows [版本 10.0.20201.1000]

因此,在这一点上,必须是第三方软件来调解这一点,并且这些天微软正在更加积极地密封更多的技巧。

于 2021-02-02T08:15:55.307 回答
1

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

于 2008-09-16T21:56:56.703 回答
1

我使用RunAsTi实用程序作为TrustedInstaller(高权限)运行。该实用程序甚至可以在 Windows 的恢复模式下使用(您通过执行Shift+进入的模式Restart),psexec实用程序在那里不起作用。但是您需要将您的C:\Windowsand C:\Windows\System32(不是X:\Windowsand X:\Windows\System32)路径添加到PATH环境变量中,否则RunAsTi将无法在恢复模式下工作,它只会打印:AdjustTokenPrivileges for SeImpersonateName: Not all rights or groups referenced is assigned to the caller

于 2018-06-15T19:09:12.967 回答
1

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

无需安装任何东西。

于 2019-05-31T17:28:06.410 回答