Фреймворки для постэксплуатации. Выбираем между Metasploit, Cobalt Strike, Merlin, Apfell, Faction C2, Koadic и другими (original) (raw)

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

В этой статье мы поговорим о фреймворках, которые помогут эксплуатировать уязвимости, закрепиться и продвинуться в целевой инфраструктуре. Для этого рассмотрим основные актуальные проекты, их функции и особенности. Надеюсь, ты найдешь для себя что-нибудь новенькое или по ходу чтения придумаешь, как сделать свой рабочий процесс еще эффективнее.

WARNING

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

Эксплуатация представляет собой последовательность действий, которая помогает атакующему получить доступ к исследуемой системе, используя уязвимость или ошибку в настройках. А раз это последовательность действий, значит, ее можно и нужно автоматизировать.

Если ты выступаешь на стороне Red Team, то тебе в работе просто необходимы инструменты, которые помогут автоматизировать выполнение рутинных операций. При этом важно обеспечить высокий уровень скрытности и к тому же иметь возможность работать совместно с другими участниками Red Team.

Стоит учитывать, что большинство критичных систем в наше время прячется за системами обнаружения и предотвращения вторжений (IDS, IPS) и им подобными комплексами, а на рабочих станциях развернуты средства антивирусной защиты. В таких случаях нужна более тщательная разведка с применением в том числе социальной инженерии, чтобы иметь представление о структуре и атакуемых ресурсах.

Как известно, идеальных систем не бывает — всегда найдется уязвимое место, где можно закрепиться и продвинуться вглубь. Но если у тебя одна-единственная точка входа, то каждый твой шаг должен быть досконально продуман и каждое решение должно быть тщательно взвешено.

Что такое постэксплуатация?

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

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

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

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

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

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

Metasploit Framefork

https://www.metasploit.com

Начнем, конечно же, с Metasploit Framework компании Rapid 7. На момент написания статьи доступна версия 5.0.48. У Metasploit сегодня больше всего модулей — есть средства почти на все случаи жизни. Также он работает с локальной базой данных, которая может включать информацию по сканированию, обнаруженные учетные записи и прочее.

Этот фреймворк с оболочкой Armitage может выступать и в роли сервера C2 (Command and Control). В качестве основной полезной нагрузки используется Meterpreter — интерактивная оболочка, с помощью которой атакующий может исследовать целевую машину, выполнять команды ОС, инжектить полезную нагрузку в легитимные процессы и многое другое. Для генерации полезной нагрузки служит инструмент msfvenom.

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

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

Cobalt Strike

https://www.cobaltstrike.com

Последняя версия — 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 — имплант. У этого фреймворка понятный и простой пользовательский веб-интерфейс, доступны три пользовательские роли.

По умолчанию веб-интерфейс работает на порте 7443

По умолчанию веб-интерфейс работает на порте 7443

Основное предназначение — служить сервером 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

https://www.factionc2.com

Фреймворк для постэксплуатации. Как ты уже догадался, это очередная платформа для развертывания 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)

https://github.com/mwrlabs/C3

Наконец, последний фреймворк для постэксплуатации, который мы рассмотрим. Он представляет собой своего рода обертку над C2. Суть фреймворков C3 — в гибкой коммуникации внешнего C2 через легитимные процессы. Например, можно в этих целях приспособить Office 365, Slack, Google Drive, Dropbox и другие сервисы, которые повседневно используются в офисах.

Впервые концепция С3 была представлена на конференции BlueHat v18 Уильямом Ноулзом и Дэйвом Хартли. Фреймворк MWR Labs имеет открытый исходный код и состоит из следующих узлов.

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

И конечно же, в этой статье затронуты далеко не все существующие инструменты. Экспериментируй, и ты найдешь, что тебе по душе!