什么使通过Windows SMB协议启动服务成为可能?

什么使通过Windows SMB协议启动服务成为可能?,windows,networking,windows-services,smb,Windows,Networking,Windows Services,Smb,为什么可以在Windows中通过SMB协议管理服务 SMB协议用于管理网络共享(文件和目录)和打印机,那么协议中的哪种机制可以与服务交互?来自: PsExec启动远程系统上的可执行文件并控制输入 和可执行程序进程的输出流,以便 与本地系统的可执行文件交互。PsExec是通过 从其可执行映像中提取名为 Psexesvc并将其复制到远程系统的Admin$共享。 PsExec然后使用Windows服务控制管理器API,该API具有 远程接口,用于在远程系统上启动Psexesvc服务 PSEXESSVC

为什么可以在Windows中通过SMB协议管理服务

SMB协议用于管理网络共享(文件和目录)和打印机,那么协议中的哪种机制可以与服务交互?

来自:

PsExec启动远程系统上的可执行文件并控制输入 和可执行程序进程的输出流,以便 与本地系统的可执行文件交互。PsExec是通过 从其可执行映像中提取名为 Psexesvc并将其复制到远程系统的Admin$共享。 PsExec然后使用Windows服务控制管理器API,该API具有 远程接口,用于在远程系统上启动Psexesvc服务

PSEXESSVC服务创建一个命名管道PSEXESSVC,PsExec将向该管道发送PsExec 连接并发送通知远程系统上服务的命令 要启动的可执行文件以及指定的选项。如果你 指定-d(不要等待)开关,服务在启动后退出 可执行文件;否则,服务将等待可执行文件恢复 终止,然后将退出代码发送回PsExec以便打印 本地控制台

这是一个非常有创意的黑客。psexec使用SMB将其自己的EXE复制到目标计算机。然后使用Windows服务控制管理器API(不同协议)在远程计算机上启动exe。缺少的deail正是在远程计算机上启动psexec的API。我做了一些挖掘,发现API正是促进这一点的。一旦获得远程机器的服务控制管理器的句柄,就可以使用诸如和之类的API来启动远程进程


因此,这不是SMB协议本身。更具体地说,是Windows服务控制管理器使我们能够执行类似于psexec的操作。

我的灵力提示您将
\\hostname
语法混淆为它所使用的所有协议。请详细说明,@selbie。我的第一反应是:这是不可能的,您无法使用SMB进行服务管理。然后我想,理论上这是可能的——因为服务可以依靠远程客户端发送命令,将文件放在两台PC共享的共享文件夹中。然后我想它可能更微妙——服务是一个非常超载的术语,可能需要额外的澄清。然后我想这可能与“netuse”命令使用了一些类似SMB的奇怪术语有关。您能详细说明一下您真正想要做什么吗?然后我们可以讨论。@selbie-我已经读过关于Sysinternals PsExec.exe程序的内容,该程序通过SMB连接启动服务来执行远程命令。但我不明白这怎么可能?请看下面我的答案。