了解Psexec
什么是Psexec
PsExec
是由
Mark Russinovich
创建的 Sysinternals Suite中包含的工具。最初,它旨在作为系统管理员的运维工具,以便可以通过在远程主机上运行命令来执行维护任务。
PsExec
可以算是一个轻量级的 telnet 替代工具,它使无需手动安装客户端软件即可执行其他系统上的命令,并且可以获得与命令控制台几乎相同的实时交互性。PsExec最强大的功能就是在远程系统和远程支持工具(如 ipconfig、whoami)中启动交互式命令提示窗口,以便显示无法通过其他方式显示的有关远程系统的信息。
利用方式
官方Pstools-psexec
针对远程建立连接的方式有两种:
一种先建立IPC通道连接,然后直接使用,操作如下:
# 先net use 连接上IPC
net use \\192.168.0.1\ipc$ "password123!@#" /user:alibaba
# 确认是否进入IPC会话
.\PsExec64.exe \\ip cmd.exe 弹cmd
另一种时在psexec的参数中指定账户密码 操作如下:
.\PsExec64.exe \\192.168.0.1 –u administrator –p password
impacket-psexec
#非官方自带-参考 impacket 工具包使用,操作简单,容易被杀
PsExec.exe -hashes :NTHASH [./][email protected] #工作组
PsExec.exe -hashes :NTHASH domain/[email protected] #域
工作原理
它的背后工作流程:
PSEXESVC
服务充当一个重定向器。它在远程系统上运行指定的可执行文件(示例中的是
cmd.exe
)。同时,它通过主机之间来重定向进程的输入/输出(利用命名管道)。
详细过程
总共创建了4个命名管道,一个用于服务本身,另外的管道用于重定向进程的 stdin、stdout、stderr。
利用条件
1、远程机器的 139 或 445 端口需要开启状态,即 SMB;
2、明文密码或者 NTLM 哈希;
3、具备将文件写入共享文件夹的权限;
4、能够在远程机器上创建服务:SC_MANAGER_CREATE_SERVICE (访问掩码:0x0002);
5、能够启动所创建的服务:SERVICE_QUERY_STATUS(访问掩码:0x0004)+ SERVICE_START(访问掩码:0x0010)
注意
NTLM != NTLM v1/v2 ;
NTFS 权限 != 共享权限;
如果使用的是 Sysinternal 的 PsExec,它是会将 PSEXESVC.exe 复制到 ADMIN$,因此是具备访问它的权限;
PSEXESVC 服务将会安装在远程系统中,此时将会生成 Event 4697、7045 这2种事件日志;
PsExec 2.1版本之后,不再是明文传输。
在多数情况下,即使账号出现泄漏情况,使用
PsExec
, 也无法完成第4和第5点的要求,因为账号不是特权账号(RID500、域管理员)
日志分析
psexec在完成一次正常的命令执行时,产生的日志。
psexec.exe \xxx.xxx.xxx.xxx -u username -p password -s cmd
# 返回一个指定PC的system权限的交互式shell
在执行上述命令的一瞬间,目标机器上事件日志中出现了如下日志记录:
系统日志
安全日志
7036日志信息提示如下:
PSEXESVC 服务处于正在运行状态。
7045日志信息提示如下:
服务已安装在系统中。
服务名称: PSEXESVC
服务文件名: %SystemRoot%\PSEXESVC.exe
服务类型: 用户模式服务
服务启动类型: 按需启动
服务帐户: LocalSystem
4697日志中关键日志信息:
ServiceFileName:%SystemRoot%\PSEXESVC.exe
4624中日志中提示登录帐户为:
TargetUserName:Administrator
5145日志中关键日志信息:
使用者:
安全 ID: TESTDOMAIN\Administrator
帐户名: Administrator
帐户域: TESTDOMAIN
登录 ID: 0x25A393
网络信息:
对象类型: File
源地址: 192.168.0.104
源端口: 49165
共享信息:
共享名称: \*\ADMIN$
共享路径: ??\C:\Windows
相对目标名称: PSEXESVC.exe
综述,执行该程序一定会出现如下日志:
系统日志
7045
7036
安全日志
4697
4624
5145
注意:日志的产生需要开启审核策略
-
7045、7036此类系统日志无需设置,默认开启
-
4697、4624、5145此类安全审核日志需要自定义设置高级审核策略。
-
4697:高级审核策略配置->审核策略->系统->审核安全系统扩展->成功
-
4624:高级审核策略配置->审核策略->登录\注销->审核登录->成功
-
5145:高级审核策略配置->审核策略->对象访问->审核详细的文件共享->成功和失败
了解SMBexec
SMBExec 与 PSExec 非常相似,但是,SMBExec 不会将二进制文件放入磁盘。SMBExec 利用一个批处理文件和一个临时文件来执行和转发消息。与 PSExec 一样,SMBExec 通过 SMB 协议 (445/TCP) 发送输入并接收输出。
利用方式
## 工作组环境下
# 明文密码
.\smbexec.exe 用户名:密码@ip
.\smbexec.exe admin:[email protected]
# hash
.\smbexec.exe -hashes :NTLMhash 用户名@ip
.\smbexec.exe -hashes :209c6174da490caeb422f3fa5a7ae634 [email protected]
# 在域环境下
# 明文密码
.\smbexec.exe 域名/用户名:密码@ip
# hash
.\smbexec.exe -hashes :NTLMhash 域名/用户名@ip
详细过程
SMBExec 是如何工作的。使用 SMBExec 建立到远程机器的交互式连接后,执行Notepad.exe运行一个记事本,因为记事本进程打开后不会中断。