Windows远程执行进程工具psexec和wmiexec介绍

2023-05-16

在自动化测试或者自动化工具开发中,通常需要向其它电脑或者服务器发送指令,比如Windows发送命令到Linux服务器开启某个服务进程,或者读取状态信息,我们可以使用ssh协议实现。

如果Windows主机需要发送命令到局域网内的其它Windows电脑要如何实现呢?在网络安全中称为横向移动的内网渗透方法可实现远程执行命令,横向移动工具有很多,本文介绍psexec和wmiexec这两个工具如何实现远程执行进程。

目录

  • PsExec
  • psexec.py
  • wmiexec.py
  • Psexec和Wmiexec之间的差异
  • 参考文档

PsExec

PsExec是 Windows 资源工具包PsTools中提供的一个远程执行进程的工具,使用服务控制管理器(SCM)远程启动一个服务,并通过服务进程进行远程管理。可用于在其他windows系统上执行进程,并提供交互式控制。

我使用PsExec没有成功启动远程电脑进程,推荐使用后面介绍的psexec.py脚本。

PsTools下载地址:https://learn.microsoft.com/zh-cn/sysinternals/downloads/psexec

在这里插入图片描述

使用前需要先退出目标电脑的杀毒软件,并关闭防火墙。

命令格式:

$ psexec \\hostIp -u [username] -p [password] cmd

psexec.py

psexec.py是 Python impacket 包提供的远程执行脚本。

安装命令:

$ python3 -m pip install impacket

安装完成后,可在python安装路径下的Scripts目录中找到psexec.py脚本。

命令格式:

Python psexec.py <username>:"<password>"@<IP address> cmd

示例:

1、进⼊半交互式shell

python psexec.py Administrator:admin@192.168.0.93
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation

[*] Requesting shares on 192.168.0.93.....
[*] Found writable share ADMIN$
[*] Uploading file BIlvtqil.exe
[*] Opening SVCManager on 192.168.0.93.....
[*] Creating service BVDe on 192.168.0.93.....
[*] Starting service BVDe.....
[!] Press help for extra shell commands
[-] Decoding error detected, consider running chcp.com at the target,
map the result with https://docs.python.org/3/library/codecs.html#standard-encodings
and then execute smbexec.py again with -codec and the corresponding codec
Microsoft Windows [�汾 6.1.7601]

[-] Decoding error detected, consider running chcp.com at the target,
map the result with https://docs.python.org/3/library/codecs.html#standard-encodings
and then execute smbexec.py again with -codec and the corresponding codec
��Ȩ���� (c) 2009 Microsoft Corporation����������Ȩ����


C:\Windows\system32>

2、执行脚本

编写一个Python脚本demo.py:

print("hello world")

放到远程电脑的D盘根目录下,然后在本地电脑打开cmd窗口执行:python psexec.py Administrator:admin@192.168.0.93 "python D:/demo.py"

python psexec.py Administrator:admin@192.168.0.93 "python D:/demo.py"
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation

[*] Requesting shares on 192.168.0.93.....
[*] Found writable share ADMIN$
[*] Uploading file pnZHQfBI.exe
[*] Opening SVCManager on 192.168.0.93.....
[*] Creating service SFff on 192.168.0.93.....
[*] Starting service SFff.....
[!] Press help for extra shell commands
hello world
[*] Process python D:/demo.py finished with ErrorCode: 0, ReturnCode: 0
[*] Opening SVCManager on 192.168.0.93.....
[*] Stopping service SFff.....
[*] Removing service SFff.....
[*] Removing file pnZHQfBI.exe.....
[-] Error performing the uninstallation, cleaning up

其它示例:

# 获取远程电脑主机名
python psexec.py Administrator:admin@192.168.0.93 "hostname" 
# 启动远程电脑的IxiaEndpoint服务
python psexec.py Administrator:admin@192.168.0.93 "net start IxiaEndpoint"

3、使用Pythonsubprocess库来读取进程返回结果

import subprocess

command = 'python D:/attrobot3/Scripts/psexec.py Administrator:admin@192.168.0.93 "python D:/demo.py"'
p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE).stdout
print(p.read().decode('utf-8'))

wmiexec.py

Wmiexec也是一种横向移动工具,它利用了Windows Management Instrumentation (WMI) 接口来远程管理Windows系统。WMI是一个Windows操作系统提供的系统管理工具,它提供了一套API接口,可以对本地和远程Windows系统进行管理。如查看进程列表、执行命令、上传和下载文件等。

在使用Wmiexec之前,需要先在目标Windows系统上启用WMI服务,并且确保防火墙不会阻止WMI的通信。

wmiexec.py也来自于impacket工具包,支持的参数可执行 python wmiexec.py 命令查看,下面介绍几种用法。

