简介
PsTools是Sysinternals Suite中一款排名靠前的一个安全管理工具套件。现在被微软收购。目前pstools中含各式各样的小工具。如果将它们灵活的运用,将会在渗透中收到奇效。
所有的pstool第一次运行时都会弹框。可以用–accepteula这个参数绕过。
PsTools包括如下工具:
- PsSuspend 挂起进程
- PsShutdown 关闭重启计算机等
- PsExec 执行进程
- PsFile 查询本地系统上被远程系统打开的文件。
- PsGetSid 读取计算机的SID
- PsInfo 用于收集有关本地或远程系统的关键信息
- PsLogList 系统事件日志查询
- PsPasswd 更改帐户密码的工具
- PsKill 进程终止实用工具
- PsList 进程信息查询
工具下载地址:PsTools – Sysinternals | Microsoft Learn
环境
使用工具注意:
-
工具支持对远程系统的操作,并且远程系统不需要安装任何软件。
-
远程计算机必须可通过 NT 网络社区进行访问。一般只要远程共享可访问即支持,但是需要注意是否安装杀毒软件。
-
要将文件夹共享关闭,并调用如下命令。否则出现:不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接。中断与此服务器或共享资源的所有连接,然后再试一次
net use * /del /y
PsSuspend
PsSuspend 允许在本地或远程系统上挂起进程,在进程消耗资源 ((例如网络、CPU 或磁盘) )时,可能需要使用这些进程。 暂停可让你在稍后的某个时间点继续操作,而不是终止消耗资源的进程。
PsSuspend 用法:
pssuspend [- ] [-r] [\\computer [-u username] [-p password]] <进程名称|进程 ID>
# 示例
pssuspend \\10.125.17.32 -u Administrator -p 123456 VdSession
参数 | 说明 |
---|---|
– | 显示支持的选项。 |
-r | 恢复指定的进程(如果挂起)。 |
\computer | 指定要在其中挂起或恢复的进程正在执行的计算机。 远程计算机必须可通过 NT 网络社区进行访问。 |
-u 用户名 | 如果要在远程系统上挂起进程,并且您正在执行的帐户对远程系统没有管理权限,则必须使用此命令行选项以管理员身份登录。 如果未将密码包含在 -p 选项中, PsSuspend 将提示输入,而不会将输入回显到显示器。 |
-p 密码 | 此选项允许你在命令行上指定登录密码,以便可以从批处理文件使用 PsSuspend 。 如果指定帐户名称并省略 -p 选项 PsSuspend 以交互方式提示输入密码。 |
进程 ID | 指定要挂起或恢复的进程的进程 ID。 |
进程名称 | 指定要暂停或恢复的进程的进程的名称。 |
PsShutdown
PsShutdown 是一个命令行实用工具,类似于 Windows 2000 资源工具包中的关闭实用工具,但能够执行更多操作。 除了支持关闭或重新启动本地或远程计算机的相同选项外, PsShutdown 还可以注销主机用户或锁定主机 (锁定需要 Windows 2000 或更高版本) 。 PsShutdown 不需要手动安装客户端软件。
PsShutdown 用法:
psshutdown [[\\computer[,computer[,..] | @file [-u 用户 [-p psswd]]]-s|-r|-h|-d|-k|-a|-l|-o [-f] [-c] [-t nn|h:m] [-n s] [-v nn] [-e [u|p]:xx:yy] [-m “message”]
psshutdown \\10.125.17.32 -u Administrator -p 123456 -r
参数 | 说明 |
---|---|
– | 显示支持的选项。 |
\computer | 对指定的远程计算机或计算机执行命令。 如果省略该命令在本地系统上运行的计算机名称,并且如果指定通配符 (\*) ,该命令将在当前域中的所有计算机上运行。 |
@file | 在指定的文本文件中列出的每台计算机上运行该命令。 |
-u | 指定用于登录到远程计算机的可选用户名。 |
-p | 指定用户名的可选密码。 如果省略此内容,系统会提示输入隐藏的密码。 |
-a | 在倒计时中止关闭 。 |
-c | 允许由交互式用户中止关闭。 |
-d | 挂起计算机。 |
-e | 关闭原因代码。 |
为用户原因代码指定“u”,并为计划关闭原因代码指定“p”。 | |
xx 是代码 (必须小于 256) 的主要原因。 | |
yy 是 (必须小于 65536) 的次要原因代码。 | |
-f | 强制所有正在运行的应用程序在关闭期间退出,而不是让他们有机会正常保存其数据。 |
-h | 休眠计算机。 |
-k | 如果不支持关闭电源,则关闭计算机 ,重新启动。 |
-l | 锁定计算机。 |
-m | 使用此选项,可以在关闭倒计时开始时指定要显示给登录用户的消息。 |
-n | 指定连接到远程计算机的超时(以秒为单位)。 |
-o | 注销控制台用户。 |
-r | 关闭后重新启动。 |
-s | 关闭而不关闭电源。 |
-t | 指定关闭 (默认值为 20 秒) 的倒计时,或 24 小时表示法 (关闭时间) 。 |
-v | 显示关闭前指定秒数的消息。 如果省略此参数,则关闭通知对话框将显示并指定值 0 会导致无对话。 |
PsService
PsService 是Windows的服务查看器和控制器。 与 Windows NT 和 Windows 2000 资源工具包中包含的 SC 实用工具一样,PsService 会显示服务的状态、配置和依赖项,并允许启动、停止、暂停、恢复和重启它们。 与 SC 实用工具不同, PsService 允许你使用其他帐户登录到远程系统,以防运行该帐户的帐户对远程系统没有所需的权限。 PsService 包含唯一的服务搜索功能,用于标识网络上服务的活动实例。 例如,如果要查找运行 DHCP 服务器的系统,可以使用搜索功能。
PsService 用法:
psservice [\\computer [-u username] [-p password]] <commandoptions><>
# 示例
psservice \\10.125.17.32 -u Administrator -p 123456 query
参数 | 说明 |
---|---|
query | 显示服务的状态。 |
config | 显示服务的配置。 |
setconfig | 设置服务 (禁用、自动、需求) 的启动类型。 |
start | 启动服务。 |
stop | 停止服务。 |
restart | 停止,然后重启服务。 |
pause | 暂停服务 |
cont | 恢复暂停的服务。 |
depend | 列出依赖于指定的服务。 |
security | 转储服务的安全描述符。 |
find | 在网络中搜索指定的服务。 |
\computer | 面向指定的 NT/Win2K 系统。 如果安全凭据不允许从远程系统获取性能计数器信息,请包括具有用户名和密码的 -u 开关以登录到远程系统。 如果指定 -u 选项,但未使用 -p 选项的密码, PsService 将提示输入密码,并且不会将其回显到屏幕。 |
PsPing
PsPing是一个用于测量网络性能的命令行实用程序。除了标准的ICMP ping功能外,它还可以报告连接到TCP端口的延迟、系统间TCP往返通信的延迟以及系统间连接可用的TCP带宽。除了获得0.01ms分辨率的最小值、最大值和平均值之外,还可以使用pspring生成结果的直方图,以便导入电子表格。
ICMP ping用法:
psping [[-6]|[-4]] [-h [buckets | <val1>,<val2>,...]] [-i <interval>] [-l <requestsize>[k|m] [-q] [-t|-n <count>] [-w <count>] <destination>
# 示例:
psping -h -i 1 10.125.17.32
参数 | 说明 |
---|---|
-h | 打印直方图 (默认存储桶计数为 20) 。 |
如果指定单个参数,则会将其解释为存储桶计数,直方图将包含覆盖整个时间范围的存储桶数。 指定以逗号分隔的时间列表,以创建自定义直方图 (例如“0.01,0.05,1,5,10”) 。 | |
-i | 间隔(秒)。 为快速 ping 指定 0。 |
-l | 请求大小。 为千字节追加“k”,为兆字节追加“m”。 |
-n | ping 数或追加“s”以指定秒,例如“10s”。 |
-q | 不要在 ping 期间输出。 |
-t | Ping,直到使用 Ctrl+C 停止,然后键入 Ctrl+Break 进行统计信息。 |
-w | 默认值为 1 ,具有指定迭代数的预热。 |
-4 | 强制使用 IPv4。 |
-6 | 强制使用 IPv6。 |
TCP ping 用法:
psping [[-6]|[-4]] [-h [buckets | <val1>,<val2>,...]] [-i <interval>] [-l <requestsize>[k|m] [-q] [-t|-n <count>] [-w <count>] <destination:destport>
# 示例:
psping -h 10.125.17.32:9001
参数 | 说明 |
---|---|
-h | 打印直方图 (默认存储桶计数为 20) 。 |
如果指定单个参数,则会将其解释为存储桶计数,直方图将包含覆盖整个时间范围的存储桶数。 指定以逗号分隔的时间列表,以创建自定义直方图 (例如“0.01,0.05,1,5,10”) 。 | |
-i | 间隔(秒)。 为快速 ping 指定 0。 |
-l | 请求大小。 为千字节追加“k”,为兆字节追加“m”。 |
-n | ping 数或追加“s”以指定秒,例如“10s”。 |
-q | 不要在 ping 期间输出。 |
-t | Ping,直到使用 Ctrl+C 停止,然后键入 Ctrl+Break 进行统计信息。 |
-w | 默认值为 1 ,具有指定迭代数的预热。 |
-4 | 强制使用 IPv4。 |
-6 | 强制使用 IPv6。 |
TCP 和 UDP 延迟使用情况:
# 服务器
psping [[-6]|[-4]] [-f] <-s source:sourceport>
# 客户端
psping [[-6]|[-4]] [-f] [-u] [-h [buckets | <val1>,<val2>,...]] [-r] <-l requestsize>[k|m]] <-n count> [-w <count>] <destination:destport>
参数 | 说明 |
---|---|
-f | 运行过程中的开源防火墙端口。 |
-u | UDP (默认值为 TCP) 。 |
-h | 打印直方图 (默认存储桶计数为 20) 。 |
如果指定单个参数,则会将其解释为存储桶计数,直方图将包含覆盖整个时间范围的存储桶数。 指定以逗号分隔的时间列表,以创建自定义直方图 (例如“0.01,0.05,1,5,10”) 。 | |
-l | 请求大小。 为千字节追加“k”,为兆字节追加“m”。 |
-n | 发送/接收数。 追加“s”以指定秒,例如“10s” |
-r | 从服务器接收,而不是发送。 |
-w | 默认值为 5 () ,使用指定的迭代数进行预热。 |
-4 | 强制使用 IPv4。 |
-6 | 强制使用 IPv6。 |
-s | 服务器侦听地址和端口。 |
PsPasswd
在多台计算机上管理本地管理帐户的系统管理员需要定期更改帐户密码,这是标准安全实践的一部分。PsPasswd是一个允许您在本地或远程系统上更改帐户密码的工具,使管理员能够创建批处理文件,针对他们管理的计算机运行PsPasswd,以便对管理员密码进行大量更改。
用法:pspasswd [\computer[,computer[,…] | @file [-u username [-p password]]] Username [NewPassword]]
PsLogList
资源工具包附带了一个实用程序elogdump,它允许您将事件日志的内容转储到本地或远程计算机上。PsLogList是elogdump的克隆,只是PsLogList允许您在当前安全凭证集不允许访问事件日志的情况下登录到远程系统,并且PsLogList从您所查看的事件日志所在的计算机检索消息字符串。
用法: psloglist [- ] [\computer[,computer[,…] | @file [-u 用户名 [-p password]]][-s [-t 分隔符]][-m #|-n #|-h #|-d #|-w][-c][-x][-r][-a mm/dd/yy][-b mm/dd/yy][-f 筛选器][-i ID[,ID[,…] | -e ID[,ID[,…]]][-o 事件源[,事件源][,…]] [-q 事件源[,事件源][,…]]] [-l 事件日志文件]
参数 | 说明 |
---|---|
@file | 在文件中列出的每台计算机上执行该命令。 |
-a | 转储记录在指定日期之后的时间戳。 |
-b | 转储记录在指定日期之前时间戳。 |
-c | 显示后清除事件日志。 |
-d | 仅显示前 n 天记录。 |
-c | 显示后清除事件日志。 |
-e | 排除具有指定 ID 或 ID 的事件, (最多 10) 。 |
-f | 使用筛选器字符串 (筛选事件类型,例如“-f w”以筛选) 警告。 |
-h | 仅显示前 n 小时内的记录。 |
-i | 仅显示具有指定 ID 或 ID 的事件, (最多 10) 。 |
-l | 从指定的事件日志文件中转储记录。 |
-m | 仅显示前 n 分钟记录。 |
-n | 仅显示指定的最新条目数。 |
-o | 仅显示来自指定事件源的记录 (,例如 \“-o cdrom\”) 。 |
-p | 指定用户名的可选密码。 如果省略此内容,系统会提示输入隐藏的密码。 |
-q | 省略指定事件源或源中的记录 (,例如 \“-q cdrom\”) 。 |
-r | 从最近到最近的 SDump 日志。 |
-s | 此开关包含 PsLogList 打印每行一行事件日志记录,用逗号分隔字段。 此格式适用于文本搜索,例如 psloglist |
-t | 默认 delimeter 是逗号,但可以使用指定的字符替代。 |
-u | 指定用于登录到远程计算机的可选用户名。 |
-w | 等待新事件,在生成 (本地系统时将其转储) 。 |
-x | 转储扩展数据 |
eventlog | eventlog |
PsLoggedOn
PsLoggedOn对本地登录用户的定义是将其配置文件加载到注册表中,因此PsLoggedOn通过扫描HKEY_USERS键下的键来确定谁登录了。对于每个具有用户SID(安全标识符)名称的密钥,PsLoggedOn查找相应的用户名并显示它。为了确定谁通过资源共享登录到计算机上,PsLoggedOn使用NetSessionEnum API。请注意,PsLoggedOn将显示您通过资源共享登录到您查询的远程计算机,因为PsLoggedOn需要登录才能访问远程系统的注册表。
用法:psloggedon [- ] [-l] [-x] [\computername | username]
参数 | 说明 |
---|---|
– | 显示支持的选项和用于输出值的度量单位。 |
-l | 仅显示本地登录,而不是本地和网络资源登录。 |
-x | 不显示登录时间。 |
\computername | 指定要列出登录信息的计算机的名称。 |
username | 如果指定用户名 PsLoggedOn ,请在网络中搜索该用户登录的计算机。 如果要确保特定用户在即将更改其用户配置文件配置时未登录,这非常有用。 |
PsInfo
PsInfo是一个命令行工具,用于收集有关本地或远程系统的关键信息,包括安装类型、内核构建、注册组织和所有者、处理器数量及其类型、内存大小、系统的安装日期,如果是试用版本,还包括过期日期。PsInfo命令行开关还允许您查看已安装的修复程序和软件应用程序。
用法:psinfo [[\computer[,computer[,…] | @file [-u 用户 [-p psswd]]][-h][-s][-d][-c [-t 分隔符]][filter]
参数 | 说明 |
---|---|
\computer | 对指定的远程计算机或计算机执行命令。 如果省略该命令在本地系统上运行的计算机名称,并且如果指定通配符 (\*) ,该命令将在当前域中的所有计算机上运行。 |
@file | 在指定的文本文件中列出的每台计算机上运行该命令。 |
-u | 指定用于登录到远程计算机的可选用户名。 |
-p | 指定用户名的可选密码。 如果省略此内容,系统会提示输入隐藏的密码。 |
-h | 显示已安装修补程序的列表。 |
-s | 显示已安装应用程序的列表。 |
-d | 显示磁盘卷信息。 |
-c | 以 CSV 格式打印。 |
-t | -c 选项的默认分隔符是逗号,但可以使用指定的字符替代。 |
filter | Psinfo 仅显示与筛选器匹配的字段的数据。 例如,“psinfo 服务”仅列出 Service Pack 字段 |
PsFile
PsFile的默认行为是列出本地系统上被远程系统打开的文件。
用法:psfile [\RemoteComputer [-u Username [-p Password]]] [[Id | path] [-c]]
参数 | 说明 |
---|---|
-u | 指定用于登录到远程计算机的可选用户名。 |
-p | 指定用户名的密码。 如果省略此密码,系统会提示输入密码,而不会将其回显到屏幕。 |
Id | 要为其显示信息或关闭的文件的 PsFile) 分配的标识符 。 |
path | 要匹配的信息显示或关闭的文件的完整或部分路径。 |
-c | 关闭 ID 或路径所标识的文件。 |
PsGetSid
PsGetSid使读取计算机的SID变得容易,并且可以跨网络工作,因此您可以远程查询SID。PsGetSid还允许您查看用户帐户的sid。
用法: psgetsid [\computer[,computer[,…] | @file [-u username [-p password]]] [account]
PsExec
PsExec是一个轻量级的远程网络替代品,它允许您在其他系统上执行进程,完全具有控制台应用程序的交互性,而无需手动安装客户端软件。PsExec最强大的用途包括在远程系统上启动交互式命令提示符和远程启用工具(如IpConfig),否则这些工具无法显示关于远程系统的信息。
注意:一些防病毒扫描程序报告一个或多个工具感染了“远程管理员”病毒。 PsTools 中没有含有病毒,但它们已被病毒使用,这就是为什么它们触发病毒通知的原因。
参数 | 说明 |
---|---|
-a | 使用逗号运行应用程序的单独处理器,其中 1 是最小编号的 CPU。 例如,若要在 CPU 2 和 CPU 4 上运行应用程序,请输入:“-a 2,4” |
-c | 将指定的可执行文件复制到远程系统以供执行。 如果省略此选项,则应用程序必须位于远程系统上的系统路径中。 |
-d | 不要等待进程终止 (非交互式) 。 |
-e | 不加载指定的帐户配置文件。 |
-f | 即使文件已存在于远程系统上,也复制指定的程序。 |
-i | 运行程序,使其与远程系统上指定会话的桌面交互。 如果未指定会话,进程将在控制台会话中运行。 尝试使用重定向的标准 IO) 以交互方式 (运行控制台应用程序时 ,需要 此标志。 |
-h | 如果目标系统为 Vista 或更高版本,则进程使用帐户提升的令牌运行(如果可用)。 |
-l | 作为受限用户 (运行进程会去除管理员组,并且仅允许分配给用户组的权限) 。 在 Windows Vista 上,进程以低完整性运行。 |
-n | 指定连接到远程计算机的超时(以秒为单位)。 |
-p | 指定用户名的可选密码。 如果省略此项,系统会提示输入隐藏的密码。 |
-r | 指定要创建或与之交互的远程服务的名称。 |
-s | 在系统帐户中运行远程进程。 |
-u | 指定用于登录到远程计算机的可选用户名。 |
-v | 仅当具有更高版本号或高于远程系统上的版本号时,才复制指定的文件。 |
-w | 设置进程 (相对于远程计算机) 的工作目录。 |
-x | 仅) ,在 Winlogon 安全桌面 (本地系统上显示 UI。 |
-priority | 指定 -low、-belownormal、-abovenormal、-high 或 -realtime 以不同的优先级运行进程。 使用 -background 在 Vista 上以低内存和 I/O 优先级运行。 |
\computer | 指示 PsExec 在指定的远程计算机或计算机上运行应用程序。 如果省略计算机名称,PsExec 在本地系统上运行应用程序,如果指定通配符 (*) ,PsExec 将在当前域中的所有计算机上运行该命令。 |
@file | PsExec 将在文件中列出的每台计算机上执行该命令。 |
cmd | 要执行的应用程序的名称。 |
参数 | 要传递 (的参数请注意,文件路径必须是目标系统上的绝对路径) 。 |
-accepteula | 此标志禁止显示许可证对话框。 |
PsKill
PsKill是一个终止实用程序,它不仅可以完成Resource Kit版本的功能,还可以终止远程系统上的进程。甚至不需要在目标计算机上安装客户端就可以使用PsKill终止远程进程。
参数 | 说明 |
---|---|
– | 显示支持的选项。 |
-t | 杀死进程及其后代。 |
\computer | 指定要终止的进程正在执行的计算机。 远程计算机必须可通过 NT 网络社区进行访问。 |
-u 用户名 | 如果要在远程系统上终止进程,而你正在执行的帐户对远程系统没有管理权限,则必须使用此命令行选项以管理员身份登录。 如果未将密码包含在 -p 选项中, 则 PsKill 会提示输入密码,而不会将输入回显到显示器。 |
-p 密码 | 此选项允许你在命令行上指定登录密码,以便可以从批处理文件中使用 PsList。 如果指定帐户名称并省略 -p 选项 PsList 以交互方式提示输入密码。 |
进程 ID | 指定要终止的进程的进程 ID。 |
进程名称 | 指定要终止的进程或进程的进程名称。 |
PsList
PsList是一种实用工具,它向您显示通过pmon和pstat分别获得的信息的组合。您可以查看进程的CPU和内存信息,或者线程统计信息。PsList比资源管理器工具更强大的地方在于,您可以在远程计算机上查看进程和线程统计信息。
用法:
pslist [-?] [-d] [-m] [-x][-t][-s [n] [-r n] [\\computer [-u username] [-p password]] [[-e] name | pid]
参数 | 说明 |
---|---|
pslist exp | 显示以“exp”开头的所有进程的统计信息,其中包括资源管理器。 |
-d | 显示线程详细信息。 |
-m | 显示内存详细信息。 |
-x | 显示进程、内存信息和线程。 |
-t | 显示进程树。 |
-s [n] | 在任务管理器模式下运行,指定可选秒。 按 Escape 中止。 |
-r n | 任务管理器模式刷新速率(秒) (默认值为 1) 。 |
\computer | PsList 不会显示本地系统的进程信息,而是显示指定的 NT/Win2K 系统的信息。 如果安全凭据不允许从远程系统获取性能计数器信息,请包含用户名和密码的 -u 开关以登录到远程系统。 |
-u | 指定用于登录到远程计算机的可选用户名。 |
-p | 使用此选项可以在命令行上指定登录密码,以便可以从批处理文件使用 PsList 。 如果指定帐户名称并省略 -p 选项 PsList 会以交互方式提示输入密码。 |
name | 显示以指定名称开头的进程的信息。 |
-e | 与进程名称完全匹配。 |
pid | 此参数不会列出系统中所有正在运行的进程,而是将 PsList 的 扫描范围缩小到具有指定 PID 的进程。 因此: pslist 53 使用 PID 53 转储进程的统计信息。 |
所有内存值都以 KB 为单位显示,标题显示缩写说明:
- Pri:优先级
- Thd:线程数
- Hnd:句柄数
- VM:虚拟内存
- WS:工作集
- Priv:专用虚拟内存
- Priv Pk:专用虚拟内存峰值
- Faults:页面错误
- NonP:非分页池
- Page:分页池
- Cswtch:上下文切换