✍️ Статья Установка и использование фреймворка PowerShell Empire. Часть 2

The 146X Project Dublikat Web Studio Avram Lincoln AL Service Navigator Knyaz

BlackPope

Команда форума
Модератор DeepWeb ✔️
PR-Group DeepWeb 🔷
Регистрация
27.04.2020
Сообщения
230
К базовым опциям относятся те функции, которые реализованы в Empire без участия сторонних модулей. Так что пробежимся по тем, которые приходится часто применять:
  • sysinfo — предоставляет информацию о системе на удаленном хосте;
  • download/upload — позволяет загрузить файлы на удаленный хост или с него (подобные команды реализованы уже, наверное, везде);
  • sleep — устанавливает интервал обмена сообщениями с агентом. Таким образом, если установить интервал в 60 секунд, то агент будет принимать от оператора команду и загружать ее в очередь, а затем раз в минуту очищать очередь и предоставлять информацию;
  • steal_token — модуль имперсонации токена доступа;
  • shell [cmd] — позволяет выполнить команду черед cmd.exe;
  • ps — выводит список процессов с указанием имени процесса, его PID, пользователя, в контексте которого работает процесс, и занимаемую процессом память;
  • psinject — внедряет агент в другой процесс;
  • scriptimport — позволяет загрузить PowerShell-скрипт в память;
  • mimikatz — простое быстрое выполнение sekurlsa::logonpasswords;
  • creds — локальное хранилище учетных данных (паролей, хешей), предоставляет оперативную работу с ними. Хеши заполняются автоматически при использовании разных модулей, но также возможно их ручное добавление и удаление. К примеру, упомянутая команда mimikatz собрала некоторые учетные данные. Давайте взглянем на них.
DWNAjLhylZg.jpg

Локальное хранилище creds Empire

Это не все «быстрые команды» Empire, а, как упоминалось, те, которые мы используем постоянно.

Для подключения дополнительных модулей следует использовать команду usemodule, а если вам необходимо найти какой-то модуль, для этого есть команда searchmodule.

CxmLxwio7Mw.jpg

Поиск модулей, связанных с dllhijack

Раздел collection
Давайте рассмотрим модули из данного раздела, которыми мы часто пользуемся. Так как почти всегда приходится вытаскивать пароли и данные из браузеров, тут на помощь приходят следующие инструменты:

  • collection/ChromeDump;
  • collection/FoxDump;
  • collection/SharpChromium.
18R1H-GJhtg.jpg

Использование модуля SharpChromium
Запустим модуль командой run или execute. При этом Empire сообщает, что использование данного модуля нарушает правила скрытности, и спрашивает, хотим ли мы продолжить.

В результате мы получаем все куки, историю запросов и сохраненные учетные данные.

Следующие интересные возможности — искать файлов с помощью модуля collection/file_finder и получить дамп нужного процесса с помощью модуля collection/minidump. А для отслеживания вводимой пользователем информации можно легко активировать кейлоггер — collection/keylogger. Для примера откроем блокнот и напишем слово test — это действие будет зафиксировано Empire.

Cz14bbYc1GY.jpg

Работа кейлоггера
С помощью collection/clipboard_monitor мы отслеживаем, что попадает в буфер обмена.

HxEJCI76jbk.jpg

Наконец, самые замечательные функции этого раздела связаны с фишингом. Когда нам необходимо получить пароль и все потенциальные точки входа не прошли проверку, можно «попросить» у пользователя его учетные данные! Сделать это помогают модули collection/prompt или collection/toasted. Я приведу пример использования toasted: на экране юзера выводится уведомление (можно придумать какие угодно условия, но мы используем перезагрузку, так как никто не захочет прерывать работу с документами), на которое он реагирует. Независимо от его выбора появится окно авторизации, учетные данные из которого мы и получим.

usemodule collection/toasted
set ToastTitle "Ваш сеанс работы будет прекращен"
set ToastMessage "Cистема будет перезагружена через 5 минут. Хотите ли вы отложить перезагрузку?"
set Application "Служба обновлений Windows"
set CredBoxTitle "Вы уверены, что хотите перезагрузить ваш ПК?"
set CredBoxMessage "Для выполнения данного действия требуется аутентификация"
run

rgheDhBmO9k.jpg

Полученные логин и пароль пользователя
При этом у данных модулей есть параметр VerifyCreds, установив который в True мы обяжем Empire проверить эти учетные данные на подлинность, перед тем как показать их нам. Если пользователь ввел некорректные учетные данные или просто опечатался, Empire запросит их снова.

