المجتمع CRTP

شرح Certipy find: اقرأ إعدادات AD CS وافهم النتيجة قبل ما تسميها ثغرة

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

AD CS: شهادات داخل البنية، مو شهادات مهنية

كلمة شهادة هنا تعني شهادة رقمية ضمن بنية مفاتيح عامة، وليست شهادة تدريب مثل CRTP أو OSCP. Active Directory Certificate Services دور في Windows Server يستخدم لإصدار وإدارة شهادات تخدم المصادقة والاتصالات المحمية وأغراضًا أخرى بحسب التصميم. لهذا يهم مختبر الاكتف دايركتوري فهمه؛ بعض قرارات الهوية في البيئة تعتمد على هذه الشهادات، وليس على كلمة المرور وحدها.

CA هي Certification Authority، أي جهة إصدار الشهادات. وفي بيئات مؤسسية قد توجد أكثر من جهة ودور، وبعضها جذر وبعضها تابع. أما Certificate Template فهو قالب يحدد جوانب من سياسة الشهادة وشروط طلبها واستخدامها. اسم القالب يساعدك تتعرف عليه، لكن الاسم وحده لا يثبت محتواه؛ قالب اسمه SecureUser قد يكون مضبوطًا أو يحتاج مراجعة.

فكر في مثال لاب بسيط: مجموعة مستخدمين تحتاج شهادات لاستخدام تطبيق تدريبي. المسؤول يحدد من يحق له الطلب، وما البيانات التي تظهر بالشهادة، وما الاستخدام المسموح. المختبر يراجع هل السياسة المنفذة توافق الحاجة. السؤال مو هل وجود AD CS خطير؛ السؤال هل الصلاحيات وشروط الإصدار وربط الهوية تحقق التصميم المطلوب.

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

Certipy أداة متعددة الوظائف، وfind وظيفة محددة

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

ابدأ محليًا بهذه الأوامر، بدون بيانات حساب وبدون هدف:

certipy -v
certipy -h
certipy find -h

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

انتبه كذلك لاسم الحزمة ومصدرها عند التثبيت. تأكد أنك تستخدم مشروع ly4k/Certipy المقصود في هذا الشرح، وليس مشروعًا آخر يحمل اسمًا قريبًا. معرفة الاسم الذي يظهر في الطرفية، والمصدر الذي ثبتّ منه، والنسخة، ثلاث معلومات مهمة قبل أي تجربة على الدومين.

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

وش يجمع find، ووش يتغير مع dc-only؟

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

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

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

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

مثال جرد محدود بحساب لاب مجهز مسبقًا

المثال التالي يفترض لابًا اسمه lab.test، وخادم تحكم dc01.lab.test بعنوان 10.10.20.10. يفترض أيضًا أن بيئة Kerberos في جهاز التدريب مجهزة مسبقًا، وأن لديك cache صالحًا لحساب student المصرح به. ما ينشئ الأمر حسابًا أو مادة مصادقة جديدة، وما نشرح هنا طريقة الحصول على تذاكر لحسابات أخرى.

certipy find -u 'student@lab.test' -k -no-pass -dc-host dc01.lab.test -dc-ip 10.10.20.10 -dc-only -text -output lab-adcs

راجع توافق خياراتك مع المساعدة المحلية قبل التنفيذ. -k يختار مسار Kerberos، و-no-pass يمنع طلب كلمة مرور تفاعلية في هذا المثال. وجود الخيارين ما يجهز Kerberos من الصفر؛ إذا الـ cache أو سياق الهوية غير مناسب، أصلح إعداد اللاب مع المسؤول بدل تكرار الطلب أو تجربة هويات أخرى.

نستخدم -text لإخراج تقرير نصي، و-output لتحديد بادئة ملفات النتائج. احفظ الناتج في مكان خاص بالتدريب، وتحقق من الملفات التي أنشأتها النسخة. القراءة من الخادم شيء، والكتابة المحلية لملف التقرير شيء آخر؛ المثال لا يخلو من ملفات محلية لمجرد أنه لا يعدل قالبًا.

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

اقرأ قسم CA قبل القفز إلى القوالب

ابدأ باسم جهة الإصدار واسم خادمها، واربطهما بالخريطة المتفق عليها. اسم CA ليس دائمًا اسم DNS للخادم، ولا يصح استبدال أحدهما بالآخر في كل موضع. وإذا عندك عدة جهات إصدار، حدد أي واحدة ترتبط بالقالب الذي تقرأه، بدل اعتبار الدومين كله خدمة واحدة.

بعدها راجع ما توفر فعلًا من إعدادات وصلاحيات. إذا استخدمت dc-only، تذكر حدود القراءة قبل تفسير فراغ حقل يتعلق بالخدمة. عدم توفر إعداد في التقرير ليس قيمة False تلقائيًا، ولا يثبت أن الواجهة مغلقة. فرق بين «قرأنا إعدادًا وكانت قيمته كذا» و«لم نجمع هذا الإعداد».

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

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

القالب موجود، لكن هل يُصدر منه شيء؟

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

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

كذلك فرق بين Template Name وDisplay Name إذا عرضهما التقرير. قد تتشابه أسماء العرض أو تبدو مريحة للقراءة، لكنك تحتاج المعرف الصحيح عند مقارنة قالب محدد بإعداداته. اربط الملاحظة بالكائن الفعلي، لا باسم عرض من لقطة قديمة.

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

Enroll وخصائص الاستخدام: قراءتان تكمل بعض

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

Extended Key Usage، أو EKU، يوضح أغراض استخدام مرتبطة بالشهادة، لكن تقييم القالب يحتاج جمعه مع بقية الشروط. لا تقرأ Client Authentication في سطر واحد ثم تسمي كل القالب ثغرة. قد تكون هذه وظيفة مقصودة ومقيدة بهوية طالب الشهادة وضوابط إصدار مناسبة.

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

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

ظهر ESC: اعتبره بداية مراجعة، مو نهاية التقرير

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

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

قد تستخدم -vulnerable لتقليل العرض، لكن التقرير الذي لا يعرض إلا القوالب الموسومة ما يعطيك جردًا كاملًا، ولا يثبت أن بقية البنية سليمة. إذا هدف المهمة تقييم تصميم AD CS، اقرأ كذلك القوالب والحقوق والسياق، وليس التصنيفات الآلية فقط.

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

أخطاء الجرد: لا تعالجها بتخفيف ضوابط الهوية

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

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

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

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

تمرّن على تفسير القالب قبل ما تطلب شهادة

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

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

ولترتيب جانب قراءة الدليل، راجع شرح ldapsearch في المجتمع:
https://courses.cyberpts.com/community/70/shrh-ldapsearch-ma-active-directory-abhth-mn-lynks-wafhm-lysh-alntyjh-naqsh-aw-f

المراجع الأصلية:
تعريف AD CS في Microsoft:
https://learn.microsoft.com/en-us/windows-server/identity/ad-cs/active-directory-certificate-services-overview
وثائق Certipy الرئيسية:
https://github.com/ly4k/Certipy/wiki
قسم Usage:
https://github.com/ly4k/Certipy/wiki/05-%E2%80%90-Usage
قسم Command Reference:
https://github.com/ly4k/Certipy/wiki/08-%E2%80%90-Command-Reference

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

إذا فهمت جهة الإصدار والقالب ومن يستطيع الطلب وحدود بيانات find، صار عندك أساس قوي لمراجعة AD CS. بعدها الأداة تعطيك قرائن منظمة، وأنت تضيف لها السياق والدليل والقرار المهني المناسب.