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

正如我们所看到的,命令是在远程系统中执行的,没有任何问题。
重定向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

如我们所见,远程系统上有一个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

远程用户关闭记事本后,我们将获得本地shell。关闭后,退出代码将打印到psexec控制台。
在远程系统上创建交互式Shell
到目前为止,我们已经远程运行命令。命令执行完毕后,远程系统连接关闭。这就像会话连接。Psexec提供了一个远程shell或命令行。Psexec连接远程并提供一个MS-DOS shell。为了获得远程shell,我们将提供 cmd.exe
远程系统中的命令。
$ psexec 192.168.122.66 -u Administrator -p 123456Ww cmd.exe

以系统权限运行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

用PsGetSid列出远程系统上的SID
SID用于更详细地标识Windows用户。我们可以列出提供给SID的用户 PsGetSid
命令如下。
$ psgetsid 192.168.122.66 -u Administrator -p 123456Ww

使用PSInfo获取远程系统信息
PsInfo是一个用来获取远程系统信息的工具,如正常运行时间、版本、Windows变体等。
$ psinfo 192.168.122.66 -u Administrator -p 123456Ww

有关远程系统的以下信息由提供 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

输出将提供有关远程系统进程的以下信息。
-
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

我们收到消息说 Process 2064 on 192.168.122.66 killed....
使用PsLogList列出远程系统上的事件日志
远程系统日志可以轻松地转储到本地系统中 PsLogList
命令。如果我们在没有任何额外参数的情况下使用这个命令,它将从远程系统转储所有事件日志,这些日志将填充命令行。因此,对于这个示例,我们将使用 -m
选项。
$ psloglist 192.168.122.66 -u Administrator -p 123456Ww -m 5

使用PsPasswd更改远程系统上的密码
远程系统用户的密码可以通过 PSPasswd
命令。在本例中,我们将更改用户 Administrator
密码到 123456Aa
.
$ pspasswd 192.168.122.66 -u Administrator -p 123456Ww Administrator 123456Aa

用PsPing Ping
另一个有用的工具是 PsPing
它将创建要ping的ICMP数据包。此命令将运行本地系统。
$ psping google.com
使用PsService管理远程系统上的服务
PsService
命令用于列出、启动、停止远程系统上的服务。
列出服务
我们可以列出远程服务 query
选项。
$ psservice 192.168.122.66 -u Administrator -p 123456Aa query

远程启动服务
远程服务可以用 start
选项。在本例中,我们将启动名为 ALG
服务。
$ psservice 192.168.122.66 -u Administrator -p 123456Aa start ALG

服务启动后,将打印有关服务的信息。
远程停止服务
我们会阻止 ALG
以下示例中的服务。
$ psservice 192.168.122.66 -u Administrator -p 123456Aa stop ALG

关闭、重新启动、用PSShutdown挂起远程系统
远程系统可以通过 PSShutdown
命令如下。
$ psshutdown 192.168.122.66 -u Administrator -p 123456Aa -k