2009-10-12 65 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); 
相關問題