PAGES
← all tools
◆ Post-Exploitation

evil-winrm-py

v1.7.0 open-source

evil-winrm-py is a Python-based tool for executing commands on remote Windows machines using the WinRM protocol via an interactive shell.

Summary

evil-winrm-py is an open-source, free command-line tool for executing commands on remote Windows machines over WinRM, run as an interactive shell from a terminal on Windows or Linux. It supports NTLMNTLMA Windows authentication protocol that proves knowledge of a password through a challenge and response. Captured authentication exchanges can be abused in relay attacks when protections are absent., Pass-the-Hash, Certificate, and KerberosKerberosA network authentication protocol that uses tickets issued by a trusted service. Users and services can prove their identities without sending a password to each application. authentication, along with file upload/download, tab completion, and commands like runexe, loaddll, and services for enumerating privilege escalationprivilege escalationGaining permissions beyond those an account or process initially had. It can turn limited access into administrator control or access to another user's resources. targets, making it a fit for red teamers and penetration testers doing lateral movementlateral movementMoving from an initially compromised system or identity to other resources in a network. Attackers often use stolen credentials or trusted connections to expand their access. and post-exploitation work on authorized engagements. It is a Python rewrite of the Ruby-based evil-winrm, built to lower that barrier to entry while adding features like Kerberos trace logging and User-Agent spoofing. First committed in 2025, it already has 20 releases and 53 commits from three contributors in the past year, though the most recent release landed 153 days ago.

evil-winrm-py is a Python-based tool for executing commands on remote Windows machines using the WinRM protocol via an interactive shell.

How evil-winrm-py helps

Which non-admin services on a compromised Windows host could be abused to escalate privileges?

lists the running non-system services on the remote machine so an operator can spot misconfigured service binaries or paths worth attacking, without needing a separate enumeration script

How do I get my own post-exploitation logic running on a target without dropping a script to disk first?

reads a local PowerShell script and loads its functions straight into the remote session's memory, keeping the payload out of the target's filesystem

Which credentials will actually get me onto this host — a password, a hash, a cert, or a ticket?

negotiates the session using whichever of NTLM, Pass-the-Hash, certificate, or Kerberos material is supplied, so one shell handles whichever credential an engagement yields

Will my WinRM traffic stand out next to legitimate admin activity on this network?

lets the operator set the client's User-Agent string to match expected traffic instead of the default value that flags the connection as this tool

Why is my Kerberos authentication failing against this target?

turns on detailed Kerberos negotiation tracing so an operator can see where SPN or realm resolution broke down, and warns upfront when no credential cache exists

Can I move files in and out of the session without knowing the exact destination path or fighting shell quoting?

fills in the working directory when a path is omitted and strips stray quotes from dragged-and-dropped paths, so uploads and downloads proceed without manual cleanup

all 12 features, with the evidence for each →

Languages

Not documented

Features

12 capabilities · 3 backed by code, an API document or a real run

Built from evil-winrm-py's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What evil-winrm-py offers you

  • Command-line interface8
  • MCP server1
All capabilities 12 capabilities
WinRM connection configuration verified Configures the WinRM/WSMan connection parameters, including the endpoint URI and user agent string used by the WinRM client. 2 releases · 3 other sources · first seen May 2025

Also counts toward: Command-line interface

release

  • New --user-agent argument lets operators customize the WinRM client User-Agent string (defaults to the standard Microsoft WinRM Client value). v1.2.0 · Jul 2025 · source · release history
  • Enables SSL-encrypted WinRM sessions for secure communications. v1.0.0 · Jun 2025 · source · release history

command line

  • --ua — user agent for the WinRM client (default: "Microsoft WinRM Client") v1.2.0 · Jul 2025 · command-line history
  • --uri — wsman URI (default: /wsman) v0.0.6 · May 2025 · command-line history

example

  • Blend in with legitimate WinRM traffic by spoofing a custom User-Agent during a red-team engagement. ewp -i 192.168.1.10 -u Administrator -p 'P@ssw0rd' --user-agent 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' v1.2.0 · Jul 2025 · source
CLI output and logging controls verified Controls CLI output behaviour, including disabling coloured output and enabling debug-level logging. 2 releases · 2 other sources · first seen May 2025

release

  • Respects the NO_COLOR environment variable to suppress color output. v1.7.0 · Sep 2026 · source · release history
  • Cross-platform: runs on both Windows and Linux. v1.0.0 · Jun 2025 · source · release history

command line

JEA endpoint connectivity support shipped Connects to specific constrained JEA endpoints and adapts shell capabilities based on the available commands in that restricted session configuration. 2 releases · 2 other sources · first seen Sep 2026

Also counts toward: Command-line interface, MCP server

release

  • Adds -c/--configuration-name CLI flag to connect to a constrained JEA endpoint instead of the default Microsoft.PowerShell full PowerShell session, available in both interactive shell and MCP server modes. v1.7.0 · Sep 2026 · source · release history
  • Adds -c/--configuration-name CLI flag to connect to constrained JEA endpoints instead of the default Microsoft.PowerShell session v1.7.0 · Sep 2026 · source · release history