Раздел credentials

Об этом разделе рассказывать особо нечего. Он представляет собой полностью реализованное на PowerShell и вставленное в Empire программное обеспечение mimikatz.

JivEmvZ2DJY.jpg

Использование mimikatz hashdump
Использовать этот инструмент проще простого, поэтому переходим к следующему разделу.

Раздел management

В этом разделе есть несколько крутых фишек. Первая из них — это легкое включение и отключение RDP для пользователя. Для этого применяются модули management/enable_rdp и management/disable_rdp. Да, Empire снова предупреждает, что это палевно!

sLYX20Dl1Kk.jpg

Включение RDP

o35Z9xDZmO8.jpg

Отключение RDP
В Empire также встроен инструмент EmailRaider, предназначенный для просмотра и отправки фишинговых писем с помощью собственного клиента Outlook от имени пользователя.

На самом деле из большого списка довольно мощных модулей management/mailraider/ мы пользуемся только одним, который отвечает за отправку писем, — management/mailraider/send_mail.

VfvO-msPuL0.jpg

Параметры модуля send_mail
С использованием этого инструмента мы заполняем текст сообщения и делаем рассылку. Как правило, получив письмо от известного отправителя или другого сотрудника компании, жертва охотнее запустит файл (пусть и подозрительный) или перейдет по ссылкам.

И последний модуль, который используется для наблюдения, — management/vnc. Запустим у себя VNC-прослушиватель (я использую Remmina) и выполним обратное подключение.

Раздел privesc

Раздел с повышением привилегий полезен только для ограниченного круга быстрых проверок, а также из-за модуля privesc/getsystem, который позволяет перейти в контекст SYSTEM. В Empire встроены два известных скрипта: privesc/sherlock, который проверит наличие в атакуемой системе CVE-уязвимостей, и модуль privesc/powerup/allchecks — он поищет пути повышения привилегий (к примеру, подменить файл службы).

elhWxuXSXvs.jpg

Пример запуска модуля sherlock

Раздел situational_awareness

Это очень полезный раздел, с которого обычно и стоит начинать эксплуатацию. Отметим два важных модуля — situational_awareness/host/antivirusproduct и situational_awareness/host/applockerstatus. Первый предоставляет информацию об используемых на атакуемом хосте антивирусах, второй дает сведения об AppLocker.

Благодаря модулю situational_awareness/host/computerdetails мы можем посмотреть события 4648 (RDP) и 4624 (входы в систему) из журнала событий, а также журналы AppLocker, запуск PSScripts и сохраненные сеансы RDP.

fClSXkA3DeI.jpg

Пример запуска модуля computerdetails
Очень часто приходится сканировать SPN в сети, и в этом очень помогает модуль situational_awareness/network/get_spn. Похожим образом модули situational_awareness/network/powerview/get_domain_trust и situational_awareness/network/powerview/map_domain_trust облегчают задачу поиска трастов, так как позволяют рекурсивно перечислять все достижимые доверительные отношения домена с текущей позиции в сети. Но круче всего (по моему мнению) в этом разделе модуль situational_awareness/network/bloodhound3.

Ik1cc3Rw7Uw.jpg

Запуск BloodHound из Empire

С помощью этого средства мы загружаем полученные от BloodHound файлы и можем их анализировать на своей локальной машине.

Раздел persistence

Первым делом упомяну о некоторых методах персистентности:

  • SID History — реализован в модуле persistence/misc/add_sid_history;
  • SSP — реализован в модуле persistence/misc/memssp;
  • Skeleton Key — реализован в модуле persistence/misc/skeleton_key.
Но перечисленные методы — это пользовательская персистентность. Она нам понадобится, когда пользователь выключит или перезагрузит компьютер, чтобы мы смогли войти и снова запустить сеанс Empire. Но чтобы избежать подобного неудобства, в Empire есть и свои модули персистентности сеанса. Мы используем один из двух модулей: persistence/elevated/registry или persistence/elevated/wmi, разница только в том, что первый основан на закреплении через реестр, а второй через WMI.

Cjfpd1pzv8A.jpg

Закрепляемся через реестр, используя модуль persistence/elevated/registry
Empire сообщает, что мы успешно закрепились. Для примера посмотрим список агентов и перезагрузим систему. После включения ПК у нас появился новый агент!

oWTuSO3ZpMg.jpg

После перезагрузки в списке появился новый агент
С Windows все, а теперь давайте посмотрим, что мы можем получить от Empire при эксплуатации других систем.

Эксплуатация и постэксплуатация macOS с Empire

Базовые модули агента macOS схожи с базовыми модулями агента Windows, но есть отличие: вместо PowerShell используется Python. Таким образом, вместо модуля scriptimport присутствует модуль pythonscript. Также имеется модуль loadpymodule для загрузки целых программ. Загружаемый файл должен представлять собой ZIP-архив, содержащий скрипты, написанные на Python, или пакеты. Обязательно должен присутствовать файл __init__.py.

Арсенал самих модулей для macOS куда скромнее, если сравнивать с Windows. Так, модуль collection/osx/browser_dump способен извлечь историю запросов браузера, но не покажет куки и пароли. А модули для отслеживания ввода пользователя вовсе работают иначе: кейлоггер collection/osx/keylogger сохраняет историю на удаленной машине в файл, который нам приходится скачивать, а для того, чтобы мониторить буфер обмена с помощью модуля collection/osx/clipboard, нужно указать ему время работы в секундах.

0Rp3fdA-B0M.jpg

Работа модуля collection/osx/keylogger
Но вот что работает безупречно — так это фишинг, а именно модуль collection/osx/prompt.

8N7qw6UH0Mo.jpg

Использование модуля collection/osx/prompt
Среди прочего Empire позволяет запустить App Store и попросить пользователя указать пароль, который мы незамедлительно получим.

qr5aY0ez9yY.jpg

Использование модуля keylogger
Несмотря на то что я уже настраивал кейлоггер, как только был введен пароль, он отобразился в окне Empire. Как правило, схема эксплуатации Empire на Mac очень проста и успешно выполнима в 80% случаев:
  1. Фишинговое письмо с нагрузкой -> получение Empire-агента.
  2. Использование модуля collection/osx/prompt -> получение пароля (как правило, sudo).
  3. Использование модуля privesc/multi/sudo_spawn для получения агента в контексте sudo.
  4. Закрепление в системе с использованием модуля persistence/osx/loginhook.
Сложилось мнение, что на маках в основном обрабатывают информацию и готовят отчеты. Поэтому единственное, для чего его стоит захватывать, — это наблюдение за пользователем. Вся описанная выше атака занимает по времени не больше 10–15 минут. Даже если пользователь не хочет вводить пароль, на третий-четвертый раз он смирится и все равно его наберет.

Имея учетные данные sudo, можно наблюдать за действиями пользователя с помощью модуля management/osx/screen_sharing, который обеспечит вам VNC. В целом повторюсь, захват макa — это легко и быстро, и, как правило, основным инструментом атакующего служит фишинг.

Эксплуатация и постэксплуатация Linux с Empire

Работа с базовыми модулями Empire в Linux не отличается от работы на маке. Точно так же, как и с маком, работает кейлоггер collection/linux/keylogger. Но в Linux-версии присутствует хороший модуль privesc/linux/linux_priv_checker, который собирает со всей системы информацию (и помогает искать вектор повышения привилегий на Linux). Среди собираемых данных нужно перечислить следующие:
  • основная информация о системе;
  • работающие процессы;
  • интересные файлы;
  • файлы, доступные для записи;
  • логи, в которых встречается слово password;
  • настройки судоера;
  • версия ПО и информация о нем из баз exploit-db;
  • доступные на хосте средства разработки.
Для перехода в контекст суперпользователя нам необходимо знать его пароль. Для этого можно задействовать тот же модуль, что и для макa, — privesc/multi/sudo_spawn. В качестве параметра нужно задать листенер и пароль sudo.

usemodule privesc/multi/sudo_spawn
set Password user
set Listener l1
run


AAq9VKWYUSg.jpg

Использование sudo_spawn для создания нового агента в контексте sudo
В результате в списке агентов Empire появляется новый агент, работающий от имени root.

3t4FRThr9F4.jpg

Список агентов
После получения прав суперпользователя мы применяем два модуля Empire. Первый, collection/linux/mimipenguin, позволяет собрать служебные пароли из разных мест. Но он не идеален, поэтому для работы в этой области обычно используются другие средства. Второй модуль — это persistence/multi/crontab, помогающий закрепиться в системе за счет использования crontab.

Этому модулю требуется указать имя файла, который будет выполняться в определенные промежутки времени. Самый простой способ — загружать тот же stager Empire.

Заключение
Напоследок стоит упомянуть, что для PowerShell Empire существуют и автоматические сценарии, позволяющие собирать информацию в системе или распространяться по сети. Один из них — DeathStar (автоматизирует частые сценарии атак на Windows).
 

📌 Золотая реклама

AnonPaste

Верх