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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
IntelTXE-PoC — إثبات المفهوم لمحرك إدارة إنتل عبر JTAG | Kitploit
أدوات/GitHubGitHub/ptresearch/inteltxe-poc
أمان الأنظمة المدمجةتوليد الحمولةتحليل الثغرات الأمنيةالهندسة العكسيةمصممي الأخطاءاختراق الأجهزةأمن الأجهزةتحليل البرامج الثابتةاستغلال الملفات الثنائيةArchived
GitHubptresearch/inteltxe-poc

IntelTXE-PoC

5491067منذ 6 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

إثبات المفهوم لمحرك إدارة إنتل عبر JTAG

عرض المستودع

إخلاء مسؤولية

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

المحتويات

مقدمة
البرمجيات المطلوبة
توليد الحمولة
توليد رمز الفتح
تحضير صورة SPI Flash
دمج الملفات في صورة البرنامج الثابت
تعطيل توقيع OEM
بناء صورة البرنامج الثابت
إقلاع المعالج الرئيسي
كتابة الصورة إلى SPI Flash
تحضير كبل تصحيح USB
ترقيع ملفات إعداد OpenIPC
فك تشفير ملفات إعداد OpenIPC
إضافة نواة LMT إلى الإعداد
ضبط متغير البيئة IPC_PATH
إجراء فحص أولي لتشغيل JTAG
عرض مسلك ME للمعالج
إيقاف الأنوية
تصحيح ME: بداية سريعة
قراءة ذاكرة عشوائية
قراءة ROM
لماذا TXE؟
قائمة المنصات المختبرة
المؤلفون
الترخيص

مقدمة

تسمح الثغرة INTEL-SA-00086 بتفعيل JTAG لنواة Intel Management Engine. قمنا بتطوير JTAG PoC الخاص بنا لمنصة Gigabyte Brix GP-BPCE-3350C. على الرغم من أننا نوصي الباحثين الطموحين باستخدام نفس المنصة، إلا أن منصات الشركات المصنعة الأخرى المزودة بمجموعة شرائح Intel Apollo Lake يجب أن تدعم إثبات المفهوم أيضًا (لإصدار TXE 3.0.1.1107).

البرمجيات المطلوبة

أدوات إنتل النظامية

تتضمن الثغرة INTEL-SA-00086 تجاوز سعة المخزن المؤقت عند معالجة ملف مخزّن على MFS (نظام ملفات ME الداخلي). المسار الكامل للملف هو /home/bup/ct. ستحتاج إلى دمجه في برنامج ME الثابت باستخدام Intel Flash Image Tool (FIT)، وهي إحدى أدوات إنتل النظامية المقدمة من إنتل إلى الشركات المصنعة للأجهزة القائمة على مجموعات شرائح Intel PCH. فيما يلي بنية الدليل الجذر لحزمة أدوات إنتل النظامية:

screenshot

أدوات Intel ME (TXE, SPS) النظامية غير مخصصة للمستخدمين النهائيين — لذلك لا يمكنك العثور عليها على موقع إنتل الرسمي. ومع ذلك، تنشر بعض الشركات المصنعة هذه الأدوات كجزء من تحديثات البرمجيات إلى جانب برامج التشغيل. لذا، لدمج إثبات المفهوم الخاص بنا، ستحتاج إلى Intel TXE System Tools الإصدار 3.x، والذي يمكن العثور عليه عبر الإنترنت.

Intel System Studio

تحتاج إلى تثبيت Intel System Studio، ويمكن تنزيل نسخة تجريبية منه من موقع إنتل. في تجاربنا، استخدمنا Intel System Studio 2018.

برنامج Intel TXE الثابت

يستهدف إثبات المفهوم برنامج Intel TXE الثابت الإصدار 3.0.1.1107. تحتوي صورة SPI Flash الخاصة بـ Gigabyte GB-BPCE-3350C الإصدار F5 على إصدار البرنامج الثابت المطلوب.