example

  • Connect to a specific constrained JEA endpoint using the new configuration name flag. evil-winrm-py -i <target_ip> -u <user> -p <password> -c <configuration_name> v1.7.0 · Sep 2026 · source
  • Connect to a restricted JEA endpoint on a Windows host to operate within a least-privilege PowerShell session configuration. evil-winrm-py -i 192.168.1.100 -u operator -p P@ssw0rd -c JEA_Endpoint v1.7.0 · Sep 2026 · source
Kerberos credential automation shipped Automatically handles SPN prefixes and extracts usernames from the GSSAPI cache to reduce configuration friction. 2 releases · 2 other sources · first seen Jul 2025

Also counts toward: Command-line interface

release

  • Makes -u/--user optional when using ticket-based Kerberos auth — username is pulled automatically from the GSSAPI credentials cache. v1.4.0 · Aug 2025 · source · release history
  • Automatically applies an http SPN prefix when none is supplied, reducing Kerberos Server not found in database errors in Kerberos-authenticated sessions. v1.2.0 · Jul 2025 · source · release history

example

  • Start as MCP server evil-winrm-py --mcp
  • Start MCP server on custom address evil-winrm-py --mcp --mcp-host 0.0.0.0 --mcp-port 8000
Enhanced CLI interaction shipped Includes tab completion for remote paths, command history, and colorized output. 3 releases · first seen Jun 2025

Also counts toward: Command-line interface

release

  • Remote tab-completion adapts to the commands available on the connected JEA endpoint, and menu commands unsupported under JEA are automatically disabled in the interactive shell. v1.7.0 · Sep 2026 · source · release history
  • Adds tab auto-completion for PowerShell cmdlets and aliases in the interactive shell. v1.6.0 · Mar 2026 · source · release history
  • Includes tab completion for remote paths, command history, and colorized output. v1.0.0 · Jun 2025 · source · release history
PowerShell module loading via DLL shipped Allows uploading and executing local executables on the remote host, and loading remote DLLs as PowerShell modules. 2 releases · first seen Mar 2026

Also counts toward: Command-line interface

release

  • Adds loaddll command to load a remote DLL as a PowerShell module. v1.6.0 · Mar 2026 · source · release history
  • Adds runexe command to upload and execute local executables on the remote host, with support for passing arguments. v1.6.0 · Mar 2026 · source · release history
Service enumeration for privilege escalation targeting shipped Lists running non-system services on the remote machine to identify potential privilege escalation targets. 1 release · 1 other source · first seen Mar 2026

release

  • Adds services command to list running non-system services on the remote machine. v1.6.0 · Mar 2026 · source · release history

example

  • Enumerate non-system services on the remote machine to identify privilege escalation targets. services v1.6.0 · Mar 2026 · source
Custom User-Agent spoofing shipped Allows customization of the WinRM client User-Agent string to blend in with legitimate traffic. 1 release · 1 other source · first seen Jul 2025

Also counts toward: Command-line interface

release

  • New --user-agent argument lets operators customize the WinRM client User-Agent string (defaults to the standard Microsoft WinRM Client value). v1.2.0 · Jul 2025 · source · release history

example

  • Blend in with legitimate WinRM traffic by spoofing a custom User-Agent during a red-team engagement. ewp -i 192.168.1.10 -u Administrator -p 'P@ssw0rd' --user-agent 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' v1.2.0 · Jul 2025 · source
Multi-method authentication support shipped Supports NTLM, Pass-the-Hash, Certificate, and Kerberos authentication methods. 1 release · 1 other source · first seen Jun 2025

release

  • Supports NTLM, Pass-the-Hash, Certificate, and Kerberos authentication methods. v1.0.0 · Jun 2025 · source · release history

example

  • Connect with password over SSL evil-winrm-py -i 192.168.1.100 -u Administrator -p P@ssw0rd --ssl
Certificate-based authentication verified Authenticates to WinRM endpoints using a client certificate and private key provided as local PEM files. 2 other sources · first seen May 2025

Also counts toward: Command-line interface

command line

Cross-platform execution shipped Runs on both Windows and Linux operating systems. 1 release · first seen Jun 2025

release

Interactive remote shell shipped Provides an interactive shell interface for executing commands on remote Windows systems via WinRM. 1 release · first seen Jun 2025

Also counts toward: Command-line interface

release

  • New interactive shell for executing commands on remote Windows systems via WinRM. v1.0.0 · Jun 2025 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for evil-winrm-py, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail evil-winrm-py puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

8 entries

  1. September 20261
  2. March 20261
  3. September 20251
  4. August 20252
  5. July 20251
  6. June 20252

    8 entries

    Project health

    Issue, contributor and maintainer activity in adityatelange/evil-winrm-py, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 3 +2 vs prior 12 months
    2. Maintainers 1 +0 joined · −0 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 100% of issues opened, last 12 months
    5. Median time to close 5.1 days first maintainer reply 19 hours
    6. Open backlog 1 of 16 issues ever filed
    1. Issues opened / month 0 · 0 communitymaintainers
    2. Open backlog 1
    3. Contributors / month 1
    4. Commits / month 15
    5. Stars 396
    Issue themes, last 12 months
    • other 100%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →