स्टारलिंक यूज़र टर्मिनल मॉडचिप
यह रिपॉज़िटरी "Glitched on Earth by Humans: A Black-Box Security Evaluation of the SpaceX Starlink User Terminal" शीर्षक वाली प्रस्तुति के साथ आती है।
स्लाइड डेक यहाँ उपलब्ध है, प्रस्तुति की रिकॉर्डिंग जल्द ही उपलब्ध होनी चाहिए।
प्रस्तुति में बताया गया है कि हमने एक कस्टम मॉडचिप का उपयोग करके स्टारलिंक यूज़र टर्मिनल पर मनमाना कोड कैसे निष्पादित करने में सफलता प्राप्त की, जो वोल्टेज फॉल्ट इंजेक्शन करती है।
मॉडचिप का उपयोग सिस्टम-ऑन-चिप (SoC) ROM बूटलोडर (BL1) के निष्पादन के दौरान सिग्नेचर सत्यापन को बायपास करने के लिए किया जा सकता है। यह BL2 से आगे SoC पर मनमाना कोड निष्पादित करने की अनुमति देता है और स्टारलिंक यूज़र टर्मिनल तथा सिस्टम के नेटवर्किंग पक्ष को और अधिक अन्वेषण करने की अनुमति देता है।
हम मॉडचिप डिज़ाइन उपलब्ध कराते हैं ताकि अन्य शोधकर्ता हमारे कार्य पर आगे निर्माण कर सकें।
🚨 अपने जोखिम पर उपयोग करें 🚨
हालाँकि हमने प्रदान किए गए मॉडचिप डिज़ाइन का परीक्षण किया है और उपयोग करते हैं, फिर भी इस मॉडचिप का उपयोग करके उपयोगकर्ता टर्मिनल को स्थायी क्षति पहुँचाना संभव है।
इसी तरह, उपयोगकर्ता टर्मिनल को अलग करने से स्थायी क्षति हो सकती है और संभवतः आपकी वारंटी समाप्त हो जाएगी।
मॉडचिप डिज़ाइन अवलोकन
मॉडचिप को RP2040 माइक्रोकंट्रोलर द्वारा नियंत्रित किया जाता है जो eMMC D0 लाइन पर ट्रिगर होता है और MOSFET ड्राइवर के लिए (प्रोग्राम करने योग्य) विलंब और ऑफसेट के साथ दो पल्स बनाता है।
इनमें से एक पल्स ग्लिच MOSFET को नियंत्रित करती है, जब इस MOSFET के गेट को हाई किया जाता है तो SoC कोर वोल्टेज आपूर्ति ग्राउंड से शॉर्ट हो जाती है। RP2040 द्वारा उत्पन्न दूसरी पल्स दो MOSFET को नियंत्रित करने की अनुमति देती है जो दो कैपेसिटर बैंकों को सक्षम/अक्षम कर सकते हैं। UT को पूरी तरह से बूट करने के लिए ये कैपेसिटर आवश्यक हैं, लेकिन वोल्टेज ग्लिच के दौरान कैपेसिटर बैंक सक्षम नहीं हो सकते क्योंकि इससे हमें वांछित फॉल्ट प्राप्त करने से रोका जा सकता है।
अपना स्वयं का मॉडचिप बनाने के लिए स्कीमैटिक और गर्बर फ़ाइलें यहाँ प्रदान की गई हैं।

आवश्यक शर्तें
- अपने UT को अलग करें। यदि आप अपनी UT वारंटी समाप्त नहीं करना चाहते हैं या स्थायी क्षति का जोखिम नहीं उठाना चाहते हैं तो यहाँ रुक जाएँ।
- eMMC चिप की सामग्री पढ़ें। बैकअप बनाएँ!
- eMMC चिप को CMD, CLK और D0 टेस्ट पॉइंट से जोड़कर इन-सर्किट पढ़ा जा सकता है।

- eMMC को 1V8 लॉजिक लेवल की आवश्यकता होती है!
- eMMC चिप्स पढ़ने के लिए कई उपकरण मौजूद हैं, एक अच्छा और सस्ता ($12) विकल्प Low Voltage eMMC Adapter by the exploitee.rs है।
- सिग्नेचर सत्यापन को अक्षम करने के लिए आपको विभिन्न बूट चरणों को निकालना, पैच करना और पुनः पैकेज करना होगा।
- eMMC लेआउट U-Boot GPL रिलीज़ में
spacex_catson_boot.h फ़ाइल में प्रलेखित है।
- फर्मवेयर निकालने पर अधिक जानकारी हमारे ब्लॉग पोस्ट में पाई जा सकती है।
- प्रारंभिक बूट चरण सभी ARM Trusted Firmware-A प्रोजेक्ट पर आधारित हैं।
- आप फर्मवेयर इमेज पैकेज को अलग-अलग भागों में अनपैक करने के लिए TF fiptool का उपयोग कर सकते हैं।
- इन बूटस्टेज को पैच करना कुछ बुनियादी स्थैतिक विश्लेषण के बाद Ghidra का उपयोग करके किया जा सकता है (अपने प्रयासों का मार्गदर्शन करने के लिए ओपन सोर्स TF-A कोड का उपयोग करें)।
- सिग्नेचर सत्यापन को अक्षम करना और UART आउटपुट को पुनः सक्षम करना सुनिश्चित करें।
- प्रमाणपत्रों में फर्मवेयर हैश अपडेट करें। हम सिग्नेचर सत्यापन को ग्लिच करते हैं, लेकिन हैश को अभी भी मान्य होना चाहिए।
- इसी तरह, सिग्नेचर सत्यापन को अक्षम करने के लिए आपको U-Boot इमेज में कुछ बदलाव करने होंगे।
- आप
bootdelay पैरामीटर भी बढ़ा सकते हैं।
- फ्लैटन्ड uImage ट्री को dumpimage का उपयोग करके अनपैक किया जा सकता है, जो U-Boot प्रोजेक्ट के भाग के रूप में प्रदान किया जाता है।
- जो बदलाव आप चाहते हैं करें और पुनः पैकेज करें।
- पैच किए गए फर्मवेयर को eMMC चिप पर पुनः लिखें।
स्टारलिंक UT PCB पर मॉडचिप लगाना
-
सुनिश्चित करें कि आपके द्वारा असेंबल किया गया मॉडचिप काम करता है, इससे पहले कि आप इसे सोल्डर करने का प्रयास करें।
-
लाल वर्गों के भीतर डिकपलिंग कैपेसिटर हटाएँ, इनका उपयोग सामान्यतः SoC कोर वोल्टेज आपूर्ति को स्थिर करने के लिए किया जाता है।

