Firmware Analysis
Last updated
Last updated
AWS हैकिंग सीखें और अभ्यास करें:HackTricks प्रशिक्षण AWS रेड टीम विशेषज्ञ (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks प्रशिक्षण GCP रेड टीम विशेषज्ञ (GRTE)
फर्मवेयर महत्वपूर्ण सॉफ्टवेयर है जो उपकरणों को सही ढंग से काम करने की संभावना देता है जिससे हार्डवेयर घटकों और उपयोगकर्ताओं के संवाद को प्रबंधित और सुविधाजनक बनाने में सहायता मिलती है। यह स्थायी मेमोरी में संग्रहीत होता है, इसे सुनिश्चित करते हुए कि उपकरण महत्वपूर्ण निर्देशों तक पहुंच सकता है जब यह चालू किया जाता है, जिससे ऑपरेटिंग सिस्टम का लॉन्च होता है। फर्मवेयर की जांच और संभावना से संशोधन करना सुरक्षा दोषों की पहचान में एक महत्वपूर्ण कदम है।
जानकारी एकत्र करना एक उपकरण के निर्माण और उसमें उपयोग की तकनीकों को समझने का एक महत्वपूर्ण प्रारंभिक कदम है। इस प्रक्रिया में डेटा एकत्रित करना शामिल है:
CPU वास्तुकला और ऑपरेटिंग सिस्टम जिस पर यह चलता है
बूटलोडर विशेषताएँ
हार्डवेयर लेआउट और डेटाशीट्स
कोडबेस मैट्रिक्स और स्रोत स्थान
बाह्य पुस्तकालय और लाइसेंस प्रकार
अपडेट इतिहास और नियामक प्रमाणपत्र
वास्तुकला और फ्लो डायग्राम
सुरक्षा मूल्यांकन और पहचाने गए सुरक्षा दोष
इस उद्देश्य के लिए, ओपन-सोर्स इंटेलिजेंस (OSINT) उपकरण अमूल्य हैं, जैसे कि किसी भी उपलब्ध ओपन-सोर्स सॉफ्टवेयर घटकों का मैन्युअल और स्वचालित समीक्षा प्रक्रियाओं के माध्यम से विश्लेषण। Coverity Scan और Semmle’s LGTM जैसे उपकरण मुफ्त स्थिर विश्लेषण प्रदान करते हैं जिनका उपयोग संभावित मुद्दों को खोजने के लिए किया जा सकता है।
फर्मवेयर प्राप्त करने के लिए विभिन्न तरीकों से उपाय किया जा सकता है, प्रत्येक का अपना स्तर होता है:
स्रोत से (डेवलपर, निर्माता) सीधे
प्रदत्त निर्देशों से इसे बिल्ड करना
आधिकारिक समर्थन साइट से डाउनलोड करना
होस्ट किए गए फर्मवेयर फ़ाइलें खोजने के लिए Google डॉर्क क्वेरी का उपयोग करना
S3Scanner जैसे उपकरण के साथ सीधे क्लाउड स्टोरेज तक पहुंचना
मध्य में मानव-में-मध्य तकनीकों के माध्यम से अपडेट को अंतर्वर्ती करना
उपकरण से निकालना जैसे कनेक्शन के माध्यम से
उपकरण संचालन में अपडेट अनुरोधों के लिए स्निफिंग
हार्डकोड अपडेट इंडपॉइंट्स का पहचान करना और उपयोग करना
बूटलोडर या नेटवर्क से डंप करना
सभी अन्य विफल होने पर, उपयुक्त हार्डवेयर उपकरण का उपयोग करके स्टोरेज चिप को हटाना और पढ़ना
यदि आप उन उपकरणों के साथ बहुत कुछ नहीं मिलता है, तो छवि का एंट्रोपी जांचें binwalk -E <bin>
के साथ, यदि एंट्रोपी कम है, तो यह संभावना नहीं है कि यह एन्क्रिप्टेड है। यदि एंट्रोपी अधिक है, तो यह संभावना है कि यह एन्क्रिप्टेड है (या किसी प्रकार से संकुचित है)।
इसके अतिरिक्त, आप इन उपकरणों का उपयोग कर सकते हैं फर्मवेयर में एम्बेडेड फ़ाइल्स को निकालने के लिए:
File/Data Carving & Recovery Toolsया binvis.io (कोड) फ़ाइल की जांच करने के लिए।
पिछले टिप्पणीत उपकरणों जैसे binwalk -ev <bin>
के साथ, आपको फ़ाइल सिस्टम को निकालने में सक्षम होना चाहिए।
बिनवॉक आम तौर पर इसे एक फ़ोल्डर में निकालता है जिसे फ़ाइल सिस्टम प्रकार के रूप में नामित किया गया है, जो आम तौर पर निम्नलिखित में से एक होता है: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs।
कभी-कभी, बिनवॉक अपने सिग्नेचर में फ़ाइल सिस्टम का जादू बाइट नहीं होगा। इन मामलों में, बाइनरी से फ़ाइल सिस्टम का ऑफसेट खोजने और संकुचित फ़ाइल सिस्टम को निकालने के लिए बिनवॉक का उपयोग करें और निम्नलिखित चरणों का पालन करके फ़ाइल सिस्टम को मैन्युअल रूप से निकालें।
निम्नलिखित dd कमांड चलाएं और Squashfs फ़ाइल सिस्टम कार्विंग करें।
वैकल्पिक रूप से, निम्नलिखित कमांड भी चलाया जा सकता है।
$ dd if=DIR850L_REVB.bin bs=1 skip=$((0x1A0094)) of=dir.squashfs
स्क्वॉशएफएस के लिए (ऊपर दिए गए उदाहरण में उपयोग किया गया)
$ unsquashfs dir.squashfs
फ़ाइलें इसके बाद "squashfs-root
" निर्देशिका में होंगी।
सीपीआईओ आर्काइव फ़ाइलें
$ cpio -ivd --no-absolute-filenames -F <bin>
JFFS2 फ़ाइल सिस्टम के लिए
$ jefferson rootfsfile.jffs2
NAND फ़्लैश के साथ UBIFS फ़ाइल सिस्टम के लिए
$ ubireader_extract_images -u UBI -s <start_offset> <bin>
$ ubidump.py <bin>
एक बार फर्मवेयर प्राप्त हो जाए, इसे उसकी संरचना और संभावित सुरक्षा दोषों को समझने के लिए विश्लेषित करना महत्वपूर्ण है। इस प्रक्रिया में फर्मवेयर छवि से मूल्यवान डेटा को विश्लेषित करने के लिए विभिन्न उपकरणों का उपयोग किया जाता है।
एक सेट के रूप में कमांड प्रदान किए गए हैं जो बाइनरी फ़ाइल (जिसे <bin>
के रूप में संदर्भित किया गया है) की प्रारंभिक जांच के लिए मददगार हैं। ये कमांड फ़ाइल प्रकारों की पहचान करने, स्ट्रिंग्स निकालने, बाइनरी डेटा का विश्लेषण करने, और विभाजन और फ़ाइल सिस्टम विवरण को समझने में मदद करते हैं:
छवि के एन्क्रिप्शन स्थिति का मूल्यांकन करने के लिए एंट्रोपी को binwalk -E <bin>
के साथ जांचा जाता है। कम एंट्रोपी एन्क्रिप्शन की कमी की सुझाव देती है, जबकि उच्च एंट्रोपी संभावित एन्क्रिप्शन या संपीड़न की संकेत देती है।
एम्बेडेड फ़ाइल्स को निकालने के लिए, फ़ाइल-डेटा-कार्विंग-रिकवरी-टूल्स दस्तावेज़ और फ़ाइल जांच के लिए binvis.io जैसे उपकरण और संसाधनों की सिफारिश की जाती है।
binwalk -ev <bin>
का उपयोग करके, आम तौर पर फ़ाइलसिस्टम को निकाला जा सकता है, अक्सर एक नाम वाले निर्देशिका में (जैसे, squashfs, ubifs)। हालांकि, जब binwalk फाइलसिस्टम प्रकार को पहचानने में असफल होता है क्योंकि मैजिक बाइट्स गायब हैं, तो मैन्युअल निकालना आवश्यक होता है। इसमें शामिल है binwalk
का उपयोग करके फ़ाइलसिस्टम के ऑफसेट को ढूंढना, जिसके बाद dd
कमांड का उपयोग करके फ़ाइलसिस्टम को बाहर निकालना:
फ़ाइलसिस्टम को निकालने के बाद, सुरक्षा दोषों की खोज शुरू होती है। असुरक्षित नेटवर्क डेमन, हार्डकोड क्रेडेंशियल, एपीआई एंडपॉइंट, अपडेट सर्वर कार्यक्षमताएँ, अनकंपाइल्ड कोड, स्टार्टअप स्क्रिप्ट, और ऑफलाइन विश्लेषण के लिए कंपाइल्ड बाइनरी के लिए ध्यान दिया जाता है।
महत्वपूर्ण स्थान और वस्तुएँ जांचने के लिए शामिल हैं:
etc/shadow और etc/passwd उपयोगकर्ता क्रेडेंशियल के लिए
SSL प्रमाणपत्र और कुंजी etc/ssl में
संभावित जोखिमों के लिए कॉन्फ़िगरेशन और स्क्रिप्ट फ़ाइलें
और विश्लेषण के लिए एम्बेडेड बाइनरी
सामान्य आईओटी डिवाइस वेब सर्वर और बाइनरी
फ़ाइलसिस्टम के भीतर संवेदनशील जानकारी और दोषों का पता लगाने में कई उपकरण सहायक हैं:
LinPEAS और Firmwalker संवेदनशील जानकारी खोज के लिए
The Firmware Analysis and Comparison Tool (FACT) व्यापक फर्मवेयर विश्लेषण के लिए
FwAnalyzer, ByteSweep, ByteSweep-go, और EMBA स्थिर और गतिशील विश्लेषण के लिए
फ़ाइलसिस्टम में पाए जाने वाले स्रोत कोड और कंपाइल्ड बाइनरी को दोषों के लिए जांचना चाहिए। checksec.sh जैसे उनिक्स बाइनरी और PESecurity जैसे विंडोज बाइनरी के लिए उपकरण असुरक्षित बाइनरी की पहचान करने में मदद करते हैं।
फर्मवेयर का अनुकरण करने की प्रक्रिया या तो एक डिवाइस के संचालन या एक व्यक्तिगत कार्यक्रम का डायनामिक विश्लेषण संभव बनाती है। इस दृष्टिकोण को हार्डवेयर या आर्किटेक्चर निर्भरताओं के साथ चुनौतियों का सामना कर सकता है, लेकिन रूट फ़ाइलसिस्टम या विशेष बाइनरी को मैचिंग आर्किटेक्चर और एंडियनेस के साथ एक डिवाइस जैसे रास्पबेरी पाई या पूर्व-निर्मित वर्चुअल मशीन पर स्थानांतरित करना, और आगे के परीक्षण को सुविधाजनक बना सकता है।
एकल कार्यक्रमों की जांच के लिए, कार्यक्रम के एंडियनेस और सीपीयू आर्किटेक्चर की पहचान महत्वपूर्ण है।
MIPS आर्किटेक्चर बाइनरी का अनुकरण करने के लिए, निम्नलिखित कमांड का उपयोग किया जा सकता है:
और आवश्यक अनुकरण उपकरण स्थापित करने के लिए:
ARM बाइनरी के लिए, प्रक्रिया समान है, जहाँ एम्युलेटर के रूप में qemu-arm
का उपयोग किया जाता है।
Firmadyne, Firmware Analysis Toolkit और अन्य जैसे उपकरण, पूर्ण फर्मवेयर एम्युलेशन को सुविधाजनक बनाते हैं, प्रक्रिया को स्वचालित करते हैं और डायनामिक विश्लेषण में सहायक होते हैं।
इस स्थिति में, विश्लेषण के लिए वास्तविक या एम्युलेटेड डिवाइस वातावरण का उपयोग किया जाता है। ओएस और फाइल सिस्टम तक पहुंच बनाए रखना महत्वपूर्ण है। एम्युलेशन हार्डवेयर इंटरैक्शन को पूरी तरह से नकल नहीं कर सकती, जिससे कभी-कभी एम्युलेशन पुनरारंभ की आवश्यकता होती है। विश्लेषण को फाइल सिस्टम, उजागरित वेबपेज और नेटवर्क सेवाओं का शोध करना चाहिए, और बूटलोडर की कमजोरियों की जांच करनी चाहिए। फर्मवेयर अखंडता परीक्षण में खातरनाक वंशवाद संभावित दोषों की पहचान के लिए महत्वपूर्ण है।
रनटाइम विश्लेषण में, प्रक्रिया या बाइनरी के संचालन वातावरण के साथ बातचीत करना शामिल है, gdb-multiarch, Frida, और Ghidra जैसे उपकरणों का उपयोग करके ब्रेकपॉइंट सेट करने और फजिंग और अन्य तकनीकों के माध्यम से दोषों की पहचान करने के लिए।
पहचाने गए दोषों के लिए एक प्रमाण-ऑफ-कॉन्सेप्ट (PoC) विकसित करने के लिए लक्ष्य संरचना और निचले स्तर की भाषाओं में प्रोग्रामिंग की गहरी समझ की आवश्यकता है। एम्बेडेड सिस्टम में बाइनरी रनटाइम सुरक्षा सुरक्षा विधियाँ दुर्लभ हैं, लेकिन जब मौजूद होती हैं, तो Return Oriented Programming (ROP) जैसी तकनीकें आवश्यक हो सकती हैं।