
مجموعة أدوات Cobalt Strike للحركة الجانبية
Movekit هو امتداد للحركة الجانبية المدمجة في Cobalt Strike من خلال الاستفادة من وظيفة execute_assembly مع تجميعات SharpMove و SharpRDP .NET. يقوم نص المهاجم بإنشاء الحمولة من خلال قراءة ملفات القالب لنوع تنفيذ معين.
مهم: لاستخدام النص، سيحتاج المستخدم فقط إلى تحميل نص المهاجم MoveKit.cna الذي سيقوم بتحميل جميع النصوص الأخرى الضرورية معه. بالإضافة إلى ذلك، اعتمادًا على الإجراءات المتخذة، ستحتاج تجميعات SharpMove و SharpRDP إلى التجميع ووضعها في دليل Assemblies. أخيرًا، تتطلب بعض عمليات نقل الملفات تجميعًا ديناميكيًا والذي سيتطلب Mono.
عند تحميل نص المهاجم، سيكون هناك محدد يتم تحميله في شريط القوائم باسم Move. هناك عدة خيارات يمكن للمستخدم اختيارها. أولاً، يمكن للمستخدمين اختيار تنفيذ أمر على نظام بعيد عبر WMI أو DCOM أو برنامج جدولة المهام أو RDP أو SCM. ثانيًا، هناك آلية تنفيذ Command التي تستخدم مهدات التحميل لالتقاط الملفات وتنفيذها. ثالثًا، طريقة File تقوم بإسقاط ملف على النظام وتنفيذه. هناك Write File Only التي لا تقوم بأي تنفيذ، بل تنقل البيانات فقط. أخيرًا، هناك إعدادات Default لتسريع استخدام الواجهة الرسومية وتستخدم مع أوامر beacon. تستخدم الإعدادات الافتراضية لأي شيء يمكنه قبول القيمة الافتراضية.
لاستخدام أوامر beacon، سيقرأ الإعدادات الافتراضية ويستخدم عددًا قليلاً من وسائط سطر الأوامر. مثال على أمر beacon:
<exec-type> <target> <listener> <filename>
move-msbuild 192.168.1.1 http move.csproj
بالإضافة إلى ذلك، يختلف أمر beacon المخصص المُجمَّع مسبقًا قليلاً. مثال على الأمر:
move-pre-custom-file <target> <local-file> <remote-filename>
move-pre-custom-file computer001.local /root/payload.exe legit.exe
حقل الموقع هو الجزء الأكثر تعقيدًا في المشروع. عند اختيار نقل الملفات WMI، سيتم استخدام location، إذا تم تحديد SMB فلن يتم استخدامه (لذلك يمكن تركه فارغًا). Location يأخذ ثلاث قيم مختلفة. أولاً، إذا كان location هو رابط URL، فعند إنشاء الحمولة، سيتم استضافتها بواسطة خادم الويب الخاص بـ Cobalt Strike. سيقوم مضيف beacon الذي سيتم تنفيذ التجميع منه بتقديم طلب ويب إلى الرابط URL والحصول على الملف، والذي سيتم استخدامه في حدث فرعي على المضيف الهدف لكتابة الملف. ثانيًا، إذا كان location هو دليل Windows، فسيقوم بتحميل الملف الذي تم إنشاؤه إلى مضيف beacon وسيقرأه التجميع من نظام الملفات ويخزنه في الحدث الفرعي لكتابته على المضيف البعيد. أخيرًا، إذا كان حقل location هو مسار لينكس أو كلمة local، فسيقوم بتجميع الحمولة ديناميكيًا داخل التجميع الذي يتم تنفيذه. ومع ذلك، إذا كان الملف أكبر من حد حجم الملف البالغ 1 ميجابايت، فسيظهر خطأ.
بالنسبة لجميع طرق الملفات، سيتم إنشاء الحمولة من خلال نص المهاجم. ومع ذلك، إذا تم إنشاء حمولة بالفعل، يمكن للمستخدمين اختيار استخدام خيار Custom (Prebuilt) لنقلها وتنفيذها.
تحتوي المجموعة على تقنيات مختلفة لنقل الملفات، ومحفزات تنفيذ، وأنواع حمولات.
يُعتبر نقل الملفات هو الطريقة المستخدمة للحصول على ملف إلى مضيف بعيد أنواع نقل الملفات:
يُعتبر مشغل الأمر هو الطريقة المستخدمة لتنفيذ أمر معين على مضيف بعيد. أنواع مشغلات الأوامر:
تنفيذ شل كود فقط:
الاختطافات:
لاستبدال قالب، يجب أن تستوفي متطلبين. أولاً، يجب تسمية القالب باسم التقنية (مثال: msbuild.csproj). ثانيًا، يجب أن يحتوي الكود المصدري على السلسلة $$PAYLOAD$$ حيث سيتم وضع شل كود مشفر بـ base64 ويكون قادرًا على تحويل سلسلة base64 إلى مصفوفة بايتات. مثال لـ C#:
string strSC = "$$PAYLOAD$$";
byte[] sc = Convert.FromBase64String(strSC);
تمت إضافة تغيير يسمح للإعدادات الافتراضية بتحديث 'سلسلة البحث والاستبدال' وتنسيقات شل كود في 'مربع حوار تحديث الإعدادات الافتراضية'. بشكل افتراضي، هذه هي $$PAYLOAD$$ و base64.
execute-assembly الخاصة بـ Cobalt Strike لذا سيتم حقنه في عملية تضحية مثل مهام ما بعد الاستغلال الأخرىFile أو Commandبعض من الكود أو القوالب أو الإلهام يأتي من أشخاص ومشاريع أخرى
ربما توجد أخطاء في مكان ما، فهي تميل إلى الظهور من وقت لآخر. فقط أبلغ عنها وسأقوم بإصلاحها