Python

جميع نصوصنا مكتوبة بلغة Python. نوصي باستخدام Python 2.7 كما تتطلب النصوص حزمة pycrypto. لتثبيت pycrypto، نفّذ الأمر التالي:

root@kitploit:~
pip install pycrypto

AMIBCP

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

البنية التحتية لواجهة المستخدم البشرية EFI (HII) هي آلية خاصة لإنشاء واجهة مستخدم في UEFI، بالإضافة إلى معالجة وإدارة مدخلات المستخدم. يحدد EFI HII القيم الافتراضية لجميع الخيارات، بما فيها المخفية. بمجرد العثور على الخيار المتعلق بـ DCI، يمكن تفعيله للإعداد الافتراضي، ويمكن تمكين DCI عبر استعادة إعدادات المصنع للـ BIOS. لإقلاع المعالج الرئيسي، ستحتاج إلى AMI BIOS Configuration Program الإصدار 5.xx، والذي يمكن العثور عليه أيضًا عبر الإنترنت.

توليد الحمولة

شغّل السكربت me_exp_bxtp.py:

root@kitploit:~
me_exp_bxtp.py -f <file_name>

يقوم السكربت بتوليد البيانات اللازمة وتصديرها إلى الملف المحدد (حدد إما مسار الملف الكامل أو، داخل الدليل الحالي، اسمًا ببساطة، ct.bin افتراضيًا). سيُستخدم هذا الملف لاحقًا بواسطة FIT.

توليد رمز الفتح

شغّل السكربت me_utok_bxtp.py:

root@kitploit:~
me_utok_bxtp.py -f <file_name>

يقوم السكربت بتوليد البيانات اللازمة وتصديرها إلى الملف المحدد (حدد إما مسار الملف الكامل أو، داخل الدليل الحالي، اسمًا ببساطة، utok.bin افتراضيًا). سيُستخدم هذا الملف لاحقًا بواسطة FIT.

تحضير صورة SPI Flash

تفعيل خيار DCI

تخطَّ هذه الخطوة إذا لم تكن بحاجة إلى إقلاع المعالج (CPU).

لتفعيل خيار DCI Enable، شغّل أداة AMIBCP واستخدمها لفتح صورة البرنامج الثابت SPI المرفقة مع منصتك. بالنسبة إلى Gigabyte Brix GP-BPCE-3350C، افتح الملف الذي تم تنزيله من رابط Gigabyte المشار إليه أعلاه (مسار ملف الصورة في الأرشيف: F5/image.bin).

screenshot

الآن نحتاج إلى تمكين خيار HDCIEN في تبويب Setup Configuration.

دمج الحمولة

لدمج الملفين ct.bin و utok.bin، شغّل أداة FIT (fit.exe) واستخدمها لفتح صورة البرنامج الثابت SPI.

screenshot

منصات الأجهزة الأخرى

إذا كنت تستخدم منصة أجهزة أخرى ولا تملك وصولًا إلى TXE 3.0.1.1107، يمكنك تنزيل صورة SPI Flash الخاصة بـ Gigabyte GB-BPCE-3350C الإصدار F5 واستخراج قسم TXE عبر FIT. يستخرج FIT أقسامًا مختلفة من صورة SPI الكلية (وصف SPI، برنامج UEFI/BIOS الثابت، برنامج Intel ME الثابت، ورمز الفتح Unlock Token) عند فتح الصورة، ويحفظها في المجلد *"image_name"/Decomp *.

screenshot

لذا يمكنك العثور على الملف الذي يحتوي برنامج Intel TXE الثابت المطلوب في المسار /Decomp/TXE Region.bin بعد ذلك، في FIT، افتح صورة SPI الخاصة بمنصتك المحددة واستبدل الملف الذي يحتوي برنامج Intel TXE الثابت بالإصدار الذي حصلت عليه من صورة GB Brix 3350c ("Intel(R) TXE Binary File" في تبويب Flash Layout):

