2009-10-12 80 views

回答

2

如果这很简单,黑客将启动对暴露到互联网的所有计算机的恶意软件。

PSExec通过LAN使用服务控制管理器从'here'(即运行它的机器)启动服务EXE。它需要很多安全特权 - 例如管理员权限。

如果您不想这样做,您可以查看SSH(有开源示例)或远程命令提示符(在Windows资源工具包中)。

+0

如果我正确认识,然后在Java中有可能,在遥控器上创建一个进程电脑要容易得多。这就是为什么我问,如果在C++中可能的话。顺便说一下,目标机器是域名成员,我是管理员的所有电脑,或者如果我不是,我会指定一个用户。 – kampi 2009-10-12 14:39:46

+1

如果您是超级管理员,您可以使用以下技术: 1)使用MoveFileEx()API 将要运行的内容复制到\\ targetmachine \ C $ \ Someplace 2)使用OpenSCManager(“\\ targetmachine“,...)API连接到服务控制管理器 3)使用ServiceControl()API将EXE作为服务”运行“。这不是一项服务,但是在SCM实现这一点之前,您的EXE将运行起来。 – JBRWilkinson 2009-10-13 13:26:24

+0

你可能给我一个例子如何使用ServiceControl()?我找不到任何地方的例子,我可以使用:( – kampi 2009-10-13 18:59:55

1

如果你已经有一台服务在远程机器上运行,你可以要求运行一个程序,那将是最好的。 Windows本身并没有提供任何有用的东西,它确实附带了一个远程外壳服务(通常已停用或未安装)。

IIUC,做什么PSEXEC是这样的:

  1. 拷贝二进制到远程计算机,使用管理共享
  2. 远程安装二进制作为一种服务,使用远程注册表操作
  3. 启动远程服务,使用服务控制管理器API。

如果你不想使用psexec,你仍然可以这样做。请注意,您需要相当一些特权才能这样做。

+0

这有点太多了:)那么,你能否给我一个例子,该怎么做?我不是一个专业的程序员,C++只是我的兴趣所在。不幸的是,我不知道,我应该使用哪种API。你能帮我多一点吗? Thx提前! – kampi 2009-10-12 17:17:11

-1

简单的答案是,你不能。你所能做的就是发送一条消息给远程机器,要求它为你启动进程。 PsExec在远程机器上运行,监听特定的消息并启动进程以响应它们。

您可以使用现有的协议,如PsExec或创建自己的协议。创建你自己的需要你可以在远程机器上安装一个服务。如果远程机器不在您的控制之下,那么这是不可能的。如果您设计自己的系统,则在设计协议时必须小心,因为您不希望在系统中意外打开安全漏洞。

+0

这是不正确的 - 您不必让PSExec在从机上“侦听”以使用它。 – JBRWilkinson 2010-03-10 11:41:41

+0

但肯定有东西要听,如果不是PsExec,那么别的东西。如果PsExec没有自己监听,那么当请求到达时,其他的东西必须唤醒PsExec,这也是一样的。发送到计算机的数据将被丢弃,除非计算机上的某些内容正在侦听并执行响应数据的操作。 – Skizz 2010-03-10 11:54:55

2

您可以使用WMI ...(C#示例,所以你必须找到等价的C++)

ConnectionOptions connectOptions = new ConnectionOptions(); 
    connectOptions.Username = "Administrator"; 
    connectOptions.Password = "TopSecret"; 
    ManagementScope scope = new ManagementScope(
     @"\\" + machine + @"\root\cimv2", 
     connectOptions); 

    scope.Connect(); 
    ManagementPath path = new ManagementPath(@"Win32_Process"); 
    ManagementClass proc = new ManagementClass(scope, path, new ObjectGetOptions()); 
    ManagementBaseObject args = proc.GetMethodParameters("Create"); 
    args["CommandLine"] = "C:\\Windows\\notepad.exe"; 
    proc.InvokeMethod("Create", args, null); 
相关问题