
تحديد مسارات الهجوم في BloodHound التي تكسر هيكل طبقات Active Directory الخاص بك.
تحديد مسارات الهجوم في بلدهاوند التي تخترق تسلسل الـ AD الخاص بك
إمبروهند هو تطبيق dotnet مستقل يعمل على نظام ويندوز x64 بواجهة رسومية. لاستخدام إمبروهند، يجب تشغيل SharpHound لجمع البيانات اللازمة من الـ AD. ثم تقوم برفع البيانات إلى تثبيت بلدهاوند الخاص بك. سيتصل إمبروهند بقاعدة بيانات Neo4j الأساسية لـ بلدهاوند. في إمبروهند، ستقوم بتصنيف الـ AD إلى مستويات (tiers) عبر هيكل الوحدات التنظيمية (OU)، وسيقوم إمبروهند بتحديد علاقات الـ AD التي تمكن كائنات الـ AD من اختراق كائن من مستوى أعلى (أقرب إلى الصفر) وحفظ انتهاكات التسلسل في ملف csv.
عرض إمبروهند في قرية الخصوم في مؤتمر DEF CON
1. إعداد قاعدة بيانات بلدهاوند الخاصة بك
جمع بيانات بلدهاوند باستخدام SharpHound في الـ AD الخاص بك
ملاحظة: سيؤدي ذلك إلى توليد ضوضاء في برنامج الحماية الخاص بك، ونظام SIEM، إلخ.
مثال: تشغيل SharpHound.exe من موجه الأوامر، جمع الكل (نعم، GPOLocalGroup غير مضمنة في "الكل"):
SharpHound.exe --CollectionMethods All,GPOLocalGroup
نصيحة 1: استخدم معامل
Domainلجمع البيانات من نطاقات أخرى في الغابة.
نصيحة 2: للحصول على المزيد من البيانات، استخدم طريقة جمع جلسات التكرار
رفع بيانات بلدهاوند الخاصة بك في واجهة بلدهاوند الرسومية
يوجد خلل في بلدهاوند يتسبب أحيانًا في تخطي ملف النطاق json عند رفع ملف zip لبيانات بلدهاوند. تحقق من إحصائيات قاعدة البيانات في بلدهاوند بعد رفع البيانات وتأكد من وجود كائنات النطاق.
2. تثبيت إضافة APOC لـ Neo4j (تمكن عمليات الرسم البياني الرائعة التي نحتاجها)
قم بتنزيل APOC الإصدار المطابق لإصدار Neo4j لديك (apoc-x.x.x.x-all.jar).
ابحث عن إصدار APOC المطابق لإصدار Neo4j في مصفوفة التوافق.
حاول تذكر أين قمت بتثبيت Neo4j وضع ملف APOC jar في: $NEO4J_HOME/plugins/
/var/lib/neo4j/قم بتحرير neo4j.conf في محرر النصوص المفضل لديك للسماح بالوصول غير المقيد إلى APOC عن طريق استبدال السطر:
#dbms.security.procedures.unrestricted=my.extensions.example,my.procedures.*
بـ
dbms.security.procedures.unrestricted=apoc.*
/etc/neo4j/neo4j.conf$NEO4J_HOME/conf/neo4j.confإذا كنت ترغب في تشغيل إمبروهند على مضيف و بلدهاوند على آخر، يجب عليك السماح بالاتصالات عن بُعد بقاعدة بيانات Neo4j على مضيف بلدهاوند. للقيام بذلك، قم بإزالة # من السطر
#dbms.default_listen_address=0.0.0.0فيneo4j.conf.
أعد تشغيل Neo4j
systemctl restart neo4jnet stop neo4j && net start neo4j (PowerShell: net stop neo4j; net start neo4j)3. قم بتنزيل وتشغيل أحدث إصدار من ImproHound.exe في ويندوز (x64)
تأكد من أنه يمكنك تسجيل الدخول إلى قاعدة بيانات بلدهاوند باستخدام نفس بيانات الاعتماد التي تستخدمها في واجهة بلدهاوند الرسومية.

أدخل بيانات اعتماد قاعدة البيانات وقم بإنشاء اتصال. إنها نفس بيانات الاعتماد التي تستخدمها في واجهة بلدهاوند الرسومية.

