بفضل السرعة: يسجل HD Moore رقمًا قياسيًا جديدًا في السرعة الأرضية مع استغلال ثغرة Debian/Ubuntu OpenSSL

  • Nov 27, 2023

لذا، بالنسبة لأولئك الذين لم يسمعوا، قام أحد حزم دبيان بتعديل المصدر المستخدم لـ OpenSSL على الأنظمة المستندة إلى دبيان (دبيان و عائلة Ubuntu بأكملها) لإزالة البذرة المستخدمة في PRNG (مولد الأرقام العشوائية الزائفة) المستخدم عند إنشاء SSL مفاتيح. حسنًا، سجل HD Moore رقمًا قياسيًا جديدًا في سرعة استغلاله مع إطلاق ما يسميه Debian-OpenSSL Toys.

HD مور ميتاسبلويت
لذا، بالنسبة لأولئك الذين لم يسمعوا، قام أحد حزم دبيان بتعديل المصدر المستخدم لـ OpenSSL على الأنظمة المستندة إلى دبيان (دبيان و عائلة Ubuntu بأكملها) لإزالة البذرة المستخدمة في PRNG (مولد الأرقام العشوائية الزائفة) المستخدم عند إنشاء SSL مفاتيح. حسنًا، سجل HD Moore رقمًا قياسيًا جديدًا في السرعة لاستغلاله مع إصدار ما يسميه ألعاب دبيان-OpenSSL.

يصف HD الخطأ الموجود على الصفحة، وقد نقلت شرحه أدناه:

في 13 مايو 2008، تم إطلاق مشروع دبيان أعلن أن لوتشيانو بيلو وجد ثغرة أمنية مثيرة للاهتمام في حزمة OpenSSL التي كانوا يوزعونها. كان الخطأ المعني هو إزالة السطر التالي من التعليمات البرمجية من md_rand.c

MD_Update(&m, buf, j); [.. ] MD_Update(&m, buf, j); /* purify complains */
وكانت هذه الخطوط إزالة لأنهم تسببوا في فالجريند وتنقية الأدوات لإنتاج تحذيرات حول استخدام البيانات غير المهيأة في أي تعليمات برمجية مرتبطة بـ OpenSSL. يمكنك رؤية أحد هذه التقارير لفريق OpenSSL هنا. إن إزالة هذا الرمز له تأثير جانبي يتمثل في تعطيل عملية البذر لـ OpenSSL PRNG. بدلاً من خلط البيانات العشوائية للبذرة الأولية، كانت القيمة "العشوائية" الوحيدة التي تم استخدامها هي معرف العملية الحالية. على نظام Linux، الحد الأقصى الافتراضي لمعرف العملية هو 32,768، مما يؤدي إلى استخدام عدد صغير جدًا من القيم الأولية لجميع عمليات PRNG.

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

التأثير على هذا ضخم بشكل لا يصدق، كما يذكر HD:

قد تتأثر جميع مفاتيح SSL وSSH التي تم إنشاؤها على الأنظمة المستندة إلى Debian (Ubuntu وKubuntu وما إلى ذلك) في الفترة ما بين سبتمبر 2006 و13 مايو 2008. في حالة مفاتيح SSL، ستحتاج جميع الشهادات التي تم إنشاؤها إلى إعادة إنشائها وإرسالها إلى المرجع المصدق للتوقيع. يجب إعادة إنشاء أي مفاتيح مرجع مصدق تم إنشاؤها على نظام يستند إلى دبيان وإبطالها. يحتاج جميع مسؤولي النظام الذين يسمحون للمستخدمين بالوصول إلى خوادمهم باستخدام مصادقة SSH والمفتاح العام إلى تدقيق هذه المفاتيح لمعرفة ما إذا كان أي منها قد تم إنشاؤه على نظام ضعيف. أي أدوات تعتمد على PRNG الخاص بـ OpenSSL لتأمين البيانات التي تنقلها قد تكون عرضة للهجوم دون الاتصال بالإنترنت. أي خادم SSH يستخدم مفتاح مضيف تم إنشاؤه بواسطة نظام معيب يخضع لفك تشفير حركة المرور وسيكون هجوم الوسيط غير مرئي للمستخدمين.