1、进⼊半交互式shell

$ python wmiexec.py Administrator:admin@192.168.0.93
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation

[*] SMBv2.1 dialect used
[!] Launching semi-interactive shell - Careful what you execute
[!] Press help for extra shell commands
C:\>

2、执行脚本

$ python wmiexec.py Administrator:admin@192.168.168.93 "python D:/demo.py"
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation

[*] SMBv2.1 dialect used
hello world

Psexec和Wmiexec之间的差异

以下内容采用ChatGPT生成:

Wmiexec和Psexec是用于在Windows系统上执行命令和脚本的工具,它们各自的特点如下:

Wmiexec的特点:

  • 使用WMI接口远程连接到Windows系统,可以执行更高级别的管理操作,如注册表操作和事件订阅等。
  • 可以编写自定义WMI脚本来扩展其功能。
  • 使用WMI接口时,对防火墙没有太大的依赖。

Psexec的特点:

  • 使用服务控制管理器(SCM)远程启动一个服务,并通过服务进程进行远程管理。
  • 支持Windows NT及以上版本的操作系统。
  • 执行速度较快,比Wmiexec更快。
  • 可以隐藏服务进程的图标和窗口。

总的来说,Wmiexec适用于基于WMI的管理和远程控制,可以进行更高级别的操作,但执行速度较慢。Psexec则适合用于执行命令和脚本等任务,执行速度快,但不能进行高级别的操作。选择哪种工具取决于具体的使用场景和需求。

参考文档

  1. impacket包:https://github.com/fortra/impacket
  2. PsTools下载地址:https://learn.microsoft.com/zh-cn/sysinternals/downloads/psexec
  3. PowerShell远程: https://www.anyviewer.com/how-to/remotely-run-programs-on-another-computer-2578.html
