黑客技术
点击放大

!Banner
WinRM (Windows Remote Management) is the Microsoft implementation of WS-Management 协议. A standard SOAP based 协议
that allows hardware and operating systems from different to interoperate. Microsoft included it in their Operating
Systems in order to make life easier to system administrators.
This program can be used on any Microsoft Windows Servers with this feature enabled (usually at port 5985), of course only
if you ha and permissions to use it. So we can say that it could be used in a post-exploitation hacking/pentesting
phase. The purpose of this program is to provide nice and easy-to-use features for hacking. It can be used with legitimate
purposes by system administrators as well but the most of its features are focused on hacking/pentesting stuff.
It is based mainly in the WinRM Ruby library which changed its way to work since its 2.0. Now instead of using WinRM
协议, it is using PSRP (Powershell Remoting 协议) for initializing runspace pools as well as creating and processing pipelines.
winrm >=2.3.7, winrm-fs >=1.3.2, stringio >=0.0.2, logger >= 1.4.3, fileutils >= 0.7.2, readline ~> 0.0.4, readline-ext ~> 0.2.0.Another important requirement only used for Kerberos auth is to install the Kerberos package used for 网络 authentication.
For some Linux like Debian based (Kali, Parrot, etc.) it is called krb5-user. For BlackArch it is called krb5 and probably it could be called in a different way for other Linux distributions.
The remote path completion feature requires the native readline-ext binding, which is installed automatically as an E dependency. Some systems require additional de packages to compile it. Check the section below for more info.
sudo gem install winrm winrm-fs stringio logger fileutils readline readline-extgit clone gem install bundlergit clone cd e && bundle install --path /bundle-p argument and the password will be prompted pre to be shown.-i argument instead of an IP address.upload local_filename or upload local_filename destination_filenamedownload remote_filename or download remote_filename destination_filename __Notes about paths (upload/download)__:
Relati are not allowed to use on download/upload. Use filenames on current directory or absolute path.
If you are using E in a docker en, bear in mind that all local paths should be at /data and be pretty sure that you mapped it as a in order to be able to access to downloaded files or to be able to upload files from your local host O.S.
- services: list all services showing if there your account has permissions over each one. No administrator permissions needed to use this feature.
- menu: load the In, Dll-Loader and Donut-Loader functions that we will explain below. When a ps1 is loaded all its functions will be shown up.
- clear or cls: clear the terminal screen. You can also use Ctrl+L keyboard shortcut to clear the screen.
- exit or quit: close the E session. You can also use the Ctrl+D keyboard shortcut.
-s argument. Type menu again and see the loaded functions. Very large files can take a long time to be loaded.In /opt/csharp/Binary.exe 'param1, param2, param3'. The executables must be in the path set at -e argument. - Dll-Loader: allows loading dll libraries in memory, it is equi to: [Reflection.Assembly]::Load([IO.File]::ReadAllBytes("pwn.dll"))
The dll file can be hosted by smb, http or locally. Once it is loaded type menu, then it is possible to autocomplete all functions.
- Donut-Loader: allows to inject x64 payloads generated with awesome [donut] technique. No need to encode the payload.bin, just generate and inject!
You can use this [donut-maker] to generate the payload.bin if you don't use Windows.
This script use a python module written by Marcello Salvati ([byt3bl33d3r]). It could be installed using pip: pip3 install donut-shellcode
- Bypass-4MSI: patchs AMSI protection.
rdate -n <dc_ip> * Using [ticketer.py] from impacket
* Using [Rubeus] or [Mimikatz] to get kirbi tickets (automatic con to ccache is supported)
export KRB5CCNAME=/foo/.ccache
cp ticket.ccache /tmp/krb5cc_0
Use the -K parameter: e -i hostname -r DOMAIN.COM -K /path/to/ticket.ccache or e -i hostname -r DOMAIN.COM -K /path/to/ticket.kirbi
When using -K, the tool will automatically:
- Detect the ticket format (ccache or kirbi)
- Convert kirbi tickets to ccache format if needed (requires ticket_con.py or impacket-ticketCon)
- the file exists and is readable
- Set the KRB5CCNAME en
- Resolve IP addresses to FQDN for better Kerberos compatibility
- Add realm to /etc/krb5.conf (for linux). Use of this format is important:
- Check Kerberos tickets with klist
- To remo use: kdestroy
- For more information about Kerberos check this [cheatsheet]
readline-ext binding. E declares it as a dependency, so it is installed automatically when using RubyGems or Bundler. If the nati cannot be built, this feature will not work (a warning will be shown).*Ruby 3.3+ note:*ext/readline was removed from Ruby's 源码 in 3.3 (Feature #19616). Therefore, Method 1 below cannot be used with Ruby 3.3 or newer. On Debian-based systems, install the required de package before installing E or its dependencies:
The readline-ext dependency makes require 'readline' load GNU Readline instead of reline, which lacks quoting_detection_proc, the method E checks for. The methods below target older Ruby and are kept for compatibility.
#### Method 1 (compile the needed extension)
Using this method you'll compile ruby with the needed readline feature but to use only the library without changing the default ruby on your system. Because of this, is the most recommended method.
Let's suppose that you have in your Debian based system ruby 2.7.3:
#### Method 2 (Install ruby to use it only for e using rbenv)
Let's suppose that you want ruby 2.7.1 on a Debian based Linux and you are using zsh. This script will automatize it. You'll need to launch it from the same dir where e.rb and Gemfile is located (the e created dir after a git clone for example):
Then you can safely launch e using the new installed ruby with the required readline support from any location.
#### Method 3 (compile entire ruby)
If you want to compile it yourself, you can follow these steps. Let's suppose that you want ruby 2.7.3:
Depending of your system it will be installed at /opt/rubies/ruby-2.7.3 or maybe at ~/.rubies/ruby-2.7.3.
Now just need to install e dependencies for that new installed ruby . The easiest way is to launch command /opt/rubies/ruby-2.7.3/bin/gem install e. The gem command used must be belonging to the new ruby installation.
After that, you can launch safely your new installed ruby to use it on e: /opt/rubies/ruby-2.7.3/bin/ruby ./e.rb -h
It is recommended to use this new installed ruby only to launch e. If you set it up as your default ruby for your system, bear in mind that it has no dependency gems installed. Some ruby based software like Metasploit or others could not start correctly due dependencies problems.
This feature will create files on your $HOME dir saving commands and the outputs of the WinRM sessions.
E maintains a persistent command history for each host and user combination. The history is stored in ~/.e/history/ directory with files named as {host}_{user}.hist.
When you connect to a machine you' accessed, you can use the arrow keys (Up/Down) to na through your previous commands. The history is automatically sa each command execution and loaded when you reconnect to the same host with the same user.
Sometimes, you could face an error like this:
The error is caused because the OpenSSL 3.0 retired some legacy functions like MD4 which are needed to run this 工具. There are different existing workarounds to deal with this situation:
- Update your system to the latest. Likely, this problem was automatically fixed on latest Ruby that are using newer OpenSSL .
- Compile your own Ruby using old OpenSSL 1.x instead of OpenSSL 3.0 or compile it using OpenSSL > 3.0 to avoid the problematic 3.0 .
- The easiest one. Edit your /etc/ssl/openssl.cnf config file and be sure the config is like this:
- As an alternative for the last workaround, if your system is using LibreSSL instead of OpenSSL or maybe you just don't want to modify your system config file. Create a simple file containing the abo. Any name can be used, for example e.conf. After that, export an en var to force the system to use it: export OPENSSL_CONF="/path/to/e.conf". And then launch the 工具, the error will disappear.
- [Cybervaca], (founder). Twitter (X): []
- [OscarAkaElvis], Twitter (X): []
- [Jarilaos], Twitter (X): [@_Laox]
- [arale61], Twitter (X): []
Hat tip to:
- [Vis0r] for his personal support.
- [Alamot] for his original code.
- [3] for his awesome dll loader.
- [WinRb] All contributors of ruby library.
- [TheWover] for his awesome donut tool.
- [byt3bl33d3r] for his python library to create donut payloads.
- [Sh11td0wn] for inspiration about new features.
- [Borch] for his help adding logging feature.
- [noraj] for his help in maintaining the 工具 across Ruby .
- [Hackplayers] for giving a shelter on their github to this software.
E should be used for authorized penetration testing and/or nonprofit educational purposes only.
Any misuse of this software will not be the responsibility of the author or of any other collaborator.
Use it at your own servers and/or with the ser's permission.
<!-- Github URLs -->
[Cybervaca]:
[OscarAkaElvis]:
[Jarilaos]:
[arale61]:
[Vis0r]:
[Alamot]:
[3]:
[Borch]:
[noraj]:
[donut]:
[donut-maker]:
[byt3bl33d3r]:
[WinRb]:
[TheWover]:
[Sh11td0wn]:
[ticketer.py]:
[ticket_con.py]:
[Rubeus]:
[Mimikatz]:
[cheatsheet]:
[Dockerhub]:
[Hackplayers]:
<!-- Twitter URLs -->
[]:
[]:
[@_Laox]:
[]:
<!-- Badges URLs -->
[]: "Latest "
[Ruby2.3-shield]: "Ruby 2.3 or later"
[License-shield]: "LGPL v3+"
[Docker-shield]: "Docker CI master"
[Gem-]: "Ruby gem"
开发语言:Ruby
Star 数:5537
该项目属于黑客技术方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕The ultimate WinRM shell for hacking/pentesting展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | evil-winrm - 用于黑客/pentesting的终极WinRM shell |
| 所属分类 | 黑客技术 |
| 发布作者 | admin |
| 发布时间 | 2026-10-05 22:03:02 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 473 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |