
Intel Management Engine JTAG Proof of Concept - 2022 निर्देश
सभी जानकारी केवल शैक्षिक उद्देश्यों के लिए प्रदान की गई है। इन निर्देशों का पालन अपने जोखिम पर करें। इस पृष्ठ में निहित जानकारी के आधार पर किसी व्यक्ति या संगठन द्वारा कार्य करने या न करने से उत्पन्न किसी भी प्रत्यक्ष या परिणामी क्षति या हानि के लिए न तो लेखक और न ही उनका नियोक्ता जिम्मेदार है।
परिचय
आवश्यक सॉफ़्टवेयर
पेलोड उत्पन्न करना
अनलॉक टोकन उत्पन्न करना
SPI फ्लैश इमेज तैयार करना
फर्मवेयर इमेज में फ़ाइलें शामिल करना
OEM हस्ताक्षर अक्षम करना
फर्मवेयर इमेज बनाना
मुख्य CPU को BringUP करना
SPI फ्लैश में इमेज लिखना
USB डिबग केबल तैयार करना
OpenIPC कॉन्फ़िगरेशन फ़ाइलों को पैच करना
OpenIPC कॉन्फ़िगरेशन फ़ाइलों को डिक्रिप्ट करना
कॉन्फ़िगरेशन में LMT कोर जोड़ना
IPC_PATH पर्यावरण चर सेट करना
JTAG संचालन की प्रारंभिक जाँच करना
CPU ME थ्रेड दिखाएँ
कोर रोकना
ME डिबगिंग: त्वरित आरंभ
आर्बिट्ररी मेमोरी पढ़ना
ROM पढ़ना
TXE क्यों?
परीक्षण किए गए प्लेटफ़ॉर्मों की सूची
लेखक
लाइसेंस
भेद्यता INTEL-SA-00086 Intel Management Engine कोर के लिए JTAG सक्रिय करने की अनुमति देती है। हमने अपना [JTAG PoC][8] Gigabyte Brix GP-BPCE-3350C प्लेटफ़ॉर्म के लिए विकसित किया है। हालाँकि हम अनुशंसा करते हैं कि इच्छुक शोधकर्ता उसी प्लेटफ़ॉर्म का उपयोग करें, Intel Apollo Lake चिपसेट वाले अन्य निर्माताओं के प्लेटफ़ॉर्मों को भी PoC का समर्थन करना चाहिए (TXE संस्करण 3.0.1.1107 के लिए)।
क्योंकि Gigabyte Brix GP-BPCE-3350C अब व्यापक रूप से व्यावसायिक रूप से उपलब्ध नहीं है, इन निर्देशों को अद्यतन किया गया है ताकि इसके बजाय AAEON UP Squared SKU UPS-APLX7-A20-0864 (Intel Atom® x7-E3950) को लक्षित किया जा सके। यदि आप यह बोर्ड खरीदते हैं, तो बिजली आपूर्ति, सीरियल एडाप्टर और कोई भी USB-to-serial एडाप्टर भी प्राप्त करना सुनिश्चित करें। इसके अतिरिक्त, UP Squared को DCI डिबगिंग करने के लिए केवल एक बुनियादी USB डिबग केबल की आवश्यकता होती है। USB डिबग केबल को उस पोर्ट से जोड़ा जाना चाहिए जहाँ पीला USB केबल यहाँ दिखाया गया है।
भेद्यता INTEL-SA-00086 में MFS (आंतरिक [ME फ़ाइल सिस्टम][6]) पर संग्रहीत फ़ाइल को संभालते समय बफर ओवरफ़्लो शामिल है। पूर्ण फ़ाइल पथ /home/bup/ct है। आपको Intel PCH चिपसेट पर आधारित हार्डवेयर के OEMs को Intel द्वारा प्रदान किए गए Intel सिस्टम टूल्स में से एक, Intel Flash Image Tool (FIT) का उपयोग करके ME फर्मवेयर में इस फ़ाइल के भेद्यता-शोषण वाले संस्करण को एकीकृत करना होगा।
Intel ME (TXE, SPS) सिस्टम टूल्स उपयोगिताएँ अंतिम उपयोगकर्ताओं के लिए अभिप्रेत नहीं हैं—इसलिए आप उन्हें आधिकारिक Intel वेबसाइट पर नहीं पा सकते। हालाँकि, कुछ OEM उन्हें डिवाइस ड्राइवरों के साथ सॉफ़्टवेयर अपडेट के भाग के रूप में प्रकाशित करते हैं। इसलिए, अपने PoC को एकीकृत करने के लिए आपको "CSTXE System Tools v3" की आवश्यकता है, जो यहाँ पाई जा सकती है।
JTAG डिबगिंग करने के लिए आपको Intel System Studio स्थापित करना होगा। अपने मूल प्रयोगों में, हमने Intel System Studio 2018 का उपयोग किया। इन निर्देशों को Intel System Studio 2020 के लिए अद्यतन किया गया है, जिसे यहाँ से प्राप्त किया जा सकता है।
PoC Intel TXE फर्मवेयर संस्करण 3.0.1.1107 को लक्षित करता है। Win-Raid फ़ोरम पर "CSTXE 3.0" इमेज रिपॉजिटरी में आवश्यक TXE फर्मवेयर संस्करण शामिल है।
हमारी सभी स्क्रिप्ट Python में लिखी गई हैं। हम Python 2.7 का उपयोग करने की अनुशंसा करते हैं। साथ ही स्क्रिप्ट्स को pycrypto पैकेज की आवश्यकता होती है। pycrypto स्थापित करने के लिए, निम्न कमांड चलाएँ:``` pip install pycrypto
## DCI के माध्यम से बेसलाइन x86 डिबगिंग करना
हालाँकि इस गाइड का उद्देश्य एक एक्सप्लॉइट के माध्यम से ME में JTAG डिबगिंग को सक्षम करना है, यह एक अच्छा अभ्यास है कि पहले एक सैनिटी चेक किया जाए और सुनिश्चित किया जाए कि आप DCI के माध्यम से UP Squared बोर्ड की सामान्य JTAG डिबगिंग कर सकते हैं। AAEON अब अपने BIOS को DCI सक्षम के साथ वितरित नहीं करता है, क्योंकि उन्होंने अपने फ़ोरम पर कहा था कि इससे अस्थिरता पैदा हुई। (और v5.0 से पहले के पुराने BIOS संस्करण, जिनमें DCI सक्षम था, DRAM विक्रेता के हार्डवेयर बदलाव के कारण नए हार्डवेयर के साथ अब काम नहीं करेंगे।) इसलिए, UP Squared पर DCI JTAG सक्षम करने के लिए, आपको 3 चरण करने होंगे:
1) Satoshi Tanda द्वारा वर्णित बाइनरी पैचिंग करें [यहाँ](https://forum.up-community.org/discussion/comment/12877#Comment_12877) (हालाँकि इसमें यह कहा जाना चाहिए कि UEFITool 0.28 का उपयोग करें, न कि 2.8 का)।
2) BIOS कॉन्फ़िगरेशन मेनू के माध्यम से DCI सक्षम करें—बूट पर F7 दबाकर, डिफ़ॉल्ट UP पासवर्ड (*upassw0rd*) दर्ज करके, Main मेनू से नीचे जाकर "CRB Setup" -> "CSB Chipset" -> "South Cluster Configuration" -> "Miscellaneous Configuration" -> "DCI Enable (HDCIEN)" पर जाएँ और इसे enabled पर सेट करें। फिर BIOS सेटअप मेनू से बाहर निकलें, कॉन्फ़िगरेशन परिवर्तन सहेजें, और सिस्टम को रीबूट करें।
3) "C:\IntelSWTools\system_studio_2020\system_debugger_2020\target_indicator\bin\TargetIndicator.exe" खोलें और पुष्टि करें कि जब आप उस सिस्टम को डिबग केबल के माध्यम से UP Squared से जोड़ते हैं, तो एक नीला संकेतक प्रदर्शित होता है जो दर्शाता है कि DCI संभव है, जैसा नीचे दिखाया गया है:

आप फिर ":\Program Files (x86)\IntelSWTools\sw_dev_tools\system_debugger_2020\system_debug_legacy\xdb.bat" लॉन्च कर सकते हैं, टार्गेट से कनेक्ट कर सकते हैं, उसमें ब्रेक कर सकते हैं, और सिंगल-स्टेप करके पुष्टि कर सकते हैं कि आपके पास बेसलाइन डिबगिंग क्षमताएँ हैं।
(आप Alan Sguigna की ब्लॉग श्रृंखला का अनुसरण भी कर सकते हैं [यहाँ](https://www.asset-intertech.com/resources/blog/2020/05/open-source-firmware-explorations-using-dci-on-the-aaeon-up-squared-board/) कि कैसे इस प्लेटफ़ॉर्म के लिए ओपन सोर्स कोड का Debug-बिल्ड बनाया जाए, जो रीसेट वेक्टर से DCI-डिबग करने योग्य होगा। हालाँकि, ध्यान दें कि DRAM के लिए हार्डवेयर परिवर्तन के कारण, यह स्रोत से निर्मित कोड नए हार्डवेयर पर पूरी तरह से बूट नहीं होगा—इसके बजाय यह बूट समय पर हैंग हो जाएगा, जैसा [यहाँ](https://forum.up-community.org/discussion/comment/12877) नोट किया गया है। Intel TianoCore के अनुरक्षकों ने इसे ठीक करने से इनकार कर दिया है।)