
Cobalt Strike HTTPS beaconing over Microsoft Graph API

مدونة الإصدار: GraphStrike: استخدام واجهة برمجة تطبيقات مايكروسوفت جراف لجعل حركة مرور Beacon تختفي
مدونة المطور: GraphStrike: تشريح تطوير الأدوات الهجومية
GraphStrike عبارة عن مجموعة من الأدوات التي تمكن Beacon HTTPS الخاص بـ Cobalt Strike من استخدام واجهة برمجة تطبيقات مايكروسوفت جراف للاتصالات C2. سيتم نقل جميع حركة مرور Beacon عبر ملفين تم إنشاؤهما في موقع SharePoint الخاص بالمهاجم، وستتجه جميع الاتصالات من Beacon إلى https://graph.microsoft.com:

يتضمن GraphStrike مقدم خدمة لإنشاء موارد Azure المطلوبة لـ Cobalt Strike HTTPS عبر واجهة برمجة تطبيقات جراف:

لا يقوم GraphStrike بإنشاء أي موارد مدفوعة في Azure، لذلك لا توجد تكلفة إضافية ناتجة عن استخدام GraphStrike أو مقدم الخدمة الخاص به.
تم إصدار معلومات استخباراتية حول الهجمات الإلكترونية تتعلق بعدة APTs مختلفة تستفيد من واجهة برمجة تطبيقات مايكروسوفت جراف وخدمات مايكروسوفت الأخرى في الحملات الهجومية:
تواصل الجهات الخبيثة استغلال الخدمات الشرعية لأغراض غير شرعية. استخدام نطاق عالي السمعة مثل graph.microsoft.com لاتصالات C2 فعال للغاية ومرغوب، ولكنه غالبًا ما يكون معقدًا ومثبطًا من حيث الوقت والجهد. معظم أطر عمل C2 لا تدعم طرق جلب أو تدوير رموز الوصول، مما يجعلها غير قادرة على استخدام واجهة برمجة تطبيقات جراف. هذا يمكن أن يجعل من الصعب على فرق الاختراق تكرار هذه التقنيات، ويحرم المدافعين من فرصة مراقبة وتطوير توقيعات لهذا النوع من النشاط. يسعى GraphStrike إلى تخفيف هذا العبء وتوفير عملية موثوقة وقابلة للتكرار لاستخدام واجهة برمجة تطبيقات مايكروسوفت جراف مع الحفاظ على الألفة والموثوقية لتجربة مستخدم Cobalt Strike.
من الناحية الفنية، لا. بعد أن قمنا سابقًا ببناء External C2 حقيقي باستخدام واجهة برمجة تطبيقات جراف (والذي أرسل حركة مرور Beacon كرسائل Microsoft Teams)، فإن عبء تطوير وصيانة ودمج أداة مخصصة تلبي مواصفات External C2 وتنجز المهمة أصبح مألوفًا جدًا. بدلاً من ذلك، يستفيد GraphStrike من محمل انعكاسي محدد من قبل المستخدم (UDRL) مفتوح المصدر يُدعى AceLdr من كايل أفيري (تم تكييفه كـ 'GraphLdr' في هذا المشروع) لربط استدعاءات مكتبة WinINet التي يقوم بها Beacon عادةً والتعامل معها حسب الحاجة لاستخدام واجهة برمجة تطبيقات جراف. لا يوجد أداة مخصصة أو عملية إضافية تُذكر، فقط عملية Beacon مع عدد قليل من واجهات برمجة التطبيقات لنظام Windows التي تم ربطها. على جانب الخادم، يوجد برنامج Python3 يترجم حركة مرور خادم فريق Cobalt Strike إلى حركة مرور واجهة برمجة تطبيقات جراف والعكس.
يدعم GraphStrike جميع أنشطة Cobalt Strike العادية تقريبًا بما في ذلك:
يتضمن هذا أيضًا تكامل GraphStrike مع أوامر السكون والخروج والإزالة لمطابقة أوقات سكون خادم GraphStrike مع Beacon بالإضافة إلى حذف الملفات في SharePoint عند خروج أو إزالة Beacon.
بالإضافة إلى ذلك، يدمج GraphStrike جميع ميزات ووظائف AceLdr الأصلي، مع بعض واجهات برمجة التطبيقات الإضافية المصممة لاستخدام تزوير مكدس الاستدعاءات أيضًا.
يتطلب 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 التي تم إنشاؤها.بدون ترتيب معين، إليك بعض الاقتراحات والملاحظات للمساعدة في استخدام GraphStrike بأقصى إمكاناته.
توجد القيود التالية في GraphStrike:
لما كان GraphStrike ممكنًا بدون مساهمات الأفراد التاليين: