如何使用Psexec工具运行命令并获取Shell远程Windows系统?

Windows操作系统提供了不同的方法来管理远程系统。Telnet、RDP、VNC就是其中的一些。但这些选项通常绑定到图形用户界面。如果我们更喜欢命令行接口,那么还有一个名为Psexec的替代方案。

null

Psexec实际上是一个由以下工具组成的工具集。

  • PSexec 用于在远程执行命令或从远程系统获取shell
  • PsFile 用于列出远程系统中的文件和文件夹
  • PsGetSid 用于显示远程计算机或用户的安全标识符
  • PsInfo 用于获取有关远程系统的详细信息
  • PsKill 用于根据名称或ID终止远程系统上的进程
  • PsList 用于详细列出远程系统中的进程
  • PsLoggedOn 用于列出远程系统中已登录的用户
  • PsLogList 用于列出驻留在远程系统上的事件日志
  • PsPasswd 用于更改远程系统上给定的用户密码
  • PsPing 用于从远程系统ping
  • PsServervice 用于列出和管理远程系统上的Windows服务
  • PsShutdown 用于关闭、注销、挂起和重新启动远程Windows系统
  • PsSuspend 用于挂起和恢复远程Windows系统上的进程。
  • PsUptime 用于显示远程系统正常运行时间

这些工具中的大多数是以32位和64位体系结构提供的。可以相应地使用二进制文件。

下载Psexec工具

PStools由markrussinovich开发,可以从以下链接下载。PStools是“Sysinternals”套件的一部分,它为系统管理和内部特性提供了许多工具。PStools可以从Sysinternals网站下载。

https://download.sysinternals.com/files/PSTools.zip

运行命令远程系统

Psexec命令的最基本用法只是在远程系统上简单地运行命令。为了在远程系统上运行命令,我们应该为要在远程系统上运行的命令提供用户名和密码。Ps exec的语法如下所示。

psexec [Computer_name or IP] [options] [command] [command_arguments]

在本例中,我们将运行 ipconfig 在其IP地址为 192.168.122.66 . 用户名是 Administrator 密码是 123456Ww .

$ psexec 192.168.122.66 -u Administrator -p 123456Ww ipconfig
Run Command Remote System
运行命令远程系统

正如我们所看到的,命令是在远程系统中执行的,没有任何问题。

重定向Psexec命令输出

在远程系统上运行命令后,命令输出将被打印到当前的标准输出中,这是我们当前的shell。此输出可以重定向到带有>的文件中。如果我们有很多远程系统来运行这个命令,这个选项将非常有用。

$ psexec 192.168.122.66 -u Administrator -p 123456Ww ipconfig > 192.168.122.66_ifconfig

在这个例子中 ipconfig 命令输出保存到名为 192.168.122.66_ipcopnfig .

相关文章: Python子进程和Popen()及其示例

传递散列

在前面的示例中,我们提供了用户密码。唯一的选项不是明文用户密码。我们还可以提供用户令牌的哈希值。下面的示例提供了用户令牌的哈希。

$ psexec 192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t ipconfig

Copy命令 从本地到远程系统

在远程系统上运行命令是一个非常有用的特性,但是还有另一个有用的特性可以简化系统管理员和笔测试人员的工作。Psexec可以用来复制命令 从本地系统到远程系统。我们将使用这个选项 -c 复制。一旦命令完成,远程实例将被删除。

在本例中,我们将复制 cmd.exe . 复制操作完成后,将在远程系统上启动cmd.exe。

$ psexec 192.168.122.66 -u Administrator -p 123456Ww -c cmd.exe
Copy Command From Local To The Remote System
将命令从本地复制到远程系统

如我们所见,远程系统上有一个cmd shell。

以系统用户身份运行命令

在远程系统上运行命令时,权限和进程所有者将是所提供的用户。如果我们需要将远程命令所有者用户更改为 System 我们将提供的用户 -s 选项。

在本例中,我们将使用 regedit.exe

$ psexec 192.168.122.66 -u Administrator -p 123456Ww -s regedit.exe

在远程系统上运行GUI应用程序

Windows操作系统默认提供GUI。Psexec可用于在指定的用户控制台中打开远程系统上的GUI应用程序。用户控制台只是指用户桌面。

在这个应用程序中,我们将开始 notepad.exe 在远程系统上。远程系统 Administrator 用户可以与此记事本交互。

$ psexec 192.168.122.66 -u Administrator -p 123456Ww -i notepad.exe
Run GUI Application On the Remote System
在远程系统上运行GUI应用程序

远程用户关闭记事本后,我们将获得本地shell。关闭后,退出代码将打印到psexec控制台。

在远程系统上创建交互式Shell

到目前为止,我们已经远程运行命令。命令执行完毕后,远程系统连接关闭。这就像会话连接。Psexec提供了一个远程shell或命令行。Psexec连接远程并提供一个MS-DOS shell。为了获得远程shell,我们将提供 cmd.exe 远程系统中的命令。

$ psexec 192.168.122.66 -u Administrator -p 123456Ww cmd.exe
Create Interactive Shell On The Remote System
在远程系统上创建交互式Shell

以系统权限运行Regedit

