我正在尝试理解所有可用于在Windows上通过impacket脚本执行远程命令的方法:
https://www.coresecurity.com/corelabs-research/open-source-tools/impacket
https://github.com/CoreSecurity/impacket
我理解psexec.py和smbexec.py的高级解释,它们是如何在远程端创建服务并通过cmd.exe -c运行命令的,但我无法理解如何通过SMB在远程窗口主机上创建服务。smb不应该主要用于文件传输和打印机共享吗?阅读我在说明中看到的使用DCERPC创建此服务的源代码,这是smb协议的一部分吗?我在DCERPC上发现的所有资源都有点混乱,而不是专注于它的服务创建功能。查看atexec.py的源代码,它表示它也通过DCERPC与windows主机的任务调度程序服务交互。它是否可以用于与运行在远程框上的所有服务进行交互?
谢谢!
发布于 2018-07-15 17:56:37
DCERPC (https://en.wikipedia.org/wiki/DCE/RPC):最初的协议,用作MSRPC (RPC)的模板。
MSRPC是一种在远程端执行函数和传输数据(参数到这些函数)的方法。它不是一种在远程端直接执行远程OS命令的方法。
SMB (Block )是一种文件共享协议,主要用于访问文件服务器上的文件。此外,它还提供了命名管道(https://msdn.microsoft.com/en-us/library/cc239733.aspx),这是在本地进程和远程进程之间传输数据的一种方法。
MSRPC的一种常见方法是通过SMB上的命名管道使用它,它的优点是SMB提供的安全层可以直接用于MSRPC。
事实上,MSRPC是Windows世界中最重要、但却鲜为人知的协议之一。
无论是MSRPC还是SMB,都与shell命令的远程执行无关。
执行远程命令的一种常见方法是:
事实上,这就是PSEXEC所做的。
我在DCERPC上发现的所有资源都有点混乱,而不是专注于它的服务创建功能。
是的,这只是一个远程过程呼叫协议。但是它可以用于在远程端启动一个过程,它可以做任何事情,例如创建一个服务。
查看atexec.py的源代码,它表示它也通过DCERPC与windows主机的任务调度程序服务交互。它是否可以用于与运行在远程框上的所有服务进行交互?
有一些处理任务调度程序的MSRPC命令,还有一些处理一般服务启动和停止命令的命令。
最后最后几句话:
SMB / CIFS和周围的协议是非常复杂和难以理解的。尝试理解如何处理远程服务控制似乎没什么问题,但这可能是一段非常漫长的旅程。
也许这个页面(它使用Java试图控制Windows服务)也有助于理解。
https://dev.c-ware.de/confluence/pages/viewpage.action?pageId=15007754
https://stackoverflow.com/questions/51346269
复制相似问题