На днях ребята из хакерской группировки Shadow Brokers выложила в сеть очередную партию украденных инструментов у Equation Group, которая сотрудничает с АНБ. Для тех кто не в курсе АНБ, или как говорят наши американские братья NSA, — это секретная государственная структура, которая занимается взломом своих граждан на законной основе.
Ребята из Shadow Brokers уже давно пытаются продать эти хакерские инструменты в глубоком вебе в другом интернете. В начале цена была сумасшедшая, потом они начали ее спускать, но все тщетно.
Эксплуатация уязвимости Eternalblue
Клиента они так и не нашли и решили выложить бесплатно. Предыдущие порции эксплоитов нечем особенно не впечатляли, но эти будут радовать хакеров еще долгое время. Особенно те, которые лежат в папке Windows.
Последний раз такой хэппенинг для хакеров был в 2008 году. Тогда хакерский андеграунд получил в руки уязвимость, которую эксплуатирует по сегодняшний день.
Почему, разве разработчики не пытаются выпускать обновления и закрывать дыры?
Да, пытаются, но некоторые товарищи знать не знают и слушать не хотят про информацию безопасность, они до сих пор сидят на Windows XP или других подобных старых дырявых версиях или не обновляют новые версии Винды. А таких как я называют параноиками (читаем комменты в наших пабликах). Вот почему подарок хакерам от Shadow Brokers будет актуален еще долгое время.
Вчера я раздобыл весь материал и просидел всю ночь изучая эти инструменты, сегодня утром решил, что об этом должны знать все подписчики и посетители сайта. Больше всего меня впечатлило несколько инструментов это: фреймвор FuzzBunch, Empire и эксплоит EternalBlue.
В этой статье я хочу показать, как используя эти инструменты хакеры могут взломать ваш компьютер эксплуатируя уязвимость ETERNALBLUE, ну и в конце статьи я дам рекомендации как защититься от подобного взлома.
На сегодняшний день Shodan находит 2,218,202 компьютеров с открытым 445 портом из них 120,156 из России. Часть из них могут быть взломаны удаленно эксплуатируя уязвимость MS17-010.
FuzzBunch позволяют эксплуатировать опасные RCE-уязвимости операционной системы Windows практически в автоматическом режиме. Эта уязвимость устранена с выходом пачта MS17-010: он устраняет 6 проблем Windows SMB Server, 5 из которых позволяют выполнить произвольный код через создание специального пакета Server Message Block (SMB) 1.0.
Статья носит исследовательский характер. При ее написании использовалась общедоступная информация. Применение описываемых техник или методик, или их частей в противозаконных и противоправных действиях запрещена. Соблюдайте законодательство.
По умолчанию арсенал Kali Linux позволяет проводить множество атак на машины под управлением ОС Windows, но двух современных инструментов в ней не хватает. В данной статье речь пойдет об инструментах Empire и FuzzBunch, которыми стоит дополнить ваш дистрибутив, чтобы существенно расширить возможности для эксплуатации и постэксплуатации Windows систем в сети.
Empire
Powershell Empire предоставляет модульную платформу для пост-эксплуатации, используя возможности средства автоматизации ОС Windows PowerShell.
Empire агенты полностью работают в оперативной памяти и их сложно детектировать средствами защиты, т.е. антивирусным ПО и системами предотвращения вторжений из-за того, что они написаны на скриптовом языке и во время выполнения между агентом и антивирусным ПО стоит интерпретатор скриптового языка, в отличие от классических пейлоадов, скомпилированных в ассемблер и исполняемый файл.
Установка Empire
- Скачиваем Empire с github
- Запускаем скрипт Empire/setup/install.sh для установки зависимостей в систему.
- Далее запускаем скрипт для инициализации базы данных Empire/setup/setup_database.py
- Установка завершена.
Запуск и базовая настройка Empire
Запускаем фреймворк скриптом ./empire и попадаем в главное меню
Основные понятия, с которыми нам придется столкнуться это listener, stager и agent.
Listener – локальные IP адрес и порт, к которым должен подключаться агент при успешном выполнении на стороне жертвы.
Командой listeners переходим в режим конфигурирования листнера и создаем новый листнер по адресу
1 |
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
Для установки FuzzBunch вам понадобится либо 32-битная Windows машина, либо Kali Linux с установленным окружением Wine. Мы воспользуемся вторым вариантом, чтобы оба инструмента, Empire и FuzzBunch, находились в одном дистрибутиве. Загрузим файлы на свою машину Kali Linux с github
1 |
git clone <a href="https://github.com/fuzzbunch/fuzzbunch.git">github.com/fuzzbunch/fuzzbunch.git</a> |
Для работы FuzzBunch Нам потребуется Python 2.6 и, чтобы не захламлять ваше основное окружение Wine, я рекомендую создать новое. Для начала устанавливаем/обновляем Wine, если вы этого еще не сделали.
1 |
apt-<span class="hljs-keyword">get</span> instal wine winbind |
Создаем и инициализируем новое окружение:
1 2 |
mkdir ~/<span class="hljs-selector-class">.wine_fuzzbunch</span> WINEPREFIX=<span class="hljs-string">"/root/.wine_fuzzbunch/"</span> winecfg |
Оставляем все без изменения:
export WINEPREFIX=/root/.wine_fuzzbunch/
Проверяем, что окружение создалось успешно:
Добавляем в PATH требуемые директории
wine regedit.exe
Устанавливаем fuzzbunch в окружение Wine:
1 2 3 4 5 |
[crayon-67118db0e30e4215868338 inline="true" class="hljs vim"]<span class="hljs-built_in">mkdir</span> -<span class="hljs-keyword">p</span> ~/.wine_fuzzbunch/drive_c/nsa/windows <span class="hljs-keyword">cd</span> ~/.wine/drive_c/nsa/windows <span class="hljs-keyword">cp</span> -R [ваш_каталог_с_fuzzbunch]/* . wget http<span class="hljs-variable">s:</span>//www.<span class="hljs-keyword">python</span>.org/ftp/<span class="hljs-keyword">python</span>/<span class="hljs-number">2.6</span>/<span class="hljs-keyword">python</span>-<span class="hljs-number">2.6</span>.msi wget http<span class="hljs-variable">s:</span>//downloads.sourceforge.net/project/pywin32/pywin32/Build%<span class="hljs-number">20219</span>/pywin32-<span class="hljs-number">219</span>.win32-py2.<span class="hljs-number">6</span>.<span class="hljs-keyword">exe</span>?<span class="hljs-keyword">r</span>=&<span class="hljs-keyword">ts</span>=<span class="hljs-number">1493192168</span>&use_mirror=netcologne |
[/crayon]
Устанавливаем Python
1 |
>wine msiexec /<span class="hljs-selector-tag">i</span> python-<span class="hljs-number">2.6</span>.msi |
Устанавливаем pywin32
1 |
<span class="hljs-selector-tag">wine</span> <span class="hljs-selector-tag">pywin32-219</span><span class="hljs-selector-class">.win32-py2</span><span class="hljs-selector-class">.6</span><span class="hljs-selector-class">.exe</span> |
Постинсталляция:
1 2 3 4 5 |
wine cmd<span class="hljs-selector-class">.exe</span> cd C:\Python26\Scripts python pywin32_postinstall<span class="hljs-selector-class">.py</span> -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.
1 |
use Eternalblue |
На вопрос о проверке параметров отвечаем утвердительно:
Оставляем все без изменения, кроме пункта о методе доставки. Тут выбираем FB.
В завершении запускаем модуль на выполнение и видим сообщение Eternalblue Succeeded.
Постэксплуатация в связке с Empire
Создаем новый листенер:
В качестве механизма доставки агента используем на этот раз dll. Если бы вы использовали Empire на отдельной машине, то для доставки стейджера на машину с FuzzBunch будет удобно сохранить его в каталог веб-сервера и затем скачать по сети.
Если у вас и Powershell Empire и FuzzBunch на одной машине, как в моем случае, то сохраняем файл в корень диска C окружения Wine.
Переходим снова в FuzzBunch, где открыта сессия с машиной жертвы, и используем модуль DoublePulsar.
1 |
<span class="hljs-keyword">use</span> DoublePulsar< |
Выбираем 64-битную архитектуру:
В качестве пейлоада мы будем инжектировать DLL, созданную в Empire.
Указываем полный путь до DLL:
C:\launcher.dll
Выполняем модуль:
В интерфейсе Empire получаем новую сессию и выполняем Mimikatz.
Получаем логины и пароли пользователей.
В то же время операционная система жертвы не выявляет атаки. В журналах Microsoft Security Essentials пусто, система работает стабильно. Таким образом, наш дистрибутив Kali Linux приобрел два современных инструмента для эксплуатации и постэксплуатации ОС под управлением Windows.
Как защититься?
В качестве средств защиты рекомендуется обновить Windows системы (если вы этого еще по каким-то причинам не сделали), использовать средства обнаружения и блокирования атак — firewall и т.д.
Например это можно сделать с помощью следующих команд:
1 |
netsh advfirewall firewall add rule <span class="hljs-attr">dir=in</span> <span class="hljs-attr">action=block</span> <span class="hljs-attr">protocol=TCP</span> <span class="hljs-attr">localport=135</span> <span class="hljs-attr">name="Block_TCP-135"</span> |
1 |
netsh advfirewall firewall add rule <span class="hljs-attr">dir=in</span> <span class="hljs-attr">action=block</span> <span class="hljs-attr">protocol=TCP</span> <span class="hljs-attr">localport=445</span> <span class="hljs-attr">name="Block_TCP-445"</span> |
Да, быть журналистом на сайте дело сложное. Вдруг появляется какая-то важная новость, пытаешься разобраться в ней и первым об этом написать, и на тебе, кто-то это сделает раньше тебя. В этот раз тоже самое. Закончил я анализ дампа Shadow Brokers, начал писать статью и на тебе. Кто-то ее уже выложил. В этот раз меня опередила лаборатория Pentestit, точнее Luca Safonov. Автором большей части этой статьи является именно он. Все респекты ему!