mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-24 21:53:54 +00:00
.. | ||
README.md |
<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 स्वैग प्राप्त करें**](https://peass.creator-spring.com)
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
</details>
# मूल शब्दावली
* **स्मार्ट कॉन्ट्रैक्ट**: स्मार्ट कॉन्ट्रैक्ट्स बस **ब्लॉकचेन पर संग्रहीत प्रोग्राम होते हैं जो निर्धारित शर्तों के पूरा होने पर चलते हैं**। वे आमतौर पर **समझौते** के **निष्पादन** को स्वचालित करने के लिए इस्तेमाल होते हैं ताकि सभी प्रतिभागी तुरंत परिणाम के बारे में निश्चित हो सकें, बिना किसी मध्यस्थ की भागीदारी या समय की हानि के। (यहाँ से [here](https://www.ibm.com/topics/smart-contracts)).
* मूल रूप से, एक स्मार्ट कॉन्ट्रैक्ट एक **कोड का टुकड़ा** है जो तब निष्पादित होगा जब लोग कॉन्ट्रैक्ट को एक्सेस करेंगे और स्वीकार करेंगे। स्मार्ट कॉन्ट्रैक्ट्स **ब्लॉकचेन में चलते हैं** (इसलिए परिणाम अपरिवर्तनीय रूप से संग्रहीत होते हैं) और उन्हें लोगों द्वारा स्वीकार करने से पहले पढ़ा जा सकता है।
* **dApps**: **विकेंद्रीकृत अनुप्रयोग** स्मार्ट **कॉन्ट्रैक्ट्स** के ऊपर लागू किए जाते हैं। आमतौर पर उनके पास एक फ्रंट-एंड होता है जहाँ उपयोगकर्ता ऐप के साथ इंटरैक्ट कर सकते हैं, **बैक-एंड** सार्वजनिक होता है (इसलिए इसे ऑडिट किया जा सकता है) और इसे एक **स्मार्ट कॉन्ट्रैक्ट** के रूप में लागू किया जाता है। कभी-कभी डेटाबेस का उपयोग आवश्यक होता है, Ethereum ब्लॉकचेन प्रत्येक खाते को कुछ स्टोरेज आवंटित करता है।
* **टोकन्स & कॉइन्स**: एक **कॉइन** एक क्रिप्टोकरेंसी होती है जो **डिजिटल** **मनी** के रूप में काम करती है और एक **टोकन** कुछ ऐसा होता है जो कुछ **मूल्य का प्रतिनिधित्व** करता है लेकिन वह कॉइन नहीं होता।
* **यूटिलिटी टोकन्स**: ये टोकन्स उपयोगकर्ता को **बाद में किसी सेवा तक पहुँचने की अनुमति देते हैं** (यह कुछ ऐसा होता है जिसका किसी विशेष पर्यावरण में कुछ मूल्य होता है)।
* **सिक्योरिटी टोकन्स**: ये किसी संपत्ति के **स्वामित्व** का प्रतिनिधित्व करते हैं।
* **DeFi**: **विकेंद्रीकृत वित्त**।
* **DEX: विकेंद्रीकृत एक्सचेंज प्लेटफॉर्म्स**।
* **DAOs**: **विकेंद्रीकृत स्वायत्त संगठन**।
# सहमति तंत्र
एक ब्लॉकचेन लेनदेन को मान्यता दी जाने के लिए, इसे **ब्लॉकचेन** में **जोड़ा** जाना चाहिए। वैलिडेटर्स (माइनर्स) यह जोड़ने का काम करते हैं; अधिकांश प्रोटोकॉल में, वे ऐसा करने के लिए **इनाम प्राप्त करते हैं**। ब्लॉकचेन को सुरक्षित रखने के लिए, इसमें एक तंत्र होना चाहिए जो **एक दुर्भावनापूर्ण उपयोगकर्ता या समूह को वैलिडेशन के बहुमत पर कब्जा करने से रोके**।
प्रूफ ऑफ वर्क, एक अन्य आमतौर पर इस्तेमाल किया जाने वाला सहमति तंत्र, लेनदेन की पुष्टि के लिए गणनात्मक क्षमता का मूल्यांकन करता है, जिससे एक संभावित हमलावर को वैलिडेटर नेटवर्क की बड़ी हिस्सेदारी की गणनात्मक शक्ति प्राप्त करनी पड़ती है।
## प्रूफ ऑफ वर्क (PoW)
यह **गणनात्मक क्षमता के मूल्यांकन** का उपयोग करके लेनदेन की पुष्टि करता है, जिससे एक संभावित हमलावर को वैलिडेटर नेटवर्क की बड़ी हिस्सेदारी की गणनात्मक शक्ति प्राप्त करनी पड़ती है।\
**माइनर्स** कई लेनदेन का **चयन करेंगे** और फिर **प्रूफ ऑफ वर्क की गणना शुरू करेंगे**। **सबसे अधिक गणनात्मक संसाधनों वाला माइनर** अधिक संभावना से **पहले** प्रूफ ऑफ वर्क को **समाप्त करेगा** और सभी लेनदेनों की फीस प्राप्त करेगा।
## प्रूफ ऑफ स्टेक (PoS)
PoS इसे इस प्रकार पूरा करता है कि **वैलिडेटर्स के पास ब्लॉकचेन टोकन्स की कुछ मात्रा हो**, जिससे **संभावित हमलावरों को ब्लॉकचेन पर टोकन्स की बड़ी हिस्सेदारी प्राप्त करनी पड़ती है**।\
इस प्रकार की सहमति में, जितने अधिक टोकन्स एक माइनर के पास होते हैं, उतना अधिक संभावना होती है कि माइनर को अगले ब्लॉक को बनाने के लिए कहा जाएगा।\
PoW की तुलना में, इससे माइनर्स द्वारा खर्च की जा रही **ऊर्जा की खपत में काफी कमी** आई है।
# बिटकॉइन
## लेनदेन
एक साधारण **लेनदेन** एक पते से दूसरे पते पर **पैसे की चाल** होती है।\
बिटकॉइन में एक **पता** **सार्वजनिक** **कुंजी** का हैश होता है, इसलिए, किसी को एक पते से लेनदेन करने के लिए उस सार्वजनिक कुंजी से जुड़ी निजी कुंजी जाननी होती है (पता)।\
फिर, जब एक **लेनदेन** किया जाता है, तो यह पते की निजी कुंजी के साथ **हस्ताक्षरित** होता है ताकि दिखाया जा सके कि लेनदेन **वैध** है।
बिटकॉइन में एक डिजिटल हस्ताक्षर उत्पन्न करने का पहला भाग निम्नलिखित तरीके से गणितीय रूप में प्रस्तुत किया जा सकता है:\
_**Sig**_ = _**Fsig**_(_**Fhash**_(_**m**_),_**dA**_)
जहाँ:
* \_d\_A हस्ताक्षर करने वाली **निजी कुंजी** है
* _m_ **लेनद
2 btc --> 4 btc 3 btc 1 btc
यह मानते हुए कि एक आउटपुट चेंज है और दूसरा आउटपुट भुगतान है। दो व्याख्याएं हैं: भुगतान आउटपुट या तो 4 BTC का आउटपुट है या 1 BTC का आउटपुट है। लेकिन अगर 1 BTC आउटपुट भुगतान राशि है तो 3 BTC इनपुट अनावश्यक है, क्योंकि वॉलेट केवल 2 BTC इनपुट का उपयोग करके भुगतान कर सकता था और इससे कम माइनर शुल्क देना पड़ता। यह एक संकेत है कि वास्तविक भुगतान आउटपुट 4 BTC है और 1 BTC चेंज आउटपुट है।
यह उन लेन-देन के लिए एक समस्या है जिनमें एक से अधिक इनपुट होते हैं। इस लीक को ठीक करने का एक तरीका इतने इनपुट जोड़ना है जब तक कि चेंज आउटपुट किसी भी इनपुट से अधिक न हो, उदाहरण के लिए:
2 btc --> 4 btc 3 btc 6 btc 5 btc
## जबरन पता पुन: उपयोग
**जबरन पता पुन: उपयोग** या **प्रोत्साहित पता पुन: उपयोग** तब होता है जब एक आक्रमणकारी ब्लॉक चेन पर पहले से इस्तेमाल किए गए पतों पर बिटकॉइन की (अक्सर छोटी) राशि भेजता है। आक्रमणकारी की उम्मीद होती है कि उपयोगकर्ता या उनके वॉलेट सॉफ्टवेयर **भुगतानों को एक बड़े लेनदेन के इनपुट के रूप में उपयोग करेंगे जो सामान्य-इनपुट-स्वामित्व** ह्यूरिस्टिक के माध्यम से अन्य पतों का खुलासा करेगा। ये भुगतान अनजाने में पता पुन: उपयोग करने के लिए पता मालिक को विवश करने का एक तरीका समझा जा सकता है।
इस हमले को कभी-कभी गलत तरीके से **डस्ट हमला** कहा जाता है।
वॉलेट्स द्वारा सही व्यवहार यह है कि पहले से इस्तेमाल किए गए खाली पतों पर आए सिक्कों को खर्च न किया जाए।
## अन्य ब्लॉकचेन विश्लेषण
* **सटीक भुगतान राशियाँ**: चेंज के साथ लेनदेन से बचने के लिए, भुगतान को UTXO के बराबर होना चाहिए (जो बहुत अप्रत्याशित है)। इसलिए, **कोई चेंज पता नहीं होने वाला लेनदेन संभवतः एक ही उपयोगकर्ता के 2 पतों के बीच स्थानांतरण है**।
* **गोल संख्याएँ**: एक लेनदेन में, यदि कोई आउटपुट "**गोल संख्या**" है, तो यह बहुत संभावना है कि यह एक **मानव को भुगतान है जिसने उस** "गोल संख्या" **मूल्य निर्धारित किया है**, इसलिए दूसरा हिस्सा बचा हुआ होना चाहिए।
* **वॉलेट फिंगरप्रिंटिंग:** एक सावधान विश्लेषक कभी-कभी यह अनुमान लगा सकता है कि किस सॉफ्टवेयर ने एक निश्चित लेनदेन बनाया है, क्योंकि **विभिन्न वॉलेट सॉफ्टवेयर हमेशा लेनदेन को बिल्कुल एक ही तरीके से नहीं बनाते हैं**। वॉलेट फिंगरप्रिंटिंग का उपयोग चेंज आउटपुट का पता लगाने के लिए किया जा सकता है क्योंकि चेंज आउटपुट वह होता है जिसे उसी वॉलेट फिंगरप्रिंट के साथ खर्च किया जाता है।
* **राशि और समय संबंध**: यदि लेनदेन करने वाला व्यक्ति **समय** और/या **राशि** का **खुलासा** करता है, तो इसे आसानी से **पता लगाया जा सकता है**।
## ट्रैफिक विश्लेषण
कुछ संगठन **आपके ट्रैफिक को सूंघकर** आपको बिटकॉइन नेटवर्क में संवाद करते हुए देख सकते हैं।\
यदि आक्रमणकारी आपके नोड से एक लेनदेन या ब्लॉक **बाहर आते हुए देखता है जो पहले प्रवेश नहीं किया था**, तो वह लगभग निश्चितता के साथ जान सकता है कि **लेनदेन आपके द्वारा किया गया था या ब्लॉक आपके द्वारा खनन किया गया था**। इंटरनेट कनेक्शनों के शामिल होने के कारण, आक्रमणकारी **IP पते को खोजे गए बिटकॉइन जानकारी से जोड़ने में सक्षम होगा**।
एक हमलावर जो सभी इंटरनेट ट्रैफिक को सूंघ नहीं सकता है लेकिन जिसके पास **बहुत सारे बिटकॉइन नोड्स** हैं ताकि वह **स्रोतों के करीब** रह सके, वह उन IP पतों को जान सकता है जो लेनदेन या ब्लॉक की घोषणा कर रहे हैं।\
इसके अलावा, कुछ वॉलेट्स अपने अपुष्ट लेनदेनों को समय-समय पर पुन: प्रसारित करते हैं ताकि वे नेटवर्क के माध्यम से व्यापक रूप से प्रसारित होने और खनन किए जाने की संभावना रखते हैं।
## पतों के मालिक के बारे में जानकारी खोजने के लिए अन्य हमले
अधिक हमलों के लिए पढ़ें [https://en.bitcoin.it/wiki/Privacy](https://en.bitcoin.it/wiki/Privacy)
# गुमनाम बिटकॉइन्स
## गुमनाम रूप से बिटकॉइन्स प्राप्त करना
* **नकद व्यापार:** नकद का उपयोग करके बिटकॉइन खरीदें।
* **नकद प्रतिस्थापन:** उपहार कार्ड या इसी तरह की चीजें खरीदें और उन्हें ऑनलाइन बिटकॉइन के लिए विनिमय करें।
* **खनन:** खनन बिटकॉइन प्राप्त करने का सबसे गुमनाम तरीका है। यह [माइनिंग पूल्स](https://en.bitcoin.it/wiki/Pooled\_mining) के लिए भी लागू होता है क्योंकि आम तौर पर वे हैशर के IP पते को जानते हैं।
* **चोरी:** सिद्धांत रूप में गुमनाम बिटकॉइन प्राप्त करने का एक और तरीका उन्हें चुराना है।
## मिक्सर्स
एक उपयोगकर्ता **मिक्सिंग सेवा को बिटकॉइन भेजेगा** और सेवा **उपयोगकर्ता को अलग बिटकॉइन वापस भेजेगी**, शुल्क काटकर। सिद्धांत रूप में एक आक्रमणकारी जो ब्लॉकचेन का निरीक्षण कर रहा है, **आने वाले और जाने वाले लेनदेन को जोड़ नहीं पाएगा**।
हालांकि, उपयोगकर्ता को मिक्सिंग सेवा पर भरोसा करना होगा कि वह बिटकॉइन वापस करेगी और साथ ही यह भी कि वह प्राप्त और भेजे गए पैसे के बीच संबंधों के बारे में लॉग नहीं बचा रही है।\
कुछ अन्य सेवाएं भी मिक्सर्स के रूप में उपयोग की जा सकती हैं, जैसे कि बिटकॉइन कैसीनो जहां आप बिटकॉइन भेज सकते हैं और बाद में उन्हें प्राप्त कर सकते हैं।
## CoinJoin
**CoinJoin** **कई उपयोगकर्ताओं के लेनदेन को केवल एक में मिलाएगा** ताकि एक पर्यवेक्षक के लिए यह पता लगाना अधिक **कठिन** हो जाए कि **कौन सा इनपुट किस आउटपुट से संबंधित है**।\
यह एक नई स्तर की गोपनीयता प्रदान करता है, हालांकि, **कुछ** **लेनदेन** जहां कुछ इनपुट और आउटपुट राशियाँ संबंधित हैं या बाकी इनपुट्स और आउटपुट्स से बहुत अलग हैं **अभी भी बाहरी पर्यवेक्षक द्वारा संबंधित की जा सकती हैं**।
बिटकॉइन के ब्लॉकचेन पर (संभावित) CoinJoin लेनदेन आईडी के उदाहरण हैं `402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a` और `85378815f6ee170aa8c26694ee2df42b99cff7fa9357f073c1192fff1f540238`।
[**https://coinjoin.io/en**](https://coinjoin.io/en)\
**Coinjoin
2 btc --> 3 btc 5 btc 4 btc
```markdown
इसे एक साधारण लेनदेन के रूप में समझा जा सकता है जो कहीं भुगतान कर रहा है जिसमें बचा हुआ बदलाव है (अभी के लिए यह प्रश्न अनदेखा करें कि कौन सा आउटपुट भुगतान है और कौन सा बदलाव है)। इस लेनदेन को समझने का एक अन्य तरीका यह है कि 2 BTC इनपुट एक व्यापारी के स्वामित्व में है और 5 BTC उनके ग्राहक के स्वामित्व में है, और इस लेनदेन में ग्राहक व्यापारी को 1 BTC का भुगतान कर रहा है। यह जानने का कोई तरीका नहीं है कि इन दो व्याख्याओं में से कौन सी सही है। परिणाम एक coinjoin लेनदेन है जो सामान्य-इनपुट-स्वामित्व ह्यूरिस्टिक को तोड़ता है और गोपनीयता में सुधार करता है, लेकिन यह भी **अप्रत्यक्ष और किसी भी सामान्य बिटकॉइन लेनदेन से अप्रभेद्य है**।
यदि PayJoin लेनदेन यहां तक कि मध्यम रूप से भी इस्तेमाल किए जाते हैं, तो यह **सामान्य-इनपुट-स्वामित्व ह्यूरिस्टिक को व्यवहार में पूरी तरह से दोषपूर्ण बना देगा**। चूंकि वे अप्रत्यक्ष हैं, हमें यह भी पता नहीं चलेगा कि वे आज इस्तेमाल किए जा रहे हैं या नहीं। चूंकि लेनदेन निगरानी कंपनियां ज्यादातर उस ह्यूरिस्टिक पर निर्भर करती हैं, 2019 तक PayJoin विचार के बारे में बहुत उत्साह है।
# बिटकॉइन गोपनीयता अच्छी प्रथाएं
## वॉलेट सिंक्रनाइज़ेशन
बिटकॉइन वॉलेट्स को किसी तरह अपने बैलेंस और इतिहास की जानकारी प्राप्त करनी चाहिए। 2018 के अंत तक सबसे व्यावहारिक और निजी मौजूदा समाधान **पूर्ण नोड वॉलेट** (जो अधिकतम निजी है) और **क्लाइंट-साइड ब्लॉक फ़िल्टरिंग** (जो बहुत अच्छी है) का उपयोग करना है।
* **पूर्ण नोड:** पूर्ण नोड पूरे ब्लॉकचेन को डाउनलोड करते हैं जिसमें बिटकॉइन में होने वाले हर ऑन-चेन [लेनदेन](https://en.bitcoin.it/wiki/Transaction) शामिल होते हैं। इसलिए एक विरोधी जो उपयोगकर्ता के इंटरनेट कनेक्शन की निगरानी कर रहा है, वह यह नहीं जान पाएगा कि उपयोगकर्ता किन लेनदेनों या पतों में रुचि रखता है।
* **क्लाइंट-साइड ब्लॉक फ़िल्टरिंग:** क्लाइंट-साइड ब्लॉक फ़िल्टरिंग का काम **फ़िल्टर्स** बनाने से होता है जिसमें एक ब्लॉक में हर लेनदेन के लिए सभी **पते** शामिल होते हैं। फ़िल्टर्स यह परीक्षण कर सकते हैं कि कोई **तत्व सेट में है** या नहीं; गलत सकारात्मक संभव हैं लेकिन गलत नकारात्मक नहीं। एक हल्के वॉलेट को हर **ब्लॉक** के लिए सभी फ़िल्टर्स को **डाउनलोड** करना होगा और अपने **स्वयं के** **पतों** के साथ मेल खाने की जांच करनी होगी। जिन ब्लॉकों में मेल खाते हैं, उन्हें पीयर-टू-पीयर नेटवर्क से पूरी तरह से डाउनलोड किया जाएगा, और उन ब्लॉकों का उपयोग वॉलेट के इतिहास और वर्तमान बैलेंस प्राप्त करने के लिए किया जाएगा।
## Tor
बिटकॉइन नेटवर्क एक पीयर-टू-पीयर नेटवर्क का उपयोग करता है, जिसका अर्थ है कि अन्य पीयर्स आपका IP पता जान सकते हैं। इसीलिए यह सिफारिश की जाती है कि **जब भी आप बिटकॉइन नेटवर्क के साथ इंटरैक्ट करना चाहते हैं तो Tor के माध्यम से कनेक्ट करें**।
## पते के पुन: उपयोग से बचना
**पतों का एक से अधिक बार उपयोग होना गोपनीयता के लिए बहुत हानिकारक है क्योंकि इससे अधिक ब्लॉकचेन लेनदेन एक साथ जुड़ जाते हैं जिससे साबित होता है कि वे एक ही संस्था द्वारा बनाए गए थे**। बिटकॉइन का सबसे निजी और सुरक्षित उपयोग यह है कि प्रत्येक व्यक्ति को जो आपको भुगतान करता है उसे एक ब्रांड **नया पता भेजें**। प्राप्त सिक्कों के खर्च होने के बाद पते का फिर कभी उपयोग नहीं किया जाना चाहिए। इसके अलावा, बिटकॉइन भेजते समय एक ब्रांड नया बिटकॉइन पता मांगा जाना चाहिए। सभी अच्छे बिटकॉइन वॉलेट्स में एक उपयोगकर्ता इंटरफ़ेस होता है जो पते के पुन: उपयोग को हतोत्साहित करता है।
## एकाधिक लेनदेन
**किसी को एक से अधिक ऑन-चेन लेनदेन के साथ भुगतान करना** राशि-आधारित गोपनीयता हमलों जैसे राशि सहसंबंध और गोल नंबरों की शक्ति को काफी कम कर सकता है। उदाहरण के लिए, यदि उपयोगकर्ता किसी को 5 BTC का भुगतान करना चाहता है और वे नहीं चाहते कि 5 BTC का मूल्य आसानी से खोजा जा सके, तो वे 2 BTC और 3 BTC के मूल्य के लिए दो लेनदेन भेज सकते हैं जो मिलकर 5 BTC बनाते हैं।
## बदलाव से बचना
बदलाव से बचना वह है जहां लेनदेन इनपुट्स और आउटपुट्स को सावधानीपूर्वक चुना जाता है ताकि बिल्कुल भी बदलाव आउटपुट की आवश्यकता न हो। **बदलाव आउटपुट न होना गोपनीयता के लिए उत्कृष्ट है**, क्योंकि यह बदलाव का पता लगाने वाले ह्यूरिस्टिक्स को तोड़ता है।
## एकाधिक बदलाव आउटपुट्स
यदि बदलाव से बचना संभव नहीं है तो **एक से अधिक बदलाव आउटपुट बनाना गोपनीयता में सुधार कर सकता है**। यह भी बदलाव का पता लगाने वाले ह्यूरिस्टिक्स को तोड़ता है जो आमतौर पर मानते हैं कि केवल एक ही बदलाव आउटपुट होता है। चूंकि यह विधि सामान्य से अधिक ब्लॉक स्थान का उपयोग करती है, बदलाव से बचना पसंदीदा है।
# Monero
जब Monero विकसित किया गया था, तो **पूर्ण गुमनामी** की गहरी आवश्यकता थी जिसे इसने हल करने की कोशिश की थी, और बड़े पैमाने पर, इसने उस रिक्ति को भर दिया है