screenshot

دمج الملفات في صورة البرنامج الثابت

الآن نحتاج إلى تحديد الملفات التي ولّدناها لـ /home/bup/ct و Unlock Token في FIT. في تبويب Debug في FIT، يمكنك تحديد Trace Hub Binary وUnlock Token لدمجهما في البرنامج الثابت. يجب أن تكون هذه هي الملفات التي ولّدناها بالفعل.

screenshot

تعطيل توقيع OEM

ببساطة قم بإزالة حقل OEM Public Key Hash من FIT:

screenshot

بناء صورة البرنامج الثابت

قم ببناء الصورة عن طريق تحديد Build Image في قائمة Build.

screenshot

تجاهل الرسالة المتعلقة بإعدادات BootGuard (انقر "Yes"):

screenshot

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

screenshot

إقلاع المعالج الرئيسي

تخطَّ هذه الخطوة إذا لم تكن بحاجة إلى إقلاع المعالج (CPU).

يجب عليك تفعيل وضع HAP لإقلاع المعالج. يجب تعيين البت 0 من البايت عند الإزاحة +0x102:

screenshot

كتابة الصورة إلى SPI Flash

لكتابة الصورة إلى SPI flash، نوصي بشدة باستخدام مبرمج SPI.
تأكد من عمل نسخة احتياطية من البرنامج الثابت الأصلي حتى تتمكن من الاستعادة منه إذا حدث خطأ ما!

تحضير كبل تصحيح USB

ستحتاج إلى كبل تصحيح USB 3.0 للاتصال بالمنصة. يمكنك إما شراء واحدًا مصنوعًا خصيصًا لهذا الغرض أو صنع كبل خاص بك من كبل USB 3.0 AM–AM عن طريق عزل جهات الاتصال D+ وD- وVcc.

screenshot

ترقيع ملفات إعداد OpenIPC

تقوم إنتل بتطوير وتوفير حزمتي برمجيات للمستخدمين يمكن استخدامهما لتصحيح JTAG للمنصات والمعالج الرئيسي: DAL (طبقة تجريد DFx) وOpenIPC. كل من DAL وOpenIPC جزء من Intel System Studio. بعد تثبيت Intel System Studio 2018، يظهر OpenIPC في الدليل التالي:

Windows

root@kitploit:~
C:\Intel\OpenIPC_1.1740.2381.100

Linux

root@kitploit:~
/opt/intel/system_studio_2018/system_debugger_2018/debugger/openipc

إعداد OpenIPC مشفّر ولا يدعم نواة TXE. لذا قم بفك تشفير الإعداد وأضف وصفًا لـ TXE إليه.

فك تشفير ملفات إعداد OpenIPC

لفك تشفير ملفات الإعداد، استخرج المفتاح من مكتبة StructuredData (في Linux: libStructuredData_x64.so، في Windows: StructuredData_x64.dll) في OpenIPC/Bin باستخدام سكربت IDA Pro openipc_key_extract.py. مرّر المفتاح (في حالتنا، 4504fb02be0a9c4c84df2a89cf508bc3) إلى السكربت config_decryptor.py مع مسار دليل OpenIPC.

root@kitploit:~
config_decryptor.py –k 4504fb02be0a9c4c84df2a89cf508bc3 –p C:\Intel\OpenIPC

إضافة نواة LMT إلى الإعداد

لا يحتوي إصدار OpenIPC المرفق على المعلومات اللازمة حول نواة TXE. لذا نحتاج إلى تطبيق الترقيع (patch.diff) على ملفات إعداد OpenIPC المفكوك تشفيرها. وإليك كيفية القيام بذلك:

root@kitploit:~
patch -p2 < patch.diff

ضبط متغير البيئة IPC_PATH

بعد فك التشفير والترقيع، اضبط متغير البيئة IPC_PATH على دليل OpenIPC الجديد بحيث يستخدم ipccli إصدار OpenIPC المعدل. على سبيل المثال:

Windows

root@kitploit:~
set IPC_PATH=c:\Intel\OpenIPC\Bin

إجراء فحص أولي لتشغيل JTAG

يقوم المفعّل (activator) بحظر التحميل اللاحق عن طريق إبقاء عملية BUP في حلقة بعد تفعيل JTAG. بعد الإقلاع، لن تُظهر المنصة أي علامات حياة (لن تعمل الشاشة، ولن تضيء مؤشرات لوحة المفاتيح، ولن يُصدر BIOS صوت POST). لذا ستحتاج إلى التحقق عبر تصحيح DCI من أن المنصة "عالقة" في وحدة BUP.

مثل DAL، تتضمن مكتبة OpenIPC واجهة سطر أوامر (CLI)، مكتوبة بلغة Python ومقدمة كمكتبة لـ Python كجزء من Intel System Studio، ويمكن تثبيتها على النظام بمساعدة pip. حزمة تثبيت ipccli موجودة في المسار التالي: Windows

root@kitploit:~
<Program Files(x86)>\IntelSWTools\system_debugger_2018\debugger\ipccli\ ipccli-1.1740.544.100-py2.py3-none-any.whl

Linux

root@kitploit:~
/opt/intel/system_studio_2018/system_debugger_2018/debugger/ipccli/ipccli-1.1811.727.100-py2.py3-none-any.whl

لتثبيت ipccli، نفّذ أمر وحدة التحكم التالي:

root@kitploit:~
pip install ipccli-1.1740.544.100-py2.py3-none-any.whl

بمجرد التثبيت، يصبح ipccli متاحًا ضمن بيئة تشغيل إصدار Python المقابل (الإصدار الذي تم استدعاء pip منه). لبدء استخدام OpenIPC، نفّذ الأوامر التالية في وحدة تحكم Python:

root@kitploit:~
import ipccli
ipc = ipccli.baseaccess()

تنطلق آلية الاتصال بالمنصة الهدف عبر DCI، مما يؤدي إلى إخراج وحدة التحكم التالي:

screenshot

عند عدم إنشاء اتصال — على سبيل المثال، إذا كانت المنصة غير مزوّدة بالطاقة أو غير متصلة فعليًا عبر DCI — فستكون الرسائل مشابهة لما يلي:

screenshot

إذا كان اتصال DCI ناجحًا، فتأكد من أن سجل PERSONALITY لجهاز DFX_AGGRAGATOR يساوي 3. يمتلك سجل PERSONALITY رمز IR (Instruction Register) بقيمة 0x54. لقراءته، نفّذ الأوامر التالية:

root@kitploit:~
dfx_agg = ipc.devs.mdu_dfx_agg_tap0
ipc.irdrscan(dfx_agg, 0x54, 32)

وإليك كيف يجب أن تبدو نتيجة هذا الأمر:

screenshot

تصحيح ME: بداية سريعة

تأتي أداة ipccli مع توثيق HTML مفصّل إلى حد ما، ويمكن العثور عليه في مجلد من حزمة Python الخاصة بـ ipccli:

root@kitploit:~
<Python Dir>\Lib\site-packages\ipccli\html\Index.html

عرض مسلك ME للمعالج

إذا تم تنفيذ الخطوات السابقة بشكل صحيح، فعند إنشاء اتصال بالمنصة عبر ipccli، تكون نواة TXE قابلة للوصول عبر CSE Tap ويسمح ipccli بالوصول إليها من خلال تطبيق مسار ipccli التالي:

root@kitploit:~
ipc.devs.cse_c0.threads[0]

ولكن نظرًا لأن إثبات المفهوم يمنع تحميل المنصة حتى تتم تهيئة المعالج الرئيسي، فإن أنويته لا يمكن الوصول إليها عبر JTAG ويمكن الوصول إلى نواة ME عبر الأمر التالي:

root@kitploit:~
ipc.threads[0]

إيقاف الأنوية

