mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/android-app-pentesting/android-task-h
This commit is contained in:
parent
dbec9e567a
commit
a45b667258
@ -2,44 +2,50 @@
|
|||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
## कार्य, बैक स्टैक और अग्रभूमि गतिविधियाँ
|
## Task, Back Stack and Foreground Activities
|
||||||
|
|
||||||
Android में, एक **कार्य** मूल रूप से गतिविधियों का एक सेट है जिससे उपयोगकर्ता एक विशिष्ट कार्य पूरा करने के लिए इंटरैक्ट करते हैं, जो एक **बैक स्टैक** के भीतर व्यवस्थित होता है। यह स्टैक गतिविधियों को इस आधार पर क्रमबद्ध करता है कि उन्हें कब खोला गया था, सबसे हाल की गतिविधि को शीर्ष पर **अग्रभूमि गतिविधि** के रूप में प्रदर्शित करता है। किसी भी समय, केवल यह गतिविधि स्क्रीन पर दिखाई देती है, जिससे यह **अग्रभूमि कार्य** का हिस्सा बनती है।
|
Android में, एक **task** मूल रूप से गतिविधियों का एक सेट है जिससे उपयोगकर्ता एक विशिष्ट कार्य पूरा करने के लिए इंटरैक्ट करते हैं, जो एक **back stack** के भीतर व्यवस्थित होता है। यह स्टैक गतिविधियों को इस आधार पर क्रमबद्ध करता है कि उन्हें कब खोला गया था, सबसे हाल की गतिविधि को शीर्ष पर **foreground activity** के रूप में प्रदर्शित करता है। किसी भी समय, केवल यह गतिविधि स्क्रीन पर दिखाई देती है, जिससे यह **foreground task** का हिस्सा बन जाती है।
|
||||||
|
|
||||||
गतिविधि संक्रमण का त्वरित विश्लेषण यहाँ है:
|
यहां गतिविधि संक्रमण का एक त्वरित विवरण है:
|
||||||
|
|
||||||
- **गतिविधि 1** अग्रभूमि में एकमात्र गतिविधि के रूप में शुरू होती है।
|
- **Activity 1** केवल foreground में एकमात्र गतिविधि के रूप में शुरू होती है।
|
||||||
- **गतिविधि 2** को लॉन्च करने से **गतिविधि 1** को बैक स्टैक में धकेल दिया जाता है, **गतिविधि 2** को अग्रभूमि में लाते हुए।
|
- **Activity 2** को लॉन्च करने से **Activity 1** को back stack में धकेल दिया जाता है, **Activity 2** को foreground में लाते हुए।
|
||||||
- **गतिविधि 3** शुरू करने से **गतिविधि 1** और **गतिविधि 2** को स्टैक में और पीछे ले जाया जाता है, **गतिविधि 3** अब सामने होती है।
|
- **Activity 3** शुरू करने से **Activity 1** और **Activity 2** को स्टैक में और पीछे ले जाया जाता है, **Activity 3** अब सामने होती है।
|
||||||
- **गतिविधि 3** को बंद करने से **गतिविधि 2** को फिर से अग्रभूमि में लाया जाता है, जो Android के सुव्यवस्थित कार्य नेविगेशन तंत्र को प्रदर्शित करता है।
|
- **Activity 3** को बंद करने से **Activity 2** फिर से foreground में आ जाती है, जो Android के सुव्यवस्थित कार्य नेविगेशन तंत्र को प्रदर्शित करती है।
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
## कार्य संबंधी हमले
|
## Task affinity attack
|
||||||
|
|
||||||
### कार्य संबंध और लॉन्च मोड का अवलोकन
|
### Overview of Task Affinity and Launch Modes
|
||||||
|
|
||||||
Android अनुप्रयोगों में, **कार्य संबंध** एक गतिविधि के पसंदीदा कार्य को निर्दिष्ट करता है, जो आमतौर पर ऐप के पैकेज नाम के साथ मेल खाता है। यह सेटअप हमले को प्रदर्शित करने के लिए एक प्रमाण-ऑफ-ध-concept (PoC) ऐप बनाने में सहायक है।
|
Android अनुप्रयोगों में, **task affinity** एक गतिविधि के पसंदीदा कार्य को निर्दिष्ट करता है, जो आमतौर पर ऐप के पैकेज नाम के साथ मेल खाता है। यह सेटअप हमले को प्रदर्शित करने के लिए एक प्रमाण-ऑफ-कॉन्सेप्ट (PoC) ऐप बनाने में महत्वपूर्ण है।
|
||||||
|
|
||||||
### लॉन्च मोड
|
### Launch Modes
|
||||||
|
|
||||||
`launchMode` विशेषता कार्यों के भीतर गतिविधि उदाहरणों के प्रबंधन को निर्देशित करती है। **singleTask** मोड इस हमले के लिए महत्वपूर्ण है, जो मौजूदा गतिविधि उदाहरणों और कार्य संबंध मेल के आधार पर तीन परिदृश्यों को निर्धारित करता है। यह शोषण हमलावर के ऐप की क्षमता पर निर्भर करता है कि वह लक्षित ऐप के कार्य संबंध की नकल कर सके, जिससे Android सिस्टम को हमलावर के ऐप को लक्षित ऐप के बजाय लॉन्च करने के लिए गुमराह किया जा सके।
|
`launchMode` विशेषता कार्यों के भीतर गतिविधि उदाहरणों के प्रबंधन को निर्देशित करती है। **singleTask** मोड इस हमले के लिए महत्वपूर्ण है, जो मौजूदा गतिविधि उदाहरणों और कार्य संबंधी मेल के आधार पर तीन परिदृश्यों को निर्धारित करता है। यह शोषण हमलावर के ऐप की क्षमता पर निर्भर करता है कि वह लक्षित ऐप के कार्य संबंधी मेल की नकल कर सके, जिससे Android सिस्टम को लक्षित ऐप के बजाय हमलावर के ऐप को लॉन्च करने के लिए भटकाया जा सके।
|
||||||
|
|
||||||
### विस्तृत हमले के चरण
|
### Detailed Attack Steps
|
||||||
|
|
||||||
1. **दुष्ट ऐप इंस्टॉलेशन**: पीड़ित अपने डिवाइस पर हमलावर का ऐप इंस्टॉल करता है।
|
1. **Malicious App Installation**: पीड़ित अपने डिवाइस पर हमलावर का ऐप इंस्टॉल करता है।
|
||||||
2. **प्रारंभिक सक्रियण**: पीड़ित पहले दुष्ट ऐप को खोलता है, जिससे हमले के लिए डिवाइस सेटअप होता है।
|
2. **Initial Activation**: पीड़ित पहले दुर्भावनापूर्ण ऐप खोलता है, जिससे हमले के लिए डिवाइस सेटअप होता है।
|
||||||
3. **लक्षित ऐप लॉन्च प्रयास**: पीड़ित लक्षित ऐप को खोलने का प्रयास करता है।
|
3. **Target App Launch Attempt**: पीड़ित लक्षित ऐप खोलने का प्रयास करता है।
|
||||||
4. **हाइजैक निष्पादन**: मेल खाते कार्य संबंध के कारण, दुष्ट ऐप लक्षित ऐप के स्थान पर लॉन्च होता है।
|
4. **Hijack Execution**: किसी बिंदु पर ऐप **singleTask** दृश्य खोलने की कोशिश करता है। मेल खाते कार्य संबंध के कारण, लक्षित ऐप के स्थान पर दुर्भावनापूर्ण ऐप लॉन्च होता है।
|
||||||
5. **धोखा**: दुष्ट ऐप लक्षित ऐप के समान एक नकली लॉगिन स्क्रीन प्रस्तुत करता है, उपयोगकर्ता को संवेदनशील जानकारी दर्ज करने के लिए धोखा देता है।
|
5. **Deception**: दुर्भावनापूर्ण ऐप लक्षित ऐप के समान एक नकली लॉगिन स्क्रीन प्रस्तुत करता है, उपयोगकर्ता को संवेदनशील जानकारी दर्ज करने के लिए धोखा देता है।
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> ध्यान दें कि इस हमले के काम करने के लिए कमजोर दृश्य को **exported to true** होने की आवश्यकता नहीं है और न ही यह मुख्य गतिविधि होनी चाहिए।
|
||||||
|
|
||||||
इस हमले के व्यावहारिक कार्यान्वयन के लिए, GitHub पर Task Hijacking Strandhogg रिपॉजिटरी देखें: [Task Hijacking Strandhogg](https://github.com/az0mb13/Task_Hijacking_Strandhogg).
|
इस हमले के व्यावहारिक कार्यान्वयन के लिए, GitHub पर Task Hijacking Strandhogg रिपॉजिटरी देखें: [Task Hijacking Strandhogg](https://github.com/az0mb13/Task_Hijacking_Strandhogg).
|
||||||
|
|
||||||
### रोकथाम के उपाय
|
### Prevention Measures
|
||||||
|
|
||||||
ऐसे हमलों को रोकने के लिए, डेवलपर्स `taskAffinity` को एक खाली स्ट्रिंग पर सेट कर सकते हैं और `singleInstance` लॉन्च मोड का विकल्प चुन सकते हैं, जिससे उनके ऐप का अन्य ऐप्स से अलगाव सुनिश्चित होता है। `onBackPressed()` फ़ंक्शन को अनुकूलित करना कार्य हाइजैकिंग के खिलाफ अतिरिक्त सुरक्षा प्रदान करता है।
|
ऐसे हमलों को रोकने के लिए, डेवलपर्स कर सकते हैं:
|
||||||
|
- **`**taskAffinity`** को **singleTask** दृश्य के लिए एक खाली स्ट्रिंग (`android:taskAffinity=""`) पर सेट करें।
|
||||||
|
- **`singleInstance`** लॉन्च मोड का विकल्प चुनें, यह सुनिश्चित करते हुए कि उनका ऐप दूसरों से अलग है।
|
||||||
|
- **`onBackPressed()`** फ़ंक्शन को अनुकूलित करें जो कार्य हाइजैकिंग के खिलाफ अतिरिक्त सुरक्षा प्रदान करता है।
|
||||||
|
|
||||||
## **संदर्भ**
|
## **References**
|
||||||
|
|
||||||
- [**https://blog.dixitaditya.com/android-task-hijacking/**](https://blog.dixitaditya.com/android-task-hijacking/)
|
- [**https://blog.dixitaditya.com/android-task-hijacking/**](https://blog.dixitaditya.com/android-task-hijacking/)
|
||||||
- [**https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html**](https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html)
|
- [**https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html**](https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
# React Native एप्लिकेशन विश्लेषण
|
# React Native Application Analysis
|
||||||
|
|
||||||
यह पुष्टि करने के लिए कि एप्लिकेशन React Native ढांचे पर बनाया गया था, इन चरणों का पालन करें:
|
यह पुष्टि करने के लिए कि एप्लिकेशन React Native फ्रेमवर्क पर बनाया गया था, इन चरणों का पालन करें:
|
||||||
|
|
||||||
1. APK फ़ाइल का नाम बदलकर zip एक्सटेंशन दें और इसे एक नए फ़ोल्डर में निकालें, कमांड का उपयोग करते हुए `cp com.example.apk example-apk.zip` और `unzip -qq example-apk.zip -d ReactNative`।
|
1. APK फ़ाइल का नाम बदलकर zip एक्सटेंशन दें और इसे एक नए फ़ोल्डर में निकालें, कमांड का उपयोग करते हुए `cp com.example.apk example-apk.zip` और `unzip -qq example-apk.zip -d ReactNative`।
|
||||||
|
|
||||||
@ -10,30 +10,72 @@
|
|||||||
|
|
||||||
3. JavaScript फ़ाइल खोजने के लिए कमांड का उपयोग करें `find . -print | grep -i ".bundle$"`।
|
3. JavaScript फ़ाइल खोजने के लिए कमांड का उपयोग करें `find . -print | grep -i ".bundle$"`।
|
||||||
|
|
||||||
JavaScript कोड का और विश्लेषण करने के लिए, उसी निर्देशिका में `index.html` नामक एक फ़ाइल बनाएं जिसमें निम्नलिखित कोड हो:
|
## Javascript Code
|
||||||
|
|
||||||
|
यदि आप `index.android.bundle` की सामग्री की जांच करते हैं और आपको एप्लिकेशन का JavaScript कोड मिलता है (भले ही संकुचित हो), तो आप **संवेदनशील जानकारी और कमजोरियों को खोजने के लिए इसका विश्लेषण कर सकते हैं**।
|
||||||
|
|
||||||
|
चूंकि बंडल वास्तव में एप्लिकेशन का सभी JS कोड शामिल करता है, इसलिए इसे **विभिन्न फ़ाइलों में विभाजित करना संभव है** (संभावित रूप से इसके रिवर्स इंजीनियरिंग को आसान बनाना) **उपकरण [react-native-decompiler](https://github.com/numandev1/react-native-decompiler)** का उपयोग करके।
|
||||||
|
|
||||||
|
### Webpack
|
||||||
|
|
||||||
|
JavaScript कोड का और विश्लेषण करने के लिए, आप फ़ाइल को [https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/) पर अपलोड कर सकते हैं या इन चरणों का पालन कर सकते हैं:
|
||||||
|
|
||||||
|
1. उसी निर्देशिका में `index.html` नामक एक फ़ाइल बनाएं जिसमें निम्नलिखित कोड हो:
|
||||||
```html
|
```html
|
||||||
<script src="./index.android.bundle"></script>
|
<script src="./index.android.bundle"></script>
|
||||||
```
|
```
|
||||||
आप फ़ाइल को [https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/) पर अपलोड कर सकते हैं या इन चरणों का पालन कर सकते हैं:
|
2. Google Chrome में `index.html` फ़ाइल खोलें।
|
||||||
|
|
||||||
1. Google Chrome में `index.html` फ़ाइल खोलें।
|
3. **OS X के लिए Command+Option+J** या **Windows के लिए Control+Shift+J** दबाकर Developer Toolbar खोलें।
|
||||||
|
|
||||||
2. **Command+Option+J for OS X** या **Control+Shift+J for Windows** दबाकर Developer Toolbar खोलें।
|
4. Developer Toolbar में "Sources" पर क्लिक करें। आपको एक JavaScript फ़ाइल दिखाई देगी जो फ़ोल्डरों और फ़ाइलों में विभाजित है, जो मुख्य बंडल बनाती है।
|
||||||
|
|
||||||
3. Developer Toolbar में "Sources" पर क्लिक करें। आपको एक JavaScript फ़ाइल दिखाई देगी जो फ़ोल्डरों और फ़ाइलों में विभाजित है, जो मुख्य बंडल बनाती है।
|
यदि आपको `index.android.bundle.map` नाम की फ़ाइल मिलती है, तो आप स्रोत कोड का विश्लेषण अनमिनिफाइड प्रारूप में कर सकेंगे। मैप फ़ाइलें स्रोत मैपिंग को शामिल करती हैं, जो आपको मिनिफाइड पहचानकर्ताओं को मैप करने की अनुमति देती हैं।
|
||||||
|
|
||||||
यदि आप `index.android.bundle.map` नामक फ़ाइल पाते हैं, तो आप अनमिनिफाइड प्रारूप में स्रोत कोड का विश्लेषण कर सकेंगे। मैप फ़ाइलों में स्रोत मैपिंग होती है, जो आपको मिनिफाइड पहचानकर्ताओं को मैप करने की अनुमति देती है।
|
|
||||||
|
|
||||||
संवेदनशील क्रेडेंशियल्स और एंडपॉइंट्स की खोज करने के लिए, इन चरणों का पालन करें:
|
संवेदनशील क्रेडेंशियल्स और एंडपॉइंट्स की खोज करने के लिए, इन चरणों का पालन करें:
|
||||||
|
|
||||||
1. JavaScript कोड का विश्लेषण करने के लिए संवेदनशील कीवर्ड की पहचान करें। React Native अनुप्रयोग अक्सर Firebase, AWS S3 सेवा एंडपॉइंट्स, निजी कुंजी आदि जैसे तृतीय-पक्ष सेवाओं का उपयोग करते हैं।
|
1. JavaScript कोड का विश्लेषण करने के लिए संवेदनशील कीवर्ड की पहचान करें। React Native एप्लिकेशन अक्सर Firebase, AWS S3 सेवा एंडपॉइंट्स, निजी कुंजी आदि जैसे थर्ड-पार्टी सेवाओं का उपयोग करते हैं।
|
||||||
|
|
||||||
2. इस विशेष मामले में, अनुप्रयोग को Dialogflow सेवा का उपयोग करते हुए देखा गया। इसके कॉन्फ़िगरेशन से संबंधित पैटर्न की खोज करें।
|
2. इस विशेष मामले में, एप्लिकेशन को Dialogflow सेवा का उपयोग करते हुए देखा गया। इसके कॉन्फ़िगरेशन से संबंधित पैटर्न की खोज करें।
|
||||||
|
|
||||||
3. यह सौभाग्य की बात थी कि पुनः खोज प्रक्रिया के दौरान JavaScript कोड में संवेदनशील हार्ड-कोडेड क्रेडेंशियल्स पाए गए।
|
3. यह सौभाग्य की बात थी कि पुनः खोज प्रक्रिया के दौरान JavaScript कोड में संवेदनशील हार्ड-कोडेड क्रेडेंशियल्स पाए गए।
|
||||||
|
|
||||||
## References
|
### JS कोड बदलें और पुनर्निर्माण करें
|
||||||
|
|
||||||
|
इस मामले में कोड बदलना आसान है। आपको बस ऐप का नाम बदलकर `.zip` एक्सटेंशन का उपयोग करना है और इसे निकालना है। फिर आप **इस बंडल के अंदर JS कोड को संशोधित कर सकते हैं और ऐप को पुनर्निर्माण कर सकते हैं**। यह आपको **कोड इंजेक्ट** करने की अनुमति देने के लिए पर्याप्त होना चाहिए ताकि आप परीक्षण उद्देश्यों के लिए ऐप में कोड डाल सकें।
|
||||||
|
|
||||||
|
## Hermes बाइटकोड
|
||||||
|
|
||||||
|
यदि बंडल में **Hermes बाइटकोड** है, तो आप ऐप के Javascript कोड तक **पहुँच नहीं पाएंगे** (यहां तक कि मिनिफाइड संस्करण तक भी नहीं)।
|
||||||
|
|
||||||
|
आप निम्नलिखित कमांड चलाकर जांच सकते हैं कि बंडल में Hermes बाइटकोड है या नहीं:
|
||||||
|
```bash
|
||||||
|
file index.android.bundle
|
||||||
|
index.android.bundle: Hermes JavaScript bytecode, version 96
|
||||||
|
```
|
||||||
|
हालांकि, आप उपकरणों का उपयोग कर सकते हैं **[hbctool](https://github.com/bongtrop/hbctool)**, **[hermes-dec](https://github.com/P1sec/hermes-dec)** या **[hermes_rs](https://github.com/Pilfer/hermes_rs)** को **बाइटकोड को डिस्सेम्बल करने** और इसे **कुछ प्सेडो JS कोड में डिकंपाइल करने** के लिए। ऐसा करने के लिए, उदाहरण के लिए ये कमांड:
|
||||||
|
```bash
|
||||||
|
hbc-disassembler ./index.android.bundle /tmp/my_output_file.hasm
|
||||||
|
hbc-decompiler ./index.android.bundle /tmp/my_output_file.js
|
||||||
|
```
|
||||||
|
### कोड बदलें और पुनर्निर्माण करें
|
||||||
|
|
||||||
|
आदर्श रूप से, आपको असेंबल किए गए कोड को संशोधित करने में सक्षम होना चाहिए (तुलना बदलना, या एक मान या जो भी आपको संशोधित करने की आवश्यकता है) और फिर **बाइटकोड को पुनर्निर्माण** करना चाहिए और फिर ऐप को पुनर्निर्माण करना चाहिए।
|
||||||
|
|
||||||
|
उपकरण **[hbctool](https://github.com/bongtrop/hbctool)** बंडल को असेंबल करने और परिवर्तनों के बाद इसे वापस बनाने का समर्थन करता है, हालाँकि यह **केवल पुराने संस्करणों** के Hermes बाइटकोड का समर्थन करता है।
|
||||||
|
|
||||||
|
उपकरण **[hermes-dec](https://github.com/P1sec/hermes-dec)** बाइटकोड को पुनर्निर्माण करने का समर्थन नहीं करता है।
|
||||||
|
|
||||||
|
उपकरण **[hermes_rs](https://github.com/Pilfer/hermes_rs)** बाइटकोड को पुनर्निर्माण करने का समर्थन करता है, लेकिन यह वास्तव में एक पुस्तकालय है और CLI उपकरण नहीं है।
|
||||||
|
|
||||||
|
## डायनामिक एनालिसिस
|
||||||
|
|
||||||
|
आप ऐप का डायनामिक एनालिसिस करने के लिए Frida का उपयोग करके React ऐप के डेवलपर मोड को सक्षम करने और **`react-native-debugger`** का उपयोग करके इससे जुड़ने की कोशिश कर सकते हैं। हालाँकि, इसके लिए आपको ऐप का स्रोत कोड चाहिए। आप इसके बारे में अधिक जानकारी [https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/](https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/) पर पा सकते हैं।
|
||||||
|
|
||||||
|
## संदर्भ
|
||||||
|
|
||||||
- [https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7](https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7)
|
- [https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7](https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7)
|
||||||
|
- [https://www.assetnote.io/resources/research/expanding-the-attack-surface-react-native-android-applications](https://www.assetnote.io/resources/research/expanding-the-attack-surface-react-native-android-applications)
|
||||||
|
- [https://payatu.com/wp-content/uploads/2023/02/Mastering-React-Native-Application-Pentesting-A-Practical-Guide-2.pdf](https://payatu.com/wp-content/uploads/2023/02/Mastering-React-Native-Application-Pentesting-A-Practical-Guide-2.pdf)
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
@ -4,18 +4,20 @@
|
|||||||
|
|
||||||
## **बुनियादी जानकारी**
|
## **बुनियादी जानकारी**
|
||||||
|
|
||||||
**Tapjacking** एक हमला है जहाँ एक **दुष्ट** **अनुप्रयोग** लॉन्च किया जाता है और यह **पीड़ित अनुप्रयोग के ऊपर खुद को स्थिति में रखता है**। जब यह स्पष्ट रूप से पीड़ित ऐप को ढक लेता है, तो इसका उपयोगकर्ता इंटरफ़ेस इस तरह से डिज़ाइन किया गया है कि उपयोगकर्ता को इसके साथ इंटरैक्ट करने के लिए धोखा दिया जा सके, जबकि यह इंटरैक्शन को पीड़ित ऐप के पास भेज रहा है।\
|
**Tapjacking** एक हमला है जहाँ एक **दुष्ट** **अनुप्रयोग** लॉन्च किया जाता है और यह **पीड़ित अनुप्रयोग के ऊपर खुद को स्थिति में रखता है**। जब यह स्पष्ट रूप से पीड़ित ऐप को ढक देता है, तो इसका उपयोगकर्ता इंटरफ़ेस इस तरह से डिज़ाइन किया गया है कि उपयोगकर्ता इसके साथ बातचीत करने के लिए धोखा खा जाए, जबकि यह बातचीत को पीड़ित ऐप के पास भेज रहा है।\
|
||||||
इसका प्रभाव यह है कि यह **उपयोगकर्ता को यह जानने से अंधा कर देता है कि वे वास्तव में पीड़ित ऐप पर क्रियाएँ कर रहे हैं**।
|
इसका प्रभाव यह है कि यह **उपयोगकर्ता को यह जानने से अंधा कर देता है कि वे वास्तव में पीड़ित ऐप पर क्रियाएँ कर रहे हैं**।
|
||||||
|
|
||||||
### पहचान
|
### पहचान
|
||||||
|
|
||||||
इस हमले के प्रति संवेदनशील ऐप्स का पता लगाने के लिए आपको एंड्रॉइड मैनिफेस्ट में **निर्यातित गतिविधियों** की खोज करनी चाहिए (ध्यान दें कि एक गतिविधि जिसमें एक इरादा-फिल्टर है, डिफ़ॉल्ट रूप से स्वचालित रूप से निर्यातित होती है)। एक बार जब आप निर्यातित गतिविधियों को ढूंढ लेते हैं, तो **जांचें कि क्या उन्हें कोई अनुमति चाहिए**। इसका कारण यह है कि **दुष्ट अनुप्रयोग को भी उस अनुमति की आवश्यकता होगी**।
|
इस हमले के प्रति संवेदनशील ऐप्स का पता लगाने के लिए, आपको एंड्रॉइड मैनिफेस्ट में **निर्यातित गतिविधियों** की खोज करनी चाहिए (ध्यान दें कि एक गतिविधि जिसमें एक इरादा-फिल्टर है, डिफ़ॉल्ट रूप से स्वचालित रूप से निर्यातित होती है)। एक बार जब आप निर्यातित गतिविधियों को ढूंढ लेते हैं, तो **जांचें कि क्या उन्हें कोई अनुमति चाहिए**। इसका कारण यह है कि **दुष्ट अनुप्रयोग को भी उस अनुमति की आवश्यकता होगी**।
|
||||||
|
|
||||||
|
आप ऐप के न्यूनतम SDK संस्करण की भी जांच कर सकते हैं, **`android:minSdkVersion`** के मान की जांच करते हुए **`AndroidManifest.xml`** फ़ाइल में। यदि मान **30 से कम है**, तो ऐप Tapjacking के प्रति संवेदनशील है।
|
||||||
|
|
||||||
### सुरक्षा
|
### सुरक्षा
|
||||||
|
|
||||||
#### Android 12 (API 31,32) और उच्चतर
|
#### Android 12 (API 31,32) और उच्चतर
|
||||||
|
|
||||||
[**इस स्रोत के अनुसार**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** tapjacking हमलों को Android 12 (API 31 & 30) और उच्चतर से Android द्वारा स्वचालित रूप से रोका जाता है। इसलिए, भले ही अनुप्रयोग संवेदनशील हो, आप **इसे शोषण नहीं कर पाएंगे**।
|
[**इस स्रोत के अनुसार**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** Tapjacking हमलों को Android 12 (API 31 & 30) और उच्चतर से स्वचालित रूप से रोका जाता है। इसलिए, भले ही अनुप्रयोग संवेदनशील हो, आप **इसे शोषण नहीं कर पाएंगे**।
|
||||||
|
|
||||||
#### `filterTouchesWhenObscured`
|
#### `filterTouchesWhenObscured`
|
||||||
|
|
||||||
@ -23,7 +25,7 @@
|
|||||||
|
|
||||||
#### **`setFilterTouchesWhenObscured`**
|
#### **`setFilterTouchesWhenObscured`**
|
||||||
|
|
||||||
गुण **`setFilterTouchesWhenObscured`** को सत्य पर सेट करने से इस संवेदनशीलता का शोषण भी रोका जा सकता है यदि एंड्रॉइड संस्करण कम है।\
|
गुण **`setFilterTouchesWhenObscured`** को सत्य पर सेट करने से इस संवेदनशीलता का शोषण रोकने में मदद मिल सकती है यदि Android संस्करण कम है।\
|
||||||
यदि इसे **`true`** पर सेट किया गया है, तो उदाहरण के लिए, एक बटन को स्वचालित रूप से **अक्षम किया जा सकता है यदि यह ढका हुआ है**:
|
यदि इसे **`true`** पर सेट किया गया है, तो उदाहरण के लिए, एक बटन को स्वचालित रूप से **अक्षम किया जा सकता है यदि यह ढका हुआ है**:
|
||||||
```xml
|
```xml
|
||||||
<Button android:text="Button"
|
<Button android:text="Button"
|
||||||
@ -37,24 +39,24 @@ android:filterTouchesWhenObscured="true">
|
|||||||
|
|
||||||
### Tapjacking-ExportedActivity
|
### Tapjacking-ExportedActivity
|
||||||
|
|
||||||
सबसे **हाल का Android एप्लिकेशन** जो Tapjacking हमले को अंजाम देता है (+ हमले के एप्लिकेशन की निर्यातित गतिविधि से पहले सक्रिय करना) यहाँ पाया जा सकता है: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
|
सबसे **हाल का Android एप्लिकेशन** जो Tapjacking हमला करता है (+ हमले के एप्लिकेशन की निर्यातित गतिविधि से पहले सक्रिय करना) यहाँ पाया जा सकता है: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
|
||||||
|
|
||||||
इसे उपयोग करने के लिए **README निर्देशों का पालन करें**.
|
इसे उपयोग करने के लिए **README निर्देशों का पालन करें**.
|
||||||
|
|
||||||
### FloatingWindowApp
|
### FloatingWindowApp
|
||||||
|
|
||||||
एक उदाहरण प्रोजेक्ट जो **FloatingWindowApp** को लागू करता है, जिसे अन्य गतिविधियों के ऊपर क्लिकजैकिंग हमले को अंजाम देने के लिए उपयोग किया जा सकता है, यहाँ पाया जा सकता है [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (थोड़ा पुराना, apk बनाने में शुभकामनाएँ).
|
एक उदाहरण प्रोजेक्ट जो **FloatingWindowApp** को लागू करता है, जिसे अन्य गतिविधियों के ऊपर क्लिकजैकिंग हमले को करने के लिए रखा जा सकता है, यहाँ पाया जा सकता है [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (थोड़ा पुराना, apk बनाने में शुभकामनाएँ).
|
||||||
|
|
||||||
### Qark
|
### Qark
|
||||||
|
|
||||||
> [!CAUTION]
|
> [!CAUTION]
|
||||||
> ऐसा लगता है कि यह प्रोजेक्ट अब बनाए नहीं रखा गया है और यह कार्यक्षमता अब ठीक से काम नहीं कर रही है
|
> ऐसा लगता है कि यह प्रोजेक्ट अब बनाए नहीं रखा गया है और यह कार्यक्षमता अब ठीक से काम नहीं कर रही है
|
||||||
|
|
||||||
आप [**qark**](https://github.com/linkedin/qark) का उपयोग `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` पैरामीटर के साथ कर सकते हैं ताकि संभावित **Tapjacking** कमजोरियों के लिए एक दुर्भावनापूर्ण एप्लिकेशन बनाया जा सके।\
|
आप [**qark**](https://github.com/linkedin/qark) का उपयोग `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` पैरामीटर के साथ एक दुर्भावनापूर्ण एप्लिकेशन बनाने के लिए कर सकते हैं ताकि संभावित **Tapjacking** कमजोरियों का परीक्षण किया जा सके।\
|
||||||
|
|
||||||
निवारण अपेक्षाकृत सरल है क्योंकि डेवलपर यह चुन सकता है कि जब एक दृश्य दूसरे द्वारा ढका होता है तो स्पर्श घटनाएँ प्राप्त न करें। [Android Developer’s Reference](https://developer.android.com/reference/android/view/View#security) का उपयोग करते हुए:
|
निवारण अपेक्षाकृत सरल है क्योंकि डेवलपर यह चुन सकता है कि जब एक दृश्य दूसरे द्वारा ढका होता है तो स्पर्श घटनाएँ प्राप्त न करें। [Android Developer’s Reference](https://developer.android.com/reference/android/view/View#security) का उपयोग करते हुए:
|
||||||
|
|
||||||
> कभी-कभी यह आवश्यक होता है कि एक एप्लिकेशन यह सत्यापित कर सके कि कोई क्रिया पूरी जानकारी और उपयोगकर्ता की सहमति के साथ की जा रही है, जैसे कि अनुमति अनुरोध को स्वीकार करना, खरीदारी करना या विज्ञापन पर क्लिक करना। दुर्भाग्यवश, एक दुर्भावनापूर्ण एप्लिकेशन उपयोगकर्ता को इन क्रियाओं को करने के लिए धोखा देने की कोशिश कर सकता है, बिना यह जाने कि दृश्य का उद्देश्य क्या है। एक उपाय के रूप में, ढांचा एक स्पर्श फ़िल्टरिंग तंत्र प्रदान करता है जिसका उपयोग संवेदनशील कार्यक्षमता तक पहुँच प्रदान करने वाले दृश्यों की सुरक्षा में सुधार के लिए किया जा सकता है।
|
> कभी-कभी यह आवश्यक होता है कि एक एप्लिकेशन यह सत्यापित कर सके कि कोई क्रिया पूरी जानकारी और उपयोगकर्ता की सहमति के साथ की जा रही है, जैसे कि अनुमति अनुरोध को स्वीकार करना, खरीदारी करना या विज्ञापन पर क्लिक करना। दुर्भाग्यवश, एक दुर्भावनापूर्ण एप्लिकेशन उपयोगकर्ता को इन क्रियाओं को करने के लिए धोखा देने की कोशिश कर सकता है, बिना जानें, दृश्य के इरादे को छिपाकर। एक उपाय के रूप में, ढांचा एक स्पर्श फ़िल्टरिंग तंत्र प्रदान करता है जिसका उपयोग संवेदनशील कार्यक्षमता तक पहुँच प्रदान करने वाले दृश्यों की सुरक्षा में सुधार के लिए किया जा सकता है।
|
||||||
>
|
>
|
||||||
> स्पर्श फ़िल्टरिंग सक्षम करने के लिए, [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) को कॉल करें या android:filterTouchesWhenObscured लेआउट विशेषता को true पर सेट करें। जब सक्षम किया जाता है, तो ढांचा उन स्पर्शों को अस्वीकार कर देगा जो तब प्राप्त होते हैं जब दृश्य की विंडो किसी अन्य दृश्य विंडो द्वारा ढकी होती है। परिणामस्वरूप, दृश्य तब स्पर्श प्राप्त नहीं करेगा जब भी एक टोस्ट, संवाद या अन्य विंडो दृश्य की विंडो के ऊपर प्रकट होती है।
|
> स्पर्श फ़िल्टरिंग सक्षम करने के लिए, [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) को कॉल करें या android:filterTouchesWhenObscured लेआउट विशेषता को true पर सेट करें। जब सक्षम किया जाता है, तो ढांचा उन स्पर्शों को अस्वीकार कर देगा जो तब प्राप्त होते हैं जब दृश्य की विंडो किसी अन्य दृश्य विंडो द्वारा ढकी होती है। परिणामस्वरूप, दृश्य तब स्पर्श प्राप्त नहीं करेगा जब भी एक टोस्ट, संवाद या अन्य विंडो दृश्य की विंडो के ऊपर प्रकट होती है।
|
||||||
|
|
||||||
|
@ -471,12 +471,13 @@ window.search = window.search || {};
|
|||||||
showResults(true);
|
showResults(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
fetch(path_to_root + 'searchindex.json')
|
var branch = lang === "en" ? "master" : lang
|
||||||
|
fetch(`https://raw.githubusercontent.com/HackTricks-wiki/hacktricks/refs/heads/${branch}/searchindex.json`)
|
||||||
.then(response => response.json())
|
.then(response => response.json())
|
||||||
.then(json => init(json))
|
.then(json => init(json))
|
||||||
.catch(error => { // Try to load searchindex.js if fetch failed
|
.catch(error => { // Try to load searchindex.js if fetch failed
|
||||||
var script = document.createElement('script');
|
var script = document.createElement('script');
|
||||||
script.src = path_to_root + 'searchindex.js';
|
script.src = `https://raw.githubusercontent.com/HackTricks-wiki/hacktricks/refs/heads/${branch}/searchindex.js`;
|
||||||
script.onload = () => init(window.search);
|
script.onload = () => init(window.search);
|
||||||
document.head.appendChild(script);
|
document.head.appendChild(script);
|
||||||
});
|
});
|
||||||
|
@ -55,6 +55,7 @@
|
|||||||
<!-- Provide site root to javascript -->
|
<!-- Provide site root to javascript -->
|
||||||
<script>
|
<script>
|
||||||
var path_to_root = "{{ path_to_root }}";
|
var path_to_root = "{{ path_to_root }}";
|
||||||
|
var lang = "{{ language }}";
|
||||||
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "{{ preferred_dark_theme }}" : "{{ default_theme }}";
|
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "{{ preferred_dark_theme }}" : "{{ default_theme }}";
|
||||||
</script>
|
</script>
|
||||||
<!-- Start loading toc.js asap -->
|
<!-- Start loading toc.js asap -->
|
||||||
|
Loading…
x
Reference in New Issue
Block a user