
Интеграция внешнего C2 Cobalt Strike с Azure Servicebus, трафик C2 через Azure Servicebus
Интеграция Cobalt Strike External C2 с Azure Servicebus, трафик C2 через Azure Servicebus

Затем двоичный файл CobaltBus DotNetCore, который интегрируется с ExternalC2 от CobaltStrike, создаст локальную базу данных SqliteDB для отслеживания нескольких beacon'ов. Входящие сообщения в CobaltBus будут захватываться и записываться в базу данных. Базы данных с именами "CobaltBus.db" и "CobaltBus-log.db" будут созданы в каталоге, откуда запускается CobaltBus.dll. Как только двоичный файл Beacon запускается, он отправляет сообщение "INITIALIZE" в очередь baseQueueName с случайно сгенерированными BeaconId и Pipename. Обработчик CobaltBus затем захватывает это, создает и переходит в две новые очереди на основе отправленного BeaconId, запрашивает stager shellcode у CobaltStrike и отправляет его обратно в новую очередь как сообщение "INJECT". После этого проект Beacon внедряет захваченный shellcode в память и устанавливает соединение с beacon'ом CobaltStrike через сгенерированное имя канала. Когда команда отправляется из CobaltBus, она помещается в соответствующую очередь beacon'а и передается в именованный канал beacon'а.
Текущий поток сообщений имеет множество недостатков, которые необходимо устранить, прежде чем я бы рассмотрел использование этого для реальных операций. Считайте это грязным POC. Если бы только был эксперт по мышам и C2, который мог бы сделать это безопасным для использования....
Основная заслуга в работе, проделанной @ryHanson https://github.com/ryhanson/ExternalC2