evil-winrm 与 evil-winrm-py 使用指南

evil-winrm 和 evil-winrm-py 是当今渗透测试(特别是 Windows 内网/Active Directory 环境)中最受欢迎的 WinRM 交互式 Shell 工具之一。它们主要用于在获取有效凭证(明文密码、NTLM hash、Kerberos ticket 等)后,快速建立到目标 Windows 主机的 PowerShell Remoting 会话,实现命令执行、文件传输、提权探索等操作。

本文将详细介绍这两个工具的背景、功能、安装、使用方式、认证机制(特别聚焦 Kerberos 支持)、优缺点对比以及实际渗透测试场景中的应用。


一、WinRM 协议基础知识

WinRM(Windows Remote Management)是微软实现的 WS-Management 协议(基于 SOAP 的 Web 服务标准),默认监听端口:

  • HTTP → 5985
  • HTTPS → 5986

从 Windows Vista / Server 2008 开始默认集成,后来演变为 PowerShell Remoting(PSRP - PowerShell Remoting Protocol)的底层传输通道。

WinRM 的常见认证方式包括:

  • Basic / Negotiate(NTLM/Kerberos)
  • Kerberos(域环境首选)
  • NTLM / Pass-the-Hash
  • Certificate
  • CredSSP(较少用)

在渗透测试中,WinRM 是继 RDP、SMB、WMI 之后最常用的横向移动/后渗透通道之一,尤其在域环境中,凭据获取后几乎必用 WinRM Shell。

二、evil-winrm(原版 Ruby 实现)

项目地址https://github.com/Hackplayers/evil-winrm
当前主流版本 (2025-2026):v3.7 ~ v3.9
语言 :Ruby
星数:约 5.3k+(长期霸榜 WinRM 工具)

主要功能亮点
  • 高度定制化的交互式 PowerShell 会话
  • 支持多种认证方式:
    • 明文密码 -p
    • NTLM hash(Pass-the-Hash)-H
    • Kerberos(需配置 realm + ccache)
    • 证书认证(公钥/私钥)
    • SSL 支持 -S
  • 文件上传/下载(upload / download 命令)
  • 本地脚本自动加载(-s 指定目录,自动 source *.ps1)
  • 可执行文件自动加载(-e 指定 exes 目录)
  • 日志记录 -l logfile
  • 无文件内存加载 PowerShell 脚本(menu → powershell 模块)
  • 支持自定义 User-Agent -a
  • 支持代理 -x
  • Docker 一键使用(官方提供镜像)
典型使用示例
bash 复制代码
# 最常用 - 明文登录
evil-winrm -i 10.10.110.45 -u administrator -p 'P@ssw0rd!'

# PTH(Pass-the-Hash)
evil-winrm -i 192.168.10.10 -u administrator -H 'aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0'

# Kerberos(需先获取 TGT 并设置 KRB5CCNAME)
export KRB5CCNAME=./admin.ccache
evil-winrm -i dc01.lab.local -r lab.local --spn WSMAN/dc01.lab.local

# HTTPS + 自签证书跳过验证
evil-winrm -i 10.0.0.5 -u admin -p pass -S --insecure

# 加载本地脚本目录
evil-winrm -i 10.10.10.10 -u user -p pass -s /home/kali/payloads/
Kerberos 支持情况

evil-winrm 的 Kerberos 支持相对传统,需要手动配置 /etc/krb5.conf,并使用 export KRB5CCNAME=xxx.ccache。常用流程:

  1. 获取 TGT(impacket-getTGT、Rubeus、netexec 等)
  2. 配置 krb5.conf(添加 domain realm)
  3. 指定 -r REALM 和可选 --spn WSMAN/hostname
  4. 连接

缺点:配置繁琐,容易出错(尤其是 realm、SPN 前缀不匹配时),部分旧版本对非标准 SPN 支持不好。

三、evil-winrm-py(Python 重写版)

项目地址https://github.com/adityatelange/evil-winrm-py
当前主流版本 (2025-2026):v1.4 ~ v1.5
语言 :Python
定位:evil-winrm 的现代替代品,尤其针对 Kerberos 和环境兼容性优化

为什么出现 evil-winrm-py?

原版 evil-winrm(Ruby)存在以下痛点:

  • Ruby 环境依赖复杂(bundler、gem 版本冲突常见)
  • Kali/Parrot 等发行版经常出现 gem lock 版本过旧问题
  • Kerberos 配置麻烦,稳定性一般
  • 响应速度稍慢(部分用户实测慢 15-30%)
  • 对新版 Windows / PSRemoting 策略兼容性偶有 bug

