
يوسع BloodHound لجمع واستيعاب علاقات Active Directory من مضيفات macOS، بما في ذلك المستخدمين المسجلين دخولاً، مجموعات المسؤولين، حواف الوصول SSH/VNC/AppleEvent لتخطيط مسار الهجوم.
MacHound هو امتداد لأداة التدقيق Bloodhound يتيح جمع وإدخال علاقات Active Directory على مضيفي MacOS. يجمع MacHound معلومات عن المستخدمين المسجلين الدخول وأعضاء المجموعات الإدارية على أجهزة Mac ويُدخل المعلومات في قاعدة بيانات Bloodhound. بالإضافة إلى استخدام الحواف HasSession و AdminTo، يضيف MacHound ثلاث حواف جديدة إلى قاعدة بيانات Bloodhound:
لمعرفة المزيد عن MacHound، راجع منشور المقدمة
يستخدم MacHound واجهة برمجة التطبيقات utmpx للاستعلام عن المستخدمين النشطين حاليًا وOpenDirectory وواجهة برمجة التطبيقات للعضوية للتحقق من مستخدمي Active Directory.
يجمع MacHound أعضاء Active Directory من المجموعات الإدارية المحلية التالية:
المجموعات الإدارية المحلية، التي تسمح بعمليات الجذر.
أعضاء هذه المجموعة المحلية مسموح لهم بالوصول إلى خدمة تسجيل الدخول عن بُعد (SSH).
أعضاء هذه المجموعة المحلية مسموح لهم بتنفيذ نصوص AppleEvent عن بُعد.
أعضاء هذه المجموعة المحلية مسموح لهم بالوصول إلى خدمة مشاركة الشاشة (VNC).
ينقسم MacHound إلى مكونين رئيسيين: المجمع (collector) والمُدخل (ingestor).
نص Python3.7 يعمل محليًا على مضيفي MacOS المنضمين إلى Active Directory. يستعلم المجمع عن OpenDirectory المحلي و Active Directory للحصول على معلومات عن المستخدمين والمجموعات المميزة. نتيجة التنفيذ هي ملف JSON يحتوي على جميع المعلومات المجمعة.
نص Python3.7 يحلل ملفات JSON الناتجة (ملف واحد لكل مضيف)، ويتصل بقاعدة بيانات neo4j ويُدخل الحواف إلى قاعدة البيانات. يستخدم المُدخل مكتبة neo4j لـ Python للاستعلام عن المعلومات من وإلى قاعدة بيانات neo4j. يجب تنفيذ المُدخل على مضيف لديه وصول TCP إلى قاعدة بيانات neo4j.
يتطلب MacHound Python3.7. يتطلب المُدخل مكتبة neo4j لـ Python3.7.
يجب نشر وتنفيذ المجمع محليًا على أجهزة Mac. يتم تخزين الناتج محليًا ويحتاج إلى نقله إلى المضيف الذي يشغل المُدخل. يعتمد المجمع على المكتبات المضمنة في Python3.7 ولا يتطلب تثبيتات إضافية. يمكن تجميع MacHound كتطبيق باستخدام مكتبة py2app لتسهيل النشر.
المجمع لا يأخذ وسائط افتراضيًا يستعلم عن جميع المعلومات، ويكتب ملف الناتج إلى ./output.json. يجب تنفيذ المجمع كمستخدم جذر.
collector.py -o <output_file> -c <Admin,CanSSH,CanVNC,CanAE,HasSession> [-v] [-l log_file_path]
يجب نشر المُدخل على مضيف لديه اتصال TCP مباشر بقاعدة بيانات Bloodhound neo4j، ويفضل أن يكون محليًا على خادم قاعدة بيانات neo4j لتجنب المخاطر الأمنية. يتطلب المُدخل تثبيت برنامج تشغيل neo4j لـ Python (انظر ملف المتطلبات).
ingestor.py <url_to_neo4j> -u <username> -p <password> -i <json_folder>
تم إصدار MacHound بموجب ترخيص GPL-3.0. لمزيد من التفاصيل، راجع LICENSE.md.
لأي سؤال، اقتراح، أو إبلاغ عن خطأ، لا تتردد في الاتصال على [email protected]