هذا الخلل قبيح لأنه حتى الأنظمة التي لا تستخدم برنامج دبيان تحتاج إلى التدقيق في حالة استخدام أي مفتاح تم إنشاؤه على نظام دبيان.

على ألعاب HD، انقر فوق قراءة المزيد أدناه للمتابعة...

تم الحصول على هذا مباشرة من صفحة HD لتوفير الوقت ولأنني بالتأكيد لست من محبي العملات المشفرة:

الألعاب

توضح القوائم السوداء التي نشرتها Debian وUbuntu مدى صغر مساحة المفتاح. عند إنشاء مفتاح OpenSSH جديد، لا يوجد سوى 32767 نتيجة محتملة لبنية معينة وحجم المفتاح ونوع المفتاح. والسبب هو أن البيانات "العشوائية" الوحيدة التي يستخدمها PRNG هي معرف العملية. من أجل إنشاء المفاتيح الفعلية التي تطابق هذه القوائم السوداء، نحتاج إلى نظام يحتوي على الثنائيات الصحيحة للنظام الأساسي المستهدف وطريقة لإنشاء المفاتيح بمعرف عملية محدد. لحل مشكلة معرف العملية، كتبت أ مكتبة مشتركة التي يمكن تحميلها مسبقًا والتي تُرجع قيمة محددة من قبل المستخدم لاستدعاء getpid() libc.

وكانت الخطوة التالية هي بناء بيئة chroot التي تحتوي على الثنائيات والمكتبات الفعلية من نظام ضعيف. لقد التقطت لقطة من نظام Ubuntu على الشبكة المحلية. يمكنك العثور على بيئة chroot بأكملها هنا من أجل إنشاء مفتاح OpenSSH بنوع محدد وعدد البتات ومعرف العملية، قمت بكتابة برنامج نصي shell يمكن تنفيذه من داخل بيئة chroot. يمكنك العثور على برنامج Shell النصي هذا هنا. يتم وضع هذا البرنامج النصي في الدليل الجذر لنظام ملفات Ubuntu المستخرج. من أجل إنشاء مفتاح، يتم استدعاء هذا البرنامج النصي باستخدام سطر الأوامر التالي:

# chroot ubunturoot /dokeygen.sh 1 -t dsa -b 1024 -f /tmp/dsa_1024_1
سيؤدي هذا إلى إنشاء مفتاح OpenSSH 1024 بت DSA جديد بقيمة getpid() التي تُرجع دائمًا الرقم "1". لدينا الآن أول مفتاح SSH تم إنشاؤه مسبقًا. إذا واصلنا هذه العملية لجميع معرفات PID حتى 32767 ثم كررناها لمفاتيح RSA 2048 بت، فقد قمنا بتغطية نطاقات المفاتيح الصالحة لأنظمة x86 التي تقوم بتشغيل الإصدار المعيب من مكتبة OpenSSL. باستخدام مجموعة المفاتيح هذه، يمكننا اختراق أي حساب مستخدم يحتوي على مفتاح ضعيف مدرج في ملف Author_keysملف. تعد مجموعة المفاتيح هذه مفيدة أيضًا لفك تشفير جلسة SSH التي تم التقاطها مسبقًا، إذا كان خادم SSH يستخدم مفتاح مضيف ضعيفًا. يتم توفير روابط لمجموعات المفاتيح التي تم إنشاؤها مسبقًا لمفاتيح DSA 1024 بت ومفاتيح RSA 2048 بت (x86) في قسم التنزيلات أدناه.

