使用WMI-Client-Wrapper执行exe并获取输​​出日志

时间:2018-03-21 06:19:57

标签: python linux

目的: 我正在使用Ubuntu 16.04并使用WMI-CLient-Wrapper模块连接到远程Windows机器并向其发送可执行文件(例如Process Explorer)并进一步执行它并收集它创建的日志并将它们提取回我的Linux机器进一步加工。使用WMI CLient Wrapper是唯一可用的选项,因为WMI模块不能与Linux一起使用。

问题: 通过使用WMI-Client-Wrapper和SMB文件传输机制建立连接,我可以将文件发送到远程Windows机器。之后,当我尝试为此创建一个Process并尝试执行该过程时,它给出了一个错误,指出WMI客户端Wrapper不支持WMI实际拥有的某些属性。

我尝试了什么

Python代码:

import os
import wmi_client_wrapper as wmic
from socket import *
import time

wmic = wmic.WmiClientWrapper(
    host ="192.168.115.128",
username = "LegalWrongDoer",
password = "sasuke14"
)

SW_SHOWNORMAL = 1
str = "smbclient //192.168.115.128/C$ -U LegalWrongDoer%sasuke14 -c \'put \"procexp64.exe\"\'"
os.system(str)
print("Folder sent")
process_startup = wmic.Win32_ProcessStartup.new()
process_startup.ShowWindow = SW_SHOWNORMAL
process_id, result = wmic.Win32_Process.Create(CommandLine="C:/procexp64.exe", ProcessStartupInformation=process_startup)
process_startup.ShowWindow = SW_SHOWNORMAL
if result == 0:
        print("Process started successfully")
else:
        print("Sorry, but can't execute Process!")

当我运行这个python文件时,它给我输出到我做的初始查询。但是Process_StartUp失败了。

进一步跟踪电话:

Traceback (most recent call last):
  File "WMIClient.py", line 22, in <module>
    process_startup = wmic.Win32_ProcessStartup.new()
AttributeError: 'WmiClientWrapper' object has no attribute 'Win32_ProcessStartup'

如果你们中的任何人都能帮助我,我将非常感激。在此先感谢:)

1 个答案:

答案 0 :(得分:0)

好吧,我终于设法为这整个场景做了一个解决方案,它可能看起来有点乱,但它肯定对我有用。

首先,我使用smbclient将可执行文件传输到我想要执行它的端点。在我的代码中,我使用os.system()调用来实现此目的。

import os
str1 = "smbclient //'<HostMachineIP>'/admin$ -U '<domain>\\<username>%<password>' -c \'lcd /usr/local/acpl/bin/endPoint/; put \"EndPointForeignsics.exe\"\'"
os.system(str1)

这有助于我将可执行文件放入用户可以访问的所需共享文件夹(在我的情况下为Admin),然后通过名为 Winexe 的工具使用WMI查询访问端点的控制台/命令提示符。我使用另一个os.system()调用再次执行此操作。

str2 = r'/usr/local/bin/winexe -U "<domain>\\<username>%<password>" //<HostMachineIP> "cmd /c c:\windows\EndPointForeignsics.exe '
os.system(str2)

P.S: - Winexe是一个你必须从互联网下载并编译它的工具。这样做可能需要一些时间和精力,但是可以实现。您将从StackOverflow和该工具的文档中获得相同的帮助。