لإيقاف تعليمات معالج ME، نفّذ الأمر التالي:

root@kitploit:~
me = ipc.devs.cse_c0.threads[0]
me.halt()

لإيقاف تعليمات معالج CPU، نفّذ الأمر التالي:

root@kitploit:~
core = ipc.threads[0]
core.halt()

screenshot

تعرض وحدة التحكم العنوان المنطقي للتعليمة التي تم الإيقاف عندها.

قراءة ذاكرة عشوائية

يسمح OpenIPC بقراءة الذاكرة بعد الإيقاف، على سبيل المثال:

root@kitploit:~
ipc.threads[0].mem("0xf0080004P", 4)

يمكنك تحديد عنوان منطقي (sel:offset)، أو عنوان خطي (مُعدِّل L)، أو عنوان فيزيائي (مُعدِّل P).

قراءة ROM

يسمح وكيل نظام ME (MISA) بالحصول على العنوان الفيزيائي الأولي لمنطقة ROM، والتي تتضمن متجه إعادة تعيين ME. يمكنك الحصول على عنوان ROM عبر سجل Hunit ROM Memory Base (HROMMB) عند الإزاحة 0xe20 في MISA MMIO (0xf0000000P):

screenshot

ROM يتواجد دائمًا من ROMBASE إلى 0xffffffff لنسخ ROM إلى ملف، نفّذ الأمر التالي:

root@kitploit:~
ipc.threads[0].memsave("<file path>", "0xfffe0000p", 0x20001)

من المهم تحديد الحجم كـ 0x20001، وليس 0x20000 (وإلا سيواجه OpenIPC مشكلات بسبب صعوبات في الوصول 64 بت، وهو غير ممكن لنواة ME ذات 32 بت). يمكن التخلص من آخر بايت في الملف، لأنه ليس جزءًا من ROM.

لماذا TXE؟

توفر المنصة فرصًا أكثر للتصحيح دون الحاجة إلى محول خاص Intel CCA-SVT وتسمح بتصحيح المراحل الأولى من نواة TXE عبر كبل تصحيح USB عادي.

روابط ذات صلة:

Intel ME: The Way of the Static Analysis

Intel DCI Secrets

Intel ME: Flash File System Explained

How to Hack a Turned-Off Computer or Running Unsigned Code in Intel Management Engine

Inside Intel Management Engine

Disabling Intel ME 11 via undocumented mode

قائمة المنصات المختبرة

  • Gigabyte Mini-PC Barebone (BRIX) GB-BPCE-3350C (rev:1.1, 1.2)
  • Beelink M1

المؤلفون

Mark Ermolov (@_markel___)

Maxim Goryachy (@h0t_max)

فريق البحث

Mark Ermolov (@_markel___)

Maxim Goryachy (@h0t_max)

Dmitry Sklyarov (@_Dmit)

الترخيص

حقوق الطبع والنشر (c) 2018 Mark Ermolov, Maxim Goryachy في Positive Technologies

يُمنح الإذن بموجب هذا، مجانًا، لأي شخص يحصل على نسخة من هذا البرنامج وملفات التوثيق المرافقة ("البرنامج")، للتعامل مع البرنامج دون قيود، بما في ذلك دون حصر حقوق الاستخدام والنسخ والتعديل والدمج والنشر والتوزيع والترخيص الفرعي و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين يُقدَّم لهم البرنامج بالقيام بذلك، شريطة الشروط التالية: يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع نسخ أو أجزاء جوهرية من البرنامج.

يُقدَّم البرنامج "كما هو"، دون أي ضمان من أي نوع، صريحًا كان أم ضمنيًا، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال لا يكون المؤلفون أو أصحاب حقوق الطبع والنشر مسؤولين عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في دعوى تعاقدية أو تقصيرية أو غير ذلك، تنشأ عن أو بسبب أو فيما يتعلق بالبرنامج أو استخدامه أو تعاملات أخرى في البرنامج.

تنزيل الأداة