
Cobalt Strike HTTPS-биконинг через Microsoft Graph API

Блог о релизе: GraphStrike: Использование Microsoft Graph API для исчезновения трафика Beacon
Блог разработчика: GraphStrike: Анатомия разработки наступательных инструментов
GraphStrike — это набор инструментов, который позволяет HTTPS Beacon от Cobalt Strike использовать Microsoft Graph API для связи C2. Весь трафик Beacon будет передаваться через два файла, созданные на сайте SharePoint атакующего, и все коммуникации от Beacon будут направляться на https://graph.microsoft.com:

GraphStrike включает в себя провизионер для создания необходимых ресурсов Azure для Cobalt Strike HTTPS через Graph API:

GraphStrike не создает платных ресурсов в Azure, поэтому использование GraphStrike или его провизионера не влечет дополнительных затрат.
Была опубликована информация об угрозах, касающаяся нескольких различных APT, использующих Microsoft Graph API и другие сервисы Microsoft для наступательных кампаний:
Злоумышленники продолжают использовать легитимные сервисы в нелегитимных целях. Использование домена с высоким рейтингом, такого как graph.microsoft.com, для связи C2 чрезвычайно эффективно и желательно, но часто сложно и трудоемко. Большинство C2-фреймворков не поддерживают методы получения или ротации токенов доступа, что не позволяет им использовать Graph API. Это может затруднить для красных команд воспроизведение этих техник и лишает защитников возможности наблюдать и разрабатывать сигнатуры для такого рода активности. GraphStrike стремится облегчить это бремя и предоставить надежный и повторяемый процесс использования Microsoft Graph API, сохраняя при этом знакомство и надежность пользовательского опыта Cobalt Strike.
Технически нет. Ранее создав настоящий External C2 с использованием Graph API (который отправлял трафик Beacon в виде сообщений Microsoft Teams), бремя разработки, поддержки и интеграции пользовательского импланта, соответствующего спецификации External C2 и выполняющего задачу, слишком знакомо. GraphStrike вместо этого использует открытый User Defined Reflective Loader(UDRL) под названием AceLdr от Кайла Эйвери (адаптированный как 'GraphLdr' в этом проекте) для перехвата вызовов библиотеки WinINet, которые обычно делает Beacon, и манипулирования ими по мере необходимости для использования Graph API. Нет никакого пользовательского импланта или дополнительного процесса, о котором стоит говорить, просто процесс Beacon с парой перехваченных Windows API. На стороне сервера есть программа на Python3, которая переводит трафик Cobalt Strike Team Server в трафик Graph API и обратно.
GraphStrike поддерживает почти все обычные действия Cobalt Strike, включая:
Это также включает интеграцию GraphStrike команд sleep, exit и remove для согласования времени сна GraphStrike Server с Beacon, а также удаление файлов в SharePoint при выходе или удалении Beacon.
GraphStrike также включает все функции и возможности оригинального AceLdr, а также некоторые дополнительные API для использования подделки стека вызовов.
GraphStrike требует следующего перед началом работы:
Обратите внимание на следующее перед началом процесса настройки:
1. Некоторые компоненты используют относительные пути для поиска других ресурсов. Пожалуйста, переходите в каталоги, как указано ниже.
2. Профиль Cobalt Strike можно редактировать ТОЛЬКО ДО шага 5 в процессе настройки нижеПримечание №1.
sudo setup/install_dependencies.sh для установки необходимых системных зависимостей.python3 -m venv virtual, а затем source virtual/bin/activate для создания и входа в виртуальное окружение.pip3 install -r requirements.txt../provisioner.py new и завершите процесс настройки.graph.microsoft.com в полях HTTPS Hosts и HTTPS Host(Stager)../GraphStrike.py.Из-за размера GraphLdr пользователям Artifact Kit потребуется перекомпилировать его с конкретными параметрами, чтобы GraphStrike был совместим с полезными нагрузками, созданными Artifact Kit. В частности, поля 'Stage Size' и 'RDLL Size' должны быть указаны для использования размера RDLL 100K. Ниже приведены два примера рабочего синтаксиса:
./build.sh pipe VirtualAlloc 505029 100 false false none /opt/cobaltstrike/artifacts
./build.sh peek HeapAlloc 492376 100 false true indirect /opt/cobaltstrike/artifacts
./provisioner.py delete для удаления созданных ресурсов Azure.