المجتمع CRTP

تمرين CRTP في BloodHound: عندك مساران لحساب خدمة، أي علاقة تراجع أول وأين يكون التصحيح؟

يعرض BloodHound مسارين من حساب تدريب إلى مجموعة تتحكم في حساب خدمة. الأول يمر بعضوية قديمة في فريق دعم، والثاني يأتي من تفويض على OU. تقدر تصور الرسم وتقول «المسار موجود»، لكن السؤال الذي يفيدك أكثر: أي علاقة تحتاج إثباتًا أولًا؟ وهل حذف عضوية المستخدم يزيل السبب، أم أن الإذن نفسه ما زال يمنح جمهورًا أكبر قدرة لا يحتاجها؟

هذا تمرين مستقل للتحضير العملي لـCRTP، وليس وصفًا لسؤال امتحان. سنبني حالتين افتراضيتين ونركز على قراءة العلاقات واختيار نقطة تصحيح مناسبة، من غير تنفيذ سيطرة أو تغيير ACL. إذا تعلمت تربط المسار بسبب يمكن للفريق معالجته، بتطلع من اللاب بشيء أعمق من حفظ تسلسل أوامر.

صمم الحالة حول دور خدمة، لا حول حساب مشهور

لدينا تطبيق تدريب اسمه LabReports يعمل بهوية lab-report-service. التصميم المعتمد يقول إن فريق App-Operators يستطيع إدارة مهام محددة مرتبطة بالخدمة، بينما فريق Student-Support يساعد المستخدمين العاديين. مستخدم التدريب faisal عضو في مجموعة Student-Support، ولا يفترض أن يكون ضمن جمهور إدارة هوية الخدمة.

يُجهز المدرب حالة فيها مجموعتان تنظمان هذه العلاقات، وOU تضم بعض حسابات التدريب وهوية الخدمة. لا نحتاج أن تكون أسماء الكائنات أو ترتيبها مثل لاب جهة الشهادة. المهم أن توجد وظيفة معتمدة وعلاقات يمكن قراءتها، وأن يبقى كل شيء في بيئة معزولة ببيانات لا تستخدم في العمل.

الحالة الأولى تمنح Student-Support عضوية ضمن جمهور إدارة الخدمة عبر مجموعة وسيطة. الحالة الثانية تمنحها إذنًا يصل إلى كائن الخدمة من مصدر تفويض آخر. نحن لا نفترض أن الكائن الأخير مجرد وجوده يعني صلاحية على كل موارد التطبيق؛ نحدد ما يسمح به الإذن والموارد التي يهمنا تقييمها.

اكتب الدور المتوقع لكل مجموعة قبل الجمع. لو لم تعرف الفرق بين دعم الطلاب وإدارة التطبيق، قد تبدو لك العضوية المتداخلة طبيعية أو خاطئة حسب مزاجك. السياسة المكتوبة تجعل التقييم قابلًا للنقاش، لأنك تستطيع ربط كل علاقة بما تحتاجه الوظيفة فعلًا.

والهدف من التمرين ليس اختيار أسرع مسار لتنفيذ أثر أكبر. الهدف تحديد علاقات غير معتمدة، وإثباتها بدرجة مناسبة، ثم مقارنة نقاط التصحيح التي تحفظ الوظائف المطلوبة. يمكن أن ينجح الطالب في هذا الهدف من خلال القراءة والتحليل وتقرير جيد، حتى لو لم يُسمح له بأي عملية تعديل على حساب الخدمة.

اقرأ المسار كجمل، مب كسهم متصل

ابدأ بالحساب المصدر ثم اقرأ كل علاقة باسمها واتجاهها: faisal عضو في Student-Support، وهذه المجموعة عضو في مجموعة أخرى، وتلك المجموعة لها حق معين على حساب الخدمة. جمل قصيرة مثل هذه تكشف أين توجد معلومة عضوية وأين توجد معلومة قدرة. إذا قلت «المستخدم يسيطر على الخدمة» من أول لقطة، قد تكون أخفيت شروطًا أو نوع كائن يحتاج مراجعة.

MemberOf يصف عضوية في مجموعة أمان في النموذج الذي تعرضه الأداة. أما GenericAll أو WriteDacl فيصفان حقوقًا مختلفة على الهدف المعروض وفق تفسير البيانات. لا تحول جميع العلاقات إلى كلمة «وصول»، لأن العضوية وحق تعديل أذونات كائن والوصول الفعلي إلى تطبيق ليست مرحلة واحدة.

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

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

وبعد قراءة الجمل، ضع بجانب كل واحدة السؤال التالي: هل العلاقة حالية؟ هل الدور يقتضيها؟ هل نطاق الإذن يشمل الهدف فعلًا؟ هل نحتاج تحققًا من مورد خارج الدليل؟ هذا التحويل من صورة إلى أسئلة يجعل استخدام BloodHound مفيدًا، ويحدد أي مصدر قراءة تختاره بدل جمع المزيد بلا هدف.

