
إضافة Burp Suite لإجراء مصادقة Kerberos
تم إصداره كمصدر مفتوح بواسطة NCC Group Plc - http://www.nccgroup.trust/
تم تطويره بواسطة Richard Turnbull، richard [dot] turnbull [at] nccgroup [dot] com
http://www.github.com/nccgroup/Berserko
تم إصداره بموجب رخصة AGPL، راجع ملف LICENSE لمزيد من المعلومات
سيستمر التطوير الإضافي لـ Berserko في https://github.com/rteatea/Berserko
Berserko هو امتداد لـ Burp يضيف دعمًا لإجراء مصادقة Kerberos. وهذا مفيد للاختبار داخل نطاق ويندوز عندما لا تكون مصادقة NTLM مدعومة (يتعامل Burp بالفعل مع NTLM). لا يتطلب Berserko أن يكون الجهاز الذي يعمل عليه Burp منضمًا إلى النطاق (أو حتى أن يكون يعمل بنظام ويندوز).
الحل الوحيد الموجود حاليًا الذي نعرفه لاختبار تطبيقات Kerberos باستخدام Burp هو المرور عبر Fiddler في سلسلة بروكسي، مع إعداد المصادقة وفقًا لهذه التعليمات. لكن Fiddler يعمل على ويندوز فقط، كما أن ربط البروكسيات في سلسلة يضيف تعقيدًا ويُضعف الأداء، لذا من الجيد توفر إمكانية Kerberos داخل Burp نفسه.
احصل على أحدث ملف jar لـ Berserko من تبويب Releases، أو من مجلد berserko\releases
انتقل إلى تبويب Extender في Burp، واختر Add، وتأكد من تحديد Java كـ Extension type (نوع الامتداد)، ثم وجّهه إلى ملف jar. إذا سارت الأمور على ما يرام، فسيتم إضافة تبويب Berserko إلى واجهة Burp.
توجد عناصر تحكم متعددة في تبويب Berserko داخل Burp.
خانة الاختيار Do Kerberos authentication هي مفتاح رئيسي. وطالما لم يتم تفعيلها، لن يقوم Berserko بأي شيء على الإطلاق.
زر Restore defaults يعيد Berserko إلى الإعداد الافتراضي (الذي لا يحتوي على أي تفاصيل نطاق أو بيانات اعتماد مستخدم).
زر Clear Kerberos state يمسح جميع تذاكر Kerberos وغيرها من الحالة على العميل. السبب الوحيد الذي قد تحتاج فيه لاستخدام هذا هو إذا كانت قد أُجريت تغييرات على إعداد Kerberos في جانب الخادم وأردت البدء من حالة نظيفة.
زر Write tickets to log يكتب معلومات حول تذاكر Kerberos الحالية إلى دفق سجل Berserko - وهذا قد يكون مفيدًا للتصحيح واستكشاف الأخطاء. لعرض السجلات انتقل إلى تبويب Extender في Burp، وحدد Berserko، ثم انظر إلى تبويب Output بالأسفل. قد يكون من المنطقي استخدام خيار Save to file هنا، لأن بيانات التذاكر يمكنها بسهولة ملء المخزن المؤقت للسجل في الواجهة الرسومية.
تحتوي بعض عناصر التحكم على زر مساعدة يعرض مزيدًا من المعلومات.
حدد Domain DNS Name (اسم DNS للنطاق) وKDC Host (مضيف KDC) باستخدام عناصر التحكم في هذا القسم. لا يمكن تحرير مربعات النص مباشرة؛ يجب استخدام زر 'Change' لتعديلها.
يجب أن يكون Domain DNS Name هو اسم DNS للنطاق الذي ترغب في المصادقة ضده (بدقة أكبر، هذا هو في الواقع عالم Kerberos (Realm)). يجب أن يكون شيئًا مثل mydomain.acme.local. ويجب ألا يكون اسم NETBIOS للنطاق (والذي سيكون شيئًا مثل MYDOMAIN).
يجب أن يكون KDC Host هو اسم المضيف (أو عنوان IP) لخادم KDC الخاص بـ Kerberos (مركز توزيع المفاتيح). في نطاق ويندوز، يكون KDC ببساطة وحدة تحكم النطاق.
بعد توفير Domain DNS Name، يمكنك استخدام زر Auto لمحاولة تحديد موقع KDC تلقائيًا. يقوم بذلك عن طريق إرسال استعلام DNS SRV لخدمة Kerberos. إذا كان أحد خوادم DNS لديك هو وحدة تحكم نطاق للنطاق الصحيح، فيجب أن يعمل هذا. وإلا فلن يعمل. ❗لن تعمل هذه الوظيفة في الإصدارات الحديثة من Burp، لأن مكتبات DNS المطلوبة لا تُشحن كجزء من JRE المرفقة. يمكنك تجاوز ذلك بالتشغيل باستخدام JRE كاملة كما هو موضح في أعلى هذا README.❗
عند إدخال Domain DNS Name وKDC Host، استخدم زر Test domain settings لاختبار الاتصال. إذا سارت الأمور على ما يرام، فستحصل على استجابة Successfully contacted Kerberos service.
راجع هذا الملف لمزيد من المعلومات حول الحصول على القيم الصحيحة لإعدادات النطاق هذه.
حدد Username (اسم المستخدم) وPassword (كلمة المرور) لحساب في النطاق باستخدام عناصر التحكم في هذا القسم. لا يمكن تحرير مربعات النص مباشرة؛ يجب استخدام زر 'Change' لتعديلها.
يجب أن يكون Username هو اسم المستخدم العادي فقط. يجب أن يكون شيئًا مثل bob. ويجب ألا يكون MYDOMAIN\bob أو [email protected] أو ما شابه.
بعد توفير بيانات الاعتماد، يمكنك استخدام زر Test credentials. سيحاول هذا الحصول على تذكرة منح التذاكر (Ticket-Granting Ticket) الخاصة بـ Kerberos للمستخدم المحدد. إذا نجح الأمر، ستحصل على استجابة TGT successfully acquired. إذا لم ينجح، فاعلم أن هذه محاولة مصادقة على النطاق، لذا كن حريصًا على عدم قفل حسابك.
لن يتم حفظ كلمة المرور في إعدادات Berserko للمرة القادمة ما لم تكن خانة الاختيار Save password in Burp config? محددة. ومع ذلك، سيتم حفظ جميع الإعدادات الأخرى.
تستخدم بعض التطبيقات تفويض Kerberos في جانب الخادم لإعادة توجيه هوية العميل إلى خوادم أخرى (لكن لا توجد طريقة سهلة لتحديد ما إذا كان هذا قيد الاستخدام من جانب العميل).
يدعم Berserko هذا، لكن هناك عقبة. التفويض يعمل فقط إذا كان المستخدم لديه TGT قابل للتحويل (forwardable) (تذكرة منح التذاكر). وللأسف، لا يوفر تنفيذ Java لـ Kerberos طريقة لتحديد برمجيًا أنه يجب الحصول على تذكرة قابلة للتحويل. لا يمكن فعل ذلك إلا بإضافة إدخال مناسب إلى ملف الإعداد krb5.conf.
لذا، لكي يعمل التفويض، يجب توجيه Berserko إلى ملف krb5.conf مناسب، وهناك طريقتان محتملتان هنا.
أسهل ما يمكن فعله، وهو النهج الموصى به، هو استخدام زر Create krb5.conf file. سينشئ لك ملفًا مناسبًا في الموقع الذي تختاره. يمكنك وضعه في مجلد مؤقت، أو في مجلد مشروعك، أو في أي مكان. لكن يمكن إعادة استخدام الملف نفسه إلى أجل غير مسمى، لذا قد يكون من المنطقي وضعه في مكان أكثر ديمومة. يتيح لك زر Change تحديد ملف مختلف لاستخدامه.
إذا كنت مهتمًا، فإن ملف krb5.conf الذي يتم إنشاؤه بسيط جدًا وسيحتوي على المحتوى التالي:
[libdefaults]
forwardable = true
بدلاً من ذلك، يمكنك استخدام زر Change للإشارة إلى ملف krb5.conf موجود على النظام. السبب الوحيد الذي قد يجعلك ترغب في فعل ذلك هو إذا كانت هناك إعدادات Kerberos مهمة أخرى في هذا الملف تريد أن يلتقطها Berserko (وهو ما يجب أن يعمل جيدًا من الناحية النظرية، لكن لم يتم اختباره عمليًا). لاحظ أن الموقع الافتراضي لهذا الملف على لينكس هو /etc/krb5.conf - أما أنظمة التشغيل الأخرى فمن غير المرجح أن تحتوي على واحد. إذا كنت تشير إلى ملف krb5.conf موجود، فتأكد من تحريره لتفعيل التحويل (Forwarding) - أضف forwardable = true إلى قسم [libdefaults] (أو لكل عالم Realm على حدة). لكن كن حذرًا. مطالبة Berserko بإنشاء الملف لك ستكون الخيار الأفضل في 99% من الحالات.