Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Berserko — إضافة Burp Suite لإجراء مصادقة Kerberos | Kitploit
أدوات/GitHubGitHub/nccgroup/berserko
بروكسيات الويب والاعتراضأمن الويباختبار الاختراقالمصادقة
GitHubnccgroup/berserko

Berserko

إضافة Burp Suite لإجراء مصادقة Kerberos

عرض المستودع
105174منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Berserko - مصادقة Kerberos لـ Burp Suite

تم إصداره كمصدر مفتوح بواسطة 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 نفسه.

متطلبات النظام

  • Burp Suite
  • تم اختباره على ويندوز ولينكس (Kali)

التثبيت

احصل على أحدث ملف jar لـ Berserko من تبويب Releases، أو من مجلد berserko\releases

انتقل إلى تبويب Extender في Burp، واختر Add، وتأكد من تحديد Java كـ Extension type (نوع الامتداد)، ثم وجّهه إلى ملف jar. إذا سارت الأمور على ما يرام، فسيتم إضافة تبويب Berserko إلى واجهة Burp.

البدء السريع

  • انتقل إلى تبويب Berserko وحدد خانة الاختيار Do Kerberos authentication.
  • انقر على زر Change في لوحة Domain Settings وقدّم اسم DNS للنطاق (وليس اسم NETBIOS) واسم المضيف (أو عنوان IP) لخادم KDC (وحدة تحكم النطاق).
  • اضغط على زر Test domain settings وتأكد من حصولك على استجابة Successfully contacted Kerberos service.
  • انقر على زر Change في لوحة Domain Credentials وقدّم اسم مستخدم وكلمة مرور لحساب في النطاق (اسم المستخدم العادي فقط، وليس MYDOMAIN\user أو [email protected] أو ما شابه ذلك).
  • فعّل تفويض Kerberos بالسماح لـ Berserko بإنشاء ملف krb5.conf لك. انقر على زر Create krb5.conf file في لوحة Delegation واختر موقعًا مناسبًا يمكن إنشاء الملف فيه. أي مكان سيفي بالغرض. لا ترغب في الكتابة فوق أي ملف krb5.conf موجود على مستوى النظام. أجب بنعم عندما يسألك Berserko إذا كنت تريد تعيين هذا الملف كملف krb5.conf. إنه لأمر مزعج أن نضطر للقيام بذلك (إنشاء ملف) لكنه ليس خطأ Berserko وليس خطأ Burp - إنه قيد في واجهات برمجة تطبيقات Kerberos الخاصة بـ Java. لمزيد من المعلومات راجع الملاحظات حول التفويض (Delegation) أدناه.
  • اضغط على زر Test credentials وتأكد من حصولك على استجابة "TGT successfully acquired". ونأمل أيضًا أن تظهر عبارة "TGT is forwardable so delegation should work".
  • يجب أن تكون مصادقة Kerberos الآن جاهزة للعمل مع المضيفات في النطاق المحدد.

الإعدادات

توجد عناصر تحكم متعددة في تبويب 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? محددة. ومع ذلك، سيتم حفظ جميع الإعدادات الأخرى.

التفويض (Delegation)

تستخدم بعض التطبيقات تفويض Kerberos في جانب الخادم لإعادة توجيه هوية العميل إلى خوادم أخرى (لكن لا توجد طريقة سهلة لتحديد ما إذا كان هذا قيد الاستخدام من جانب العميل).

يدعم Berserko هذا، لكن هناك عقبة. التفويض يعمل فقط إذا كان المستخدم لديه TGT قابل للتحويل (forwardable) (تذكرة منح التذاكر). وللأسف، لا يوفر تنفيذ Java لـ Kerberos طريقة لتحديد برمجيًا أنه يجب الحصول على تذكرة قابلة للتحويل. لا يمكن فعل ذلك إلا بإضافة إدخال مناسب إلى ملف الإعداد krb5.conf.

لذا، لكي يعمل التفويض، يجب توجيه Berserko إلى ملف krb5.conf مناسب، وهناك طريقتان محتملتان هنا.

أسهل ما يمكن فعله، وهو النهج الموصى به، هو استخدام زر Create krb5.conf file. سينشئ لك ملفًا مناسبًا في الموقع الذي تختاره. يمكنك وضعه في مجلد مؤقت، أو في مجلد مشروعك، أو في أي مكان. لكن يمكن إعادة استخدام الملف نفسه إلى أجل غير مسمى، لذا قد يكون من المنطقي وضعه في مكان أكثر ديمومة. يتيح لك زر Change تحديد ملف مختلف لاستخدامه.

إذا كنت مهتمًا، فإن ملف krb5.conf الذي يتم إنشاؤه بسيط جدًا وسيحتوي على المحتوى التالي:

root@kitploit:~
[libdefaults]
    forwardable = true