evil-winrm-py 因此诞生,目标是:

  • 用纯 Python 重写,pip 安装更友好
  • 响应更快(用户反馈约快 20%)
  • 更好的 Kerberos 支持(原生支持密码直接请求票据、ccache、自定义 SPN/realm)
  • 彩色输出、命令历史记录更友好
  • 活跃维护(2025-2026 仍在快速迭代)
安装方式
bash 复制代码
# 普通安装(无 Kerberos)
pip install evil-winrm-py

# 推荐 - 带 Kerberos 支持(会编译 python-kerberos,可能需要几分钟)
pip install evil-winrm-py[kerberos]

# 更推荐 - 使用 pipx 隔离环境
pipx install evil-winrm-py[kerberos]

Arch Linux、Kali 2025+ 已将 evil-winrm-py 纳入官方仓库。

主要功能与 evil-winrm 对比
功能 evil-winrm (Ruby) evil-winrm-py (Python) 备注
语言 Ruby Python Python 环境更普遍
响应速度 一般 更快(实测 15-25%) pywinrm 底层优化
Kerberos 支持 需要手动配置 krb5.conf 原生支持密码直取票、ccache、SPN py 版明显更友好
PTH / PtH 支持 支持 两者一致
证书认证 支持 支持 两者一致
文件上传/下载 upload / download 同名命令 功能一致
脚本自动加载 -s / -e 暂无完全等价(计划中) 原版更强
日志记录 -l 支持 --log 类似
彩色输出 & 历史 基本 更好(prompt_toolkit) py 版体验更好
Docker 支持 官方镜像 暂无官方镜像 原版胜出
社区活跃度(2026) 仍活跃但更新变慢 快速迭代 py 版更推荐新手
典型使用示例(evil-winrm-py)
bash 复制代码
# 普通 NTLM
evil-winrm-py -i 10.80.80.2 -u john.doe -p 'P@ssw0rd123!'

# PTH
evil-winrm-py -i 192.168.88.10 -u administrator -H 'aad3b...31d6cfe0d16ae931b73c59d7e0c089c0'

# Kerberos - 密码直接请求票据(最方便!)
evil-winrm-py -i dc01.lab.local -u administrator -p 'Password123!' --kerberos

# 使用已有 ccache
KRB5CCNAME=./admin.ccache evil-winrm-py -i dc01.lab.local --kerberos

# 指定 realm / SPN 前缀(非标准环境)
evil-winrm-py -i dc01 -u user -p pass --kerberos --realm LAB.LOCAL --spn-prefix WSMAN

可以看到,evil-winrm-py 的 Kerberos 使用体验远超原版,很多场景下无需手动配置 krb5.conf,也无需 export ccache 环境变量。

四、实际渗透测试场景对比

场景1:普通工作组/本地管理员凭证

两者几乎无差别,原版 evil-winrm 因内置脚本加载功能略胜一筹。

场景2:域环境 PTH

两者均支持,evil-winrm-py 响应更快,推荐使用。

场景3:Kerberos 环境(无明文、无 hash,只有 TGT/TGS)

evil-winrm-py 完胜。原版需要复杂配置,py 版可直接使用 ccache 或密码请求票据。

场景4:Red Team 长驻/稳定性要求高

目前(2026)多数团队已转向 evil-winrm-py 或其他替代品(如 Devious-WinRM、netexec winrm 模块等)。

场景5:CTF / HackTheBox / TryHackMe

evil-winrm-py 因安装简单、Kerberos 友好,已成为 2025-2026 年主流选择。

相关推荐
见青..9 小时前
phpMyAdmin权限提升
web安全·网络安全·phpmyadmin
数据知道10 小时前
邮件安全实战:SPF/DKIM/DMARC 配置与钓鱼绕过
网络·安全·web安全·网络安全·邮件安全
世界尽头与你14 小时前
Android Root 检测原理
android·安全·网络安全·渗透测试
kp0000014 小时前
如何平衡模型输出的“有用性”和“安全性
人工智能·安全·网络安全·信息安全·ai安全
世界尽头与你16 小时前
iOS 越狱检测原理
安全·网络安全·ios·信息安全·渗透测试
kp000001 天前
大模型输出造成信息泄露类型
人工智能·网络安全·信息安全·ai安全
kp000001 天前
System Prompt Leakage(系统提示词泄露)及安全防御
网络·安全·网络安全·信息安全·prompt·ai安全
X7x51 天前
攻防对抗的结构化思维:深度拆解网络杀伤链(Kill Chain)与现代防御演进
网络安全·网络攻击模型·安全架构·网络杀伤链·kill chain
kp000001 天前
AI大模型,如何区分善意提问与Prompt注入攻击
人工智能·网络安全·信息安全·prompt·ai安全
kp000002 天前
AI系统输入安全基线
人工智能·安全·网络安全·信息安全·ai安全