内网学习笔记-PsExec和WMI使用
1、PsExec
PsExec 是 PSTools 工具包里的一部分,其下载地址为:https://download.sysinternals.com/files/PSTools.zip
利用 PsExec 可以在远程计算机上执行命令,其基本原理是通过管道在远程目标主机上创建一个 psexec 服务,并在本地磁盘中生成一个名为 PSEXESVC 的二进制文件,然后通过 psexec 服务运行命令,运行结束后删除服务。
建立 ipc$ 连接
1 |
|
删除ipc$连接
1 |
|
在已经建立 ipc$ 的情况下,执行以下命令就可以获得 system 权限
1 |
|
如果没有建立 ipc$ 连接,也可以直接使用 PsExec 指定用户名密码进行连接。-s
使用system权限运行
1 |
|
或者执行以下命令直接回显命令结果
1 |
|
在使用 PsExec 时需要注意以下几点:
- 需要远程系统开启 admin$ 共享(默认是开启的)
- 因为 PsExec 连接的原理是基于 IPC 共享,因此目标需要开放 445 端口
- 在使用 IPC$ 连接目标系统后,不需要输入账户和密码。
- 在使用 PsExec 执行远程命令时,会在目标系统中创建一个 psexec 的服务,命令执行完后,psexec 服务将被自动删除。由于创建或删除服务时会产生大量的日志,因此蓝队在溯源时可以通过日志反推攻击流程。
- 使用 PsExec 可以直接获得 System 权限的交互式 Shell 的前提目标是 administrator 权限的 shell
- 在域环境测试时发现,非域用户无法利用内存中的票据使用 PsExec 功能,只能依靠账号和密码进行传递。
MSF 中也有 PsExec 的利用模块,使用方法如下:
1 |
|
2、WMI
WMI 全称 Windows Management Instrumentation 即 Windows 管理工具,Windows 98 以后的操作系统都支持 WMI。
由于 Windows 默认不会将 WMI 的操作记录在日志里,同时现在越来越多的杀软将 PsExec 加入了黑名单,因此 WMI 比 PsExec 隐蔽性要更好一些。
wmiexec.py
在 impacket 工具包里有 wmiexec.py 脚本,可以用来直接获取 shell
使用 WMIC 连接远程主机,需要目标主机开放 135 和 445 端口( 135 端⼝是 WMIC 默认的管理端⼝,wimcexec 使⽤445端⼝传回显)
1 |
|
wmiexec.vbs
wmiexec.vbs 脚本通过 VBS 调用 WMI 来模拟 PsExec 的功能。
wmiexec.vbs 下载地址:https://github.com/k8gege/K8tools/blob/master/wmiexec.vbs
1 |
|
使用 vmiexec.vbs 执行单条命令
1 |
|
3、PsExec与WMI的区别
PsExec会产生大量的日志,而 Windows 默认不会将 WMI 的操作记录在日志里。