首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解smb和DCERPC的远程命令执行功能

了解smb和DCERPC的远程命令执行功能
EN

Stack Overflow用户
提问于 2018-07-15 07:35:01
回答 1查看 5.2K关注 0票数 5

我正在尝试理解所有可用于在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主机的任务调度程序服务交互。它是否可以用于与运行在远程框上的所有服务进行交互?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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命令的远程执行无关。

执行远程命令的一种常见方法是:

  • 将文件(通过SMB)复制到远程端(Windows服务EXE)
  • 在远程端创建注册表项(以便安装和启动复制的Windows服务)
  • 启动Windows服务。已启动的Windows服务可以使用任何网络协议(例如,MSRPC)来接收和执行命令。
  • 工作完成后,可以卸载Windows服务(删除注册表项并删除文件)。

事实上,这就是PSEXEC所做的。

我在DCERPC上发现的所有资源都有点混乱,而不是专注于它的服务创建功能。

是的,这只是一个远程过程呼叫协议。但是它可以用于在远程端启动一个过程,它可以做任何事情,例如创建一个服务。

查看atexec.py的源代码,它表示它也通过DCERPC与windows主机的任务调度程序服务交互。它是否可以用于与运行在远程框上的所有服务进行交互?

有一些处理任务调度程序的MSRPC命令,还有一些处理一般服务启动和停止命令的命令。

最后最后几句话:

SMB / CIFS和周围的协议是非常复杂和难以理解的。尝试理解如何处理远程服务控制似乎没什么问题,但这可能是一段非常漫长的旅程。

也许这个页面(它使用Java试图控制Windows服务)也有助于理解。

https://dev.c-ware.de/confluence/pages/viewpage.action?pageId=15007754

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51346269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档