اختر أول دليل يفرق بين السببين

عندك مساران، لكن وقتك محدود وتريد تحديد السبب لا زيادة الصور. في مسار العضوية، الدليل الأول المفيد هو التحقق من العلاقات المتداخلة الحالية بين المجموعات والحساب، مع مصدر معروف. في مسار التفويض، الدليل الأول هو ACL المعنية على المصدر والهدف وحالة الوراثة والنطاق. هذان سؤالان مختلفان، فلا تبدأ بإعادة جمع كل الشبكة لكل واحد منهما.

يمكن داخل لاب مصرح قراءة مجموعة محددة عبر Get-ADGroupMember -Identity 'Student-Support' -Server 'dc01.lab.test'، ثم مراجعة المجموعة الوسيطة التي يظهرها المسار بالهوية المناسبة. لا تكتب أن أمرًا واحدًا عرض كل العلاقات المتداخلة إن لم تطلبها أو تتحقق منها. كذلك فرّق بين القراءة الحالية وبيانات الرسم التي جُمعت سابقًا.

أما إذن الكائن، فاقرأه من واجهة إدارة أو مصدر تصدير معتمد يبين الحقول المهمة. لا يكفي أن تكتشف ACE على OU ثم تقول إنها تنطبق على حساب الخدمة؛ يحتاج ذلك مراجعة نوع الكائن وقيد الوراثة وحالة الكائن نفسه. إذا لم يصل الإذن إلى الهدف، تتغير قيمة هذا المسار في التقييم.

خلنا نفترض أن المدرب أزال العضوية القديمة قبل قليل، لكن الرسم ما زال يحملها من جمع سابق. التحقق المباشر يبين اختلاف الحالة ويمنعك من اقتراح حذف شيء لم يعد موجودًا. وفي المقابل، قد يكون التفويض الموروث ما زال قائمًا، فيبقى المسار الثاني بحاجة معالجة. المساران ليسا نتيجة واحدة تتلاشى بمجرد اختفاء أحدهما.

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

حذف الحساب من المجموعة قد يصلح العينة ويترك الخلل

لو faisal عضو في Student-Support لأسباب عمل صحيحة، وإزالة عضويته تمنعه من مهام الدعم المشروعة، فقد يكون هذا تصحيحًا في المكان الخطأ. السبب غير المعتمد قد يكون أن Student-Support نفسها دخلت مجموعة إدارة الخدمة. هنا إزالة المستخدم من دوره الأساسي تخفي المسار لهذا الشخص وتترك بقية أعضاء المجموعة معرضين للعلاقة نفسها.

وفي حالة ثانية، ربما المجموعة المتداخلة صحيحة لكن faisal أضيف إليها مباشرة بالخطأ. الآن نقطة التصحيح مختلفة، لأن إزالة عضوية الحساب غير المعتمدة قد تحقق الهدف من غير تعطيل علاقة مجموعات يحتاجها العمل. شكل المسار متشابه، لكن تصميم الدور هو الذي يفرق الإجراء المناسب.

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

لذلك قارِن نقاط التصحيح على أساس السبب والوظيفة ونطاق التأثير، لا على أساس أقصر أمر. ضع لكل خيار: أي علاقة يزيل؟ من يتأثر؟ أي مهمة ينبغي أن تبقى؟ وكيف تثبت ذلك بعد التطبيق؟ هذه المقارنة مفيدة حتى لو لم تكن أنت الشخص المخول بالتعديل.

ولا تقل إن قطع علاقة واحدة يضمن إغلاق كل الطرق إذا كان عندك مسار آخر مثبت. أعد مراجعة الوصول إلى الهدف من العلاقات التي تدخل النطاق، واذكر ما لم تجمعه. تقرير واضح يقول «أزيل السبب المحدد في هذين المسارين» أفضل من وعد شامل بأن الحساب ما عاد يمكن أن يتأثر بأي علاقة في غابة لم تدققها بالكامل.

اثبت القدرة بقدر ما يحتاجه السؤال

إذا كان هدف المهمة مراجعة تفويض مخالف، قد تكفي قراءة حالية موثقة وربطها بالسياسة المعتمدة. إذا كان المطلوب تحققًا وظيفيًا محدودًا، يجهز المدرب كائنًا مناسبًا وعملية متفقًا عليها. لا تنتقل تلقائيًا إلى تغيير حساب الخدمة أو استخراج بيانات اعتماد لمجرد أن شرح Edge في الإنترنت يعرض طريقة إساءة استخدام.

في التقرير، افصل ما تقوله البيانات عن ما نفذته. مثلًا: «المجموعة تحمل حق تعديل أذونات الكائن وفق القراءة الحالية» يختلف عن «تعديل أذونات كائن تدريب نجح في العملية المحددة». وفي الحالتين قد توجد آثار أوسع تحتاج شروطًا، فلا تقدمها كأنها حدثت فعليًا داخل التطبيق الذي يهم العميل.

هذا الفصل يساعد في التحضير للشهادات أيضًا. لاب تدريب قد يطلب تطوير مهارة تنفيذ معينة، بينما تمرين قراءة مستقل يطور مهارة التفسير والتوثيق. الاثنان مفيدان إذا سميتهما بوضوح ولم تعتبر نتيجة أحدهما إثباتًا لجميع أهداف الآخر. الرجوع إلى محتوى الجهة الرسمية هو الطريق لمعرفة نطاق التدريب الحالي.

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

وفي الجانب الأمني، توقف عند الدليل الذي يحقق السؤال بأقل أثر وفق التصريح. لا تحتاج أن تجعل التقرير ممتعًا بتنفيذ تغيير واسع؛ المتعة هنا في فهم لماذا المسار موجود وكيف تصححه من غير خسارة الدور المشروع. هذا نوع نتيجة يحترمه المسؤول لأنه يساعده يعمل، وليس مجرد صورة تخيفه من كل شيء.

إعادة الجمع ليست إعادة اختبار كاملة

بعد أن ينفذ المدرب التصحيح، قد تعيد الجمع والاستيراد وتجد أن المسار اختفى. هذه خطوة مفيدة للتحقق من نموذج العلاقات الحالي، لكنها لا تثبت وحدها أن المهمة المشروعة بقيت تعمل أو أن كل سبب غير معتمد أُغلق. تحتاج قراءة مباشرة للموضع الذي تغير وقياسًا وظيفيًا يناسب الدور.

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

والحالة المقابلة مهمة: حساب خارج جمهور الإدارة لا ينبغي أن يحصل على العملية الزائدة، بينما حساب الإدارة المعتمد ينبغي أن يبقى قادرًا على مهمته. مجرد رفض الجميع ليس نجاحًا، ومجرد استمرار عمل التطبيق ليس دليلًا أن التفويض على كائن الخدمة صار صحيحًا. كل اختبار يغطي علاقة مختلفة.

دوّن وقت التصحيح ووقت القراءة ومصدرها، وراجع انتقال التغيير وفق ما يقتضيه اللاب إذا استخدمت أكثر من DC. لا تعدّل المصدر مرة ثانية لأن الرسم القديم ما زال يعرض Edge أو لأن استيرادك لم يحدث. أولًا أثبت أي نسخة تقرأ وأي وقت تمثل، ثم قرر هل هناك فشل تصحيح أم بيانات سابقة فقط.

النتيجة النهائية يمكن أن تحمل جزأين: تحقق من العلاقات الحالية، وتحقق من السلوك المشروع وغير المشروع في العينة المحددة. هذا يعطيك إغلاقًا يمكن للمسؤول مراجعته، ويعلمك أن Retest ليس ضغط زر Scan جديد. إنه مقارنة منظمة بين السبب الذي وثقته والتغيير الذي نُفذ والأثر الذي ينبغي أن يظهر بعده.

كيف تعرض هذا المشروع في ملف أعمالك؟

إذا كنت في بداية الطريق، هذا التمرين يصلح مشروعًا صغيرًا نظيفًا: بيئة تدريبية مستقلة، ودوران وظيفيان، ومساران مختلفان، وتحليل نقاط التصحيح، وخطة تحقق. اعرضه كعمل لاب من إعدادك أو إعداد مدربك وفق الحقيقة، ولا تضعه بصيغة تقييم لعميل أو تجربة امتحان لم تحدث.

اكتب وصفًا يبدأ بالمشكلة: جمهور دعم يحصل على قدرة تتجاوز دوره عبر علاقة عضوية وتفويض منفصل، ثم اشرح كيف فرقت بين السببين. أضف أسماء تدريبية ورسمًا أو لقطات مسموحة إن كانت توضح العلاقات، مع دليل القراءة ومحدودية التغطية. القارئ يحتاج يرى حكمك التقني أكثر من عدد أدواتك.

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

لا تعد أن CRTP وحدها تجعل هذا النوع من القرار تلقائيًا أو تمنح وظيفة محددة. الشهادة جزء من تعلم وتحقق وفق الجهة، بينما مشاريع التدريب توضح كيف تستخدم المفاهيم. اقرأ التفاصيل الحالية من المصدر الرسمي، وبنِ تمرينك على أسئلة يمكن قياسها بدل محاولة توقع امتحان أو تكرار حلول منشورة.

مصادر تعريف العلاقات في BloodHound: https://bloodhound.specterops.io/resources/edges/member-of
https://bloodhound.specterops.io/resources/edges/generic-all
https://bloodhound.specterops.io/resources/edges/write-dacl
مراجعة الوراثة في الدليل: https://learn.microsoft.com/en-us/windows/win32/ad/access-control-inheritance
صفحة CRTP الرسمية للمحتوى الحالي: https://www.alteredsecurity.com/adlab