Содержание статьи

WARNING
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный информацией из этой статьи.
Эксплуатация представляет собой последовательность действий, которая помогает атакующему получить доступ к исследуемой системе, используя уязвимость или ошибку в настройках. А раз это последовательность действий, значит, ее можно и нужно автоматизировать.
Если ты выступаешь на стороне Red Team, то тебе в работе просто необходимы инструменты, которые помогут автоматизировать выполнение рутинных операций. При этом важно обеспечить высокий уровень скрытности и к тому же иметь возможность работать совместно с другими участниками Red Team.
Стоит учитывать, что большинство критичных систем в наше время прячется за системами обнаружения и предотвращения вторжений (IDS, IPS) и им подобными комплексами, а на рабочих станциях развернуты средства антивирусной защиты. В таких случаях нужна более тщательная разведка с применением в том числе социальной инженерии, чтобы иметь представление о структуре и атакуемых ресурсах.
Как известно, идеальных систем не бывает — всегда найдется уязвимое место, где можно закрепиться и продвинуться вглубь. Но если у тебя одна-единственная точка входа, то каждый твой шаг должен быть досконально продуман и каждое решение должно быть тщательно взвешено.
Что такое постэксплуатация?
Итак, ты, вооружившись своим любимым Nmap или Masscan, с любопытством рассматриваешь результаты рекона и уже, наверное, потираешь руки, перебирая в голове первые пришедшие на ум эксплоиты, анализируешь возможности и предвкушаешь будущие завоевания. 🙂
Как понятно из самого термина, постэксплуатация означает в основном действия, которые следуют после того, как атакуемая инфраструктура была скомпрометирована. Ценность взломанной системы определяется весомостью фактических данных, хранящихся в ней, и тем, как ты можешь их использовать в своих целях.
То есть постэксплуатация — это, по сути, то, как можно использовать информацию о скомпрометированной цели. На данном этапе речь идет о сборе конфиденциальной информации, ее документировании, а также о настройках конфигурации, сетевых интерфейсах и других каналах связи.
Для атакующего важно хорошо ориентироваться и представлять, где какие данные хранятся, а также быстро перемещаться внутри атакуемой системы, обеспечивая максимальную скрытность: использовать прокси-серверы, туннелированные соединения (pivot) и так далее.
При большом скоупе сетевых ресурсов бывает сложно оперативно разобраться и понять, где какие уязвимости найдены, какие логины и пароли к чему относятся, какие сетевые зоны безопасности откуда доступны, где загружен пейлоад и где можно повысить привилегии.
В таких ситуациях и выручают фреймворки, которые объединяют в себе нужную информацию и дают возможность быстро рулить процессом и продвигаться в атакуемой системе. В них же могут входить и более удобные инструменты постэксплуатации.
Metasploit Framefork
Начнем, конечно же, с Metasploit Framework компании Rapid 7. На момент написания статьи доступна версия 5.0.48. У Metasploit сегодня больше всего модулей — есть средства почти на все случаи жизни. Также он работает с локальной базой данных, которая может включать информацию по сканированию, обнаруженные учетные записи и прочее.
Этот фреймворк с оболочкой Armitage может выступать и в роли сервера C2 (Command and Control). В качестве основной полезной нагрузки используется Meterpreter — интерактивная оболочка, с помощью которой атакующий может исследовать целевую машину, выполнять команды ОС, инжектить полезную нагрузку в легитимные процессы и многое другое. Для генерации полезной нагрузки служит инструмент msfvenom.

INFO
О генерации пейлоада и его кодировании читай в статье «Энкодеры msfvenom. Разбираемся с кодированием боевой нагрузки при бинарной эксплуатации».
Metasploit полезен как в эксплуатации уязвимостей, так и в постэксплуатации. Имеется возможность обхода средств антивирусной защиты, систем предотвращения вторжений (IPS) и других технологий безопасности. В нем ты можешь написать свой собственный модуль на одном из трех языков — Go, Python или Ruby, а также запустить RESTful-сервис на базе PostgreSQL для подключения нескольких консолей Metasploit или внешних инструментов.


Xakep #247. Мобильная антислежка
Это самый популярный фреймворк, у него большое комьюнити, и о нем написаны горы документации и полезных советов, поэтому мы спокойно идем дальше.
Cobalt Strike
Последняя версия — 3.14 от мая 2019 года. Это отличный фреймворк для эксплуатации и постэксплуатации. В качестве пейлоада используется beacon, у которого есть возможности обфускации и фриза для обхода антивирусов. Поддерживает миграцию в процессы. Подходит в качестве сервера C2 — особенно удобно ориентироваться при большом скоупе. Из коробки имеет генератор полезных нагрузок в один клик, а также различные методы доставки, что экономит немало времени.

Кредо Cobalt Strike — это скрытность. Beacon большую часть времени находится в состоянии фриза или сна, и на C2 отправляется только «сердцебиение» (Heartbeat), так что обнаружить его непросто.
Самый крупный недостаток «Кобальта» — он недоступен для рядовых пользователей. Cobalt Strike — коммерческий продукт, и разработчики серьезно относятся к распространению. Есть пробный период на 21 день, но в таком режиме ты столкнешься с существенными ограничениями.
Cobalt Strike генерирует собственные исполняемые файлы и библиотеки DLL с помощью Artifact Kit. Они, в свою очередь, отправляют полезную нагрузку, что помогает обойти некоторые антивирусы. Пробная версия включает только шаблон Artifact Kit без возможности создавать исполняемые файлы.
Также триальная версия «Кобальта» не загружает и не использует гибкие профили C2. Это функция, которая позволяет пользователям изменять сетевые индикаторы в полезной нагрузке Beacon. Каждый HTTP-запрос GET пробной версии включает заголовок X-Malware со строкой EICAR в качестве содержимого. Аналогично модули для атак на Java включают файл EICAR внутри пакетов .jar.
И наконец, из пробной версии удален основной энкодер полезной нагрузки Cobalt Strike. Все эти ограничения сделаны для того, чтобы пробную версию нельзя было использовать в злонамеренных целях.

INFO
EICAR (или EICAR-Test-File — от European Institute for Computer Antivirus Research) — это небольшой 68-байтный COM-файл, который не является вирусом, а всего лишь выводит текстовое сообщение и возвращает управление операционной системе. Файл был создан как единый стандарт проверки работы антивируса и представляет собой такой набор байтов:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Covenant
https://github.com/cobbr/Covenant
Переходим к менее популярным, но все еще достойным внимания вариантам. Covenant — это опенсорсный фреймворк для постэксплуатации, который работает на .NET Core. У Covenant есть поддержка Docker, что позволяет легко поднять контейнер с ним на любой системе. В состав фреймворка входят три компонента: Covenant — серверная часть, Elite — консольный клиент (временно исключен для доработки в последнем релизе) и Grunt — имплант. У этого фреймворка понятный и простой пользовательский веб-интерфейс, доступны три пользовательские роли.

Основное предназначение — служить сервером C2 для Red Team. Генерировать полезную нагрузку можно прямо из веб-интерфейса либо из консольной части. Вот все доступные варианты.

На дашборде — активные сессии, список задач для имплантов и список listeners.

То есть при командной работе атакующие видят, какая информация и откуда уже получена, где какой тип имплантов активен и так далее. Результаты сохранены в виде тикетов с номерами, сохраняется также вывод команд.
Страница редактирования профиля listener позволяет изменять любой параметр, включая заголовки запросов и ответов, обратные вызовы, а также форматы запросов и ответов. Для удобства восприятия есть граф, где отображаются связи вида «listener — родительский узел — дочерний узел».

Вся собранная информация с атакуемых ресурсов категорирована. У фреймворка есть интерактивная командная оболочка с подсветкой всех доступных команд.

Covenant можно кастомизировать, создавая свои шаблоны. А также он отлично подходит для решения задач постэксплуатации Windows.
Apfell
https://github.com/its-a-feature/Apfell
Apfell — кросс-платформенный фреймворк для постэксплуатации, построенный на базе Python 3 и Docker. Как и Covenant, он рассчитан в первую очередь на использование участниками Red Team в качестве сервера C2.
По сути, Apfell применяет веб-контейнеры и контейнеры Docker для внутренней части, где сервер на Python обрабатывает большую часть веб-запросов через RESTful API и WebSockets. Затем этот сервер обрабатывает соединения с базой данных PostgreSQL и связывается с другими контейнерами Docker через RabbitMQ. Это позволяет размещать отдельные компоненты на отдельных физических компьютерах или, при необходимости, на разных виртуальных машинах.
Фреймворк способен объединять работу нескольких команд. В менеджере операций можно посмотреть статус, настроить права и связи. Целью разработчиков Apfell было создание простого окружения, где агенты настраиваются по принципу plug-and-play.

Процесс сборки предельно быстрый и незамысловатый благодаря поддержке Docker. База данных содержит всю основную информацию для атакующих: найденные учетные записи, пейлоады, таски, респонсы, файлы и скрины. Apfell позволяет использовать в рабочем процессе классификацию MITRE ATT&CK. А еще каждую активность можно комментировать, что помогает работать в едином информационном пространстве с коллегами. Генерация полезных нагрузок происходит в веб-интерфейсе, есть консоль управления агентами.


Apfell — достойный фреймворк, но только для выполнения задач Red Team. Для других задач он вряд ли подойдет из-за своей узкой направленности.
Faction C2
Фреймворк для постэксплуатации. Как ты уже догадался, это очередная платформа для развертывания C2. Она обеспечивает легкость взаимодействия с агентами посредством хорошо документированного REST API и Socket.IO.
Faction состоит из ядра, которое отвечает за взаимодействие пользователей с агентами, окружения для создания модулей и агентов, а также CLI для управления фреймворком. Пользовательские роли разграничены на админа, оператора и read only.
В настоящее время Faction поддерживает только полезные нагрузки и модули на .NET. В качестве примера полезной нагрузки используется Marauder, но ты можешь без проблем создать и свой собственный.

В основе взаимодействия Faction и агентов лежит гибкая система коннекторов, которая обеспечивает надежную шифрованную связь. По дефолту стоит DIRECT — это соединение напрямую с C2. При создании нового коннектора генерируется API-ключ.

Faction также позволяет запрашивать данные с помощью SQL-запросов, что иногда бывает удобнее, чем взаимодействие с веб-интерфейсом.
В целом это неплохой вариант, но очень не хватает интерактивности и более глубоких настроек инструментов.
Koadic
https://github.com/zerosum0x0/koadic
Фреймворк с открытыми исходниками, предназначенный для постэксплуатации в среде Windows. Koadic легок в развертывании и обращении и использует для эксплуатации VBScript/JScript. Koadic реально очень «тихий» и не оставляет столько следов в системе, как, например, фреймворки на PowerShell. Есть возможность запускать полезную нагрузку как на диске, так и в памяти, также Koadic поддерживает шифрование SSL и TLS.

В состав фреймворка входят стейджеры и импланты. Стейджеры определяют варианты запуска полезной нагрузки на атакуемой системе, а импланты — это готовые скриптовые пакеты.

К слову, активные сессии тут называются zombie! 🙂
Из коробки доступны самые нужные импланты, но, если что, ты всегда можешь дополнить этот набор своими.

В консоли Koadic отображаются выполненные и активные задачи (jobs) имплантов. Вообще, интерфейс напоминает всеми любимый Metasploit.

Фреймворк действительно можно назвать гибким и эффективным, и кросс-платформенность только добавляет к этому имиджу.
Merlin
https://github.com/Ne0nd0g/merlin
Еще один кросс-платформенный фреймворк для постэксплуатации, написан на Go. Одна из особенностей Merlin — это возможность обхода средств защиты с помощью протокола HTTP/2. В директории фреймворка /data/bin
есть уже заранее скомпилированные агенты для Windows, Linux, macOS и PowerShell, а также библиотеки DLL. По дефолту в них зашит адрес https://127.0.0.1:443
, который ты всегда можешь изменить на свой с помощью флага -url
, а в случае с DLL посредством декомпиляции.

Консоль дружелюбная и интерактивная. Взаимодействие с агентами происходит через создание задач, что, конечно, не совсем «онлайн», но зато без лишнего шума.

У Merlin большой набор модулей для каждой из платформ, и в нем хорошо сочетаются легкость, скрытность и эффективность.
EmpireProject/Empire
https://github.com/EmpireProject/Empire
Кросс-платформенный фреймворк для постэксплуатации, серверная часть которого написана на Python. К сожалению, развитие проекта остановлено, но возможности фреймворка широки и по сей день. Empire включает в себя агент на PowerShell 2.0 для Windows и агент на Python 2.6/2.7 для Linux и macOS.
Этот фреймворк появился в результате объединения двух проектов: PowerShell Empire и Python EmPyre. Empire отвечает за возможность запуска агентов PowerShell без использования самого powershell.exe. Это позволяет быстро развернуть любой модуль постэксплуатации — от кейлоггеров до Mimikatz, а также адаптируемые средства связи для предотвращения обнаружения.
Проект имеет большую и доступную документацию, в которой ты найдешь все необходимое для применения Empire.

C3 (Custom Command and Control) framework (MWR Labs)
Наконец, последний фреймворк для постэксплуатации, который мы рассмотрим. Он представляет собой своего рода обертку над C2. Суть фреймворков C3 — в гибкой коммуникации внешнего C2 через легитимные процессы. Например, можно в этих целях приспособить Office 365, Slack, Google Drive, Dropbox и другие сервисы, которые повседневно используются в офисах.
Впервые концепция С3 была представлена на конференции BlueHat v18 Уильямом Ноулзом и Дэйвом Хартли. Фреймворк MWR Labs имеет открытый исходный код и состоит из следующих узлов.
- Релей — исполняемый файл, запущенный на скомпрометированной системе. Релеи взаимодействуют между собой через интерфейсы либо напрямую со шлюзом.
- Шлюз — специальный релей для управления одной сетью C3, отвечает за обратную связь с C2.
- Канал — схема взаимодействия релея внутри легитимных процессов, типичных для атакуемой системы, например через API Slack.
- Обратный шлюзовой канал (Gateway Return Channel) — сконфигурированный канал, который используется релеем для отправки данных обратно на шлюз. Также может быть маршрутом через другой релей.
- Интерфейс — высокоуровневое имя, присваиваемое любому устройству, облегчающему отправку и получение данных в сети C3.
- Маршрут — предполагаемый путь коммуникаций через релей обратно к шлюзу. В качестве периферийного устройства выступает сторонний имплант C2 (например, Cobalt Strike SMB beacon).
- Коннектор — интеграция со сторонними системами C2. Кстати, C3 в исполнении MWR Labs поддерживает тесную интеграцию с TeamServer Cobalt Strike. В качестве коннектора хорошо работает инстанс Cobalt Strike под названием External C2 (команда
externalc2_start
через менеджер скриптов).
На первый взгляд кажется, что C3 слишком сложный, — нужно время, чтобы во всем этом разобраться. Но на деле помогают удобный интерфейс, скоростной деплой и возможность самостоятельно определять архитектуру с учетом специфики атакуемой системы и прочих вещей.
Первым делом запусти WebController и задай URL. Либо можешь выполнить скрипт StartWebController.cmd.

Дальше в веб-приложении необходимо сконфигурировать первый шлюз. Как ты уже знаешь, без него работать ничего не будет. 🙂

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

Многие действия выполняются всего в пару кликов. Ты с легкостью можешь сгенерировать новый канал, кликнув на шлюз, аналогично на созданный канал — для генерации нового релея. Вся необходимая информация здесь будет автоматически заполнена. На данном этапе можно указать архитектуру, тип файла (.exe, .dll) и прочее.
По каждому релею доступна подробная информация: версия ОС, под каким пользователем запущен и когда последний раз был онлайн.

Еще важно знать, что тут существует два типа каналов. Согласованный канал позволяет иметь несколько связей между шлюзом и релеями (по одному каналу), несогласованный обеспечивает возможность связи только одного релея со шлюзом. На скрине представлен пример организации согласованного канала через API Slack.

Фреймворк можно тонко настраивать и делать любые схемы коммуникации. Ты можешь реализовать любые творческие сценарии, что ценно само по себе.

Итоги
А теперь поговорим о выборе.
Это очень важный момент, и здесь нужно учитывать все особенности векторов атак на целевые системы. Фреймворк должен обеспечивать анонимность и по максимуму удовлетворять потребности в реализуемых техниках. Из девяти описанных фреймворков наиболее удобным инструментарием из коробки обладают Cobalt Strike и Metasploit.
«Кобальт», особенно в сочетании с MWR Labs C3, обеспечивает достойный уровень скрытности и неплохо способствует совместной работе. Metasploit в бесплатной версии community edition содержит актуальный набор эксплоитов и средств постэксплуатации, предоставляет гибкие инструменты генерации полезной нагрузки и обхода средств антивирусной защиты (модуль evasion), к сожалению по дефолту малоэффективные, так что нужно импровизировать. В «Кобальте» же с обходом АВПО все проще, но цена вопроса и сложности с его покупкой могут стать большим препятствием.
Merlin и Koadic прекрасно подойдут для проведения краткосрочных атак из-за особенностей взаимодействия с С2. В частности, Merlin позволяет эффективно использовать сетевые ресурсы с помощью протокола HTTP/2, что сводит влияние задержек к минимуму (благодаря сжатию полей заголовков). Одновременно это дает возможность обмениваться данными в рамках одного соединения, что полезно при обходе IPS и IDS. Достоинством Koadic может быть применение Windows Scripting Host (компонент Windows, предназначенный для запуска приложений на скриптовых JScript и VBScript). Это позволяет использовать сценарии, аналогичные пакетным файлам, но с дополнительными возможностями. Благодаря этой функции его можно использовать во многих версиях Windows, включая Windows 10.
Apfell, Faction и Covenant — молодые и развивающиеся фреймворки, в которых все еще встречаются небольшие баги. Это пока что ставит под сомнение их использование в случаях, когда ошибаться нельзя. Аналогичная ситуация с Empire: из-за того что проект больше не развивается, стабильность фреймворка изрядно пошатнулась, и в серьезных операциях использовать его я бы не стал.
И конечно же, в этой статье затронуты далеко не все существующие инструменты. Экспериментируй, и ты найдешь, что тебе по душе!