-
असेंबल किए गए मॉडचिप को UT PCB पर संरेखित करें और कैस्टलेटेड छिद्रों का उपयोग करके इसे सोल्डर करें। सुनिश्चित करें कि कोर वोल्टेज आपूर्ति और ग्राउंड के बीच कोई शॉर्ट न हो।
- सबसे दाएँ कैस्टलेटेड छिद्र सही स्थिति में नहीं हैं। आप PCB को फिर से डिज़ाइन कर सकते हैं या UT PCB पर उजागर पैड को मास्क कर सकते हैं और कैस्टलेटेड छिद्रों को पास के ग्राउंड पैड से जोड़ सकते हैं (चित्र देखें)।
-
UT RST चिह्नित टेस्ट पॉइंट को कोर वोल्टेज रेगुलेटर के एनेबल पिन से कनेक्ट करें।
-
12V चिह्नित टेस्ट पॉइंट को UT PCB पर पास के 12V स्रोत से कनेक्ट करें।
-
सबसे दाएँ जम्पर पैड (बटन के नीचे) को eMMC D0 टेस्ट पॉइंट से कनेक्ट करें।
- हमें यह एक फर्मवेयर अपडेट के कारण करना पड़ा जिसने UART आउटपुट को अक्षम कर दिया था।
-
1V8 चिह्नित टेस्ट पॉइंट को UT PCB पर पास के 1.8V स्रोत से कनेक्ट करें (eMMC के बगल में एक डिकपलिंग कैपेसिटर है जो 1V8 से जुड़ा है)।
अब आप ग्लिचिंग शुरू करने के लिए पूरी तरह तैयार हैं, शुभकामनाएँ!
Python फ़ोल्डर में एक उदाहरण है जो दर्शाता है कि आप प्रयोग के लिए मॉडचिप का उपयोग कैसे शुरू कर सकते हैं।

ज्ञात समस्याएँ और सीमाएँ
- मॉडचिप उस फर्मवेयर अपडेट से पहले डिज़ाइन किया गया था जिसमें SpaceX ने सभी UART आउटपुट को अक्षम करने के लिए एक फ्यूज उड़ा दिया था। मॉडचिप शुरू में UART आउटपुट पर ट्रिगर करने के लिए डिज़ाइन किया गया था, लेकिन इसे eMMC D0 सिग्नल पर ट्रिगर करने के लिए अनुकूलित किया जा सकता है। एक नए रेविज़न में UART आउटपुट पढ़ने की क्षमता के साथ-साथ eMMC D0 डेटा पर ट्रिगर करने की क्षमता होना उपयोगी होगा। UART को BL2 में पुनः सक्षम किया जा सकता है और यह सत्यापित करने का एक आसान तरीका प्रदान कर सकता है कि ग्लिच सफल रहा।
- मॉडचिप गोलाकार उपयोगकर्ता टर्मिनल के लिए डिज़ाइन किया गया था, वही हमला वर्गाकार उपयोगकर्ता टर्मिनल पर भी काम करना चाहिए, लेकिन इसके लिए आपको एक नया PCB डिज़ाइन बनाना होगा।
- कैस्टलेटेड छिद्रों का एक भाग गलत स्थान पर है। डिज़ाइन का उपयोग करते समय सावधान रहें और माउंटिंग निर्देशों का तदनुसार पालन करें।
- ग्लिच सफल होने के बाद मॉडचिप को कंट्रोल PC से अनप्लग करने से डिश रीबूट हो सकती है। यह संभवतः MCP1405 MOSFET ड्राइवर के
IN A पिन पर पुल-डाउन रेसिस्टर की कमी के कारण है।
- प्रदान किया गया फर्मवेयर फॉल्ट इंजेक्शन प्रयासों को व्यवस्थित करने के लिए एक बाहरी कंट्रोल PC की अपेक्षा करता है। इसे (वर्तमान में अप्रयुक्त) दूसरे RP2040 Cortex-M0 कोर का उपयोग करके एक स्टैंड-अलोन मॉडचिप में बदलना काफी सीधा होना चाहिए।
अक्सर पूछे जाने वाले प्रश्न
- हम तैयार मॉडचिप नहीं बेच रहे हैं
- हम (पैच किए गए) स्टारलिंक यूज़र टर्मिनल फर्मवेयर प्रदान नहीं कर रहे हैं
- हम सटीक ग्लिच पैरामीटर प्रदान नहीं कर रहे हैं। प्रस्तुति स्लाइड्स में विभिन्न संकेत हैं और पैरामीटर इस बात पर निर्भर करेंगे कि आप फर्मवेयर को कैसे पैच करते हैं।