
تكامل C2 الخارجي لـ Cobalt Strike مع Azure Servicebus، حركة مرور C2 عبر Azure Servicebus
تكامل C2 الخارجي مع Azure Servicebus، حركة مرور C2 عبر Azure Servicebus

ثم سيقوم الثنائي CobaltBus (المبني على DotNetCore) والذي يتكامل مع ExternalC2 الخاص بـ CobaltStrike، بإنشاء قاعدة بيانات Sqlite محلية لتتبع العديد من المنارات (beacons). سيتم التقاط الرسائل الواردة إلى CobaltBus وكتابتها في قاعدة البيانات. سيتم إنشاء قاعدتي البيانات "CobaltBus.db" و "CobaltBus-log.db" في الدليل الذي يعمل منه ملف CobaltBus.dll. بمجرد تشغيل ثنائي Beacon، سيدفع رسالة "INITIALIZE" إلى قائمة الانتظار baseQueueName، مع BeaconId و Pipename تم إنشاؤهما عشوائياً. سيقوم معالج CobaltBus بعد ذلك بالتقاط ذلك، وإنشاء قائمتين جديدتين والانتقال إليهما بناءً على BeaconId المرسل، وطلب شيلكود التجهيز (stager shellcode) من CobaltStrike، ودفعه مرة أخرى إلى القائمة الجديدة كرسالة "INJECT". من هنا، يقوم مشروع Beacon بحقن الشيلكود الملتقط في الذاكرة وإنشاء اتصال مع منارة CobaltStrike عبر اسم الأنبوب المُنشأ. عند إصدار أمر من CobaltBus، يتم دفعه إلى قائمة الانتظار الخاصة بالمنارة وإلى اسم أنبوب المنارة.
تدفق الرسالة الحالي به عيوب متعددة يجب معالجتها قبل أن أفكر في استخدام هذا في عمليات حقيقية. اعتبر هذا نموذجًا أوليًا قذرًا (POC). لو كان هناك خبير في الفأرة و C2 يمكنه جعل هذا آمنًا للاستخدام....
إسناد كبير للعمل الذي قام به @ryHanson https://github.com/ryhanson/ExternalC2