--THE END--
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows远程执行进程工具psexec和wmiexec介绍 的相关文章

  • 如何批量获取子字符串在字符串中的位置

    获取子串的位置 Set str1 This is Test string Set sstr Test 这里我需要获取 Test 8 的位置 谢谢 echo OFF SETLOCAL Set str1 This is Test string
  • 更改当前工作目录 VS13?

    如本文所述post https stackoverflow com questions 11979632 c sdl why does sdl loadbmp return null我调试 SDL 程序时的工作目录是相对于 vcproj 而
  • Python Popen 与 psexec 挂起 - 不良结果

    我对 subprocess Popen 和我认为是管道的问题有疑问 我有以下代码块 从 cli 运行时 100 都不会出现问题 p subprocess Popen psexec serverName get cmd c ver echo
  • 如何在拥有句柄时检查给定进程是否正在运行

    我在用ShellExecuteEx启动应用程序 成功开始阅读后TShellExecuteInfo hProcess获取已启动进程的句柄 我想定期检查我的应用程序启动的进程是否仍在运行 两个或多个同名进程可以同时运行 我想确保我的应用程序正在
  • Windows 等效的系统配置目录

    我正在 Ruby 中开发一个 CLI 应用程序 我希望允许通过标准配置文件级联在 Unix 中进行配置 etc appnamerc appnamerc 然而 该应用程序也应该在 Windows 环境中运行 我不确定将像这样的文件放在哪里 e
  • Notepad++ - 使函数“可点击”?

    我只是想这可能有用 但我找不到办法 在 Notepad 中 有没有一种方法可以使函数名称 可单击 即使它们成为链接 这样如果您单击它们 它会自动将您带到其定义 最好是跨整个代码库 目前还没有插件提供可直接单击的函数名称 但您可以尝试使用 S
  • 在 Windows cmd 中,如何在不引用完整路径的情况下运行当前目录中的可执行文件(而不是 %PATH% 中同名的可执行文件)? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试运行可执行文件foobar来自目录 但 Windows 也恰好有一个名为的可执行文件 或命令 foobar 在 UNIX 中 我
  • EnumDisplayDevices 与 WMI Win32_DesktopMonitor,如何检测活动监视器?

    对于我当前的 C 项目 我需要为在大量计算机上连接并处于活动状态的每个监视器检测一个唯一的字符串 研究指出了两种选择 使用 WMI 并查询 Win32 DesktopMonitor 以获取所有活动监视器 使用 PNPDeviceID 来唯一
  • _CrtCheckMemory使用示例

    我试图了解如何使用 CrtCheckMemory追踪我正在开发的 Windows 应用程序中的堆损坏 我似乎无法让它返回false 这是我的测试代码 int test new int 1 for int i 0 i lt 100 i tes
  • 在 Python 中静默打印 PDF

    我正在尝试使用 Python 打印 PDF 而不打开 PDF 查看器应用程序 Adobe Foxit 等 我还需要知道打印何时完成 以删除文件 Here http permalink gmane org gmane comp python
  • 解密/读取/修改“.automaticDestinations-ms”和/或“.customDestinations-ms”

    有谁知道如何读取 Microsoft 为 JumpList 创建的文件 我想从 JumpList 中清除所有历史记录 最常访问的 最近关闭的 而不清除任务 我尝试使用 win7api 中的 APPID 并清除例如 google chrome
  • x86 LargeAddressAware 兼容性的单元测试

    对于 win32 可执行文件 x86 我们可以设置 LargeAddressAware 标志 以便它在 x64 Windows 上运行时可以访问 4 GB 而不是仅 2 GB 的虚拟地址空间 这看起来很吸引人 然而 这也存在风险 例如参见
  • WndProc调用机制(WinAPI)

    我试图了解 Windows 应用程序是如何工作的 有一个WndProc函数 其中发生消息处理 LRESULT CALLBACK WndProc HWND hwnd UINT msg WPARAM wParam LPARAM lParam s
  • Chromium 中的 MP4 编解码器支持

    我们已将 Chromium 嵌入式框架集成到我们的 Windows 游戏中 以允许我们从应用程序内渲染网页 并且一切正常 除了 MP4 视频 据我所知 由于许可问题 Chromium 不包含此编解码器 但任何人都可以提供有关我们如何添加支持
  • 防止 DLL 文件通过 MS Detours 加载到我的进程中

    我想阻止特定的第三方 DLL 文件在运行时加载到我的应用程序进程中 我最初的尝试是使用 MS Detours 产品 我有一个32位的MFC http en wikipedia org wiki Microsoft Foundation Cl
  • msvcrt.getch() 每次都会检测到空格

    我正在编写一个简单的Python代码 它应该检测我的击键 但由于某种原因 在每次击键后检测空格 代码 import msvcrt print press escape to quit text while 1 char msvcrt get
  • 如何在Windows命令行中执行for循环?

    我想知道这是否可能 我不熟悉使用 Windows 命令行 但我必须将它用于我正在处理的项目 我有许多文件 我需要为每个文件执行一个功能 我习惯使用 python 但显然这有点不同 所以我希望得到一些帮助 基本上 我需要 for 循环来迭代文
  • 是否有可能劫持标准输出

    我正在尝试使用 C 重定向 Windows XP 上已运行进程的标准输出 我知道如果我自己生成进程 我可以做到这一点 但对于这个应用程序 我更喜欢一个 监听器 我可以附加到另一个进程 这在纯 Net 中可能吗 如果不可能 在 Win32 中
  • 将 Azure 网站迁移到 Azure 云服务

    我有一个项目 我计划将 Web 应用程序作为 Azure 网站启动 然后将其迁移到 Azure 云服务 也称为托管服务 如果需要作为扩展策略 做出这个决定是因为我了解到 Azure 网站的开发更加简单 快速 几乎不需要特定于 Azure 的
  • 当我的进程被终止时到底会发生什么?

    我有一个包含本机代码和托管代码的混合进程 在 Windows Server 2003 上运行 当我从进程资源管理器中终止进程时 它会进入 100 cpu 的状态 并在消失之前保持这种状态一段时间 有时甚至 10 分钟 在此期间我无法 杀死

