Psexec执行过程

Psexec 工具原理分析

前言

面试的时候正好遇到了,记录一下,之后也会总结分析一些工具的原理。

工具简介

Psexec是sysinternals中的一款强大工具,Sysinternals 之前为Winternals公司提供的免费工具,Winternals原本是一间主力产品为系统复原与资料保护的公司,为了解决工程师平常在工作上遇到的各种问题,便开发出许多小工具。之后他们将这些工具集合起来称为Sysinternals,并放在网络供人免费下载。

在渗透中Psexec常用来进行横向和提权

用法

以system权限启动某个应用

psexec -s -i regedit.exe

-s 代表system权限
-i 交互式运行

执行远程进程的前提条件是对方机器必须开启ipc$,以及admin$

反弹cmd
(可先建立ipc连接再使用psexec,无需输入密码

net use \IP /u:域名称\域账号 密码
psexec.exe \192.168.10.2 -s cmd.exe -acceptcula 反弹cmd
.\PsExec.exe \192.168.10.201 -u de1ay\Administrator -p 1qaz@WSX -s cmd.exe -acceptcula 或者直接反弹cmd

日志角度分析过程

环境:

1
2
windows 10              ip: 192.168.216.131 掩码: 255.255.255.0  网关:192.168.216.2
windows server 2008 r2 ip: 192.168.216.132 掩码:255.255.255.0 网关:192.168.216.2

对windows server 使用psexec

20211220005316

在windows server端查看安全日志

20211220005728

并且可以看到登录进程名和身份验证的数据包类型

20211220005823

从系统日志中还看到了PSEXESVC.exe程序的释放

20211220011516

接下来报告程序处于运行中

20211220011645

在执行exit断开连接之后该服务停止运行

20211220011714

从以上流程看来,psexec的具体执行流程为

  • 进行Windows认证
  • 然后释放PSEXESVC.exe并启动
  • 当psexec执行exit退出命令行之后会停止运行

数据包角度分析具体流程

用wireshark捕获了从连接到exit退出的过程

20211220014503

  • 首先通过提供的凭证,通过SMBV2会话进行身份验证
  • 通过访问共享文件夹ADMIN$,释放PSEXESVC.exe,在tcp流中也可以看到MZ头

20211220015133

  • 传输完成后,会调用OpenServiceManager安装服务”PSEXESVC”
    20211220015434
  • PSEXESVC服务启动后会创建命名管道重定向输入(stdin)输出(stdout,stderr)
    20211220015735

  • 最后在exit时,停止服务并删除

20211220020615

总结

使用psexec的前提

1
2
3
4
目标的SMB服务需开放
能获取目标机器用户的明文密码或NTLM哈希
ipc用户共享文件夹权限必须能写入文件
能调用OpenServiceManager创建服务并能启动

注意点

1
2
3
如果使用的是 Sysinternal 的 PsExec,它是会将 PSEXESVC.exe 复制到 ADMIN$,因此是具备访问它的权限;
PSEXESVC 服务将会安装在远程系统中,此时将会生成 Event 4697、7045 这2种事件日志;
PsExec 2.1版本之后,不再是明文传输。

防护措施

1
2
3
对内网机器进行时间监控,如写入文件,创建服务等
用户机器采用密码复杂度高的密码
对事件id 7045、4697、4624、4648进行监控和采集

Refer

如何实现一个Psexec

【知识回顾】深入了解 PsExec