在使用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类型的日志,可以查看登陆的认证方式。
- 后面不写了,没有图片,太干了
- psexec最终会建立四个管道,用pipelist工具可以查询管道列表。使用创建出来的命名管道来进行通信远程控制对方电脑。最后一步创建命名管道很像linux上的反弹shell。
命名管道
命名管道基于smb协议通信,smb,smb,不是tcp。重要的事情说三遍。它是用来让两个进程间进行通信的,这两个进程可以是本地进程,也可以是远程进程。命名管道有点类似于socket连接,是用来传输数据的,可以设置具体的权限让指定权限的进程才能连接命名管道,理论上每个程序都能连接命名管道,只是连接之后能做的事情不同,具体能做什么事跟服务端的配置有关系。
下面总结几点:
1.命名管道是C/S架构,必须让服务端某个进程先创建命名管道。
2.命名管道可以背任何符合权限的进程去访问,且何种权限可以访问是可以自定义的。
3.客户端可以是本地的某个进程或者远程的某个进程,本地进程访问命名管道方式为.\pipe\pipename,远程进程访问命名管道方法为\ip\pipe\pipename。
总结
psexec就是一个远程登录工具。有了别人账号密码(或hash)就可以操作了。