我目前正在运行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,但是我认为我遇到了与运行计划任务时相同的限制。
到目前为止,我的每一次尝试都以失败告终。有什么建议吗?
答案 0 :(得分:204)
虽然我没有亲自测试过,但我有充分的理由相信上面提到的AT COMMAND解决方案适用于XP,2000和Server 2003.根据我和Bryant的测试,我们发现相同的方法没有使用Vista或Windows Server 2008 - 很可能是由于增加了安全性和/交互式开关被弃用。
但是,我遇到了这个article,它演示了PSTools SysInternals的使用情况(微软于2006年7月收购)。我通过以下方式启动了命令行突然之间我在本地管理员账户下运行,就像魔术一样:
psexec -i -s cmd.exe
PSTools运行良好。它是一套轻量级,文档齐全的工具,可以为我的问题提供合适的解决方案。
非常感谢那些提供帮助的人。
答案 1 :(得分:41)
cd \
。这会将您置于驱动器的根目录中,psexec位于该目录中。psexec -i -s cmd.exe
其中-i用于交互式,-s用于系统帐户。whoami
;它会说'系统'start explorer.exe
。尝试重命名或删除Windows任何受保护目录中的系统文件的用户应该知道所有Windows文件都受DACLS保护,同时重命名文件时必须更改所有者并替换拥有该文件的TrustedInstaller并使任何用户喜欢作为文件所有者属于管理员组的用户然后尝试在更改权限后重命名它,它将工作,当您运行带有内核特权的Windows资源管理器时,出于安全原因,您在网络访问方面有些限制,它仍然是我可以获得访问权限的研究课题
答案 2 :(得分:10)
找到答案here,似乎通过在binPath参数中添加/ k start来解决问题。所以这会给你:
sc create testsvc binpath= "cmd /K start" type= own type= interact
然而,Ben说这对他不起作用,当我在Windows Server 2008上尝试它时,确实在本地系统下创建了cmd.exe进程,但它不是交互式的(我看不到窗口) 。
我认为没有一种简单的方法可以做你所要求的,但我想知道你为什么这样做呢?您是否只是想在运行服务时看到发生了什么?好像你可以只使用日志来确定发生了什么,而不必将exe作为本地系统运行...
答案 3 :(得分:6)
我建议您计算出服务真正需要的最小权限集,并使用它,而不是权限过高的本地系统上下文。例如,Local Service。
由于session 0 isolation,Windows Vista和Windows Server 2008上的交互式服务不再起作用 - 或者至少不再显示UI。
答案 4 :(得分:3)
另一个替代方案就是进程黑客,如果你进入运行状态......(交互式功能不适用于那些具有安全性增强但不重要的人)当盒子打开时将服务放入 框中的类型并将SYSTEM放入用户框并放入C:\ Users \ Windows \ system32 \ cmd.exe,其余单击确定,然后boch你有一个带有cmd的窗口并作为系统运行现在为自己做其他步骤因为我建议你认识他们
答案 5 :(得分:3)
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"
以管理员身份运行CMD
然后在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"
然后运行osk
(onscreenkeyboard)。如果您通过流程资源管理器进行检查,它仍然无法使用系统完整性级别运行,但如果您可以在服务会话中使用OSK,则它将以NT Authority\SYSTEM
所以我有想法你必须在安全桌面上运行它。
以管理员身份启动任何文件。当出现UAC提示时,只需按 Win + U 并启动OSK
,它将启动CMD
。然后在提升的提示中输入whoami
,您将获得NT Authority\System
。之后,您可以从系统命令shell启动Explorer并使用系统配置文件,但出于安全原因,您可以通过SYSTEM权限在网络上执行某些操作。我将在一年前发现它后再添加更多解释。
在不使用Cmd.exe
的情况下在本地系统帐户下运行PsExec
。此方法运行之前发现的调试器陷阱技术,此技术有其自身的优点,可用于在调试器中捕获一些狡猾/恶意的蠕虫或恶意软件,并运行其他exe来代替暂停传播或损坏。这里这个注册表键在Windows本机调试器中捕获屏幕键盘并运行cmd.exe,但是cmd仍将以Logged on users权限运行,但是如果我们在session0中运行cmd,我们可以获得系统shell。所以我们在这里添加另一个想法,我们跨越安全桌面上的cmd记住安全桌面在系统帐户下的会话0中运行,我们得到系统shell。因此,无论何时运行任何高架,您都必须回答UAC提示并在黑暗,非交互式桌面上提示UAC,一旦看到它,您必须按 Win + U 然后选择OSK
您将在本地系统权限下运行CMD.exe
。使用CMD
答案 6 :(得分:2)
还有另一种方式。有一个名为PowerRun的程序允许运行高架cmd。即使有TrustedInstaller权限。它允许控制台和GUI命令。
答案 7 :(得分:2)
(评论)
我还不能发表评论,所以在这里发帖...我刚刚尝试了上面的 OSK.EXE 调试技巧,但是当我将填充的“C:\windows\system32\cmd.exe”保存到已经创建了 Debugger 密钥,因此 Microsoft 正在积极努力阻止本机方式来执行此操作。这真的很奇怪,因为其他事情不会触发这个。
使用任务调度程序确实会创建一个 SYSTEM CMD,但它位于系统环境中,并未显示在人类用户配置文件中,因此现在也已失效(尽管它是合乎逻辑的)。
目前在 Microsoft Windows [版本 10.0.20201.1000] 上
因此,在这一点上,必须是第三方软件来调解这一点,而且最近微软正在更积极地密封更多的技巧。
答案 8 :(得分:1)
如果您可以编写不需要交互的批处理文件,请尝试将该批处理文件作为服务运行,以执行需要执行的操作。
答案 9 :(得分:0)
我使用RunAsTi实用程序作为 TrustedInstaller (高权限)运行。即使在Windows的恢复模式(通过执行Shift
+ Restart
输入的模式)中也可以使用该实用程序, psexec 实用程序在那里不起作用。但是您需要将C:\Windows
和C:\Windows\System32
(不是X:\Windows
和X:\Windows\System32
)路径添加到PATH
环境变量,否则 RunAsTi 无法在恢复模式下工作,它只会打印: SeImpersonateName的AdjustTokenPrivileges:并非所有引用的权限或组都分配给调用者。
答案 10 :(得分:0)
使用任务计划程序,使用/ add:/ user:和/ pass:的适当参数来计划在SYSTEM下运行的CMDKEY的运行。
无需安装任何东西。