SPI

Reading time: 6 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

Basic Information

SPI (Serial Peripheral Interface) एक समकालिक श्रृंखला संचार प्रोटोकॉल है जो एम्बेडेड सिस्टम में ICs (इंटीग्रेटेड सर्किट) के बीच छोटे दूरी के संचार के लिए उपयोग किया जाता है। SPI संचार प्रोटोकॉल मास्टर-गुलाम आर्किटेक्चर का उपयोग करता है जिसे घड़ी और चिप चयन सिग्नल द्वारा संचालित किया जाता है। एक मास्टर-गुलाम आर्किटेक्चर में एक मास्टर (आमतौर पर एक माइक्रोप्रोसेसर) होता है जो EEPROM, सेंसर, नियंत्रण उपकरण आदि जैसे बाहरी परिधीयों का प्रबंधन करता है, जिन्हें गुलाम माना जाता है।

कई गुलामों को एक मास्टर से जोड़ा जा सकता है लेकिन गुलाम एक-दूसरे के साथ संचार नहीं कर सकते। गुलामों का प्रबंधन दो पिनों, घड़ी और चिप चयन द्वारा किया जाता है। चूंकि SPI एक समकालिक संचार प्रोटोकॉल है, इनपुट और आउटपुट पिन घड़ी सिग्नल का पालन करते हैं। चिप चयन का उपयोग मास्टर द्वारा एक गुलाम का चयन करने और उसके साथ बातचीत करने के लिए किया जाता है। जब चिप चयन उच्च होता है, तो गुलाम उपकरण का चयन नहीं किया जाता है जबकि जब यह निम्न होता है, तो चिप का चयन किया गया है और मास्टर गुलाम के साथ बातचीत करेगा।

MOSI (मास्टर आउट, गुलाम इन) और MISO (मास्टर इन, गुलाम आउट) डेटा भेजने और प्राप्त करने के लिए जिम्मेदार होते हैं। डेटा को MOSI पिन के माध्यम से गुलाम उपकरण पर भेजा जाता है जबकि चिप चयन को निम्न रखा जाता है। इनपुट डेटा में निर्देश, मेमोरी पते या गुलाम उपकरण विक्रेता के डेटा शीट के अनुसार डेटा होता है। एक मान्य इनपुट पर, MISO पिन मास्टर को डेटा प्रसारित करने के लिए जिम्मेदार होता है। आउटपुट डेटा ठीक अगले घड़ी चक्र में भेजा जाता है जब इनपुट समाप्त होता है। MISO पिन डेटा को तब तक प्रसारित करता है जब तक डेटा पूरी तरह से प्रसारित नहीं हो जाता या मास्टर चिप चयन पिन को उच्च सेट नहीं करता (इस मामले में, गुलाम प्रसारण बंद कर देगा और मास्टर उस घड़ी चक्र के बाद सुन नहीं पाएगा)।

Dumping Firmware from EEPROMs

फर्मवेयर को डंप करना फर्मवेयर का विश्लेषण करने और उनमें कमजोरियों को खोजने के लिए उपयोगी हो सकता है। अक्सर, फर्मवेयर इंटरनेट पर उपलब्ध नहीं होता है या मॉडल नंबर, संस्करण आदि जैसे कारकों के भिन्नताओं के कारण अप्रासंगिक होता है। इसलिए, खतरे की खोज करते समय विशिष्ट होने के लिए भौतिक उपकरण से सीधे फर्मवेयर निकालना सहायक हो सकता है।

सीरियल कंसोल प्राप्त करना सहायक हो सकता है, लेकिन अक्सर ऐसा होता है कि फ़ाइलें केवल पढ़ने के लिए होती हैं। यह विभिन्न कारणों से विश्लेषण को सीमित करता है। उदाहरण के लिए, पैकेज भेजने और प्राप्त करने के लिए आवश्यक उपकरण फर्मवेयर में नहीं होंगे। इसलिए, उन्हें रिवर्स इंजीनियर करने के लिए बाइनरी निकालना व्यवहार्य नहीं है। इसलिए, सिस्टम पर पूरा फर्मवेयर डंप करना और विश्लेषण के लिए बाइनरी निकालना बहुत सहायक हो सकता है।

इसके अलावा, रेड रेमिंग के दौरान और उपकरणों तक भौतिक पहुंच प्राप्त करने के दौरान, फर्मवेयर को डंप करना फ़ाइलों को संशोधित करने या दुर्भावनापूर्ण फ़ाइलों को इंजेक्ट करने में मदद कर सकता है और फिर उन्हें मेमोरी में फिर से फ्लैश करना जो उपकरण में एक बैकडोर लगाने में सहायक हो सकता है। इसलिए, फर्मवेयर डंपिंग के साथ कई संभावनाएँ खोली जा सकती हैं।

