为什么在Windows中可以通过SMB协议管理服务?
SMB协议用于管理网络共享(文件和目录)和打印机,那么该协议中的哪种机制使其可以与服务进行交互?
答案 0 :(得分:0)
PsExec在远程系统上启动可执行文件并控制输入 并输出可执行文件过程的流,以便您可以 与本地系统中的可执行文件进行交互。 PsExec这样做是 从其可执行映像中提取一个名为Windows的嵌入式Windows服务 Psexesvc并将其复制到远程系统的Admin $共享。 然后,PsExec使用Windows Service Control Manager API,该API具有一个 远程接口,以在远程系统上启动Psexesvc服务。
Psexesvc服务创建一个命名管道psexecsvc,PsExec指向该管道 连接并发送命令以告知远程系统上的服务 启动哪个可执行文件以及您指定了哪些选项。如果你 指定-d(不要等待)开关,启动后服务退出 可执行文件;否则,服务将等待可执行文件 终止,然后将退出代码发送回PsExec,以便在其上进行打印 本地控制台。
这是一个非常有创意的技巧。 psexec使用SMB将自己的EXE复制到目标计算机。然后使用Windows服务控制管理器API(不同的协议)在远程计算机上启动exe。缺少的详细信息是在远程计算机上启动psexec的确切API。我进行了一些挖掘,发现OpenSCManager API对此有所帮助。一旦获得了远程机器的服务控制管理器的句柄,就可以使用诸如CreateService和StartService之类的API来启动远程进程。
所以它本身不是SMB协议。更具体地说,是Windows服务控制管理器使执行与psexec类似的操作成为可能。