我试图了解通过impacket脚本在Windows上执行远程命令的所有方法:
https://www.coresecurity.com/corelabs-research/open-source-tools/impacket
https://github.com/CoreSecurity/impacket
我了解psexec.py和smbexec.py的高级解释,它们如何在远程端创建服务并通过cmd.exe -c
运行命令,但我无法理解如何在远程Windows通过SMB托管。 smb是否不应该主要用于文件传输和打印机共享?阅读源代码,我在笔记中看到它们使用DCERPC创建此服务,这是smb协议的一部分吗?我发现的DCERPC上的所有资源都令人困惑,而不是专注于其服务创建功能。查看atexec.py的源代码,它说它也通过DCERPC与Windows主机的任务计划程序服务交互。可以用来与远程机器上运行的所有服务进行交互吗?
谢谢!
答案 0 :(得分:3)
DCERPC (https://en.wikipedia.org/wiki/DCE/RPC):初始协议,它用作 MSRPC (https://en.wikipedia.org/wiki/Microsoft_RPC)的模板。
MSRPC是一种在远端执行功能并传输数据(这些功能的参数)的方法。这不是直接在远程端执行远程OS命令的方法。
SMB (https://en.wikipedia.org/wiki/Server_Message_Block)是文件共享协议,主要用于访问Windows文件服务器上的文件。另外,它提供了命名管道(https://msdn.microsoft.com/en-us/library/cc239733.aspx),这是在本地进程和远程进程之间传输数据的一种方式。
MSRPC的一种常见方法是通过SMB上的命名管道使用它,其优点是MSRPC直接接近SMB提供的安全层。
实际上,MSRPC是Windows世界中最重要但鲜为人知的协议之一。
MSRPC或SMB都与远程执行Shell命令无关。
执行远程命令的一种常见方法是:
实际上,这就是PSEXEC所做的。
我在DCERPC上发现的所有资源都令人困惑,而不是 专注于其服务创建功能。
是的,这只是一个远程过程调用协议。但是它可以用于在远程端启动过程,该过程可以执行任何操作,例如创建服务。
查看atexec.py的源代码,它说它与 Windows主机的任务计划程序服务,也通过DCERPC。 它可以用于与远程运行的所有服务进行交互吗? 盒子?
有些MSRPC命令处理Task Scheduler,而另一些处理常规的服务启动和停止命令。
最后几句话:
SMB / CIFS及其周围的协议确实非常复杂且难以理解。试图了解如何应对例如远程服务控制,但这可能要花费很长的时间。
也许此页面(使用Java尝试控制Windows服务)也可能有助于理解。
https://dev.c-ware.de/confluence/pages/viewpage.action?pageId=15007754