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
git clone github.com/fuzzbunch/fuzzbunch.git
Для работы FuzzBunch Нам потребуется Python 2.6 и, чтобы не захламлять ваше основное окружение Wine, я рекомендую создать новое. Для начала устанавливаем/обновляем Wine, если вы этого еще не сделали.
apt-get instal wine winbind
Создаем и инициализируем новое окружение:
mkdir ~/.wine_fuzzbunch
WINEPREFIX="/root/.wine_fuzzbunch/" winecfg
Оставляем все без изменения:
export WINEPREFIX=/root/.wine_fuzzbunch/
Проверяем, что окружение создалось успешно:
Добавляем в PATH требуемые директории
wine regedit.exe
Устанавливаем fuzzbunch в окружение Wine:
mkdir -p ~/.wine_fuzzbunch/drive_c/nsa/windows
cd ~/.wine/drive_c/nsa/windows
cp -R [ваш_каталог_с_fuzzbunch]/* .
wget https://www.python.org/ftp/python/2.6/python-2.6.msi
wget https://downloads.sourceforge.net/project/pywin32/pywin32/Build%20219/pywin32-219.win32-py2.6.exe?r=&ts=1493192168&use_mirror=netcologne
Устанавливаем Python
wine msiexec /i python-2.6.msi
Устанавливаем pywin32
wine pywin32-219.win32-py2.6.exe
Постинсталляция:
wine cmd.exe
cd C:\Python26\Scripts
python pywin32_postinstall.py -install
cd C:\nsa\windows
mkdir listeningposts
Запуск и эксплуатация MS17-010
Из окружения Wine выполняем следующую команду:
Будем атаковать 64-х битную Windows 7 машину с IP адресом 192.168.1.10, в то время как машина атакующего имеет IP адрес 192.168.1.3.
Задаем эти параметры при запуске.
Для выполнения вредоносного кода будем использовать уязвимость в протоколе SMB, которая носит название Eternalblue.
use Eternalblue
На вопрос о проверке параметров отвечаем утвердительно:
Оставляем все без изменения, кроме пункта о методе доставки. Тут выбираем FB.
В завершении запускаем модуль на выполнение и видим сообщение Eternalblue Succeeded.
Постэксплуатация в связке с Powershell Empire
Создаем новый листенер:
В качестве механизма доставки агента используем на этот раз dll. Если бы вы использовали Empire на отдельной машине, то для доставки стейджера на машину с FuzzBunch будет удобно сохранить его в каталог веб-сервера и затем скачать по сети.
Если у вас и Powershell Empire и FuzzBunch на одной машине, как в моем случае, то сохраняем файл в корень диска C окружения Wine.
Переходим снова в FuzzBunch, где открыта сессия с машиной жертвы, и используем модуль DoublePulsar.
use DoublePulsar
Выбираем 64-битную архитектуру:
В качестве пейлоада мы будем инжектировать DLL, созданную в Empire.
Указываем полный путь до DLL:
C:\launcher.dll
Выполняем модуль:
В интерфейсе Empire получаем новую сессию и выполняем Mimikatz.
Получаем логины и пароли пользователей.
В то же время операционная система жертвы не выявляет атаки. В журналах Microsoft Security Essentials пусто, система работает стабильно. Таким образом, наш дистрибутив Kali Linux приобрел два современных инструмента для эксплуатации и постэксплуатации ОС под управлением Windows.
Защитные меры
В качестве средств защиты рекомендуется обновить Windows системы (если вы этого еще по каким-то причинам не сделали), использовать средства обнаружения и блокирования атак — firewall и т.д.
Например это можно сделать с помощью следующих команд:
netsh advfirewall firewall add rule dir=in action=block protocol=TCP localport=135 name="Block_TCP-135"
netsh advfirewall firewall add rule dir=in action=block protocol=TCP localport=445 name="Block_TCP-445"