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

2024-04-11

我试图了解通过 impacket 脚本在 Windows 上执行远程命令的所有可用方法:

https://www.coresecurity.com/corelabs-research/open-source-tools/impacket https://www.coresecurity.com/corelabs-research/open-source-tools/impacket

https://github.com/CoreSecurity/impacket https://github.com/CoreSecurity/impacket

我了解 psexec.py 和 smbexec.py 的高级解释,它们如何在远程端创建服务并通过运行命令cmd.exe -c但我不明白如何通过 SMB 在远程 Windows 主机上创建服务。 smb不是应该主要用于文件传输和打印机共享吗?阅读源代码,我在注释中看到他们使用 DCERPC 创建此服务,这是 smb 协议的一部分吗?我发现 DCERPC 上的所有资源都有点令人困惑,并且没有关注其服务创建功能。查看atexec.py的源代码,它说它与windows主机的任务调度程序服务交互,也是通过DERPC。它可以用来与远程盒子上运行的所有服务进行交互吗?

Thanks!


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

MSRPC 是一种在远程端执行函数并传输数据(这些函数的参数)的方法。它不是在远程端直接执行远程操作系统命令的方法。

SMB (https://en.wikipedia.org/wiki/Server_Message_Block https://en.wikipedia.org/wiki/Server_Message_Block)是文件共享协议,主要用于访问Windows文件服务器上的文件。此外,它还提供命名管道(https://msdn.microsoft.com/en-us/library/cc239733.aspx https://msdn.microsoft.com/en-us/library/cc239733.aspx),一种在本地进程和远程进程之间传输数据的方法。

MSRPC 的一种常见方法是通过 SMB 上的命名管道使用它,其优点是 MSRPC 可以直接使用 SMB 提供的安全层。

事实上,MSRPC 是 Windows 世界中最重要但鲜为人知的协议之一。

MSRPC 和 SMB 都与远程执行 shell 命令无关。

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

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

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

我发现的 DCERPC 上的所有资源都有点令人困惑,而且不是 专注于其服务创造能力。

是的,这只是一个远程过程调用协议。但它可以用于在远程端启动一个程序,该程序可以执行任何操作,例如创建服务。

查看 atexec.py 的源代码,它说它与 windows主机的任务调度服务,也是通过DCERPC。 是否可以用来与远程运行的所有服务进行交互 盒子?

有一些处理任务计划程序的 MSRPC 命令,还有一些处理通用服务启动和停止命令。

最后说几句:

SMB / CIFS 及其周围的协议非常复杂且难以理解。尝试了解如何处理例如似乎可以。远程服务控制,但这可能是一个很漫长的旅程。

也许这个页面(使用 Java 来尝试控制 Windows 服务)也可能有助于理解。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 smb 和 DCERPC 的远程命令执行功能 的相关文章

随机推荐