hacktricks/cryptography/electronic-code-book-ecb.md

79 lines
10 KiB
Markdown

<details>
<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) कलेक्शन, [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)** पर फॉलो** करें।
* **हैकिंग ट्रिक्स साझा करें, HackTricks** और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके।
</details>
# ECB
(ECB) इलेक्ट्रॉनिक कोड बुक - सममित्र एन्क्रिप्शन योजना जो **प्रत्येक ब्लॉक को साफ पाठ के ब्लॉक से बदल देती है**। यह **सरलतम** एन्क्रिप्शन योजना है। मुख्य विचार यह है कि स्पष्ट पाठ को **N बिट के ब्लॉक में विभाजित** किया जाता है (इनपुट डेटा, एन्क्रिप्शन एल्गोरिदम के ब्लॉक का आकार पर निर्भर करता है) और फिर केवल एक ही कुंजी का उपयोग करके प्रत्येक स्पष्ट पाठ के ब्लॉक को एन्क्रिप्ट (डिक्रिप्ट) करना है।
![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/ECB_decryption.svg/601px-ECB_decryption.svg.png)
ECB का उपयोग करने के कई सुरक्षा प्रभाव होते हैं:
* **एन्क्रिप्टेड संदेश से ब्लॉक हटा दिए जा सकते हैं**
* **एन्क्रिप्टेड संदेश से ब्लॉक चले जा सकते हैं**
# सुरक्षा दोष का पता लगाना
कल्पना करें कि आप कई बार एक एप्लिकेशन में लॉगिन करते हैं और आप **हमेशा एक ही कुकी** प्राप्त करते हैं। यह इसलिए है क्योंकि एप्लिकेशन की कुकी **`<उपयोगकर्ता नाम>|<पासवर्ड>`** है।\
फिर, आप नए उपयोगकर्ताओं को उत्पन्न करते हैं, जिनमें दोनों का **लंबा पासवर्ड** है और **लगभग** **एक ही** **उपयोगकर्ता नाम** है।\
आप पाता लगाते हैं कि **8B के ब्लॉक** जहां **दोनों उपयोगकर्ताओं की जानकारी** समान है, **बराबर** हैं। तब, आपको लगता है कि यह हो सकता है क्योंकि **ECB का उपयोग हो रहा है**
जैसे निम्नलिखित उदाहरण में। ध्यान दें कि इन **2 डिकोड कुकी** में कई बार ब्लॉक **`\x23U\xE45K\xCB\x21\xC8`** हैं।
```
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
```
यह इसलिए है क्योंकि **कुकीज़ के उस उपयोक्ता नाम और पासवर्ड में कई बार अक्षर "a" शामिल थे** (उदाहरण के लिए)। वे **ब्लॉक** जो **विभिन्न** हैं, वे उन ब्लॉक्स हैं जिनमें **कम से कम 1 विभिन्न वर्ण था** (शायद विभाजक "|" या उपयोक्ता नाम में कोई आवश्यक भिन्नता)।
अब, हमलावर को बस यह पता लगाना है कि प्रारूप `<उपयोक्ता नाम><विभाजक><पासवर्ड>` है या `<पासवर्ड><विभाजक><उपयोक्ता नाम>` है। इसके लिए, वह **कई उपयोक्ता नाम** उत्पन्न कर सकता है **जिनमें समान और लंबे उपयोक्ता नाम और पासवर्ड हों** जब तक वह प्रारूप और विभाजक की लंबाई को न पाए:
| उपयोक्ता नाम की लंबाई: | पासवर्ड की लंबाई: | उपयोक्ता नाम + पासवर्ड की लंबाई: | कुकी की लंबाई (डिकोडिंग के बाद): |
| ---------------- | ---------------- | ------------------------- | --------------------------------- |
| 2 | 2 | 4 | 8 |
| 3 | 3 | 6 | 8 |
| 3 | 4 | 7 | 8 |
| 4 | 4 | 8 | 16 |
| 7 | 7 | 14 | 16 |
# सुरक्षा दोष का शोधन
## पूरे ब्लॉक हटाना
कुकी के प्रारूप को जानकर (`<उपयक्त >|<सवर्ड>`), उपयोक्ता नाम `एडमिन` का अनुकरण करने के लिए एक नया उपयोक्ता बनाएं `aaaaaaaaadmin` और कुकी प्राप्त करें और इसे डिकोड करें:
```
\x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
```
हम पहले बनाए गए पैटर्न `\x23U\xE45K\xCB\x21\xC8` को देख सकते हैं जो पिछले उपयोगकर्ता नाम के साथ बनाया गया था जिसमें केवल `a` शामिल था।\
फिर, आप पहले 8B ब्लॉक को हटा सकते हैं और आपको उपयोगकर्ता नाम `admin` के लिए एक मान्य कुकी मिलेगी:
```
\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
```
## ब्लॉक्स को हटाना
कई डेटाबेस में `WHERE username='admin';` खोजना या `WHERE username='admin ';` खोजना समान होता है _(अतिरिक्त रिक्त स्थानों का ध्यान दें)_
इसलिए, उपयोगकर्ता `admin` का अनुकरण करने का एक और तरीका है:
* एक उपयोगकर्ता नाम जेनरेट करें जो: `len(<username>) + len(<delimiter) % len(block)`. `8B` ब्लॉक साइज के साथ आप `username ` नामक उपयोगकर्ता नाम जेनरेट कर सकते हैं, डिलीमिटर `|` के साथ टुकड़ा `<username><delimiter>` 2 ब्लॉक्स को जेनरेट करेगा।
* फिर, एक पासवर्ड जेनरेट करें जो उस उपयोगकर्ता नाम और रिक्त स्थानों को भरेगा, जिसे हम अनुकरण करना चाहते हैं, जैसे: `admin `
इस उपयोगकर्ता की कुकी 3 ब्लॉक्स से बनी होगी: पहले 2 उपयोगकर्ता के ब्लॉक्स + डिलीमिटर और तीसरा पासवर्ड का ब्लॉक (जो उपयोगकर्ता नाम का नकली है): `username |admin `
** फिर, बस पहले ब्लॉक को आखिरी ब्लॉक के साथ बदल दें और उपयोगकर्ता `admin` का अनुकरण कर रहे होंगे: `admin |username`**
# संदर्भ
* [http://cryptowiki.net/index.php?title=Electronic_Code_Book\_(ECB)](http://cryptowiki.net/index.php?title=Electronic_Code_Book_\(ECB\))