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 年主流选择。

相关推荐
xixixi777774 小时前
数字世界的攻防战:网络安全的演进之路
网络·人工智能·安全·web安全·网络安全·攻击
介一安全4 小时前
【Web安全】HOST碰撞漏洞测试指南
web安全·网络安全·安全性测试
Z1eaf_complete4 小时前
利用文件包含GetShell
安全·网络安全
0xSec笔记本挖呀瓦呀挖4 小时前
OpenClawWeComzh 实战:安卓 APK 分析与手机取证全自动化基础玩法
android·web安全·网络安全·智能手机·自动化·取证·电子数据取证
见青..18 小时前
[BUUCTF]Misc篇wp
网络安全·ctf·misc·buuctf
白帽子黑客-宝哥1 天前
渗透测试“保姆级”实战成长手册
开发语言·网络安全·渗透测试·php
酱紫学Java1 天前
数据安全比赛:Python 内置函数实战指南
后端·python·网络安全
艾莉丝努力练剑1 天前
【MYSQL】MYSQL学习的一大重点:MYSQL数据类型
android·linux·数据库·人工智能·学习·mysql·网络安全
m0_738120721 天前
渗透测试——Tomato 靶场完整渗透思路(本地文件包含LFI,脏牛提取)
web安全·网络安全·php·安全性测试·webshell·蚁剑