Найти в Дзене

Подробное руководство по Evil-WinRM

Оглавление
Изображение: Gursimrat Ganda (Unsplash)
Изображение: Gursimrat Ganda (Unsplash)

В этой статье пойдет речь об инструменте Evil-WinRM. Его цель – максимально упростить тестирование на проникновение, в особенности в среде Microsoft Windows.

Введение

Инструмент Evil-WinRM изначально был создан командой Hackplayers. Его работа напрямую связана с протоколом PowerShell (PSRP). Системные и сетевые администраторы часто используют протокол удаленного управления Windows (англ. «Windows Remote Management protocol») для загрузки, редактирования и выгрузки данных.

WinRM – это основанный на базе SOAP и дружественный к межсетевому экрану протокол, который работает с протоколом HTTP через HTTP-порт 5985 по умолчанию. Дополнительная информация об удаленном использовании PowerShell представлена на сайте Microsoft.

Evil-WinRM – это инструмент с открытым исходным кодом, написанный на языке Ruby. Он максимально упрощает тестирование на проникновение в среде Windows. Этот инструмент имеет множество интересных функций, среди которых есть удаленный вход с помощью простого текстового пароля, зашифрованный с помощью SSL вход, вход с помощью NTLM-хеша, вход с помощью ключей, передачу файлов и хранение журналов данных. Авторы инструмента постоянно выпускают обновления и добавляют множество новых функций, которые упрощают внутреннюю оценку безопасности системы. Используя Evil-WinRM, пользователь может получить сеанс PowerShell удаленного хоста. Этот инструмент есть во всех современных версиях Kali Linux, но его также можно скачать из официального репозитория git.

Обнаружение службы WinRM

Инструмент Evil-WinRM может быть использован, если служба WinRM включена на удаленном хосте. Чтобы проверить это, следует узнать, открыты или нет два служебных порта WinRM по умолчанию (5895 и 5896) – для этого используется Nmap. Пользователь обнаружил, что служба WinRM включена, поэтому он сможет использовать Evil-WinRM для входа в систему и выполнения последующих задач.

nmap -p 5985,5986 192.168.1.19

-2

Стоит добавить, что многие тестировщики на проникновение и игроки CTF довольно часто используют этот инструмент во время внутренней оценки системы, однако обычные пользователи все еще не знают о его дополнительных функциях. С помощью Evil-WinRM можно провести пентестинг намного быстрее и легче, чем когда-либо. Чтобы узнать все доступные функции данного инструмента, пользователь просто добавит флаг «-h», тем самым вызвав справку.

evil-winrm -h

-3

Вход с использованием пароля

Предположим, что у пользователя есть обычный текстовый пароль на этапе перечисления, и он узнал, что служба WinRM включена на удаленном хосте. Он может получить удаленный сеанс в целевой системе, используя Evil-WinRM, указав IP-адрес удаленного хоста с флагом «-i», имя пользователя с флагом «-u» и пароль с флагом «-p».

evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987

-4

На изображении выше можно увидеть, что пользователь получил удаленный сеанс PowerShell.

Вход с использованием пароля и включенным SSL

Служба WinRM передает трафик по протоколу HTTP – пользователь может использовать Secure Socket Layer (SSL), чтобы сделать соединение безопасным. Как только он включит SSL, данные начнут передаваться на зашифрованном уровне с помощью защищенных сокетов. С помощью Evil-WinRM, используя флаг «-S» вместе с предыдущей командой, пользователь устанавливает защищенное соединение с удаленным хостом.

evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -S

-5

Вход с помощью NTLM Hash – Pass The Hash Attack

Во время внутренней оценки системы или решения любых других задач, связанных с повышением привилегий в Windows и использованием Active Directory, пользователь часто может получить хеш NTLM. Если хакер находится в среде Windows, он может использовать Evil-WinRM для установления сеанса PowerShell, выполнив атаку Pass The Hash. Пользователь получит хеш в качестве пароля вместо простого текста. Кроме того, эта атака также поддерживает и другие протоколы. Пользователь может получить хеш, используя флаг «—H» вместе с командой, которую он использовал ранее, заменив раздел пароля хешем.

evil-winrm -i 192.168.1.19 -u administrator -H 32196B56FFE6F45E294117B91A83BF38

-6

Загрузка скрипта Powershell

Evil-WinRM также имеет функцию, которая позволяет использовать скрипты с машины хакера. Можно напрямую загружать скрипты непосредственно в память, используя флаг «—s» вместе с указанием пути к файлу сценария. Кроме того, доступна функция AMSI, которая часто нужна перед импортом любого скрипта. В приведенном ниже примере пользователь обходит AMSI, затем напрямую вызывает скрипт Invoke-Mimiktz.ps1 из его системы на целевую машину и загружает его. После этого он может использовать любую команду Mimikatz. В демонстрационных целях здесь были выгружены учетные данные из кэша. После сброса учетных данных пользователь может снова выполнить хеш-атаку с полученным хешем NTLM. Следует выполнить указанные ниже действия, чтобы воспроизвести атаку с помощью Evil-WinRM.

Подробнее об этом здесь.

-7

evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -s /opt/privsc/powershell
Bypass-4MSI
Invoke-Mimikatz.ps1
Invoke-Mimikatz

-8

Хранение логов с помощью Evil-WinRM

Эта функция подходит для хранения журналов в локальной системе при выполнении перечисления после получения удаленного сеанса. Когда пользователь играет в CTF или участвует во внутреннем тестировании на проникновение в режиме реального времени, ему нужно сохранять ссылки для отчетности. Evil-WinRM предоставляет возможность хранения всех журналов на машине пентестера с помощью использования флага «—l». Он может взять любой удаленный сеанс и добавить флаг «-l», чтобы сохранить все журналы на его машине в каталоге /root/evil-winrm-logs с датой и IP-адресом, которые пригодятся позже для ссылок. В приведенном ниже примере пользователь одновременно использовал команду «ipconfig» и вывод команды, сохраненный на его машине.

evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -l

-9

Проверив содержимое сохраненных журналов, пользователь заметил, что он сделал скриншот терминала, когда использовал команду «ipconfig».

-10

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

По умолчанию инструмент имеет функцию удаленного автозавершения сеанса, но, если пользователь хочет отключить ее, он может добавить флаг «-N» вместе командой.

evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -N

-11

Отключение цветного интерфейса

Всякий раз, когда пользователь получает удаленный сеанс с помощью Evil-WinRM, перед ним мелькает красивый цветной интерфейс командной строки. Тем не менее, если он хочет отключить цветной интерфейс, он может сделать это, используя флаг «-n» вместе с командой при создании сеанса.

evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -n

-12

Выполнение исполняемых файлов

Эта функция предназначена для решения проблем в режиме реального времени, с которыми пользователь может столкнуться во время оценки, когда у него есть сеанс PowerShell, и он не может перенести его в командную строку. В подобной ситуации хакер хотел бы иметь возможность запускать исполняемые файлы .exe в сеансе Evil-WinRM. Предположим, у человека есть исполняемый файл, который он хочет запустить в целевой системе.

-13

Команда Hackplayers не так давно добавила дополнительную функцию, с помощью которой пользователь может запускать исполняемые файлы как по волшебству, находясь в сеансе PowerShell. Аналогично тому, как пользователь использовал флаг «-s» для выполнения пути скриптов PowerShell, на этот раз он будет использовать флаг «-e» для выполнения исполняемых двоичных файлов в формате .exe. В приведенном ниже примере исполняемый файл хранится на локальном компьютере, и пользователь запустит его с помощью дополнительной функции (Invoke-Binary) из меню Evil-WinRM. Эта функция позволяет выполнять любые исполняемые файлы, которые обычно запускаются в оболочке командной строки.

evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -e /opt/privsc
Bypass-4MSI
menu
Invoke-Binary /opt/privsc/winPEASx64.exe

-14

Как только пользователь укажет путь к исполняемым файлам, он сможет выполнить любой исполняемый файл, который захочет запустить в целевой системе. В приведенном ниже примере он вызывает «WinPEASx64.exe» и запускает его в целевой системе с помощью Evil-WinRM.

-15

Перечисление служб с помощью Evil-WinRM

Многие инструменты перечисления после эксплуатации не могут определить имя службы, запущенной в целевой системе. В этом случае пользователь может использовать Evil-WinRM для поиска имен служб, активных в целевой системе. Чтобы сделать это, пользователь может снова зайти в меню и использовать сервисы. Там будут перечислены все службы, запущенные на скомпрометированном хосте. Эта функция может быть очень полезной, когда в целевой системе обнаружена какая-то новая служба, а другие инструменты постэксплуатации не могут идентифицировать ее имя.

-16

Передача файлов с помощью Evil-WinRM

Нет никаких сомнений в том, что Evil-WinRM приложил все усилия, чтобы максимально упростить пентестинг. Пользователю часто нужно передавать файлы с атакующей машины на удаленную машину, чтобы выполнить перечисление. Вместо того, чтобы настраивать сервер Python и загружать его из целевой системы, можно просто использовать команду «upload» с указанием имени файла. Эта функция, которую предоставляет инструмент Evil-WinRM, будет особенно полезной в случае, когда пользователь упирается в правила исходящего трафика, установленные в целевой системе, и когда он использует Evil-WinRM с прокси. В приведенном ниже примере пользователь загружает файл «notes.txt» в целевую систему.

upload /root/notes.txt .

-17

Аналогичным образом, пользователь может загрузить файл из целевой системы на свой компьютер, используя команду «upload» с указанием имени файла.

download notes.txt /root/raj/notes.txt

-18

Проверить результат можно, если перейти по пути, куда был загружен «notes.txt».

-19

Использование Evil-WinRM в Docker

Этот инструмент также может быть добавлен в Docker. Если есть другая система в Docker, где установлен Evil-WinRM, то пользователь может вызвать инструмент. Он будет работать так же, как и в основной базовой системе, без каких-либо изменений. Необходимо выполнить следующую команду:

docker run --rm -ti --name evil-winrm oscarakaelvis/evil-winrm -i 192.168.1.105 -u Administrator -p 'Ignite@987'

-20

Вход с помощью ключа и Evil-WinRM

Evil-WinRM позволяет использовать открытый и закрытый ключи для установления удаленного сеанса с использованием флага «-c» для открытого ключа и флага «-k» – для закрытого ключа. Кроме того, можно добавить флаг «-an S», чтобы включить SSL и сделать соединение зашифрованным и безопасным.

evil-winrm -i 10.129.227.105 -c certificate.pem -k priv-key.pem -S

-21

Заключение

В данной статье были описаны возможности инструмента Evil-WinRM и его особые функции, которые значительно упростят внутреннюю оценку. Есть несколько способов установки удаленного сеанса с помощью Evil-WinRM. Кроме того, расширенный функционал инструмента повысит производительность в рабочей среде, а также CTF-практике.

Автор переведенной статьи: Raj Chandel.

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

-22

Актуальные вакансии по ИБ на https://cisoclub.ru/vacancy/. Отправить резюме во все популярные IT-компании: https://cisoclub.ru/jobmail/

Больше интересного материала на cisoclub.ru. Подписывайтесь на нас: VK | Twitter | Telegram | Дзен | YouTube | Rutube.