
Intégration C2 externe de Cobalt Strike avec Azure Servicebus, trafic C2 via Azure Servicebus
Intégration C2 externe de Cobalt Strike avec Azure Servicebus, trafic C2 via Azure Servicebus

Le binaire DotNetCore CobaltBus qui s'intègre avec ExternalC2 de CobaltStrike, créera une base de données Sqlite locale afin de suivre plusieurs beacons. Les messages entrants dans CobaltBus seront capturés et écrits dans la base de données. Les bases de données nommées « CobaltBus.db » et « CobaltBus-log.db » seront créées dans le répertoire à partir duquel CobaltBus.dll est exécuté. Lorsqu'un binaire Beacon s'exécute, il envoie un message « INITIALIZE » à la file d'attente baseQueueName, avec un BeaconId et un Pipename générés aléatoirement. Le gestionnaire CobaltBus capture alors cela, crée et passe dans les deux nouvelles files d'attente basées sur le BeaconId envoyé, demande le shellcode stager à CobaltStrike, et le renvoie dans la nouvelle file d'attente en tant que message « INJECT ». À partir de là, le projet Beacon injecte le shellcode capturé en mémoire et établit une connexion avec le beacon CobaltStrike via le nom de pipe généré. Lorsqu'une commande est émise depuis CobaltBus, elle est poussée dans la file d'attente respective du beacon et dans le nom de pipe du beacon.
Le flux de messages actuel présente plusieurs défauts qui devraient être corrigés avant que j'envisage de l'utiliser pour des opérations réelles. Considérez ceci comme un POC sale. Si seulement il y avait une souris et un expert C2 qui pourraient rendre cela sûr à utiliser....
Un grand crédit au travail réalisé par @ryHanson https://github.com/ryhanson/ExternalC2