代码之家  ›  专栏  ›  技术社区  ›  Ben Griswold

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

  •  124
  • Ben Griswold  · 技术社区  · 17 年前

    我目前正在运行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,但我认为我遇到了与运行计划任务时相同的限制。

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

    9 回复  |  直到 16 年前
        1
  •  246
  •   Avindra Goolcharan    10 年前

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

    然而,我遇到了这个问题 article 这说明了 PSTools 从…起 SysInternals

    psexec -i -s cmd.exe
    

    PSTools运行良好。这是一套轻量级的、有良好文档记录的工具,为我的问题提供了适当的解决方案。

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

        2
  •  63
  •   Underverse    9 年前
    1. Download psexec.exe from Sysinternals
    2. 将它放在您的C:\驱动器中。
    3. cd \ . 这会将您置于驱动器的根目录中,psexec位于该目录中。
    4. 使用以下命令: psexec -i -s cmd.exe 其中-i表示交互式,而-s表示系统帐户。
    5. whoami ; 它会说“系统”
    6. 打开taskmanager。杀死explorer.exe。
    7. 从提升的命令外壳类型 start explorer.exe .

    尝试重命名或删除windows任何受保护目录中的系统文件的用户应该知道,所有windows文件都受DACL保护。重命名文件时,您必须更改所有者并替换拥有该文件的TrustedInstaller,使任何用户都像属于管理员组的用户一样成为文件的所有者,然后尝试重命名该文件在更改权限后,它将起作用,并且当您使用内核权限运行windows explorer时,出于安全原因,您在网络访问方面受到了一定的限制,恢复访问权限仍然是我的一个研究课题

        3
  •  10
  •   Bryant    17 年前

    找到了答案 here 它似乎通过在binPath参数中添加/k start来解决问题。因此,这将给你:

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

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

        4
  •  6
  •   Michael come lately PhiLho    7 年前

    使用安全桌面运行 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. 作为管理员

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

    所以我想你必须在安全桌面上运行它。

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

    这是如何发生的简要说明

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

        5
  •  4
  •   James5001    15 年前

    另一种方法是进程黑客,如果你以。。。(对于有安全增强功能的人来说,交互式不起作用,但这并不重要),当盒子打开时,将服务投入使用 框类型并将系统放入用户框并放入C:\Users\Windows\system32\cmd.exe离开其余部分单击“确定”并单击“取消”您已经有一个带有cmd的窗口,并作为系统运行,现在请自己执行其他步骤,因为我建议您了解它们

        6
  •  2
  •   Alexander Haakan    8 年前

    还有另一种方法。有一个名为PowerRun的程序,它允许运行提升的cmd。即使有可靠的安装权。它支持控制台和GUI命令。

        7
  •  2
  •   Alex Roberts    5 年前

    (评论)

    当前在Microsoft Windows上[版本10.0.20201.1000]

    所以,在这一点上,它必须是第三方软件,调解这一点,进一步的把戏正在更积极地密封由微软这些天。

        8
  •  1
  •       17 年前

        9
  •  1
  •   anton_rh    8 年前

    我使用 RunAsTi 信任的种植者 Shift + Restart ),即 psexec C:\Windows C:\Windows\System32 X:\Windows X:\Windows\System32 PATH 环境变量,否则为 鲁纳斯蒂 无法在恢复模式下工作,它将只打印: .

        10
  •  1
  •   Paul Harris    7 年前

    使用任务计划程序,使用/add:/user:和/pass:

    不需要安装任何东西。