بدلاً من ذلك، يمكنك استخدام زر Change للإشارة إلى ملف krb5.conf موجود على النظام. السبب الوحيد الذي قد يجعلك ترغب في فعل ذلك هو إذا كانت هناك إعدادات Kerberos مهمة أخرى في هذا الملف تريد أن يلتقطها Berserko (وهو ما يجب أن يعمل جيدًا من الناحية النظرية، لكن لم يتم اختباره عمليًا). لاحظ أن الموقع الافتراضي لهذا الملف على لينكس هو /etc/krb5.conf - أما أنظمة التشغيل الأخرى فمن غير المرجح أن تحتوي على واحد. إذا كنت تشير إلى ملف krb5.conf موجود، فتأكد من تحريره لتفعيل التحويل (Forwarding) - أضف forwardable = true إلى قسم [libdefaults] (أو لكل عالم Realm على حدة). لكن كن حذرًا. مطالبة Berserko بإنشاء الملف لك ستكون الخيار الأفضل في 99% من الحالات.

إذا كنت تريد معرفة ما إذا كان إعداد التفويض ناجحًا، استخدم زر Check current config. سيخبرك ما إذا تم العثور على ملف krb5.conf، وما إذا كان إعداد forwardable صحيحًا. لاحظ أيضًا أن Berserko سيخبرك ما إذا نجح في الحصول على TGT قابل للتحويل عند استخدام زر Test credentials.

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

استراتيجية المصادقة

تتحكم الإعدادات في هذا القسم في ما إذا كان Berserko يحاول مصادقة Kerberos 'بشكل تفاعلي' (أي انتظار الحصول على استجابة 401 من الخادم ثم إعادة إرسال الطلب مع إضافة ترويسة مصادقة Kerberos إليه) أم 'بشكل استباقي' (أي إضافة ترويسة مصادقة Kerberos إلى الطلب الصادر).

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

خيار Proactive Kerberos authentication, only after initial 401 received هو نهج هجين يجمع بين هاتين الطريقتين، حيث سيقوم Berserko بالمصادقة بشكل تفاعلي عند أول طلب إلى مضيف، لكنه سيكون استباقيًا بعد ذلك.

النطاق (Scope)

في هذا القسم، يمكنك تحديد المضيفات التي تعتبر ضمن نطاق مصادقة Kerberos.

بشكل افتراضي، ستكون خانة All hosts in this Kerberos domain in scope for Kerberos محددة. هذا يعني أن Berserko سيحاول مصادقة Kerberos فقط مع خوادم الويب التي ينتهي اسم مضيفها باسم DNS للنطاق. في كثير من الحالات سيكون هذا كافيًا. ومع ذلك، من الممكن وجود تطبيقات ويب مفعّل لها Kerberos باسم مضيف لا يأخذ هذا الشكل (بافتراض أن المسؤول قد أعد اسم خدمة رئيسي مناسب (Service Principal Name)). لمراعاة ذلك، يمكنك إضافة مضيفات إضافية لتعتبر ضمن النطاق باستخدام قائمة الخانات على اليمين. لاحظ أنه يمكن استخدام أحرف البدل (Wildcards) ( * يطابق صفرًا أو أكثر من الأحرف، ? يطابق أي حرف باستثناء النقطة).

بدلاً من ذلك، يمكنك تحديد خانة All hosts in scope for Kerberos authentication. من الواضح أن لهذا ميزة عدم الحاجة إلى عناء تحديد النطاق يدويًا. العيب المحتمل لهذا الإعداد هو أنه قد يؤدي إلى قيام Berserko بإرسال طلبات Kerberos إلى KDC للحصول على تذاكر خدمة لمضيفات ليست في النطاق. قد يتسبب هذا في مشاكل في الأداء، وقد يسبب مشاكل في الخصوصية (إذا كنت لا تريد تسريب هذه المعلومات إلى KDC). من المرجح أن تكون هذه مشكلة خاصة مع استراتيجية Proactive Kerberos authentication، وفي هذه الحالة سيحاول Berserko إضافة ترويسة مصادقة Kerberos إلى كل طلب يمر عبر Burp. هذا المزيج من الخيارات غير موصى به، وسيحذرك Berserko إذا تم تحديده (لكنه لن يمنعه فعليًا).

إذا لم يتم تحديد أي من All hosts in this Kerberos domain in scope for Kerberos ولا All hosts in scope for Kerberos authentication، فإن المضيفات الوحيدة ضمن النطاق ستكون تلك المضافة إلى قائمة الخانات.

خيار Plain hostnames considered part of domain، إذا تم تحديده، يعني أن 'أسماء المضيفات البسيطة' (أي أسماء المضيفات التي تتكون من مكوّن واحد فقط) ستعتبر جزءًا من النطاق (وبالتالي ستكون تلقائيًا ضمن النطاق إذا تم تحديد All hosts in this Kerberos domain in scope for Kerberos). السبب الرئيسي الذي قد يجعلك ترغب في تعطيل هذا هو إذا كان جهازك منضمًا إلى نطاق مختلف عن النطاق الذي تتم المصادقة ضده باستخدام Berserko (وفي هذه الحالة، تشير أسماء المضيفات البسيطة على الأرجح إلى مضيفات في النطاق الذي أنت منضم إليه).

