
Cobalt Strike Externe C2-Integration mit Azure Servicebus, C2-Traffic über Azure Servicebus
Cobalt Strike External C2 Integration mit Azure Servicebus, C2-Traffic via Azure Servicebus

Die CobaltBus DotNetCore-Binärdatei, die in CobaltStrikes ExternalC2 integriert ist, erstellt eine lokale SqliteDB, um mehrere Beacons zu verfolgen. Die eingehenden Nachrichten an CobaltBus werden erfasst und in die Datenbank geschrieben. Die Datenbanken mit den Namen "CobaltBus.db" und "CobaltBus-log.db" werden im Verzeichnis erstellt, aus dem CobaltBus.dll ausgeführt wird. Sobald eine Beacon-Binärdatei ausgeführt wird, sendet sie eine "INITIALIZE"-Nachricht an die baseQueueName-Warteschlange mit einer zufällig generierten BeaconId und einem Pipename. Der CobaltBus-Handler erfasst dies, erstellt zwei neue Warteschlangen basierend auf der gesendeten BeaconId und wechselt in diese, fordert Stager-Shellcode von CobaltStrike an und sendet ihn als "INJECT"-Nachricht zurück in die neue Warteschlange. Von hier aus injiziert das Beacon-Projekt den erfassten Shellcode in den Speicher und stellt eine Verbindung zum CobaltStrike-Beacon über den generierten Pipe-Namen her. Wenn ein Befehl von CobaltBus ausgegeben wird, wird er in die entsprechende Beacon-Warteschlange und dann in den Beacon-Pipe-Namen verschoben.
Der aktuelle Nachrichtenfluss hat mehrere Mängel, die behoben werden müssten, bevor ich ihn für reale Operationen in Betracht ziehen würde. Betrachten Sie dies als einen schmutzigen POC. Wenn es nur eine Maus und einen C2-Experten gäbe, der dies sicher nutzbar machen könnte....
Großer Dank gilt der Arbeit von @ryHanson https://github.com/ryhanson/ExternalC2