点我

概述

WinRM是Windows Remote Managementd(Windows远程管理)的简称,它基于Web服务管理(WebService-Management)标准,WinRM2.0默认端口5985(HTTP端口)或5986(HTTPS端口)。

如果所有的机器都是在域环境下,则可以使用默认的5985端口,否则的话需要使用HTTPS传输(5986端口)。

WinRM允许远程用户使用工具和脚本对Windows服务器进行管理并获取数据,Windows server 2008 r2默认开启此服务,server 2012开始并集成在系统中默认开启,家庭版的计算机是默认关闭。

这种远程连接不容易被客户端察觉,也不会占用远程连接数。

官方文档:https://learn.microsoft.com/en-us/windows/win32/winrm/portal

开启WinRM服务

powershell 运行 enable-psremoting或者cmd运行winrm quickconfig(高权限用户执行)

查询本计算机的端口状态

运行WinRM

两种方式,一种为winrs命令,一种为powershell脚本

winrs命令方式

winrs -r:http://目标机器IP地址:5985 -u:机器名\用户名 -p:password "执行的命令"
winrs -r:http://目标机器IP地址:5985 -u:机器名\用户名 -p:password cmd    #调用cmd命令
winrs -r:http://192.168.110.6:5985  -u:administrator -p:a1b2c3.. "ipconfig"

当出现以上错误时,要在客户端上执行下面这条命令,设置为信任所有主机,再去连接即可,执行这条命令

winrm set winrm/config/Client @{TrustedHosts="*"}

再次连接

powershell脚本

Invoke-Command 是 PowerShell 上的一个命令,用来在本地或远程计算机上执行命令

Invoke-Command -ComputerName TARGET -ScriptBlock { dir c:\ }
Invoke-Command -ComputerName TARGET -Credential 域名\用户名 -command {命令}
Invoke-Command -ComputerName TARGET -Credential 域名\用户名 -ScriptBlock {Get-Culture}
Invoke-Command -ComputerName 192.168.110.6 -Credential administrator -Command {ipconfig}

流量分析

执行命令的同时进行wireshark抓包

winrs -r:http://192.168.110.6:5985  -u:administrator -p:a1b2c3.. "whoami"

首先观察挑战值数据包,在http协议中authenticate经过了加密,其中包含了挑战值还有访问机器的相关OS信息

再观察response值数据包

认证通过后,HTTP协议通过POST传输数据,data中就是具体的数据,不过进行了加密

winrm通信特征

  • 默认情况下,winrm使用TCP端口5985(HTTP)和5986(HTTPS)进行通信
  • winrm支持不同类型的身份验证和安全协议,如基本身份验证、NTLM和kerberos
分类: 内网渗透

评论

-- 评论已关闭 --

目录