繁体   English   中英

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

[英]Understanding smb and DCERPC for remote command execution capabilities

我试图通过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主机的任务调度程序服务进行交互。 它可以用于与远程盒上运行的所有服务进行交互吗?

谢谢!

DCERPChttps://en.wikipedia.org/wiki/DCE/RPC ):初始协议,用作MSRPC的模板( https://en.wikipedia.org/wiki/Microsoft_RPC )。

MSRPC是一种在远程端执行功能并传输数据(参数到这些功能)的方法。 它不是在远程端直接执行远程OS命令的方法。

SMBhttps://en.wikipedia.org/wiki/Server_Message_Block )是文件共享协议,主要用于访问Windows文件服务器上的文件。 此外,它还提供了命名管道( 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM