
pyCobaltHound هو امتداد لـ Aggressor script لـ Cobalt Strike يهدف إلى توفير تكامل عميق بين Cobalt Strike و Bloodhound.
pyCobaltHound هو امتداد لبرنامج Aggressor النصي لـ Cobalt Strike يهدف إلى توفير تكامل عميق بين Cobalt Strike و Bloodhound.
يسعى pyCobaltHound لمساعدة مشغلي الفريق الأحمر عن طريق:
BloodHound لاكتشاف مسارات التصعيد التي فتحتها بيانات الاعتماد التي تم جمعها حديثًا.لتحقيق ذلك، يستخدم pyCobaltHound مجموعة من الاستعلامات المضمنة. يمكن للمشغلين أيضًا إضافة/إزالة استعلاماتهم الخاصة لضبط قدرات المراقبة لـ pyCobaltHound. يمنحهم هذا المرونة لتكييف pyCobaltHound أثناء العمليات لمراعاة الأهداف الخاصة بالعملية (المستخدمين، المضيفين، إلخ).
لتثبيت pyCobaltHound، قم باستنساخ هذا المستودع. لا تنسَ استنساخ الوحدة الفرعية المضمنة أيضًا!
يمكنك استخدام الأمر التالي:
git clone https://github.com/NVISOsecurity/pyCobaltHound.git --recurse-submodulesتأكد من تثبيت المتطلبات التالية بشكل صحيح:
PyCobalt هي واجهة برمجة تطبيقات بايثون لـ Cobalt Strike. تعرض العديد من وظائف Aggressor لاستخدامها مباشرة من بايثون.
تأكد من تثبيت Python3+. بينما قد يعمل PyCobalt على macOS و Windows أيضًا، إلا أننا اختبرناه فعليًا على Linux فقط.
هناك طريقتان لاستخدام مكتبة PyCobalt البايثونية:
pyCobaltHound هذا الأسلوب، حيث يقوم بتعيين مسار البحث من داخل برنامج بايثون باستخدام المتغير sys.path.PyCobalt. للقيام بذلك، قم بتشغيل python3 setup.py install. ستحتاج إلى تعديل pycobalthound.py لضمان استخدام المكتبة المثبتة بدلاً من تلك الموجودة في المستودع المضمن.PyCobalt سيتم صيانته في المستقبل. في الواقع، كان آخر تحديث للمشروع لدمج التغييرات التي تم إدخالها في Cobalt Strike 4.2. نظرًا لأن pyCobaltHound يستخدم فقط وظائف Aggressor الأساسية للتفاعل مع Cobalt Strike ومشغله، فإن هذا لا يمثل مشكلة كبيرة لـ pyCobaltHound.PyCobalt المستخدمة في هذا المشروع هي فرع قمنا به. لكننا لا نتحكم في مستودع PyCobalt.يأتي PyCobalt مع بعض أوامر Script Console لإدارة نصوص بايثون الجارية. عند إعادة تحميل برنامج Aggressor النصي، يجب عليك إيقاف نصوص بايثون أولاً صراحةً. وإلا فستستمر في العمل دون فائدة. أثناء تطوير pyCobaltHound لاحظنا أن هذا قد يؤدي أيضًا إلى سلوك غير محدد.
يمكن إعادة تحميل pyCobaltHound على النحو التالي:
aggressor> python-stop-all`
[pycobalt] Asking script to stop: /root/pycobalthound/pycobalthound.py
[pycobalt] Script process exited: /root/pycobalthound/pycobalthound.py
aggressor> reload example.cna`
[pycobalt] Executing script /root/pycobalthound/pycobalthound.py
لكي يعمل PyCobalt بشكل صحيح، يمكنك فقط استدعاء PyCobalt في برنامج Aggressor نصي واحد. ضع ذلك في اعتبارك إذا كنت تريد استخدام pyCobaltHound مع برامج Aggressor النصية الأخرى التي تستخدم PyCobalt. نهجنا هو أن يكون لدينا برنامج Aggressor نصي مع استدعاءات python() و include() لكل أداة تعتمد على PyCobalt.
notify2 هي - أو كانت - حزمة لعرض إشعارات سطح المكتب على Linux. كما سنرى لاحقًا، يدعم pyCobaltHound عدة طرق لإعلام المشغل. يتم استخدام notify2 على Linux لإرسال الإشعارات إلى برنامج الإشعارات عبر D-Bus.
لتمكين ذلك، يجب تثبيت notify2 باستخدام:
pip install notify2
استخدام pyCobaltHound في Cobalt Strike بسيط مثل استيراد برنامج Aggressor النصي pycobalthound.cna إلى عميلك. بمجرد القيام بذلك، يجب أن ترى قائمة pyCobaltHound تظهر في شريط القوائم في Cobalt Strike.

كان الهدف الأولي لـ pyCobaltHound هو مراقبة ذاكرة التخزين المؤقت لبيانات الاعتماد في Cobalt Strike (View > Credentials) بحثًا عن إدخالات جديدة. يقوم بذلك عن طريق التفاعل مع حدث on_credentials الذي يطلقه Cobalt Strike عند إجراء تغييرات على مخزن بيانات الاعتماد.
عند تشغيل هذا الحدث، سيقوم pyCobaltHound بما يلي:
Cobalt Strike.BloodHound.BloodHound لكل كيان جديد باستخدام كل من الاستعلامات المضمنة والمخصصة.نظرًا لأن كل هذا يحدث بشكل غير متزامن من عميل Cobalt Strike الرئيسي، فلا ينبغي أن تؤدي هذه العملية إلى حظر واجهة المستخدم الخاصة بك، لذا يمكنك الاستمرار في العمل بينما يقوم pyCobaltHound بالتحقيق في الخلفية.
يستخدم pyCobaltHound ذاكرات تخزين مؤقت منفصلة لكل خادم فريق لمنع المشكلات عند استخدام خوادم فرق متعددة.
في بعض الأحيان تكون هناك حالات ترغب فيها في التحقيق في مستخدمين محددين (أو مخزن بيانات الاعتماد بالكامل) مرة أخرى. قد يكون هذا هو الحال عند تحميل بيانات جديدة في قاعدة بيانات BloodHound.
نظرًا لأن pyCobaltHound يجب أن يكون قد قام بالفعل بالتحقيق في (وبالتالي تخزين في ذاكرة التخزين المؤقت) جميع الكيانات في مخزن بيانات الاعتماد الخاص بك، فإنه لن يقوم بتقييمها مقابل هذه البيانات الجديدة دون تدخل المشغل.
تتوفر طريقتان للمشغلين للتحكم في الكيانات المخزنة مؤقتًا.
في الحالات التي ترغب فيها في إزالة كيان معين (أو عدة كيانات) من ذاكرة التخزين المؤقت، يمكنك القيام بذلك في عارض بيانات الاعتماد (View > Credentials). ما عليك سوى تحديد الهدف (الأهداف) والنقر فوق خيار إزالة من ذاكرة التخزين المؤقت ضمن إدخال القائمة pyCobaltHound.

في الحالات التي ترغب فيها في إزالة جميع الكيانات من ذاكرة التخزين المؤقت، يمكنك القيام بذلك في القائمة الرئيسية لـ pyCobaltHound (Cobalt Strike > pyCobaltHound > Wipe cache). يكون هذا مفيدًا جدًا عندما تريد إعادة تقييم مخزن بيانات الاعتماد بالكامل.

بعد إزالة أهدافك من ذاكرة التخزين المؤقت، يمكنك حث pyCobaltHound يدويًا على إعادة التحقيق في محتويات مخزن بيانات الاعتماد. يتبع هذا نفس العملية تمامًا كما هو مذكور أعلاه.
يحتوي pyCobaltHound على وظائف للتفاعل مع جلسات البيكون الحالية. يمكن العثور على ذلك في قائمة السياق الخاصة بالبيكون. لاحظ أنه يمكن تنفيذ هذه الأوامر على بيكون واحد أو مجموعة مختارة من البيكونات.

تكون هذه الوظيفة مفيدة بشكل خاص عند التعامل مع المستخدمين وأجهزة الكمبيوتر التي لم يتم اختراق بيانات اعتمادهم (بعد)، ولكنها تحت سيطرتنا فعليًا (على سبيل المثال، لأن لدينا بيكون يعمل تحت رمز الجلسة الخاص بهم).
يمكن استخدام وظيفة وضع علامة كمملوكة (pyCobaltHound > Mark as owned) لوضع علامة على بيكون (أو مجموعة من البيكونات) كمملوكة في قاعدة بيانات BloodHound.

سيطلب هذا الحوار من المشغل المعلومات التالية: