
أداة هجومية لتفريغ وتحليل GPO تستفيد من بيانات BloodHound وتثريها
GPOHound هي أداة لتفريغ وتحليل كائنات نهج المجموعة (GPOs) المستخرجة من مشاركة SYSVOL.
توفر شكلاً منظمًا ورسميًا للمساعدة في كشف الأخطاء في التهيئة والإعدادات غير الآمنة ومسارات رفع الامتيازات في بيئات Active Directory.
تتكامل الأداة مع قاعدة بيانات Neo4j الخاصة بـ BloodHound، وتستخدمها كمصدر يشبه LDAP لمعلومات Active Directory مع إثرائها بإضافة علاقات (حواف) وخصائص عقد جديدة بناءً على التحليل.
تفريغ GPOs بتنسيق JSON منظم أو تنسيق شجري
التعامل مع نطاقات متعددة
حل أسماء GPOs مع GUIDs الخاصة بها
تصفية المخرجات حسب ملفات GPO وGUIDs الخاصة بالنطاق
البحث في أزواج المفاتيح/القيم باستخدام regex
تجميع الإعدادات حسب الكائن المتأثر (مثلاً: المجموعات المحلية، السجل)
كشف الأعضاء المضافين إلى المجموعات المحلية المميزة
كشف إعدادات السجل غير الآمنة، وبيانات الاعتماد المخزنة، وحقوق الامتياز
دعم فك تشفير بيانات اعتماد VNC وكلمات مرور GPP
العثور على النطاقات والحاويات ووحدات التنظيم المتأثرة بـ GPOs
الحصول على GPOs المطبقة على مستخدم أو جهاز كمبيوتر أو وحدة تنظيم أو حاوية أو نطاق معين
إثراء بيانات BloodHound بالعلاقات والخصائص
git clone "https://github.com/cogiceo/GPOHound"
cd GPOHound
pip install .
pipx install "git+https://github.com/cogiceo/GPOHound"
تحتاج إلى إعداد APOC الخاص بـ Neo4j لإثراء بيانات BloodHound:
إذا كنت تستخدم تثبيت Neo4j القياسي، يمكنك تمكين APOC عن طريق نسخ ملف jar الخاص بـ APOC إلى مجلد الإضافات ثم إعادة تشغيل Neo4j:
cp /var/lib/neo4j/labs/apoc-* /var/lib/neo4j/plugins/
neo4j restart
إذا كنت تقوم بتثبيت Neo4j باستخدام "Docker Compose"، أضف متغير البيئة NEO4J_PLUGINS=["apoc"]:
neo4j:
image: neo4j:latest
environment:
- NEO4J_PLUGINS=["apoc"]
لمزيد من التفاصيل أو طرق التثبيت البديلة، راجع وثائق APOC الرسمية.
لتصور العلاقات والخصائص التي أضافها GPOHound، يمكنك استيراد الاستعلامات المخصصة من ملف customqueries.json إلى BloodHound. بشكل افتراضي، يقع هذا الملف في ~/.config/bloodhound/customqueries.json.
ابدأ بتنزيل محتويات SYSVOL من وحدة تحكم النطاق.
تنزيل كامل SYSVOL:
gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
تنزيل GPOs فقط:
gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD --gpos
تنزيل مع استثناءات:
gpohound sysvol --dc $DC_HOST -u $USER -p $PASSWORD --exclude '/Policydefinitions/','/scripts/' --max-size 100
استرداد جميع البيانات المطلوبة من LDAP:
gpohound ldap --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
لإثراء بيانات BloodHound، يجب جمع بيانات BloodHound باستخدام أداة تجميع مثل bloodhound.py أو SharpHound.exe ثم استيراد البيانات المجمعة إلى واجهة BloodHound.
تتوفر ملفات GPOHound نموذجية في example.zip. قم باستخراجها باستخدام unzip example.zip.
انظر إلى CONFIG.md للحصول على تعليمات حول تخصيص القيم الافتراضية والتكوينات.
gpohound --neo4j-user $USER --neo4j-pass $PASS dump
gpohound --neo4j-user $USER --neo4j-pass $PASS analysis
gpohound parse "gpos/sysvols/$DOMAIN/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Registry.pol"
gpohound dump
gpohound dump --list
gpohound dump --guid 31B2F340-016D-11D2-945F-00C04FB984F9
gpohound dump --policies scripts psscripts
gpohound dump --search 'VNC.*Server' --show
gpohound analysis
gpohound analysis --affected
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL'
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --list
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --dump
gpohound analysis --enrich
gpohound analysis --enrich-ce
[!مهم]
- لا يتم تفسير شروط مثل عوامل التصفية الأمنية وعوامل تصفية WMI والاستهداف على مستوى العنصر.
- لا يتم محاكاة تعارضات GPO، لتجنب فقدان الإعدادات الصالحة.
كشف المستخدمين المعينين للمجموعات المحلية المميزة أثناء تسجيل الدخول
كشف المجموعات المحلية المميزة المضمنة التي تمت إعادة تسميتها.
كشف الأمناء المضافين إلى المجموعات المحلية المميزة باستخدام "متغيرات عملية التفضيل" (مثل %ComputerName%, %DomainName%)
كشف الأمناء القابلين للاستغلال باستخدام اختطاف sAMAccountName
كشف أي أمناء مضافين إلى المجموعات المحلية المميزة:
يتم استبعاد الأمناء المميزين الافتراضيين، بالإضافة إلى حسابات الخدمة التي تبدأ SIDs الخاصة بها بـ S-1-5-8، من التحليل.
| المجموعة | الحافة |
|---|
| المسؤولون (Administrators) | AdminTo |
| مستخدمو سطح المكتب البعيد (Remote Desktop Users) | CanRDP |
| مستخدمو COM الموزع (Distributed COM Users) | ExecuteDCOM |
| مستخدمو الإدارة عن بُعد (Remote Management Users) | CanPSRemote |
| مشغلو النسخ الاحتياطي (Backup Operators) | CanPrivEsc |
| مشغلو الطباعة (Print Operators) | CanPrivEsc |
| مشغلو تكوين الشبكة (Network Configuration Operators) | CanPrivEsc |
| التحليل | الخاصية |
|---|
| مجموعة "الجميع" تشمل "تسجيل الدخول المجهول" | — |
| توقيع جلسة خادم SMB غير ممكّن | smbSigningEnabled: false |
| توقيع جلسة خادم SGB غير مطلوب | smbSigningRequired: false |
| مصادقة NTLMv1 مدعومة | NTLMv1Support: true |
| كلمة مرور تسجيل الدخول التلقائي الافتراضية لنظام Windows | — |
| بيانات اعتماد VNC (عامة: RealVNC, TightVNC, TigerVNC، إلخ.) | *VNC*PASS* (متنوعة) |
| كلمات مرور FileZilla المخزنة | — |
| كلمة مرور وكيل PuTTY | — |
| بيانات اعتماد TeamViewer المخزنة | — |
| جلسات WinCP المحفوظة | — |
| كلمة مرور Picasa المخزنة | — |
| الامتياز | الوصف | الحافة |
|---|
| SeDebugPrivilege | يسمح للمستخدم بتصحيح التفاعل مع أي عملية | CanPrivEsc |
| SeBackupPrivilege | يمنح الوصول إلى الملفات الحساسة | CanPrivEsc |
| SeRestorePrivilege | يتجاوز أذونات الكائن أثناء الاستعادة | CanPrivEsc |
| SeAssignPrimaryTokenPrivilege | يمكّن من انتحال الرمز لرفع الامتياز إلى SYSTEM | CanPrivEsc |
| SeImpersonatePrivilege | يسمح بإنشاء عملية تحت سياق مستخدم آخر | CanPrivEsc |
| SeTakeOwnershipPrivilege | يسمح للمستخدمين بالحصول على ملكية كائنات النظام | CanPrivEsc |
| SeTcbPrivilege | يمنح القدرة على العمل كجزء من نظام التشغيل | CanPrivEsc |
| SeCreateTokenPrivilege | يسمح بإنشاء رموز المصادقة | CanPrivEsc |
| SeLoadDriverPrivilege | يخوّل تحميل/إلغاء تحميل برامج التشغيل | CanPrivEsc |
| SeManageVolumePrivilege | يمنح امتيازات إدارة الأقراص أو الأحجام | CanPrivEsc |
| SeEnableDelegationPrivilege | يمكّن حسابات الكمبيوتر والمستخدم من أن تكون موثوقة للتفويض |