إذا تم تحديده، فإن خيار Do not perform Kerberos authentication to servers which support NTLM سيوجه Berserko إلى عدم محاولة مصادقة Kerberos ضد المضيفات التي تدعم NTLM بالإضافة إلى Kerberos (أي المضيفات التي تُرجع ترويستي WWW-Authenticate: NTLM وWWW-Authenticate: Negotiate معًا).

التسجيل (Logging)

يمكن ضبط Alert Level (مستوى التنبيهات) وLogging Level (مستوى التسجيل) هنا، إما NONE أو NORMAL أو VERBOSE.

Alert Level يتحكم في كمية المعلومات المرسلة إلى تبويب Alerts في Burp.

Logging Level يتحكم في كمية المعلومات المرسلة إلى المخرجات القياسية لـ Berserko (يمكن عرضها في تبويب Extender). لاحظ أن رفع Logging Level إلى VERBOSE سيؤدي إلى توفير مزيد من المعلومات حول أي أخطاء أو استثناءات قد تحدث.

علاقات الثقة بين النطاقات (Domain Trusts)

إذا كانت علاقات الثقة بين نطاقات Kerberos مستخدمة في بيئتك، يمكنك العثور على بعض الإرشادات هنا.

إعادة توجيه المنافذ / Kerberos عبر TCP

بشكل افتراضي، يقوم Berserko بجميع تفاعلات Kerberos مع KDC عبر UDP (المنفذ 88). إذا كنت تريد استخدام TCP بدلاً من ذلك، فهذا ممكن. السبب الأكثر شيوعًا للقيام بذلك هو على الأرجح عند استخدام إعادة توجيه منفذ SSH لمنفذ TCP 88. فقط أضف udp_preference_limit = 1 إلى ملف krb5.conf الخاص بك، بحيث يبدو هكذا:

root@kitploit:~
[libdefaults]
    forwardable = true
    udp_preference_limit = 1
	

الإعداد المتقدم

من الممكن ضبط SPN الذي سيُستخدم لمضيف معين، عبر تضمين قسم [berserko_spn_hints] في ملف krb5.conf (انظر أعلاه). الصيغة موضحة أدناه.

root@kitploit:~
[berserko_spn_hints]
    [email protected]
	server2.bar.org=app.domain2.local
	

الخادم الهدف على الجانب الأيسر من علامة التساوي، وSPN المطلوب استخدامه على اليمين. يمكن اختياريًا تحديد عالم (Realm) للـ SPN (إذا لم يتم تحديده، سيحاول Berserko تحديد العالم الصحيح كالمعتاد). لا تُدرج جزء HTTP/ من الـ SPN هنا.

الأخطاء (Bugs)

  • إذا لم يتم عرض واجهة تبويب Berserko بشكل صحيح، جرّب استخدام سمة Metal في Burp.

القيود

  • لن يتوافق Berserko بشكل جيد مع ميزة Platform Authentication الخاصة بـ Burp. لا بأس في تفعيل Platform Authentication، لكن لا تقم بإعدادها لأي من المضيفات التي تتطلب مصادقة Kerberos (بدلاً من NTLM).
  • لا يمكن لـ Berserko استخدام أي تعيينات مضيف مخصصة معرّفة عبر ميزة Hostname Resolution في Burp عند تحليل اسم مضيف KDC. إذا كانت هذه مشكلة، فما عليك سوى تحديد عنوان IP الخاص بـ KDC في خانة KDC host. لاحظ أن هذه ليست مشكلة للطلبات الفعلية المرسلة من Burp، فقط لاتصالات Berserko الخاصة مع KDC.

خطط مستقبلية (محتملة)

  • استخدام تذاكر Kerberos المكتسبة بالفعل على الأجهزة المنضمة إلى النطاق (لست متأكدًا ما إذا كان هذا ممكنًا أم لا)
  • إمكانية المصادقة على نطاقات متعددة في نفس الوقت (هذا يجب أن يعمل بشكل جيد)
  • تحكم أفضل في التذاكر القابلة للتحويل والتفويض

❗ ملاحظة مهمة ❗

Berserko غير متوافق مع Burp v2 قبل الإصدار v2020.5.1. لا توجد مشاكل مع Burp v1.

سبب ذلك هو أن إصدار OpenJDK الذي يتم شحنه مع إصدارات Burp 2 الأقدم لا يتضمن بعض وظائف Kerberos التي يستخدمها Berserko. سيؤدي هذا إلى ظهور خطأ java.lang.ClassNotFoundException: com.sun.security.jgss.ExtendedGSSContext عند محاولة استخدام Berserko.

الحل البديل الواضح هو الترقية إلى v2020.5.1 أو أحدث. بدلاً من ذلك، يجب أن يعمل Berserko مع أي إصدار من Burp v2 إذا قمت بالتشغيل باستخدام نسخة كاملة من بيئة تشغيل Java (أي وليس النسخة المرفقة مع Burp).

بافتراض أن لديك java في مسار الأوامر (PATH):

root@kitploit:~
java -jar burpsuite_pro.jar

راجع توثيق Burp حول التشغيل من سطر الأوامر.

تنزيل الأداة