
PCI Express مجموعة أدوات اختراق DIY لـ Xilinx SP605. هذا المستودع هو أيضًا موطن لـ Hyper-V Backdoor وBoot Backdoor، راجع readme للحصول على الروابط والمعلومات.
معلومات عامة
المحتويات
إعداد لوحة SP605
إعداد البرمجيات
أمثلة
استخدام Python API
هجمات DMA العملية
هجمات Option ROM
استكشاف الأخطاء وإصلاحها
بناء المشروع من الكود المصدري
يحتوي هذا المستودع على مجموعة من الأدوات وإثباتات المفاهيم المتعلقة بناقل PCI-E و هجمات DMA. يتضمن تصميم HDL يطبق جهاز نقطة نهاية PCI-E الإصدار 1.1 يمكن التحكم فيه برمجياً لـ Xilinx SP605 Evaluation Kit مع FPGA Spartan-6. وبالمقارنة مع USB3380EVB الشائع، يتيح هذا التصميم العمل مع حزم TLP الخام (Transaction Level Packets) لناقل PCI-E وتنفيذ عمليات قراءة/كتابة ذاكرة كاملة 64-بت. ولتوضيح حالات الاستخدام التطبيقية لهذا التصميم، توجد أداة لهجمات DMA قبل الإقلاع على الأجهزة التي تعتمد على UEFI، والتي تسمح بتنفيذ برامج تشغيل UEFI DXE عشوائية أثناء تهيئة النظام الأساسي.
يوجد برنامج يوضح كيفية استخدام هجمات DMA قبل الإقلاع لحقن باب خلفي لمعالج مخارج VM في Hyper-V في نظامي التشغيل Windows 10 و11 الممكّنين بفعل الأمان المستند إلى الظاهرية على منصة تعمل مع تمكين UEFI Secure Boot. قد يكون إثبات المفهوم Hyper-V Backdoor المقدم مفيداً لأغراض الهندسة العكسية وتطوير الاستغلالات، فهو يوفر واجهة لفحص حالة الهايبرفايزر (VMCS، الذاكرة الفعلية/الافتراضية، السجلات، إلخ) من قسم الضيف وتنفيذ هجمات الهروب من الضيف إلى المضيف (guest to host VM escape).
برنامج آخر يوضح كيفية استخدام هجمات DMA قبل الإقلاع لحقن كود عشوائي في وضع المستخدم أو وضع النواة في نظام التشغيل Windows عن طريق اختطاف عملية الإقلاع الخاصة به باستخدام Boot Backdoor. يمكن لهذا البرنامج أيضاً العمل مع DMA Shell − وهي حمولة Boot Backdoor تسمح بتنفيذ أوامر وحدة التحكم عبر جهاز PCI-E المارق، ونقل الملفات، وتحميل ملفات تنفيذية تابعة لجهات خارجية إلى نظام التشغيل الهدف في وقت التشغيل.
💾 جزء Hyper-V Backdoor من هذا المشروع يحتوي على العديد من المزايا وخيارات النشر الأخرى غير الموصوفة في هذا المستند، ويمكنك استخدامه بشكل منفصل عن أدوات هجمات DMA حتى دون أي عتاد خاص: راجع توثيقه
💾 جزء Boot Backdoor من هذا المشروع يحتوي على العديد من المزايا وخيارات النشر الأخرى غير الموصوفة في هذا المستند، ويمكنك استخدامه بشكل منفصل عن أدوات هجمات DMA حتى دون أي عتاد خاص: راجع توثيقه
💾 يمكن أيضاً استخدام أدوات Python من هذا المشروع وتصاميم FPGA للوحات SP605 وZC706 وPicoEVB لنشر SMM Backdoor Next Gen مع هجوم DMA قبل الإقلاع. راجع توثيقه لمزيد من التفاصيل التقنية.
🛠️ يمكن أيضاً استخدام أدوات Python والحمولات من هذا المشروع، بما في ذلك Hyper-V Backdoor وBoot Backdoor، مع اللوحات المبنية على Xilinx Zynq-7000 SoC. يوجد مشروع منفصل لتصميم هجمات DMA لعدة التقييم Xilinx ZC706.
🛠️ يمكن أيضاً استخدام أدوات Python والحمولات من هذا المشروع، بما في ذلك Hyper-V Backdoor وBoot Backdoor، مع لوحة التطوير PicoEVB. يوجد مشروع Pico DMA منفصل − وهو غرسة عتادية مستقلة تماماً لهجمات DMA قبل الإقلاع لفتحة M.2 يمكنها تشغيل برامج تشغيل UEFI DXE عشوائية كحمولة.
s6_pcie_microblaze.xise − ملف مشروع Xilinx ISE.
microblaze/pcores/axis_pcie_v1_00_a/ − وحدة طرفية مخصصة تسمح بتوصيل كتلة نقطة النهاية المدمجة في PCI Express لـ FPGA Spartan-6 كدفق TLP خام بمعالج MicroBlaze اللين.
sdk/srec_bootloader_0/ − مُحمِّل إقلاع بسيط لمعالج MicroBlaze اللين، يستخدم تنسيق صور SREC وذاكرة الفلاش الخطية المدمجة في SP605 لتحميل وتخزين برنامج MicroBlaze الرئيسي.
sdk/main_0/ − البرنامج الرئيسي لمعالج MicroBlaze اللين، ويعيد توجيه حزم TLP الخام لناقل PCI-E إلى اتصال TCP باستخدام منفذ Ethernet المدمج في SP605 وحزمة شبكات lwIP.
python/pcie_lib.py − مكتبة Python للتفاعل عبر الشبكة مع برنامج MicroBlaze الرئيسي الذي يعمل على لوحة SP605، وتنفذ تجريدات متنوعة منخفضة المستوى وعالية المستوى للتعامل مع مستوى TLP الخاص بـ PCI-E من كود Python.
python/pcie_mem.py − برنامج سطر أوامر يقوم بتفريغ ذاكرة الوصول العشوائي للمضيف على الشاشة أو في ملف إخراج عن طريق إرسال حزم MRd TLP.
python/pcie_mem_scan.py − برنامج سطر أوامر يفحص المضيف الهدف بحثاً عن نطاقات الذاكرة الفعلية التي يمكن الوصول إليها عبر ناقل PCI-E، وهو مفيد للتدقيق الأمني للمنصات الممكّنة بـ IOMMU (أمثلة: 1, 2, 3, 4).
python/uefi_backdoor_simple.py − برنامج سطر أوامر لهجوم DMA قبل الإقلاع يحقن برنامج تشغيل UEFI وهمي في تسلسل إقلاع الجهاز الهدف.
python/uefi_backdoor_hv.py − برنامج سطر أوامر لهجوم DMA قبل الإقلاع يحقن الباب الخلفي لمعالج مخارج VM في Hyper-V في تسلسل إقلاع النظام الهدف.
python/uefi_backdoor_boot.py − برنامج سطر أوامر لهجوم DMA قبل الإقلاع يحقن Boot Backdoor في تسلسل إقلاع النظام الهدف.
python/payloads/DmaBackdoorSimple/ − الكود المصدري لبرنامج تشغيل UEFI DXE الوهمي لاستخدامه مع uefi_backdoor_simple.py.
python/payloads/DmaBackdoorHv/ − الكود المصدري لبرنامج تشغيل UEFI DXE لاستخدامه مع uefi_backdoor_hv.py، ويطبق وظائف Hyper-V Backdoor.
python/payloads/DmaBackdoorBoot/ − الكود المصدري لبرنامج تشغيل UEFI DXE لاستخدامه مع uefi_backdoor_boot.py، ويطبق وظائف Boot Backdoor.
وثيقة Xilinx UG526، المعروفة أيضاً باسم SP605 Hardware User Guide، هي أفضل صديق لك إذا أردت معرفة مزيد من التفاصيل حول استخدام وإعداد هذه اللوحة الرائعة.
لتحميل تدفق البتات (bitstream) من شريحة SPI flash المدمجة، تحتاج إلى إعداد SP605 بتحويل مفاتيح SW1 إلى الوضع 1-ON، 2-OFF.
الآن يجب عليك كتابة تدفق البتات الخاص بـ FPGA في فلاش SPI. استخدم ملف s6_pcie_microblaze.mcs إذا أردت القيام بذلك عبر JTAG بمساعدة أداة Xilinx iMPACT (انظر هذا البرنامج التعليمي)، أو s6_pcie_microblaze.bin إذا أردت استخدام مبرمج SPI flash خارجي متصل بترويسة J17 في SP605 (وهي الطريقة الأسرع والأكثر ملاءمة).