psexec 和 wmic 区别

PsExec

PsExec 是 Sysinternals 套件中的一个工具,主要用于在远程计算机上 执行 进程。它通过 SMB 协议在远程系统上创建一个临时的服务(名为 psexecsvc)来运行你指定的命令,然后将命令的输出返回给你

核心特点

  • 功能:在远程机器上以高权限(通常是 SYSTEM)执行命令或启动程序
  • 工作原理
    1. 连接到远程机器的 Admin$ 共享
    2. 将 PsExec 客户端文件复制到 Admin$\System32\psexec.exe(或类似路径)
    3. 通过服务管理器(SCM)创建一个临时服务来执行命令
    4. 命令执行完毕后,删除服务和客户端文件
  • 典型用途
    • 在远程服务器上启动交互式命令提示符 (PsExec \\remote-pc cmd)
    • 以 SYSTEM 权限运行程序 (PsExec -s \\remote-pc <program.exe>)
    • 执行远程脚本或批处理文件。

优点与缺点

  • 优点
    • 远程执行能力强:能以高权限运行任何可执行文件或命令
    • 支持交互式会话:可以打开一个远程命令提示符,就像在本地操作一样
    • 不依赖 PowerShell 或 WMI 的特定配置
  • 缺点
    • 依赖文件共享:需要 Admin$ 共享可用,且端口 445 必须开放
    • 可能被安全软件检测:其工作方式(文件复制、创建服务)与一些恶意软件类似,可能被杀毒软件或 EDR 标记
    • 网络流量:在执行过程中会产生一些网络流量

WMIC

WMIC (Windows Management Instrumentation Command-line) 是一个命令行工具,用于与 WMI 框架进行交互。WMI 是一个内置于 Windows 的管理接口,提供了查询和管理几乎所有系统信息的标准化方法。WMIC 让你能够从命令行执行这些查询和操作

核心特点

  • 功能:查询系统信息、执行管理任务。它不是用于直接执行远程可执行文件,而是通过 WMI 接口来管理系统
  • 工作原理
    1. 通过 DCOM 协议连接到远程机器的 WMI 服务
    2. 向 WMI 存储库发送查询或命令请求
    3. WMI 服务在远程机器上执行请求,并返回结果
  • 典型用途
    • 查询系统信息:例如,查看远程机器的进程列表 (wmic /node:"remote-pc" process list brief)、服务状态、硬件信息、网络配置等
    • 执行管理任务:例如,终止远程进程 (wmic /node:"remote-pc" process where name="calc.exe" call terminate)、启动或停止服务、修改注册表项等

优点与缺点

  • 优点
    • 系统内置:是 Windows 的一部分,不需要额外下载或分发文件
    • 强大的查询能力:能够通过 WHERE 语句进行复杂的过滤,查询各种系统对象
    • 隐蔽性好:工作在 WMI 协议层,不会像 PsExec 那样创建临时服务或复制文件,因此更难被检测
  • 缺点
    • 命令复杂:语法相对复杂,需要熟悉 WMI 的类和别名
    • 功能限制:虽然可以执行任务,但不能像 PsExec 那样灵活地运行任意的本地程序
    • 依赖:需要远程 WMI 服务开启且 DCOM 端口(通常是 135/TCP)可用
特性 PsExec WMIC
用途 远程执行命令和程序 远程查询和管理系统信息
原理 远程创建服务,运行可执行文件 通过 WMI 接口发送管理命令
协议 SMB (TCP 445) DCOM (TCP 135)
优势 远程执行能力强、支持交互式会话 系统内置、强大的查询过滤、隐蔽性好
缺点 需要文件共享、可能被检测、会产生文件 语法复杂、功能限于 WMI 框架内的操作
场景 当你需要在远程机器上启动一个程序时 当你需要查询远程机器的状态或执行管理任务时
Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-25 03:12:58

results matching ""

    No results matching ""