
WinRM 프로토콜을 사용하여 원격 Windows 머신에서 명령을 대화형으로 실행합니다 (단지 더 빠를 뿐입니다)
evil-winrm-py는 WinRM(Windows Remote Management) 프로토콜을 사용하여 원격 Windows 머신에서 명령을 실행하기 위한 Python 기반 도구입니다. 진행률 표시 및 체크섬 검증이 포함된 파일 업로드/다운로드, 로컬/원격 경로 및 PowerShell cmdlet의 탭 완성, PowerShell 스크립트 로드 및 실행, DLL 및 EXE의 인메모리 실행, 명령 기록, 컬러 출력과 같은 향상된 기능을 갖춘 대화형 셸을 제공합니다. 또한 MCP 서버로 실행되어 WinRM 세션을 MCP 호환 클라이언트를 위한 도구로 노출할 수 있습니다. NTLM, Pass-the-Hash, Certificate, Kerberos를 포함한 다양한 인증 방법을 지원합니다. 설치로 건너뛰기

[!NOTE] 이 도구는 교육적, 윤리적 사용 및 승인된 침투 테스트를 위해 엄격히 설계되었습니다. 모든 시스템에 접근하기 전에 항상 명시적인 승인을 받았는지 확인하십시오. 이 도구의 무단 접근 또는 오용은 불법이며 비윤리적입니다.
원래의 evil-winrm은 Ruby로 작성되어 일부 사용자에게는 진입 장벽이 될 수 있습니다. 이를 Python으로 다시 작성하면 더 접근하기 쉽고 사용하기 쉬워지며, Python의 풍부한 생태계를 활용하여 추가 기능과 유연성을 제공할 수 있습니다.
또한 winrm과 그 내부 구조에 대해 더 배우고 싶었기 때문에, 이 프로젝트는 저에게 학습 경험의 역할도 할 것입니다.
Tab 완성으로 로컬 및 원격 파일 경로(공백이 포함된 경로 포함) 자동 완성.Tab 완성으로 PowerShell cmdlet/헬퍼 자동 완성.up/down 화살표 키를 사용한 명령 기록 탐색.다음에 대한 지원을 포함합니다:
자세한 문서는 docs 디렉터리에서 확인할 수 있습니다.
sudo apt install gcc python3-dev libkrb5-dev krb5-pkinit
# Optional: krb5-user
evil-winrm-py 설치pip 대신 uv/pipx를 사용하여 evil-winrm-py를 설치할 수 있습니다.
uv/pipx는 격리된 환경에서 Python 애플리케이션을 설치하고 실행하는 도구로, 도구의 종속성을 시스템의 Python 패키지와 분리하여 종속성 충돌을 방지하는 데 도움이 됩니다.
자세한 내용은 설치 가이드를 확인하십시오.
pip install evil-winrm-py
# for optional dependencies use any one of the following commands:
pip install evil-winrm-py[kerberos] # for kerberos support on Linux
pip install evil-winrm-py[mcp] # for mcp support
pip install evil-winrm-py[kerberos,mcp] # to install both optional dependencies
# Note: building gssapi and krb5 packages may take some time, so be patient.
또는 main 브랜치의 최신 커밋으로 설치하려면 저장소를 복제하고 pip/uv/pipx로 설치할 수 있습니다:
git clone https://github.com/adityatelange/evil-winrm-py
cd evil-winrm-py
pip install .
# or use: pip install .[kerberos,mcp] to install both optional dependencies
pip install --upgrade evil-winrm-py
pip uninstall evil-winrm-py
위에 언급된 배포판의 경우 해당 패키지 관리자에서 직접 evil-winrm-py를 설치할 수 있습니다. 각 배포판에서 evil-winrm-py를 패키징하고 유지 관리해 주신 패키지 관리자분들께 감사드립니다.
evil-winrm-py 사용 방법에 대한 자세한 내용은 사용 가이드에서 확인할 수 있습니다.
usage: evil-winrm-py [-h] [-i IP] [-u USER] [-p PASSWORD] [-H HASH] [-c CONFIGURATION_NAME]
[--priv-key-pem PRIV_KEY_PEM] [--cert-pem CERT_PEM] [--uri URI] [--ua UA]
[--port PORT] [--spn-prefix SPN_PREFIX] [--spn-hostname SPN_HOSTNAME] [-k]
[--no-pass] [--ssl] [--log] [--debug] [--no-colors] [--version] [--mcp]
[--mcp-port MCP_PORT] [--mcp-host MCP_HOST]
options:
-h, --help show this help message and exit
-i IP, --ip IP remote host IP or hostname
-u USER, --user USER username
-p PASSWORD, --password PASSWORD
password
-H HASH, --hash HASH nthash
-c CONFIGURATION_NAME, --configuration-name CONFIGURATION_NAME
session configuration (JEA endpoint) to connect to (default: Microsoft.PowerShell)
--priv-key-pem PRIV_KEY_PEM
local path to private key PEM file
--cert-pem CERT_PEM local path to certificate PEM file
--uri URI wsman URI (default: /wsman)
--ua UA user agent for the WinRM client (default: "Microsoft WinRM Client")
--port PORT remote host port (default 5985)
--spn-prefix SPN_PREFIX
specify spn prefix
--spn-hostname SPN_HOSTNAME
specify spn hostname
-k, --kerberos use kerberos authentication
--no-pass do not prompt for password
--ssl use ssl
--log log session to file
--debug enable debug logging
--no-colors disable colors
--version show version
--mcp start MCP server in streamable HTTP mode
--mcp-port MCP_PORT port for MCP streamable HTTP mode (default 8000)
--mcp-host MCP_HOST host for MCP streamable HTTP mode (default 127.0.0.1)
For more information about this project, visit https://github.com/adityatelange/evil-winrm-py
For user guide, visit https://github.com/adityatelange/evil-winrm-py/blob/main/docs/usage.md
예시:
evil-winrm-py -i 192.168.1.100 -u Administrator -p P@ssw0rd --ssl
Menu:
[+] services - Show the running services (except system services)
[+] upload <local_path> <remote_path> - Upload a file
[+] download <remote_path> <local_path> - Download a file
[+] loadps <local_path>.ps1 - Load PowerShell functions from a local script
[+] runps <local_path>.ps1 - Run a local PowerShell script on the remote host
[+] loaddll <local_path>.dll - Load a local DLL (in-memory) as a module on the remote host
[+] runexe <local_path>.exe [args] - Upload and execute (in-memory) a local EXE on the remote host
[+] menu - Show this menu
[+] clear, cls - Clear the screen
[+] exit - Exit the shell
Note: Use absolute paths for upload/download for reliability.
mcp 추가 기능이 설치된 경우, evil-winrm-py를 MCP 서버로 실행하여 WinRM login/execute/logout을 MCP 호환 클라이언트(예: Claude, 기타 AI 에이전트)를 위한 도구로 streamable HTTP를 통해 노출할 수 있습니다. session_id를 통해 여러 동시 WinRM 세션을 지원합니다.