В этой статье пойдет речь об инструменте 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
Стоит добавить, что многие тестировщики на проникновение и игроки CTF довольно часто используют этот инструмент во время внутренней оценки системы, однако обычные пользователи все еще не знают о его дополнительных функциях. С помощью Evil-WinRM можно провести пентестинг намного быстрее и легче, чем когда-либо. Чтобы узнать все доступные функции данного инструмента, пользователь просто добавит флаг «-h», тем самым вызвав справку.
evil-winrm -h
Вход с использованием пароля
Предположим, что у пользователя есть обычный текстовый пароль на этапе перечисления, и он узнал, что служба WinRM включена на удаленном хосте. Он может получить удаленный сеанс в целевой системе, используя Evil-WinRM, указав IP-адрес удаленного хоста с флагом «-i», имя пользователя с флагом «-u» и пароль с флагом «-p».
evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987
На изображении выше можно увидеть, что пользователь получил удаленный сеанс 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
Вход с помощью 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
Загрузка скрипта Powershell
Evil-WinRM также имеет функцию, которая позволяет использовать скрипты с машины хакера. Можно напрямую загружать скрипты непосредственно в память, используя флаг «—s» вместе с указанием пути к файлу сценария. Кроме того, доступна функция AMSI, которая часто нужна перед импортом любого скрипта. В приведенном ниже примере пользователь обходит AMSI, затем напрямую вызывает скрипт Invoke-Mimiktz.ps1 из его системы на целевую машину и загружает его. После этого он может использовать любую команду Mimikatz. В демонстрационных целях здесь были выгружены учетные данные из кэша. После сброса учетных данных пользователь может снова выполнить хеш-атаку с полученным хешем NTLM. Следует выполнить указанные ниже действия, чтобы воспроизвести атаку с помощью Evil-WinRM.
Подробнее об этом здесь.
evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -s /opt/privsc/powershell
Bypass-4MSI
Invoke-Mimikatz.ps1
Invoke-Mimikatz
Хранение логов с помощью 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
Проверив содержимое сохраненных журналов, пользователь заметил, что он сделал скриншот терминала, когда использовал команду «ipconfig».
Запрет удаленного автозавершения сеанса
По умолчанию инструмент имеет функцию удаленного автозавершения сеанса, но, если пользователь хочет отключить ее, он может добавить флаг «-N» вместе командой.
evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -N
Отключение цветного интерфейса
Всякий раз, когда пользователь получает удаленный сеанс с помощью Evil-WinRM, перед ним мелькает красивый цветной интерфейс командной строки. Тем не менее, если он хочет отключить цветной интерфейс, он может сделать это, используя флаг «-n» вместе с командой при создании сеанса.
evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -n
Выполнение исполняемых файлов
Эта функция предназначена для решения проблем в режиме реального времени, с которыми пользователь может столкнуться во время оценки, когда у него есть сеанс PowerShell, и он не может перенести его в командную строку. В подобной ситуации хакер хотел бы иметь возможность запускать исполняемые файлы .exe в сеансе Evil-WinRM. Предположим, у человека есть исполняемый файл, который он хочет запустить в целевой системе.
Команда 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
Как только пользователь укажет путь к исполняемым файлам, он сможет выполнить любой исполняемый файл, который захочет запустить в целевой системе. В приведенном ниже примере он вызывает «WinPEASx64.exe» и запускает его в целевой системе с помощью Evil-WinRM.
Перечисление служб с помощью Evil-WinRM
Многие инструменты перечисления после эксплуатации не могут определить имя службы, запущенной в целевой системе. В этом случае пользователь может использовать Evil-WinRM для поиска имен служб, активных в целевой системе. Чтобы сделать это, пользователь может снова зайти в меню и использовать сервисы. Там будут перечислены все службы, запущенные на скомпрометированном хосте. Эта функция может быть очень полезной, когда в целевой системе обнаружена какая-то новая служба, а другие инструменты постэксплуатации не могут идентифицировать ее имя.
Передача файлов с помощью Evil-WinRM
Нет никаких сомнений в том, что Evil-WinRM приложил все усилия, чтобы максимально упростить пентестинг. Пользователю часто нужно передавать файлы с атакующей машины на удаленную машину, чтобы выполнить перечисление. Вместо того, чтобы настраивать сервер Python и загружать его из целевой системы, можно просто использовать команду «upload» с указанием имени файла. Эта функция, которую предоставляет инструмент Evil-WinRM, будет особенно полезной в случае, когда пользователь упирается в правила исходящего трафика, установленные в целевой системе, и когда он использует Evil-WinRM с прокси. В приведенном ниже примере пользователь загружает файл «notes.txt» в целевую систему.
upload /root/notes.txt .
Аналогичным образом, пользователь может загрузить файл из целевой системы на свой компьютер, используя команду «upload» с указанием имени файла.
download notes.txt /root/raj/notes.txt
Проверить результат можно, если перейти по пути, куда был загружен «notes.txt».
Использование 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'
Вход с помощью ключа и Evil-WinRM
Evil-WinRM позволяет использовать открытый и закрытый ключи для установления удаленного сеанса с использованием флага «-c» для открытого ключа и флага «-k» – для закрытого ключа. Кроме того, можно добавить флаг «-an S», чтобы включить SSL и сделать соединение зашифрованным и безопасным.
evil-winrm -i 10.129.227.105 -c certificate.pem -k priv-key.pem -S
Заключение
В данной статье были описаны возможности инструмента Evil-WinRM и его особые функции, которые значительно упростят внутреннюю оценку. Есть несколько способов установки удаленного сеанса с помощью Evil-WinRM. Кроме того, расширенный функционал инструмента повысит производительность в рабочей среде, а также CTF-практике.
Автор переведенной статьи: Raj Chandel.
Важно! Информация исключительно в учебных целях. Пожалуйста, соблюдайте законодательство и не применяйте данную информацию в незаконных целях.
Актуальные вакансии по ИБ на https://cisoclub.ru/vacancy/. Отправить резюме во все популярные IT-компании: https://cisoclub.ru/jobmail/
Больше интересного материала на cisoclub.ru. Подписывайтесь на нас: VK | Twitter | Telegram | Дзен | YouTube | Rutube.