يقوم إمبروهند بإنشاء تسمية 'TierX' على العقد في قاعدة بيانات بلدهاوند. إذا كنت قد استخدمت إمبروهند سابقًا مع قاعدة بيانات بلدهاوند هذه، فسيُطلب منك ما إذا كنت ترغب في المتابعة مع التسلسل الذي أنشأته بالفعل أو البدء من جديد.

يمنحك إمبروهند خيار تعيين 'التسلسل الافتراضي' والذي سيقوم بتعيين مديري النطاق في المستوى 0، ومستخدمي النطاق في المستوى 2، إلخ، أو تعيين جميع الكائنات في المستوى 2.

هذه هي الصفحة التي ستقوم فيها بتصنيف كائنات الـ AD إلى مستويات. تعرض النافذة هيكل الوحدة التنظيمية. كل كائن من كائنات الـ AD له قيمة مستوى يمكن زيادتها أو تقليلها باستخدام الأسهم.
تعيين الأطفال إلى مستوى
إذا قمت بتحديد نطاق أو حاوية AD، يمكنك النقر على 'تعيين الأطفال إلى مستوى' لتعيين جميع الأطفال (بشكل متكرر) إلى مستوى النطاق/الحاوية المحددة.
تعيين الأعضاء إلى مستوى
إذا قمت بتحديد مجموعة، يمكنك النقر على 'تعيين الأطفال إلى مستوى' لتعيين جميع الأعضاء (بشكل متكرر) إلى مستوى المجموعة المحددة.
تعيين مستوى لسياسات المجموعة (GPOs)
إذا قمت بالنقر على 'تعيين مستوى لسياسات المجموعة'، فسيتم تعيين كل سياسة مجموعة إلى مستوى الوحدة التنظيمية الأعلى مستوى (الأقرب إلى الصفر) التي ترتبط بها سياسة المجموعة. سياسات المجموعة غير المرتبطة بوحدة تنظيمية لن يتغير مستوىها.
الحصول على انتهاكات التسلسل
ابحث عن جميع العلاقات في قاعدة بيانات بلدهاوند حيث يمتلك كائن الـ AD السيطرة على كائن الـ AD من مستوى أعلى (أقرب إلى الصفر).
يتم إنشاء ملفي CSV كخرج:
adobjects-[timestamp].csv: جميع كائنات الـ AD والمستوى الذي تنتمي إليه.
tiering-violations-[timestamp].csv: انتهاكات التسلسل.
مثال على السجلات في ملف CSV الخاص بالانتهاكات:
| SourceTier | SourceType | SourceName | SourceDistinguishedname | Relation | IsInherited | TargetTier | TargetType | TargetName | TargetDistinguishedname |
|---|---|---|---|---|---|---|---|---|---|
| Tier1 | User | [email protected] | CN=svc-monitor,CN=Users,DC=hot,DC=local | ForceChangePassword | True | Tier0 | User | [email protected] | CN=T0_JBK,CN=Users,DC=hot,DC=local |
| Tier2 | Group | [email protected] | CN=Wrk-Admins,CN=Groups,DC=hot,DC=local | GenericWrite | Tier0 | GPO | [email protected] | CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=hot,DC=local |
السجل الأول هو حساب خدمة من المستوى 1 لديه صلاحية تغيير كلمة مرور حساب مستخدم من المستوى 0. العلاقة موروثة. لسوء الحظ، ليس من الممكن دائمًا رؤية من أين تم توريث العلاقة في بيانات بلدهاوند، ولكن يمكنك التحقق يدويًا من خلال فحص الصلاحيات على كائن الـ AD المستهدف في المستخدمين وأجهزة الكمبيوتر. السجل الثاني هو مجموعة لديها صلاحية تحرير سياسة مجموعة، والتي من المحتمل أن تكون مرتبطة بوحدة تنظيمية تحتوي على خوادم من المستوى 0 لأنها سياسة مجموعة من المستوى 0.
يمكنك الاطلاع على جميع أنواع العلاقات وكيفية استغلالها هنا.
إذا اكتشفت أن كائنًا ما في مستوى مرتفع جدًا (أقرب إلى الصفر)، يجب عليك تصحيحه في إمبروهند، ثم التحقق من وجود انتهاكات باستخدام هذا الكائن كمصدر (SOURCE). إذا كان الكائن في مستوى منخفض جدًا (أقرب إلى اللانهاية)، يجب عليك تصحيحه في إمبروهند والتحقق من وجود انتهاكات باستخدام الكائن كهدف (TARGET).