用于启动软件安装的RPC命令

时间:2010-04-09 16:39:26

标签: rpc execution

我最近使用Symantech的一款名为Norton EndPoint保护的产品。它由服务器控制台应用程序和部署应用程序组成,我想将他们的部署方法合并到我的某个产品的未来版本中。

部署应用程序允许您选择运行Win2K,WinXP或Win7的计算机工作站。工作站的选择由AD(Active Directory)或NT域(WIN / DNS NetBIOS查找)提供。从列表中,可以单击并选择要部署端点软件的工作站,这是Symantech的病毒和软件。间谍软件保护套件。

然后,在选择哪些工作站应该收到包后,软件会将setup.exe程序复制到每个工作站(可通过管理共享\ pcname \ c $),然后命令工作站执行setup.exe,从而导致工作站安装软件。

我非常喜欢他们的产品如何运作,但不确定他们正在做什么来完成所有步骤。我没有对此进行任何深入的调查,例如嗅探网络等......并且想在这里查看是否有人熟悉我正在谈论的内容,如果你知道它是如何完成的或有想法如何可以完成。

我的想法是他们正在使用管理员共享将软件复制到选定的工作站,然后发出RPC调用来命令工作站进行安装。

有趣的是,工作站在没有任何已登录用户知道发生了什么的情况下执行此操作,直到需要重新启动的最后。此时,用户会弹出一个要求现在或稍后重启的弹出窗口等...我的预感是setup.exe程序正在弹出此消息。

重点:我正在寻找一种基于Windows的机器可以告诉另一台机器执行某些操作或运行某些程序的机制。

我的编程语言是C / C ++

任何想法/建议都表示赞赏。

2 个答案:

答案 0 :(得分:3)

我也在研究这个,因为我也想远程部署软件。我选择了数据包sniff pstools,因为它已证明在这样的远程管理任务中非常可靠。

我必须承认,我绝对过分思考这一挑战。你可能已经完成了你的数据包嗅探并发现了我所拥有的相同内容。我希望通过留下这篇文章,我们可以帮助其他开发人员。

这就是pstools完成任意代码执行的方式:

它将系统服务可执行文件复制到\\ server \ admin $(您必须已在远程计算机上拥有本地管理员,或提供凭据)。复制文件后,它使用服务控制管理器API将复制的文件作为系统服务并启动它。

显然,这个系统服务现在可以做任何想做的事情,包括绑定到RPC命名管道。在我们的例子中,系统服务将安装msi。要获得成功安装的确认,您可以远程轮询注册表项或rpc函数。无论哪种方式,你应该在完成后删除系统服务并删除文件(psexec没有这样做,我猜他们不希望它被秘密使用,在这种情况下,将服务留在后面至少会给出一个管理员有机会意识到有人已经破坏了他们的盒子。)这种方法不需要任何预配置远程机器,只需要你有管理员信誉,并且文件共享和rpc在防火墙中是打开的。

我在C#中看过使用WMI的演示,但我不喜欢这些解决方案。文件共享和RPC最有可能在防火墙中打开。如果不是,则远程服务器的文件共享和远程MMC管理将不起作用。 WMI可以被阻止,但仍然可以保留这些功能。

我已经使用了很多进行远程安装的软件,其中很多都不如pstools那么可靠。我的猜测是,这是因为那些开发人员使用的其他方法不太可能在防火墙级别打开。

简单的解决方案往往是最难以捉摸的。和往常一样,我的帽子是给SysInternals的人。他们是真正的黑客,在积极的,旧的学校意义上的这个词!

答案 1 :(得分:0)

LANDesk和Altiris产品也提供此类功能。您需要在客户端使用守护进程的侦听器,该侦听器将侦听来自服务器的指令/连接。一旦建立连接,就会发生任何事情:您可以通过透明的方式向该框上的任何用户传输文件,启动安装脚本等。

我已经使用Twisted Framework(http://twistedmatrix.com)与少数Linux机器一起使用。它是Python和Linux,而不是Windows,但前提是相同的:侦听客户端接受来自服务器的指令并执行它们。非常简单。

此功能也可以使用基于Windows的域中的VB / Powershell脚本完成。