了解远程命令执行功能的 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
命令,但我不能'不明白如何通过 SMB 在远程 windows 主机上创建服务。 smb 不应该主要用于文件传输和打印机共享吗?阅读源代码我在注释中看到他们使用 DCERPC 创建此服务,这是 smb 协议的一部分吗?我发现 DCERPC 上的所有资源都有些混乱,并且没有专注于其服务创建功能。查看 atexec.py 的源代码,它说它与 windows 主机的任务调度程序服务交互,也是通过 DCERPC。它可以用来与远程盒子上的所有服务 运行ning 交互吗?
谢谢!
DCERPC (https://en.wikipedia.org/wiki/DCE/RPC) : the initial protocol, which was used as a template for MSRPC (https://en.wikipedia.org/wiki/Microsoft_RPC).
MSRPC 是一种在远程端执行函数和传输数据(这些函数的参数)的方法。这不是直接在远程端执行远程OS命令的方法。
SMB (https://en.wikipedia.org/wiki/Server_Message_Block ) is the file sharing protocol mainly used to access files on Windows file servers. In addition, it provides Named Pipes (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就是这么做的。
All the resources on DCERPC i've found were kind of confusing, and not
focused on its service creating capabilities.
是的,它只是一个远程过程调用协议。但它可以用来在远程端启动一个程序,它可以做任何事情,例如创建服务。
Looking at the sourcecode of atexec.py, it says that it interacts with
the task scheduler service of the windows host, also through DCERPC.
Can it be used to interact with all services running on the remote
box?
有一些 MSRPC 命令处理任务计划程序,还有一些处理通用服务启动和停止命令。
最后说几句:
SMB / CIFS 及其周围的协议非常复杂且难以理解。尝试了解如何处理例如似乎没问题。远程服务控制,但这可能是一段很长的旅程。
也许此页面(使用 Java 试图控制 Windows 服务)也可能有助于理解。
https://dev.c-ware.de/confluence/pages/viewpage.action?pageId=15007754
我试图了解所有可用于通过 impacket 脚本在 Windows 上执行远程命令的方法:
https://www.coresecurity.com/corelabs-research/open-source-tools/impacket
https://github.com/CoreSecurity/impacket
我理解 psexec.py 和 smbexec.py 的高级解释,他们如何在远程端创建服务和 运行 通过 cmd.exe -c
命令,但我不能'不明白如何通过 SMB 在远程 windows 主机上创建服务。 smb 不应该主要用于文件传输和打印机共享吗?阅读源代码我在注释中看到他们使用 DCERPC 创建此服务,这是 smb 协议的一部分吗?我发现 DCERPC 上的所有资源都有些混乱,并且没有专注于其服务创建功能。查看 atexec.py 的源代码,它说它与 windows 主机的任务调度程序服务交互,也是通过 DCERPC。它可以用来与远程盒子上的所有服务 运行ning 交互吗?
谢谢!
DCERPC (https://en.wikipedia.org/wiki/DCE/RPC) : the initial protocol, which was used as a template for MSRPC (https://en.wikipedia.org/wiki/Microsoft_RPC).
MSRPC 是一种在远程端执行函数和传输数据(这些函数的参数)的方法。这不是直接在远程端执行远程OS命令的方法。
SMB (https://en.wikipedia.org/wiki/Server_Message_Block ) is the file sharing protocol mainly used to access files on Windows file servers. In addition, it provides Named Pipes (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就是这么做的。
All the resources on DCERPC i've found were kind of confusing, and not focused on its service creating capabilities.
是的,它只是一个远程过程调用协议。但它可以用来在远程端启动一个程序,它可以做任何事情,例如创建服务。
Looking at the sourcecode of atexec.py, it says that it interacts with the task scheduler service of the windows host, also through DCERPC. Can it be used to interact with all services running on the remote box?
有一些 MSRPC 命令处理任务计划程序,还有一些处理通用服务启动和停止命令。
最后说几句:
SMB / CIFS 及其周围的协议非常复杂且难以理解。尝试了解如何处理例如似乎没问题。远程服务控制,但这可能是一段很长的旅程。
也许此页面(使用 Java 试图控制 Windows 服务)也可能有助于理解。
https://dev.c-ware.de/confluence/pages/viewpage.action?pageId=15007754