النسخة الروسية من هذه المقالة.مقدمة
تعمل البرامج الثابتة للوحات الأم الحديثة بالكمبيوتر وفقًا لمواصفات
UEFI ، وهي تدعم تقنية المصادقة الخاصة بالبرامج التي تم تنزيلها وبرامج تشغيل التمهيد الآمن منذ عام 2013 ، والتي تم تصميمها لحماية الكمبيوتر من مجموعات التمهيد. يقوم Secure Boot بحظر تنفيذ تعليمات برمجية غير موقعة أو غير موثوق بها: ملفات .efi للبرامج وأجهزة تحميل التمهيد لأنظمة التشغيل والبرامج الثابتة للمعدات الإضافية (بطاقات الفيديو OPROM ومحولات الشبكة).
يمكن تعطيل التمهيد الآمن على أي لوحة أم في المتجر ، ولكن الشرط الفعلي لتغيير إعداداته هو وجود مادي على الكمبيوتر. ستحتاج إلى الدخول في إعدادات UEFI عند بدء تشغيل الكمبيوتر ، وعندها فقط سيكون من الممكن تعطيل التكنولوجيا أو تغيير إعداداتها.
تأتي معظم اللوحات الأم فقط مع مفاتيح Microsoft كموثوق بها ، ولهذا السبب يُجبر مُنشئو برنامج التمهيد على الاتصال بـ Microsoft للحصول على توقيع محمل الإقلاع ، والخضوع لإجراء تدقيق ، ويبررون الحاجة إلى توقيع عالمي لملفهم إذا كانوا يريدون تشغيل محرك الأقراص أو محرك أقراص فلاش دون داعٍ تعطيل Secure Boot أو إضافة مفتاحهم يدويًا على كل كمبيوتر.
يتعين على Microsoft توقيع محمل الإقلاع لمطوري توزيعات Linux وبرامج Hypervisors وأقراص تمهيد مكافحة الفيروسات وبرامج استرداد الكمبيوتر.
كنت أرغب في إنشاء محرك أقراص فلاش USB قابل للتشغيل مع العديد من برامج استرداد الكمبيوتر التي يمكن تشغيلها دون تعطيل التمهيد الآمن. دعونا نرى كيف يمكن تنفيذ ذلك.
وقعت تحميل بووتلوأدر
لذلك ، للتمهيد Linux مع تمكين Secure Boot ، فإنك تحتاج إلى أداة تحميل bootloaded. حظرت Microsoft توقيع البرامج المرخصة بموجب GPLv3 نظرًا لحظر
tivoization بموجب قواعد الترخيص ، لذلك
لن تتمكن GRUB من التوقيع .
ردا على ذلك ، أصدرت مؤسسة Linux
PreLoader ، وكتب Matthew Garrett
أداة تحميل محمولة صغيرة تقوم بالتحقق من توقيع أو تنزيل ملف التنزيل التالي. لا تستخدم PreLoader و shim شهادات
UEFI db ، لكن تحتوي على قاعدة بيانات للتجزئة المسموح بها (PreLoader) أو الشهادات (shim) داخل نفسها.
يسمح لك كلا البرنامجين ، بالإضافة إلى تنزيل الملفات الموثوقة تلقائيًا ، بتنزيل أي ملفات غير موثوقة مسبقًا في وضع التشغيل الآمن ، ولكن يتطلب وجود المستخدم الفعلي: في البداية ، تحتاج إلى تحديد ملف الشهادة أو التجزئة المضافة في الواجهة الرسومية ، وبعد ذلك يتم إدخال البيانات في متغير NVRAM خاص اللوحة الأم غير متوفرة للتغيير من نظام التشغيل المحمّل. تصبح الملفات موثوقة فقط لأولئك الذين تم تحميلهم مسبقًا ، وليس من أجل التمهيد الآمن بشكل عام ، ولا يمكنك تشغيلها بدون PreLoader / shim على أي حال.
الإجراءات المطلوبة عند بدء تشغيل برنامج غير موثوق به لأول مرة من خلال shim.تستخدم جميع توزيعات Linux الحالية الشائعة shim بسبب دعم الشهادة ، مما يجعل من السهل تحديث أداة تحميل التشغيل التالية دون الحاجة إلى تفاعل المستخدم. عادة ، يتم استخدام shim لتشغيل GRUB2 ، محمل الإقلاع الأكثر شعبية على Linux.
GRUB2
لمنع المهاجمين من ممارسة الأعمال التجارية بهدوء بمساعدة أداة تحميل موقع عليها من بعض أدوات التوزيع ، قام Red Hat بتصحيح GRUB2 لحظر الوظائف "الخطيرة" عندما تم تمكين Secure Boot: تم تمكين insmod / rmmod ، appleloader ، linux (حل محله نظام التشغيل linuxefi) ، التشغيل المتعدد ، xnu ، memrw ، iorw. تم استكمال وحدة تحميل السلسلة ، التي تقوم بتحميل ملفات .efi التعسفية ، بجهاز تحميل .efi (PE) الخاص بها ، دون استخدام أوامر UEFI LoadImage / StartImage ، بالإضافة إلى رمز التحقق من صحة الملفات التي تم تنزيلها عبر shim ، بحيث تتمكن من تنزيل الملفات الموثوقة من أجل shim من حيث UEFI. لماذا فعلوا ذلك غير واضح؟ يتيح لك UEFI إعادة تعريف (ربط) وظيفة التحقق من الصور التي تم تنزيلها ، وهذه هي الطريقة التي يعمل بها PreLoader ، و shim نفسه لديه
مثل هذه الوظيفة ، لكن يتم تعطيله بشكل افتراضي.
بطريقة أو بأخرى ، ستفشل باستخدام GRUB موقعة من بعض توزيعات Linux. هناك طريقتان لإنشاء محرك أقراص فلاش USB عالمي قابل للتمهيد لا يتطلب إضافة مفاتيح كل ملف تم تنزيله إلى الملفات الموثوق بها:
- استخدام GRUB المعدلة لتنزيل ملفات EFI من تلقاء نفسها ، دون التحقق من التوقيع الرقمي ، ودون حظر الوحدات النمطية ؛
- باستخدام أداة التحميل المسبق الخاصة بك (الثانية) التي تتجاوز وظائف التحقق من التوقيع الرقمي لـ UEFI (EFI_SECURITY_ARCH_PROTOCOL.FileAuthenticationState ، EFI_SECURITY2_ARCH_PROTOCOL.File مصادقة)
الخيار الثاني هو الأفضل - ستتمكن البرامج غير الموثوق بها التي تم تنزيلها أيضًا من تنزيل البرامج غير الموثوق بها (على سبيل المثال ، يمكنك تنزيل الملفات من خلال UEFI Shell) ، وفي الإصدار الأول ، فقط GRUB نفسه يمكنه تنزيل كل شيء.
نقوم بتعديل PreLoader ،
ونزيل الكود الإضافي
منه ،
ونسمح بتشغيل أي ملفات.
إجمالي ، بنية محرك أقراص فلاش كما يلي:
______ ______ ______ ╱│ │ ╱│ │ ╱│ │ /_│ │ → /_│ │ → /_│ │ │ │ → │ │ → │ │ │ EFI │ → │ EFI │ → │ EFI │ │_______│ │_______│ │_______│ BOOTX64.efi grubx64.efi grubx64_real.efi (shim) (FileAuthentication (GRUB2) override) ↓↓↓ ↑ ↑ ______ ↑ ╱│ │ ║ /_│ │ ║ │ │ ═══════════╝ │ EFI │ │_______│ MokManager.efi (Key enrolling tool)
لذلك كان هناك
قرص سوبر UEFIinSecureBoot .
Super UEFIinSecureBoot Disk - صورة للقرص مع محمل الإقلاع GRUB2 ، المصممة لتشغيل برامج efi غير الموقعة وأنظمة التشغيل في وضع UEFI Secure Boot.
يمكن استخدام القرص كأساس لإنشاء محرك أقراص USB مزودًا بأدوات مساعدة لاسترداد الكمبيوتر ، ولإطلاق توزيعات Linux مختلفة و WinPE ، تمهيد من الشبكة ، دون تعطيل Secure Boot في إعدادات اللوحة الأم ، والتي يمكن أن تكون مريحة عند صيانة أجهزة كمبيوتر الأشخاص الآخرين أو الشركات أجهزة الكمبيوتر المحمولة ، على سبيل المثال ، مع تعيين كلمة مرور لتغيير إعدادات UEFI.
تتكون الصورة من ثلاثة مكونات: أداة تحميل محمولة من Fedora (موقعة بمفتاح Microsoft مثبت مسبقًا على الغالبية العظمى من اللوحات الأم وأجهزة الكمبيوتر المحمولة) ، ومعدّل تحميل مسبق لبرنامج Linux Foundation PreLoader (لتعطيل التحقق من التوقيع عند تحميل ملفات .efi) ، ومحمّل تحميل GRUB2 معدّل.
أثناء التمهيد الأول للقرص الموجود على جهاز كمبيوتر مع Secure Boot ، تحتاج إلى تحديد شهادة من خلال قائمة MokManager (يبدأ تشغيله تلقائيًا) ، وبعد ذلك سيعمل محمل الإقلاع كما لو كان Secure Boot مطفأ: يقوم GRUB بتحميل أي ملف .efi غير موقّع أو Linux kernel ، قم بتنزيل برامج EFI يمكن تشغيل برامج وبرامج تشغيل أخرى بتوقيع مفقود أو غير موثوق به.
لإثبات قابلية التشغيل ، تحتوي الصورة على قرص Super Grub (برامج نصية للبحث عن أنظمة التشغيل المثبتة وتحميلها ، حتى في حالة تلف محمل الإقلاع الخاص بهم) ، GRUB Live ISO Multiboot (البرامج النصية لنظام التشغيل Linux LiveCD المريح مباشرةً من ISO ، دون التفريغ الأولي والمعالجة) ، One File Linux (kernel و initrd في ملف واحد ، لاستعادة النظام) ، والعديد من أدوات UEFI المساعدة.
محرك الأقراص متوافق مع UEFI بدون التمهيد الآمن ، وكذلك أجهزة الكمبيوتر الأقدم مع BIOS.
وقعت التنزيل
كنت أتساءل ما إذا كان من الممكن للالتفاف بطريقة أو بأخرى على الحاجة إلى إضافة مفتاح عن طريق shim في البداية. ربما هناك بعض التنزيلات الموقعة التي تسمح لك بعمل أكثر مما توقعه المؤلفون؟
كما اتضح - هناك مثل هذه رافعات. يتم استخدام واحد منها في
Kaspersky Rescue Disk 18 - قرص تمهيد مع برنامج مكافحة فيروسات. يسمح لك GRUB من القرص بتحميل الوحدات (أمر insmod) ، بينما تسمح لك الوحدات في GRUB بتحميل التعليمات البرمجية القابلة للتنفيذ العادية. القرص قبل محمل هو الأصلي.
بالطبع ، لمجرد أن GRUB من القرص لا يقوم بتحميل كود غير موثوق به. من الضروري تعديل وحدة تحميل سلسلة بحيث لا تستخدم GRUB وظائف UEFI LoadImage / StartImage ، ولكن بشكل مستقل يتم تحميل ملف .efi في الذاكرة ، ويقوم بإجراء النقل ، ويجد نقطة الإدخال ويتبعه. لحسن الحظ ، توجد جميع
الكودات الضرورية تقريبًا في مستودع
GRUB مع دعم Red Hat Secure Boot ، المشكلة الوحيدة: لا يوجد كود لتحليل رأس
PE ، يوزع الرأس ويعيد shim ، استجابةً لاستدعاء وظيفة عبر بروتوكول خاص. يمكن إصلاح ذلك بسهولة عن طريق نقل الكود المناسب من shim أو PreLoader إلى GRUB.
لذلك كان هناك قرص
صامت UEFIinSecureBoot. بنية القرص الناتجة كالتالي:
______ ______ ______ ╱│ │ ╱│ │ ╱│ │ /_│ │ /_│ │ → /_│ │ │ │ │ │ → │ │ │ EFI │ │ EFI │ → │ EFI │ │_______│ │_______│ │_______│ BOOTX64.efi grubx64.efi grubx64_real.efi (Kaspersky (FileAuthentication (GRUB2) Loader) override) ↓↓↓ ↑ ↑ ______ ↑ ╱│ │ ║ /_│ │ ║ │ │ ═══════════╝ │ EFI │ │_______│ fde_ld.efi + custom chain.mod (Kaspersky GRUB2)
استنتاج
في هذه المقالة ، اكتشفنا أنه لا يوجد عدد كافٍ من محمل الإقلاع الموثوق به الذي تم توقيعه باستخدام مفتاح Microsoft لتمكين وضع Secure Boot.
باستخدام ملفات Kaspersky Rescue Disk الموقعة ، حققنا تنزيلًا "صامتًا" لأي ملفات .efi غير موثوق بها مع تمكين التمهيد الآمن ، دون الحاجة إلى إضافة شهادة إلى UEFI db أو shim MOK.
يمكن استخدام هذه الملفات من أجل الأعمال الصالحة (للتنزيل من محركات أقراص USB المحمولة) وللأشياء الشريرة (لتثبيت مجموعات الأدوات بدون علم مالك الكمبيوتر).
أفترض أن شهادة Kaspersky لن تدوم طويلًا ، وستتم إضافتها إلى
القائمة العالمية لشهادات UEFI الملغاة ، والتي سيتم تثبيتها على أجهزة الكمبيوتر التي تعمل بنظام Windows 10 عبر Windows Update ، مما سيؤدي إلى تعطيل تحميل Kaspersky Rescue Disk 18 و Silent UEFIinSecureBoot Disk. دعونا نرى متى سيحدث هذا.
تنزيل قرص Super UEFIinSecureBoot:
https://github.com/ValdikSS/Super-UEFIinSecureBoot-Diskقم بتنزيل Silent UEFIinSecureBoot Disk على
شبكة ZeroNet
Git Center :
http://127.0.0.1:43110/1KVD7PxZVke1iq4DKb4LNwuiHS4UzEAdAv/حول ZeroNetZeroNet هو نظام قوي للغاية لإنشاء مواقع وخدمات ديناميكية موزعة غير مركزية. عند زيارة أحد الموارد ، يبدأ المستخدم في تنزيله وتوزيعه ، كما هو الحال في BitTorrent. في الوقت نفسه ، من الممكن إنشاء موارد كاملة: مدونات تحتوي على تعليقات ومنتديات واستضافة فيديو ومواقع wiki ومحادثات وبريد إلكتروني و git.
يفصل ZeroNet بين مفاهيم الكود وبيانات الموقع: يتم تخزين بيانات المستخدم في ملفات .json ، وعند مزامنتها ، يتم استيرادها إلى قاعدة بيانات sqlite للموقع باستخدام مخطط موحد ، مما يتيح لك القيام بأشياء مبهرة: البحث عن نص محلي على جميع المواقع المفتوحة على الإطلاق بالميللي ثانية ، تلقائي في الوقت الحقيقي من التناظرية آر إس إس لجميع المواقع في وقت واحد.
نظام التوثيق والترخيص الموحد (على غرار OAuth) ، ودعم العمل خلف NAT ومن خلال Tor.
ZeroNet سريع للغاية وسهل الاستخدام ، ويحتوي على واجهة حديثة وميزات صغيرة ، ولكنها مريحة للغاية ، مثل التبديل العالمي لموضوعات النهار / الليل على المواقع.
أنا أعتبر ZeroNet نظامًا أقل تقديرًا ، وأقوم عن قصد بنشر النسخة الصامتة فقط في ZeroNet Git ، لجذب مستخدمين جدد.