0%

psexec原理

在使用psexec的时候,总是感觉不是很清楚。所以了解一下psexec原理。

由psexec远控的实现原理到windows命名管道 这个文章写的太好了,放开头吧。我这个像一坨屎。。。

psexec最初是系统管理员用于远程登陆其他主机的,用于执行维护任务。
所以psexec就是一个用于远程操作的工具。

  • 条件:只要拥有了对方主机的账号密码(或者hash值),139或445端口开放(可以看看自己的电脑,这两个端口一般都是开放的),就可以远程控制对方主机。

psexec所做的事情:
1.登陆远程主机
2.连接admin$共享
3.写入psexesvc.exe文件到共享目录下也就是c:\windows下
4.利用ipc命名管道调用svcctl服务
5.利用svcctl服务开启psexesvc服务
6.生成4个命名管道以供使用

先看看登陆一台电脑,会发生什么。

  • win + r ,输入eventvwr.msc,打开事件查看器,看到login类型的日志,可以查看登陆的认证方式。

1106-cs-1

  • 后面不写了,没有图片,太干了
  • psexec最终会建立四个管道,用pipelist工具可以查询管道列表。使用创建出来的命名管道来进行通信远程控制对方电脑。最后一步创建命名管道很像linux上的反弹shell。

命名管道

命名管道基于smb协议通信,smb,smb,不是tcp。重要的事情说三遍。它是用来让两个进程间进行通信的,这两个进程可以是本地进程,也可以是远程进程。命名管道有点类似于socket连接,是用来传输数据的,可以设置具体的权限让指定权限的进程才能连接命名管道,理论上每个程序都能连接命名管道,只是连接之后能做的事情不同,具体能做什么事跟服务端的配置有关系。
下面总结几点:
1.命名管道是C/S架构,必须让服务端某个进程先创建命名管道。
2.命名管道可以背任何符合权限的进程去访问,且何种权限可以访问是可以自定义的。
3.客户端可以是本地的某个进程或者远程的某个进程,本地进程访问命名管道方式为.\pipe\pipename,远程进程访问命名管道方法为\ip\pipe\pipename。

总结

psexec就是一个远程登录工具。有了别人账号密码(或hash)就可以操作了。