可以使用名为“Regedit”的GUI工具管理Windows注册表。可以使用当前用户访问Regedit,但在某些情况下,可能需要使用“system”权限编辑本地系统注册表。我们可以使用以下psexec命令以系统权限打开“Regedit”。

$ psexec -s -i regedit.exe

Psexec工具

到目前为止,我们提供了运行远程系统的命令。作为系统管理员,日常操作不会频繁更改。Psexec工具箱提供了一些简单的命令,可以直接运行,而无需将命令添加为参数。我们将在下面介绍这些工具。

相关文章: 什么是MD5哈希校验和?如何创建和验证MD5?

用PsFile列出远程系统上的文件

PsFile命令可用于列出或关闭打开的文件。语法与PSexec命令非常相似。在本例中,我们将列出位于 C:Users 在远程系统上。

$ psfile 192.168.122.66 -u Administrator -p 123456Ww
List File On the Remote System With PsFile
用PsFile列出远程系统上的文件

用PsGetSid列出远程系统上的SID

SID用于更详细地标识Windows用户。我们可以列出提供给SID的用户 PsGetSid 命令如下。

$ psgetsid 192.168.122.66 -u Administrator -p 123456Ww
List SID's On The Remote System With PsGetSid
用PsGetSid列出远程系统上的SID

使用PSInfo获取远程系统信息

PsInfo是一个用来获取远程系统信息的工具,如正常运行时间、版本、Windows变体等。

$ psinfo 192.168.122.66 -u Administrator -p 123456Ww
Get Remote System Information With PSInfo
使用PSInfo获取远程系统信息

有关远程系统的以下信息由提供 PsInfo

  • Uptime 显示系统运行的天数和小时数
  • Kernel Version 显示操作系统内核
  • Product Type 显示操作系统的版本
  • Product Version
  • Kernel Build Number
  • Registered Organization
  • Registered Owner
  • IE Version 显示Internet Explorer版本
  • System Root 显示操作系统的安装位置
  • Processor 显示处理器或线程计数
  • Processor Speed
  • Processor Type`显示详细的处理器版本和名称
  • Physical Memory
  • Video Driver 显示当前加载的驱动程序名称

用PsList在远程系统上列出进程

在远程系统上运行的进程可以很容易地用 PsList 命令。

$ pslist 192.168.122.66 -u Administrator -p 123456Ww
List Process At The Remote System With PsList
用PsList在远程系统上列出进程

输出将提供有关远程系统进程的以下信息。

  • Name 是可执行文件名
  • Pid 是标识进程的进程ID
  • Pri 在重负载时影响进程性能的优先级
  • Thd 是螺纹号
  • Hnd 是打开的文件处理程序计数
  • CPU Time 总CPU资源使用时间
  • Elapsed Time 是从流程开始的时间。

相关文章: 如何递归删除早于1天/1周/1个月的文件

使用PsKill在远程系统中执行杀戮过程

在远程系统上运行的进程可以通过 PsKill 命令。为了杀死进程,我们应该提供进程id或进程名作为参数。我们将终止进程id为的远程进程 2064 .

$ pskill 192.168.122.66 -u Administrator -p 123456Ww  2064
Kill Process At The Remote System With PsKill
使用PsKill在远程系统上终止进程

我们收到消息说 Process 2064 on 192.168.122.66 killed....

使用PsLogList列出远程系统上的事件日志

远程系统日志可以轻松地转储到本地系统中 PsLogList 命令。如果我们在没有任何额外参数的情况下使用这个命令,它将从远程系统转储所有事件日志,这些日志将填充命令行。因此,对于这个示例,我们将使用 -m 选项。

$ psloglist  192.168.122.66 -u Administrator -p 123456Ww -m 5
List Event Logs On The Remote System With PsLogList
使用PsLogList列出远程系统上的事件日志

使用PsPasswd更改远程系统上的密码

远程系统用户的密码可以通过 PSPasswd 命令。在本例中,我们将更改用户 Administrator 密码到 123456Aa .

$ pspasswd  192.168.122.66 -u Administrator -p 123456Ww Administrator 123456Aa
Change Password On The Remote System With PsPasswd
使用PsPasswd更改远程系统上的密码

用PsPing Ping

另一个有用的工具是 PsPing 它将创建要ping的ICMP数据包。此命令将运行本地系统。

$ psping google.com

使用PsService管理远程系统上的服务

PsService 命令用于列出、启动、停止远程系统上的服务。

列出服务

我们可以列出远程服务 query 选项。

$ psservice 192.168.122.66 -u Administrator -p 123456Aa query
List Services
列出服务

远程启动服务

远程服务可以用 start 选项。在本例中,我们将启动名为 ALG 服务。

$ psservice 192.168.122.66 -u Administrator -p 123456Aa start ALG
Start Service Remotely
远程启动服务

服务启动后,将打印有关服务的信息。

远程停止服务

我们会阻止 ALG 以下示例中的服务。

$ psservice 192.168.122.66 -u Administrator -p 123456Aa stop ALG
Stop Service Remotely
远程停止服务

关闭、重新启动、用PSShutdown挂起远程系统

远程系统可以通过 PSShutdown 命令如下。

$ psshutdown 192.168.122.66 -u Administrator -p 123456Aa -k

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享