
evil-winrm 和 evil-winrm-py 是当今渗透测试特别是 Windows 内网/Active Directory 环境中最受欢迎的 WinRM 交互式 Shell 工具之一。它们主要用于在获取有效凭证明文密码、NTLM hash、Kerberos ticket 等后快速建立到目标 Windows 主机的 PowerShell Remoting 会话实现命令执行、文件传输、提权探索等操作。本文将详细介绍这两个工具的背景、功能、安装、使用方式、认证机制特别聚焦 Kerberos 支持、优缺点对比以及实际渗透测试场景中的应用。一、WinRM 协议基础知识WinRMWindows Remote Management是微软实现的 WS-Management 协议基于 SOAP 的 Web 服务标准默认监听端口HTTP → 5985HTTPS → 5986从 Windows Vista / Server 2008 开始默认集成后来演变为PowerShell RemotingPSRP - PowerShell Remoting Protocol的底层传输通道。WinRM 的常见认证方式包括Basic / NegotiateNTLM/KerberosKerberos域环境首选NTLM / Pass-the-HashCertificateCredSSP较少用在渗透测试中WinRM 是继 RDP、SMB、WMI 之后最常用的横向移动/后渗透通道之一尤其在域环境中凭据获取后几乎必用 WinRM Shell。二、evil-winrm原版 Ruby 实现项目地址https://github.com/Hackplayers/evil-winrm当前主流版本2025-2026v3.7 ~ v3.9语言Ruby星数约 5.3k长期霸榜 WinRM 工具主要功能亮点高度定制化的交互式 PowerShell 会话支持多种认证方式明文密码-pNTLM hashPass-the-Hash-HKerberos需配置 realm ccache证书认证公钥/私钥SSL 支持-S文件上传/下载upload / download 命令本地脚本自动加载-s指定目录自动 source *.ps1可执行文件自动加载-e指定 exes 目录日志记录-l logfile无文件内存加载 PowerShell 脚本menu → powershell 模块支持自定义 User-Agent-a支持代理-xDocker 一键使用官方提供镜像典型使用示例# 最常用 - 明文登录evil-winrm-i10.10.110.45-uadministrator-pPssw0rd!# PTHPass-the-Hashevil-winrm-i192.168.10.10-uadministrator-Haad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0# Kerberos需先获取 TGT 并设置 KRB5CCNAMEexportKRB5CCNAME./admin.ccache evil-winrm-idc01.lab.local-rlab.local--spnWSMAN/dc01.lab.local# HTTPS 自签证书跳过验证evil-winrm-i10.0.0.5-uadmin-ppass-S--insecure# 加载本地脚本目录evil-winrm-i10.10.10.10-uuser-ppass-s/home/kali/payloads/Kerberos 支持情况evil-winrm 的 Kerberos 支持相对传统需要手动配置/etc/krb5.conf并使用export KRB5CCNAMExxx.ccache。常用流程获取 TGTimpacket-getTGT、Rubeus、netexec 等配置 krb5.conf添加 domain realm指定-r REALM和可选--spn WSMAN/hostname连接缺点配置繁琐容易出错尤其是 realm、SPN 前缀不匹配时部分旧版本对非标准 SPN 支持不好。三、evil-winrm-pyPython 重写版项目地址https://github.com/adityatelange/evil-winrm-py当前主流版本2025-2026v1.4 ~ v1.5语言Python定位evil-winrm 的现代替代品尤其针对 Kerberos 和环境兼容性优化为什么出现 evil-winrm-py原版 evil-winrmRuby存在以下痛点Ruby 环境依赖复杂bundler、gem 版本冲突常见Kali/Parrot 等发行版经常出现 gem lock 版本过旧问题Kerberos 配置麻烦稳定性一般响应速度稍慢部分用户实测慢 15-30%对新版 Windows / PSRemoting 策略兼容性偶有 bugevil-winrm-py 因此诞生目标是用纯 Python 重写pip 安装更友好响应更快用户反馈约快 20%更好的 Kerberos 支持原生支持密码直接请求票据、ccache、自定义 SPN/realm彩色输出、命令历史记录更友好活跃维护2025-2026 仍在快速迭代安装方式# 普通安装无 Kerberospipinstallevil-winrm-py# 推荐 - 带 Kerberos 支持会编译 python-kerberos可能需要几分钟pipinstallevil-winrm-py[kerberos]# 更推荐 - 使用 pipx 隔离环境pipxinstallevil-winrm-py[kerberos]Arch Linux、Kali 2025 已将 evil-winrm-py 纳入官方仓库。主要功能与 evil-winrm 对比功能evil-winrm (Ruby)evil-winrm-py (Python)备注语言RubyPythonPython 环境更普遍响应速度一般更快实测 15-25%pywinrm 底层优化Kerberos 支持需要手动配置 krb5.conf原生支持密码直取票、ccache、SPNpy 版明显更友好PTH / PtH支持支持两者一致证书认证支持支持两者一致文件上传/下载upload / download同名命令功能一致脚本自动加载-s / -e暂无完全等价计划中原版更强日志记录-l支持 --log类似彩色输出 历史基本更好prompt_toolkitpy 版体验更好Docker 支持官方镜像暂无官方镜像原版胜出社区活跃度2026仍活跃但更新变慢快速迭代py 版更推荐新手典型使用示例evil-winrm-py# 普通 NTLMevil-winrm-py-i10.80.80.2-ujohn.doe-pPssw0rd123!# PTHevil-winrm-py-i192.168.88.10-uadministrator-Haad3b...31d6cfe0d16ae931b73c59d7e0c089c0# Kerberos - 密码直接请求票据最方便evil-winrm-py-idc01.lab.local-uadministrator-pPassword123!--kerberos# 使用已有 ccacheKRB5CCNAME./admin.ccache evil-winrm-py-idc01.lab.local--kerberos# 指定 realm / SPN 前缀非标准环境evil-winrm-py-idc01-uuser-ppass--kerberos--realmLAB.LOCAL --spn-prefix WSMAN可以看到evil-winrm-py 的 Kerberos 使用体验远超原版很多场景下无需手动配置 krb5.conf也无需 export ccache 环境变量。四、实际渗透测试场景对比场景1普通工作组/本地管理员凭证两者几乎无差别原版 evil-winrm 因内置脚本加载功能略胜一筹。场景2域环境 PTH两者均支持evil-winrm-py 响应更快推荐使用。场景3Kerberos 环境无明文、无 hash只有 TGT/TGSevil-winrm-py 完胜。原版需要复杂配置py 版可直接使用 ccache 或密码请求票据。场景4Red Team 长驻/稳定性要求高目前2026多数团队已转向 evil-winrm-py 或其他替代品如 Devious-WinRM、netexec winrm 模块等。场景5CTF / HackTheBox / TryHackMeevil-winrm-py 因安装简单、Kerberos 友好已成为 2025-2026 年主流选择。