当前位置:  开发笔记 > 后端 > 正文

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

如何解决《如何在本地系统帐户下运行CMD.exe?》经验,为你挑选了5个好方法。

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

我在网上找到了建议使用DOS任务计划程序AT命令发送CMD.exe的信息,但是我收到了Vista警告"由于安全性增强,此任务将在除外但不交互的情况下运行".这是一个示例命令:

AT 12:00 /interactive cmd.exe

另一个解决方案建议通过服务控件(sc.exe)创建辅助Windows服务,该服务仅启动CMD.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.

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

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

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



1> Ben Griswold..:

虽然我没有亲自测试过,但我有充分的理由相信上面提到的AT COMMAND解决方案适用于XP,2000和Server 2003.根据我和Bryant的测试,我们发现同样的方法不适用于Vista或Windows Server 2008 - 最可能的原因是增加了安全性并且不推荐使用/ interactive开关.

不过,我碰到这个文章这表明使用PSTools从Sysinternals的(这是由微软在2006年7月收购),我公司推出通过以下,忽然我也像魔术的本地管理员帐户下运行命令行:

psexec -i -s cmd.exe

PSTools运行良好.它是一套轻量级,文档齐全的工具,可以为我的问题提供合适的解决方案.

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


添加`-d`后我更喜欢这个,这样我就可以继续使用我推出的控制台了.

2> 小智..:

    从Sysinternals下载psexec.exe.

    将它放在C:\驱动器中.

    以标准或管理员用户身份登录并使用以下命令:cd \.这会将您置于驱动器的根目录中,psexec位于该目录中.

    使用以下命令:psexec -i -s cmd.exe其中-i用于交互式,-s用于系统帐户.

    命令完成后,将启动cmd shell.类型whoami; 它会说'系统'

    打开任务管理器.杀死explorer.exe.

    从提升的命令shell类型start explorer.exe.

    启动资源管理器时,请在开始菜单栏中注明名称"system".现在你可以删除system32目录中的一些文件,作为管理员你不能删除或作为管理员你必须努力更改删除这些文件的权限.

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



3> Bryant..:

在这里找到一个答案似乎通过添加/ k start到binPath参数来解决问题.这样会给你:

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

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

我不认为有一种简单的方法可以做你所要求的,但我想知道你为什么这样做呢?您是否只是想在运行服务时看到发生了什么?好像你可以只使用日志记录来确定发生了什么,而不必将exe作为本地系统运行...



4> Mike Dimmick..:

我建议你计算出服务真正需要的最小权限集,并使用它,而不是权限太大的本地系统上下文.例如,本地服务.

由于会话0隔离,交互式服务在Windows Vista和Windows Server 2008上不再起作用 - 或者至少不再显示UI .


迈克,谢谢你的回应.虽然我同意你的建议,但我认为每个人都会从你的答案中受益,我不相信你已经回答了这个问题.
@SamB,这就是注释的意思,当您有贡献的内容实际上不是* answer *时。

5> 小智..:

使用安全桌面运行cmd.exesystem

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"

    CMD以管理员身份运行

    然后在“提升”中使用此命令:

     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"
    

    然后运行osk(屏幕键盘)。如果您通过进程资源管理器进行检查,它仍然不能与系统完整性级别一起运行,但是如果您可以在服务会话中使用OSK,它将以NT Authority\SYSTEM

因此我想到您必须在Secure Desktop上运行它。

以管理员身份启动任何文件。当出现UAC提示时,只需按Win+ U并启动OSK,它将开始启动CMD。然后在提升的提示符下,键入whoami,您将得到NT Authority\System。之后,您可以从系统命令外壳程序启动Explorer并使用系统配置文件,但是出于安全原因,通过SYSTEM特权可以在网络上执行的操作受到了一定限制。一年前,我会在后面添加更多说明。

简要说明如何发生

Cmd.exe在不使用本地系统帐户的情况下运行PsExec。此方法运行的是较早发现的Debugger Trap技术,它有其自身的优势,它可用于在调试器中捕获一些狡猾/恶意的蠕虫或恶意软件,并运行其他一些exe来阻止传播或暂时损坏。在这里,此注册表项将Windows本机调试器中的屏幕键盘困住并改为运行cmd.exe,但cmd仍将以“登录用户”权限运行,但是,如果我们在session0中运行cmd,则可以获得系统外壳。因此,我们在这里添加了另一个想法,即跨安全桌面上的cmd记住安全桌面在系统帐户下的会话0中运行,然后获得系统外壳。因此,无论何时以高架运行任何东西,都必须在黑暗的非交互式桌面上回答UAC提示和UAC提示,一旦看到它,则必须按Win+ U,然后选择OSK您将CMD.exe在本地系统特权下运行。还有更多方法可以通过CMD

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有