WinRM 是什么以及风险在哪
WinRM(Windows Remote Management)是 Windows 的远程管理通道,基于 HTTP 的监听在 5985,基于 HTTPS 的监听在 5986。它在运维自动化里很常见(远程执行命令、拉取信息),在渗透测试中同样常见:拿到凭据后常通过 WinRM 做横向移动与远程命令执行。风险主要来自弱凭据、Basic 认证与过宽的来源范围。
基本信息
| 端口 | 5985(HTTP)、5986(HTTPS) |
|---|---|
| 推荐认证 | Kerberos 或 Negotiate,禁用 Basic |
| 加固技术 | JEA(受限管理端点)限制可执行命令范围 |
| 来源控制 | 限制到管理网段或跳板机 |
| 检查方式 | winrm enumerate、winrm get 查看监听与认证配置 |
典型使用场景
- 批量运维:用远程执行替代逐台登录(需要受控通道)
- 配置核查:远程读取监听、认证与信任列表配置
- 收敛评估:确认哪些机器开启了 WinRM 以及允许哪些来源
- 最小权限:为运维人员配置 JEA 端点,限制命令范围
- 事件响应:核查横向移动路径中的 WinRM 使用痕迹
加固要点
加固要点
1. 默认关闭,仅在需要远程管理的机器上启用
2. 使用 5986(HTTPS)并绑定证书,淘汰 5985
3. 禁用 Basic 认证,使用 Kerberos 或 Negotiate
4. 凭据使用受限管理账号,配合 JEA 限制命令范围
5. 来源限制到管理网段或跳板机,不用时关闭监听
6. 开启连接与操作日志,纳入集中审计核查命令
核查命令
winrm enumerate winrm/config/listener # 监听地址、端口与是否启用
winrm get winrm/config/client/auth # 客户端认证方式
winrm get winrm/config/service/auth # 服务端认证方式,关注 Basic 是否为 true
Get-NetFirewallRule -DisplayGroup 'Windows Remote Management' | Select Enabled,Direction配置项与安全取值
| 配置项 | 风险取值 | 安全取值 |
|---|---|---|
| AllowUnencrypted | true(允许明文流量) | false |
| Basic(服务端) | true(明文凭据) | false |
| 监听端口 | 仅 5985 | 优先 5986 + 证书 |
| 来源范围 | 全内网或公网 | 管理网段或跳板机 |
| 账号权限 | Domain Admin 直连 | 受限管理账号 + JEA |
WinRM 常被用于凭据验证后的横向移动:管理端口收敛与凭据分级同样重要,只关端口而不治理凭据,攻击者换用其他协议仍能展开横向动作。
TrustedHosts 的配置要谨慎核对:为方便运维把它设为通配时,客户端会忽略主机身份校验,中间人风险随之出现。