深入了解Psexec与SMBexec

💡 原文中文,约4500字,阅读约需11分钟。
📝

内容提要

Psexec是Sysinternals Suite中的一款工具,由Mark Russinovich创建。它允许在其他系统上远程执行命令并提供实时交互。Psexec可以用于显示无法通过其他方式获取的远程系统信息。它通过上传PSEXESVC.exe到远程系统并创建一个运行它的服务来工作。Psexec通过命名管道重定向进程的输入/输出。Psexec需要满足一定条件,如开放的SMB端口、明文密码或NTLM哈希、对共享文件夹的写入权限以及在远程系统上创建和启动服务的能力。SMBExec类似于Psexec,但不会将二进制文件放在磁盘上。它使用批处理文件和临时文件来执行和转发消息。SMBExec还使用SMB协议进行输入和输出。

🔎

延伸解读

Psexec与SMBexec的日志痕迹对比

Psexec执行时会在目标系统生成系统日志7045、7036和安全日志4697、4624、5145,其中安全日志需提前配置审核策略。SMBexec每执行一次命令都会创建服务,因此会生成7045和7009两条系统日志,但不会在磁盘留下二进制文件。两者日志特征不同,防守方可根据日志类型和频率进行检测。

利用条件中的常见误区

文章特别指出NTLM不等于NTLM v1/v2,NTFS权限也不等于共享权限。即使获得账号密码,若账号不是特权账号(如RID500或域管理员),也无法满足创建和启动服务所需的SC_MANAGER_CREATE_SERVICE、SERVICE_QUERY_STATUS和SERVICE_START权限。因此,并非所有账号泄漏都能直接利用Psexec或SMBexec。

SMBexec的隐蔽性与局限

SMBexec不将二进制文件写入磁盘,而是通过批处理文件和临时文件执行命令,输入输出通过SMB协议传输。但每执行一次命令都需要创建一次服务,这会频繁产生服务相关日志,可能引起注意。此外,它依赖IPC$和C$共享的写入权限,若目标关闭这些共享或限制权限,则无法使用。

❓

Q&A

Psexec的主要功能是什么?

Psexec允许在远程系统上执行命令并提供实时交互。

使用Psexec需要满足哪些条件?

需要开放的SMB端口、明文密码或NTLM哈希、对共享文件夹的写入权限,以及在远程系统上创建和启动服务的能力。

SMBExec与Psexec有什么区别?

SMBExec不将二进制文件放入磁盘,而是使用批处理文件和临时文件来执行和转发消息。

Psexec的工作流程是怎样的?

Psexec通过上传PSEXESVC.exe到远程系统,创建并启动服务,然后重定向进程的输入/输出。

使用Psexec时会生成哪些事件日志?

会生成Event 4697和7045等事件日志,记录服务的安装和运行状态。

SMBExec的执行过程是怎样的?

SMBExec通过建立IPC$共享,创建和启动服务,将命令存放在服务的ImagePath属性中,并将输出重定向到临时文件。

🏷️

标签

➡️

继续阅读