Skip to main content

WinRM

WinRM,即 Windows 远程管理,是微软对 WS-MAN协议的实现,提供了对远程主机的 powershell 访问。PowerShell remoting 正是建立在 WinRM 协议之上,使用户可以对远程主机运行 PowerShell 命令。而对于攻击者而言,这也是远程的对远程主机实现代码执行以及横向移动的途径。WinRM 默认端口为 5985,但因为是较高端口号,因此可以进行更改。

默认情况下,只有本地管理员权限的用户可以使用 Powershell 远程登陆,但对于 Remote Management Users 组中的非本地管理员成员,依旧可以使用 PowerShell 远程登陆。在 Powershell 会话中,如果当前用户对特定主机具备本地管理员或者 WinRM 的权限,可以通过命令 Enter-PSSession -ComputerName <hostname> 进入远程主机的交互式 powershell 会话。当然,我们也可以提供其他用户的凭证之后进入会话。

image.png

我们还可以通过 Invoke-Command -ComputerName <hostname> -ScriptBlock {<cmd>} 对远程主机执行代码。

image.png

除了 PowerShell 中原生的支持,我们还可以通过工具来实现 WinRM 的远程访问以及横向移动。例如 evil-winrm,evil-winrm 支持 Kerberos 认证,以及NTLM认证。

image.png

除此之外,一些 C2 也具有内置的通过 WinRM 进行横向移动的命令和功能,但同 PsExec一样,我们需要注意不被 AV 所发现。

 

Windows 内置命令

 

C2 

jump-winrm

 

第三方工具

Evil-WinRM