الشيء المثير للاهتمام في هذه المفاتيح هو كيفية ربطها بمعرف العملية. نظرًا لأن معظم الأنظمة المستندة إلى Debian تستخدم قيم معرف العملية التسلسلية (تتزايد من تمهيد النظام والالتفاف مرة أخرى حول حسب الحاجة)، يمكن أن يشير معرف العملية الخاص بمفتاح معين أيضًا إلى مدى سرعة تشغيل هذا المفتاح من نظام التشغيل ولدت. إذا نظرنا إلى عكس ذلك، يمكننا تحديد المفاتيح التي يجب استخدامها أثناء القوة الغاشمة بناءً على الهدف الذي نهاجمه. عند محاولة تخمين مفتاح تم إنشاؤه في وقت التمهيد (مثل مفتاح مضيف SSH)، فإن تلك المفاتيح التي تحتوي على قيم PID أقل من 200 ستكون أفضل الخيارات للقوة الغاشمة. عند مهاجمة مفتاح أنشأه المستخدم، يمكننا أن نفترض أن معظم مفاتيح المستخدم الصالحة تم إنشاؤها بمعرف عملية أكبر من 500 وأقل من 10000. يمكن أن يؤدي هذا التحسين إلى تسريع هجوم القوة الغاشمة بشكل كبير على حساب مستخدم بعيد عبر بروتوكول SSH.

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

/ Algorithm / Bits / Fingerprint-ProcessID and / Algorithm / Bits / Fingerprint-ProcessID.pub
للحصول على ملف المفتاح الخاص لأي مفتاح عام، يجب عليك معرفة بصمة المفتاح. أسهل طريقة للحصول على هذه البصمة هي من خلال الأمر التالي:
$ ssh-keygen -l -f targetkey.pub 2048 c6:7b: 14:fa: ae: b6:89:e6:67:17:ee: 04:17:b0:ec: 4e targetkey.pub
إذا نظرنا إلى المفتاح العام في أحد المحررين، فيمكننا أيضًا استنتاج أن نوع المفتاح هو RSA. من أجل تحديد موقع المفتاح الخاص لهذا المفتاح العام، نحتاج إلى استخراج ملفات البيانات، والبحث عن ملف اسمه:
 rsa/2048/c67b14faaeb689e66717ee0417b0ec4e-26670
في المثال أعلاه، يتم تمثيل بصمة الإصبع بالنظام الست عشري مع إزالة النقطتين، ويُشار إلى معرف العملية بالرقم "26670". إذا أردنا المصادقة على نظام ضعيف يستخدم هذا المفتاح العام للمصادقة، فسنقوم بتشغيل الأمر التالي:
$ ssh -i rsa/2048/c67b14faaeb689e66717ee0417b0ec4e-26670 root@targetmachine

أدوات

- مكتبة GetPID Faker المشتركة (4.0K) - نظام ملفات جذر أوبونتو (4.9 ميجا) - البرنامج النصي لإنشاء المفاتيح (8.0 كيلو بايت)

مفاتيح

- مفاتيح SSH 1024 بت DSA X86 (30.0M) - مفاتيح SSH 2048 بت RSA X86 (48.0M) - مفاتيح SSH 4096 بت RSA X86 (94.0M)

أسئلة مكررة

س: كم من الوقت استغرق إنشاء هذه المفاتيح؟ أ: حوالي ساعتين لمفاتيح DSA 1024 بت وRSA 2048 بت لـ x86. لقد استخدمت 31 نواة Xeon بسرعة 2.33 جيجا هرتز.

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

س: ما المدة التي يستغرقها اختراق حساب مستخدم SSH باستخدام هذه المفاتيح؟ أ: يعتمد هذا على سرعة الشبكة وتكوين خادم SSH. من المفترض أن يكون من الممكن تجربة جميع المفاتيح البالغ عددها 32.767 مفتاحًا لكل من DSA-1024 وRSA-2048 في غضون ساعتين، ولكن كن حذرًا من البرامج النصية المضادة للقوة الغاشمة على الخادم الهدف.

س: أستخدم مفاتيح RSA 16384 بت، هل يمكن كسرها؟ أ: نعم، إنها مجرد مسألة وقت وقوة المعالجة. بالنسبة للبشر العاديين، فإن مفاتيح 4096 بت هي بالفعل على الجانب المصاب بجنون العظمة. يجب أن تكون جميع مفاتيح 4096 بت الممكنة متاحة خلال اليوم التالي أو نحو ذلك. من الممكن إنشاء جميع مجموعات مفاتيح 8192 بت و16384 بت، ولكن من المحتمل أن يكون لدي استخدامات أفضل لمعالجاتي :-)

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

-نيت.