随机推荐

  • MySQL锁:全局锁、表级锁和行锁

    事务的实现离不开MySQL数据库的锁机制 xff0c 设计锁的目的也是为了处理并发访问问题 xff0c 本文简单介绍MySQL 里面的全局锁 表级锁和行锁三类锁 目录 全局锁表级锁表锁1 读锁实例2 写锁实例 元数据锁 行锁行锁简介行锁实例
  • Java环境安装配置步骤介绍

    本文记录Windows环境和Linux环境 centos7 安装Java以及Linux环境升级Java JDK版本的步骤 目录 Windows环境安装Java JDK1 下载安装2 配置环境变量 Linux环境安装Java JDK1 下载安
  • Maven 安装和配置方法详解

    通常一个Java项目会引用大量的 jar 包 xff0c 而jar 包之间可能存在各种依赖关系 xff0c 如果运行Java项目时仅使用classpath 参数来管理jar包会非常不方便 xff0c 此外 xff0c 在项目编译 打包 升级
  • MySQL索引介绍

    索引主要是用来提高数据库的查询效率的 xff0c 它对指定的列或列的集合生成索引 xff0c 然后可以通过索引来检索目标数据 xff0c 就像目录一样 xff0c 缩小了扫描范围 xff0c 大大提高了查询效率 如果不使用索引 xff0c
  • 第二、UIScrollView的使用大全

    UIScrollView 原理详解 ScrollView UIScrollView UIScrollView 为了显示多于一个屏幕的内容或者超过你能放在内存中的内容 Scroll View 为你处理缩小放大手势 xff0c UIScroll
  • 持续集成平台Jenkins:docker镜像升级

    Jenkins 2 357 及 LTS 2 361 1之后的版本要求Java 11 或者 17 xff0c 如果使用的是Java 8 xff0c 要升级最新版本的Jenkins xff0c 就需要升级Java JDK版本 xff0c 本文记
  • 持续集成:通过Jenkins API创建项目和节点

    我在持续集成 xff1a Jenkins API使用方法详细介绍中介绍了jenkins API的使用方法 xff0c 比如使用API读取jenkins项目相关信息 触发构建等操作 xff0c 除此之外 xff0c 还可以直接使用API来创建
  • Android APP稳定性测试工具Fastbot

    我在 自动遍历测试之Monkey工具 和 AppCrawler自动遍历测试 分别介绍了APP稳定性测试工具monkey和AppCrawler xff0c 它们各有优缺点 xff0c 本文介绍另一款也比较好用的稳定性测试工具Fastbot 目
  • 持续集成:使用Jenkins API创建视图

    持续集成 xff1a 通过Jenkins API创建项目和节点介绍了使用jenkins API来创建项目和新建节点 xff0c jenkins API也可以创建视图 xff08 view xff09 目录 1 获取视图配置文件2 创建视图3
  • Fiddler抓取手机APP报文

    Http协议代理工具有很多 xff0c 比如Burp Suite Charles Jmeter Fiddler等 xff0c 它们都可以用来抓取APP报文 xff0c 其中charles和Burp Suite是收费的 xff0c Jmete
  • 使用Jmeter抓取手机APP报文并进行APP接口测试

    Jmeter是一个比较常用的接口测试工具 xff0c 尤其是接口性能测试 当然它也可以用来测试手机APP的HTTP接口 xff0c 我在Fiddler抓取手机APP报文 和 接口测试代理工具charles mock测试 分别介绍了Fiddl
  • 禅道二次开发技巧

    本文记录一些进行禅道二次开发的技巧 目录 代码调试方法1 xff1a error log方法方法2 xff1a file put contents方法方法3 xff1a a var 方法 禅道扩展技巧1 读取当前用户2 读取当前模块方法名3
  • git merge 和 git rebase 的区别

    Git版本控制中 xff0c git rebase 和 git merge 这两个命令都可以用来集成从一个分支和另一个分支的更改 它们是两种不同的合并方法 xff0c 本文将介绍它们的差异 git rebase 和 git merge 主要
  • SVN项目迁移到Git方法

    本文记录如何将SVN项目迁移到Git xff0c 并保留提交日志信息 目录 Git和SVN差异环境准备Git安装 配置 项目迁移1 将源SVN库转换到Git本地仓库2 添加Git远程库地址3 推送代码到Git 常见错误参考文档 Git和SV
  • Python日志系统logging使用介绍

    日志记录对于软件开发调试和运行都非常重要 Python标准库提供了一个日志记录系统 xff0c 可以很方便的在python项目中添加日志记录 本文将详细介绍如何使用python的 logging 模块来记录日志 目录 基础使用日志级别基本配
  • xrdp连接太多后,连接不上的解决方法

    因为每次都是新建连接 xff0c 端口不断被占用 默认session个数10个 有一个最简单的 xff0c 但是不推荐的办法 xff0c 就是把最大连接数改大 xff0c 比如原来是10 xff0c 就改为100 这种方式治标不治本 xff
  • Python中 os.popen、os.system和subprocess.popen方法介绍

    Python 提供了多种与操作系统交互的方法 xff0c 比如os模块中的popen和system方法 xff0c 此外 xff0c Python subprocess模块中的Popen类也提供了与操作系统交互的方法 xff0c 使用起来更
  • 性能测试工具 IxChariot:Tcl脚本调用方法介绍

    ixChariot是一款功能强大的性能测试软件 xff0c 可用来测试有线和无线性能 xff0c 可以模拟真实应用程序流量 xff0c 并提供关键性能指标 xff0c 包括吞吐量 丢包 抖动 延迟 MOS等 本文简单介绍如何使用IxChar
  • 代码评审平台Gerrit安装配置方法介绍

    Gerrit是一款开源免费的基于 web 的代码审查工具 xff0c 是基于 Git 的版本控制系统 在代码入库之前对开发人员的提交进行审阅 xff0c 检视通过的代码才能提交入库 本文记录如何安装部署gerrit平台 目录 Gerrit简
  • Windows远程执行进程工具psexec和wmiexec介绍

    在自动化测试或者自动化工具开发中 xff0c 通常需要向其它电脑或者服务器发送指令 xff0c 比如Windows发送命令到Linux服务器开启某个服务进程 xff0c 或者读取状态信息 xff0c 我们可以使用ssh协议实现 如果Wind