CH341A EEPROM Programmer and Reader

यह उपकरण EEPROMs से फर्मवेयर डंप करने और उन्हें फर्मवेयर फ़ाइलों के साथ फिर से फ्लैश करने के लिए एक सस्ता उपकरण है। यह कंप्यूटर BIOS चिप्स (जो केवल EEPROMs हैं) के साथ काम करने के लिए एक लोकप्रिय विकल्प रहा है। यह उपकरण USB के माध्यम से कनेक्ट होता है और शुरू करने के लिए न्यूनतम उपकरणों की आवश्यकता होती है। इसके अलावा, यह आमतौर पर कार्य को जल्दी पूरा करता है, इसलिए भौतिक उपकरणों की पहुंच में भी सहायक हो सकता है।

drawing

CH341a प्रोग्रामर के साथ EEPROM मेमोरी को कनेक्ट करें और उपकरण को कंप्यूटर में प्लग करें। यदि उपकरण का पता नहीं चल रहा है, तो कंप्यूटर में ड्राइवर स्थापित करने का प्रयास करें। इसके अलावा, सुनिश्चित करें कि EEPROM सही दिशा में कनेक्ट किया गया है (आमतौर पर, VCC पिन को USB कनेक्टर के विपरीत दिशा में रखें) अन्यथा, सॉफ़्टवेयर चिप का पता नहीं लगा पाएगा। यदि आवश्यक हो तो चित्र का संदर्भ लें:

drawing drawing

अंत में, फर्मवेयर को डंप करने के लिए flashrom, G-Flash (GUI) आदि जैसे सॉफ़्टवेयर का उपयोग करें। G-Flash एक न्यूनतम GUI उपकरण है जो तेज है और स्वचालित रूप से EEPROM का पता लगाता है। यह तब सहायक हो सकता है जब फर्मवेयर को जल्दी निकाला जाना हो, बिना दस्तावेज़ीकरण के साथ अधिक छेड़छाड़ किए।

drawing

फर्मवेयर को डंप करने के बाद, बाइनरी फ़ाइलों पर विश्लेषण किया जा सकता है। strings, hexdump, xxd, binwalk आदि जैसे उपकरणों का उपयोग फर्मवेयर के बारे में और साथ ही पूरे फ़ाइल सिस्टम के बारे में बहुत सारी जानकारी निकालने के लिए किया जा सकता है।

फर्मवेयर से सामग्री निकालने के लिए, binwalk का उपयोग किया जा सकता है। Binwalk हेक्स सिग्नेचर के लिए विश्लेषण करता है और बाइनरी फ़ाइल में फ़ाइलों की पहचान करता है और उन्हें निकालने में सक्षम है।

binwalk -e <filename>

यह .bin या .rom हो सकता है जो उपकरणों और कॉन्फ़िगरेशन के अनुसार होता है।

caution

ध्यान दें कि फर्मवेयर निकासी एक नाजुक प्रक्रिया है और इसके लिए बहुत धैर्य की आवश्यकता होती है। किसी भी गलत हैंडलिंग से फर्मवेयर भ्रष्ट हो सकता है या यहां तक कि इसे पूरी तरह से मिटा सकता है और डिवाइस को अनुपयोगी बना सकता है। फर्मवेयर निकालने का प्रयास करने से पहले विशेष डिवाइस का अध्ययन करना अनुशंसित है।

Bus Pirate + flashrom

ध्यान दें कि भले ही Pirate Bus का PINOUT MOSI और MISO के लिए SPI से कनेक्ट करने के लिए पिन दिखाता है, कुछ SPIs पिन को DI और DO के रूप में दिखा सकते हैं। MOSI -> DI, MISO -> DO

Windows या Linux में आप flashrom प्रोग्राम का उपयोग करके फ्लैश मेमोरी की सामग्री को डंप करने के लिए कुछ इस तरह चला सकते हैं:

bash
# In this command we are indicating:
# -VV Verbose
# -c <chip> The chip (if you know it better, if not, don'tindicate it and the program might be able to find it)
# -p <programmer> In this case how to contact th chip via the Bus Pirate
# -r <file> Image to save in the filesystem
flashrom -VV -c "W25Q64.V" -p buspirate_spi:dev=COM3 -r flash_content.img

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें