From 6432d53c8188166f387109e15068a08015014507 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 3 Sep 2025 12:24:12 +0000 Subject: [PATCH] Translated ['', 'src/mobile-pentesting/android-app-pentesting/README.md' --- .../android-app-pentesting/README.md | 597 ++++++++++-------- 1 file changed, 328 insertions(+), 269 deletions(-) diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md index 361666c00..107416c01 100644 --- a/src/mobile-pentesting/android-app-pentesting/README.md +++ b/src/mobile-pentesting/android-app-pentesting/README.md @@ -1,10 +1,10 @@ -# Android Applications Pentesting +# Android एप्लिकेशन Pentesting {{#include ../../banners/hacktricks-training.md}} ## Android Applications Basics -यह पृष्ठ पढ़ना अत्यधिक अनुशंसित है ताकि आप **Android सुरक्षा से संबंधित सबसे महत्वपूर्ण भागों और एक Android एप्लिकेशन में सबसे खतरनाक घटकों** के बारे में जान सकें: +यह पृष्ठ पढ़ना ज़ोरदार रूप से अनुशंसित है ताकि आप Android security से संबंधित सबसे महत्वपूर्ण हिस्सों और किसी Android application में सबसे खतरनाक components के बारे में जान सकें: {{#ref}} @@ -13,24 +13,24 @@ android-applications-basics.md ## ADB (Android Debug Bridge) -यह मुख्य उपकरण है जिसकी आपको एक Android डिवाइस (अनुकरणीय या भौतिक) से कनेक्ट करने की आवश्यकता है।\ -**ADB** आपको **USB** या **Network** के माध्यम से कंप्यूटर से उपकरणों को नियंत्रित करने की अनुमति देता है। यह उपयोगिता **फाइलों** की दोनों दिशाओं में **कॉपीिंग**, ऐप्स की **स्थापना** और **अनइंस्टॉलेशन**, **शेल कमांड्स** का **निष्पादन**, **डेटा का बैकअप**, **लॉग्स को पढ़ने** जैसी अन्य कार्यों को सक्षम बनाती है। +यह मुख्य tool है जिसकी आपको एक android device (emulated or physical) से कनेक्ट करने के लिए आवश्यकता होती है।\ +**ADB** आपको कंप्यूटर से **USB** या **Network** के माध्यम से devices को control करने की अनुमति देता है। यह utility दोनों दिशाओं में फाइलों की **copying**, apps की **installation** और **uninstallation**, shell कमांड्स का **execution**, डेटा का **backing up**, logs का **reading**, तथा अन्य फ़ंक्शन्स सक्षम बनाती है। -ADB का उपयोग कैसे करें, यह जानने के लिए [**ADB Commands**](adb-commands.md) की निम्नलिखित सूची पर एक नज़र डालें। +निम्नलिखित सूची [**ADB Commands**](adb-commands.md) को देखें ताकि आप adb का उपयोग कैसे करना है सीख सकें। ## Smali -कभी-कभी **छिपी हुई जानकारी** (शायद अच्छी तरह से ओबफस्केटेड पासवर्ड या फ्लैग) तक पहुँचने के लिए **एप्लिकेशन कोड को संशोधित करना** दिलचस्प होता है। फिर, APK को डिकंपाइल करना, कोड को संशोधित करना और इसे फिर से संकलित करना दिलचस्प हो सकता है।\ -[**इस ट्यूटोरियल में** आप **APK को डिकंपाइल करना, Smali कोड को संशोधित करना और नए कार्यक्षमता के साथ APK को फिर से संकलित करना** सीख सकते हैं](smali-changes.md)। यह **गतिशील विश्लेषण** के दौरान कई परीक्षणों के लिए एक **वैकल्पिक** के रूप में बहुत उपयोगी हो सकता है जो प्रस्तुत किए जाने वाले हैं। फिर, **इस संभावना को हमेशा ध्यान में रखें**। +कभी-कभी application code को modify करना उपयोगी होता है ताकि hidden information (शायद अच्छी तरह obfuscated passwords या flags) तक पहुँचा जा सके। तब, apk को decompile करके, code modify करके और उसे फिर से recompile करना दिलचस्प हो सकता है।\ +[**In this tutorial** you can **learn how to decompile and APK, modify Smali code and recompile the APK** with the new functionality](smali-changes.md). यह dynamic analysis के दौरान प्रस्तुत कई tests के लिए एक **वैकल्पिक तरीका** बहुत उपयोगी हो सकता है। इसलिए, इस संभावना को हमेशा ध्यान में रखें। ## Other interesting tricks -- [Play Store में अपनी स्थिति को स्पूफ करना](spoofing-your-location-in-play-store.md) -- [Shizuku Privileged API (ADB-आधारित गैर-रूट विशेषाधिकार पहुंच)](shizuku-privileged-api.md) -- [असुरक्षित इन-ऐप अपडेट तंत्र का शोषण करना](insecure-in-app-update-rce.md) -- [एक्सेसिबिलिटी सेवाओं का दुरुपयोग (Android RAT)](accessibility-services-abuse.md) +- [Spoofing your location in Play Store](spoofing-your-location-in-play-store.md) +- [Shizuku Privileged API (ADB-based non-root privileged access)](shizuku-privileged-api.md) +- [Exploiting Insecure In-App Update Mechanisms](insecure-in-app-update-rce.md) +- [Abusing Accessibility Services (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) -- Extract APK from device: +- डिवाइस से APK निकालना: ```bash adb shell pm list packages com.android.insecurebankv2 @@ -40,7 +40,7 @@ package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk adb pull /data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk ``` -- सभी स्प्लिट और बेस एपीके को [APKEditor](https://github.com/REAndroid/APKEditor) के साथ मिलाएं: +- सभी splits और base apks को [APKEditor](https://github.com/REAndroid/APKEditor) के साथ मर्ज करें: ```bash mkdir splits adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits @@ -49,7 +49,7 @@ java -jar ../APKEditor.jar m -i splits/ -o merged.apk # after merging, you will need to align and sign the apk, personally, I like to use the uberapksigner java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed ``` -## केस स्टडीज़ और कमजोरियाँ +## केस स्टडीज़ & Vulnerabilities {{#ref}} @@ -61,98 +61,98 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed ../../linux-hardening/privilege-escalation/android-rooting-frameworks-manager-auth-bypass-syscall-hook.md {{#endref}} -## स्थैतिक विश्लेषण +## स्टैटिक विश्लेषण -सबसे पहले, एक APK का विश्लेषण करने के लिए आपको **decompiler का उपयोग करके Java कोड पर नज़र डालनी चाहिए**।\ -कृपया, [**विभिन्न उपलब्ध decompilers के बारे में जानकारी के लिए यहाँ पढ़ें**](apk-decompilers.md)। +सबसे पहले, एक APK का विश्लेषण करने के लिए आपको decompiler का उपयोग करके **Java code** पर नज़र डालनी चाहिए।\ +कृपया, [**यहाँ पढ़ें विभिन्न उपलब्ध decompilers के बारे में जानकारी पाने के लिए**](apk-decompilers.md). -### दिलचस्प जानकारी की तलाश +### रोचक जानकारी ढूँढना -APK के **strings** पर नज़र डालकर आप **पासवर्ड**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** कुंजी, **एन्क्रिप्शन**, **ब्लूटूथ uuids**, **tokens** और कुछ भी दिलचस्प खोज सकते हैं... यहां तक कि कोड निष्पादन **बैकडोर** या प्रमाणीकरण बैकडोर (ऐप के लिए हार्डकोडेड व्यवस्थापक क्रेडेंशियल) के लिए भी देखें। +APK की **strings** देखकर आप **passwords**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** keys, **encryption**, **bluetooth uuids**, **tokens** और अन्य दिलचस्प चीज़ें खोज सकते हैं... कोड execution **backdoors** या authentication backdoors (app में hardcoded admin credentials) भी खोजें। **Firebase** -**firebase URLs** पर विशेष ध्यान दें और जांचें कि क्या यह गलत तरीके से कॉन्फ़िगर किया गया है। [यहाँ Firebase के बारे में अधिक जानकारी और इसे कैसे शोषण करें।](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) +विशेष ध्यान दें कि **Firebase URLs** कैसे कॉन्फ़िगर हैं और जांचें कि क्या यह गलत कॉन्फ़िगर है। [Firebase क्या है और इसे कैसे exploit करें इसके बारे में अधिक जानकारी यहाँ।](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) -### एप्लिकेशन की मूल समझ - Manifest.xml, strings.xml +### एप्लिकेशन की बुनियादी समझ - Manifest.xml, strings.xml -**एक एप्लिकेशन के _Manifest.xml_ और **_strings.xml_** फ़ाइलों की जांच संभावित सुरक्षा कमजोरियों को उजागर कर सकती है**। इन फ़ाइलों को decompilers का उपयोग करके या APK फ़ाइल एक्सटेंशन को .zip में बदलकर और फिर इसे अनज़िप करके एक्सेस किया जा सकता है। +किसी एप्लिकेशन के _Manifest.xml_ और **_strings.xml_** फाइलों की जांच से संभावित सुरक्षा कमजोरियाँ उजागर हो सकती हैं। इन फाइलों को decompilers से एक्सेस किया जा सकता है या APK की file extension को .zip में बदलकर उसे unzip करके भी निकाला जा सकता है। -**Manifest.xml** से पहचानी गई **कमजोरियाँ** में शामिल हैं: +**Manifest.xml** से पहचानी जाने वाली कमजोरियाँ शामिल हैं: -- **Debuggable Applications**: _Manifest.xml_ फ़ाइल में `debuggable="true"` के रूप में सेट की गई एप्लिकेशन जोखिम में होती हैं क्योंकि वे ऐसे कनेक्शन की अनुमति देती हैं जो शोषण की ओर ले जा सकते हैं। डिबग करने योग्य एप्लिकेशनों का शोषण कैसे करें, इस पर एक ट्यूटोरियल के लिए संदर्भित करें। -- **Backup Settings**: संवेदनशील जानकारी से निपटने वाली एप्लिकेशनों के लिए `android:allowBackup="false"` विशेष रूप से सेट किया जाना चाहिए ताकि adb के माध्यम से अनधिकृत डेटा बैकअप को रोका जा सके, विशेष रूप से जब usb डिबगिंग सक्षम हो। -- **Network Security**: _res/xml/_ में कस्टम नेटवर्क सुरक्षा कॉन्फ़िगरेशन (`android:networkSecurityConfig="@xml/network_security_config"`) सुरक्षा विवरण जैसे प्रमाणपत्र पिन और HTTP ट्रैफ़िक सेटिंग्स को निर्दिष्ट कर सकते हैं। एक उदाहरण विशेष डोमेन के लिए HTTP ट्रैफ़िक की अनुमति देना है। -- **Exported Activities and Services**: मैनिफेस्ट में निर्यातित गतिविधियों और सेवाओं की पहचान करना उन घटकों को उजागर कर सकता है जिन्हें दुरुपयोग किया जा सकता है। गतिशील परीक्षण के दौरान आगे के विश्लेषण से यह पता चल सकता है कि इन घटकों का शोषण कैसे किया जाए। -- **Content Providers and FileProviders**: उजागर सामग्री प्रदाता अनधिकृत पहुंच या डेटा में संशोधन की अनुमति दे सकते हैं। FileProviders की कॉन्फ़िगरेशन की भी जांच की जानी चाहिए। -- **Broadcast Receivers and URL Schemes**: इन घटकों का शोषण के लिए उपयोग किया जा सकता है, विशेष रूप से इनपुट कमजोरियों के लिए URL योजनाओं के प्रबंधन के तरीके पर ध्यान दिया जाना चाहिए। -- **SDK Versions**: `minSdkVersion`, `targetSDKVersion`, और `maxSdkVersion` विशेषताएँ समर्थित Android संस्करणों को इंगित करती हैं, सुरक्षा कारणों से पुराने, कमजोर Android संस्करणों का समर्थन न करने के महत्व को उजागर करती हैं। +- **Debuggable Applications**: Manifest.xml में `debuggable="true"` सेट होने वाले एप्लिकेशन जोखिम पैदा करते हैं क्योंकि वे ऐसे कनेक्शन्स की अनुमति देते हैं जो exploit का रास्ता खोल सकते हैं। debuggable एप्लिकेशन को ढूँढने और exploit करने के बारे में समझने के लिए संबंधित ट्यूटोरियल देखें। +- **Backup Settings**: संवेदनशील जानकारी वाले एप्लिकेशन के लिए `android:allowBackup="false"` को स्पष्ट रूप से सेट किया जाना चाहिए ताकि adb के माध्यम से unauthorized data backups से बचा जा सके, विशेषकर जब usb debugging सक्षम हो। +- **Network Security**: कस्टम network security configurations (`android:networkSecurityConfig="@xml/network_security_config"`) जो _res/xml/_ में होते हैं, certificate pins और HTTP traffic settings जैसी सुरक्षा विवरण specify कर सकते हैं। एक उदाहरण यह है कि कुछ डोमेनों के लिए HTTP traffic की अनुमति देना। +- **Exported Activities and Services**: Manifest में exported activities और services की पहचान उन components को उजागर कर सकती है जिन्हें गलत तरीके से उपयोग किया जा सकता है। dynamic testing के दौरान और विश्लेषण से पता चल सकता है कि इन्हें कैसे exploit किया जा सकता है। +- **Content Providers and FileProviders**: एक्सपोज्ड content providers unauthorized access या data modification की अनुमति दे सकते हैं। FileProviders की configuration की भी बारीकी से जाँच की जानी चाहिए। +- **Broadcast Receivers and URL Schemes**: ये components exploitation के लिए उपयोग किए जा सकते हैं, खासकर यह ध्यान में रखते हुए कि URL schemes इनपुट-वulnerabilities के लिए कैसे manage किए जाते हैं। +- **SDK Versions**: `minSdkVersion`, `targetSDKVersion`, और `maxSdkVersion` attributes बताती हैं कि कौन से Android versions समर्थित हैं, जो यह दिखाते हैं कि पुराने, कमजोर Android versions का समर्थन न करने का महत्व क्यों है। -**strings.xml** फ़ाइल से संवेदनशील जानकारी जैसे API कुंजी, कस्टम स्कीमा, और अन्य डेवलपर नोट्स का पता लगाया जा सकता है, जो इन संसाधनों की सावधानीपूर्वक समीक्षा की आवश्यकता को उजागर करता है। +**strings.xml** फाइल से संवेदनशील जानकारी जैसे API keys, custom schemas, और अन्य developer नोट्स मिल सकते हैं, इसीलिए इन resources की सावधानीपूर्वक समीक्षा आवश्यक है। ### Tapjacking -**Tapjacking** एक हमला है जहाँ एक **दुष्ट** **एप्लिकेशन** लॉन्च किया जाता है और **एक पीड़ित एप्लिकेशन के ऊपर खुद को रखता है**। जब यह पीड़ित ऐप को दृश्यमान रूप से अस्पष्ट करता है, तो इसका उपयोगकर्ता इंटरफ़ेस इस तरह से डिज़ाइन किया गया है कि उपयोगकर्ता इसके साथ बातचीत करने के लिए धोखा खा जाए, जबकि यह बातचीत को पीड़ित ऐप को पास कर रहा है।\ -इसका प्रभाव यह है कि यह **उपयोगकर्ता को यह जानने से अंधा कर देता है कि वे वास्तव में पीड़ित ऐप पर क्रियाएँ कर रहे हैं**। +**Tapjacking** एक ऐसा attack है जहाँ एक **दुर्भावनापूर्ण एप्लिकेशन** लॉन्च होती है और **victim application के ऊपर खुद को पोज़िशन कर लेती है**। जब यह victim app को दृश्यतः ढक देता है, तो इसका UI इस तरह डिज़ाइन किया जाता है कि यह यूज़र को बेवकूफ बनाकर उस पर interact करवा लेता है, जबकि यह interaction victim app को पास-थ्रू कर रहा होता है।\ +असरतः, यह **यूज़र को अंधा कर देता है जिससे वह यह नहीं जान पाता कि वह वास्तव में victim app पर क्रियाएँ कर रहा है**। -अधिक जानकारी के लिए देखें: +अधिक जानकारी पाएँः {{#ref}} tapjacking.md {{#endref}} -### टास्क हाईजैकिंग +### Task Hijacking -एक **गतिविधि** जिसमें **`launchMode`** **`singleTask`** पर सेट है और कोई `taskAffinity` परिभाषित नहीं है, टास्क हाईजैकिंग के लिए संवेदनशील है। इसका मतलब है कि एक **एप्लिकेशन** स्थापित किया जा सकता है और यदि इसे असली एप्लिकेशन से पहले लॉन्च किया जाता है, तो यह **असली एप्लिकेशन के कार्य को हाईजैक कर सकता है** (इसलिए उपयोगकर्ता **दुष्ट एप्लिकेशन के साथ बातचीत कर रहा होगा जबकि वह असली एप्लिकेशन का उपयोग कर रहा है**). +एक **activity** जिसका **`launchMode`** **`singleTask`** पर सेट हो और कोई `taskAffinity` परिभाषित न हो, task Hijacking के लिए vulnerable होती है। इसका मतलब यह है कि एक **malicious application** install की जा सकती है और यदि वास्तविक application लॉन्च होने से पहले इसे लॉन्च किया जाए तो यह **वास्तविक एप्लिकेशन के task को hijack कर सकता है** (जिससे यूज़र **malicious application** को वास्तविक समझकर उसी के साथ interact करेगा)। -अधिक जानकारी के लिए देखें: +अधिक जानकारीः {{#ref}} android-task-hijacking.md {{#endref}} -### असुरक्षित डेटा भंडारण +### असुरक्षित डेटा स्टोरेज -**आंतरिक भंडारण** +**Internal Storage** -Android में, फ़ाइलें **आंतरिक** भंडारण में **स्टोर की गई** होती हैं और केवल **ऐप** द्वारा **एक्सेस की जाने के लिए डिज़ाइन की गई हैं** जिसने उन्हें **बनाया**। यह सुरक्षा उपाय Android ऑपरेटिंग सिस्टम द्वारा **लागू** किया गया है और अधिकांश एप्लिकेशनों की सुरक्षा आवश्यकताओं के लिए सामान्यतः पर्याप्त है। हालाँकि, डेवलपर्स कभी-कभी `MODE_WORLD_READABLE` और `MODE_WORLD_WRITABLE` जैसे मोड का उपयोग करते हैं ताकि फ़ाइलों को विभिन्न एप्लिकेशनों के बीच **शेयर** किया जा सके। फिर भी, ये मोड अन्य एप्लिकेशनों द्वारा इन फ़ाइलों तक पहुँच को **सीमित नहीं करते**, जिसमें संभावित रूप से दुष्ट एप्लिकेशन भी शामिल हैं। +Android में, files जो **internal** storage में **store** की जाती हैं, वे सामान्यतः केवल उस **app** द्वारा access किए जाने के लिए डिज़ाइन की गई होती हैं जिसने इन्हें बनाया है। यह सुरक्षा उपाय Android operating system द्वारा लागू किया जाता है और अधिकांश applications की सुरक्षा आवश्यकताओं के लिए पर्याप्त होता है। हालाँकि, developers कभी-कभी `MODE_WORLD_READABLE` और `MODE_WORLD_WRITABLE` जैसे modes का उपयोग करते हैं ताकि files को विभिन्न applications के बीच **shared** किया जा सके। ये modes इन फाइलों तक अन्य applications, जिनमें संभावित रूप से malicious ones भी शामिल हैं, की पहुँच को **रोकते नहीं हैं**। -1. **स्थैतिक विश्लेषण:** -- **सुनिश्चित करें** कि `MODE_WORLD_READABLE` और `MODE_WORLD_WRITABLE` का उपयोग **ध्यानपूर्वक जांचा गया है**। ये मोड फ़ाइलों को **अनपेक्षित या अनधिकृत पहुंच** के लिए **खुला** कर सकते हैं। -2. **गतिशील विश्लेषण:** -- **जांचें** कि ऐप द्वारा बनाई गई फ़ाइलों पर **अनुमतियाँ** सेट की गई हैं। विशेष रूप से, **जांचें** कि क्या कोई फ़ाइलें **विश्व स्तर पर पढ़ने या लिखने के लिए सेट की गई हैं**। यह एक महत्वपूर्ण सुरक्षा जोखिम पैदा कर सकता है, क्योंकि यह **किसी भी एप्लिकेशन** को जो डिवाइस पर स्थापित है, उसकी उत्पत्ति या इरादे की परवाह किए बिना, इन फ़ाइलों को **पढ़ने या संशोधित करने** की अनुमति देगा। +1. **Static Analysis:** +- `MODE_WORLD_READABLE` और `MODE_WORLD_WRITABLE` के उपयोग की **सावधानीपूर्वक जांच** करें। ये modes फाइलों को **अनवांछित या unauthorized access** के लिए उजागर कर सकते हैं। +2. **Dynamic Analysis:** +- ऐप द्वारा बनाए गए फाइलों पर सेट permissions की **सत्यापित** करें। विशेष रूप से जांचें कि क्या किसी भी फाइल को **संसार-व्यापी रूप से readable या writable** किया गया है। यह एक महत्वपूर्ण सुरक्षा जोखिम हो सकता है, क्योंकि इससे **किसी भी application** (चाहे वह कहीं से भी आई हो) उन फाइलों को **read या modify** कर सकता है। -**बाहरी भंडारण** +**External Storage** -**बाहरी भंडारण** पर फ़ाइलों के साथ काम करते समय, कुछ सावधानियाँ बरतनी चाहिए: +SD Cards जैसे **external storage** पर फाइलों के साथ निपटने के समय कुछ सतर्कताएँ अपनाई जानी चाहिए: -1. **पहुँच**: -- बाहरी भंडारण पर फ़ाइलें **वैश्विक रूप से पढ़ने और लिखने योग्य** होती हैं। इसका मतलब है कि कोई भी एप्लिकेशन या उपयोगकर्ता इन फ़ाइलों तक पहुँच सकता है। -2. **सुरक्षा चिंताएँ**: -- पहुँच की आसानी को देखते हुए, **संवेदनशील जानकारी** को बाहरी भंडारण पर **स्टोर न करने** की सलाह दी जाती है। -- बाहरी भंडारण को किसी भी एप्लिकेशन द्वारा हटाया या एक्सेस किया जा सकता है, जिससे यह कम सुरक्षित हो जाता है। -3. **बाहरी भंडारण से डेटा को संभालना**: -- हमेशा बाहरी भंडारण से प्राप्त डेटा पर **इनपुट मान्यता** करें। यह महत्वपूर्ण है क्योंकि डेटा एक अविश्वसनीय स्रोत से है। -- गतिशील लोडिंग के लिए बाहरी भंडारण पर निष्पादन योग्य या क्लास फ़ाइलों को स्टोर करना दृढ़ता से हतोत्साहित किया जाता है। -- यदि आपके एप्लिकेशन को बाहरी भंडारण से निष्पादन योग्य फ़ाइलें प्राप्त करनी हैं, तो सुनिश्चित करें कि ये फ़ाइलें **हस्ताक्षरित और क्रिप्टोग्राफिक रूप से सत्यापित** हैं इससे पहले कि उन्हें गतिशील रूप से लोड किया जाए। यह आपके एप्लिकेशन की सुरक्षा अखंडता बनाए रखने के लिए महत्वपूर्ण है। +1. **Accessibility**: +- external storage पर फाइलें **globally readable और writable** होती हैं। इसका मतलब है कि कोई भी application या user इन फाइलों तक पहुँच सकता है। +2. **Security Concerns**: +- ऐसी सहज पहुँच के कारण, संवेदनशील जानकारी को external storage पर **स्टोर न करने** की सलाह दी जाती है। +- external storage को हटाया जा सकता है या किसी भी application द्वारा access किया जा सकता है, जिससे यह कम सुरक्षित बन जाता है। +3. **Handling Data from External Storage**: +- external storage से प्राप्त डेटा पर हमेशा **input validation** करें। यह महत्वपूर्ण है क्योंकि यह डेटा एक untrusted स्रोत से आता है। +- executables या class files को dynamic loading के लिए external storage पर स्टोर करना कड़ाई से न करने योग्य है। +- यदि आपका application external storage से executable files को retrieve करना ही चाहिए, तो सुनिश्चित करें कि ये फाइलें **signed और cryptographically verified** हों इससे पहले कि उन्हें dynamically load किया जाए। यह कदम आपकी application की security integrity बनाए रखने के लिए आवश्यक है। -बाहरी भंडारण को `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` में **एक्सेस** किया जा सकता है। +External storage को `/storage/emulated/0` , `/sdcard` , `/mnt/sdcard` में **access** किया जा सकता है > [!TIP] -> Android 4.4 (**API 17**) से शुरू होकर, SD कार्ड में एक निर्देशिका संरचना है जो **किसी ऐप को उस ऐप के लिए विशेष रूप से निर्देशिका तक पहुँच को सीमित करती है**। यह दुष्ट एप्लिकेशन को किसी अन्य ऐप की फ़ाइलों तक पढ़ने या लिखने की पहुँच प्राप्त करने से रोकता है। +> Android 4.4 (**API 17**) से शुरू होकर, SD card की directory structure ऐसी है जो **किसी app की उन directories तक ही access सीमित करती है जो विशेष रूप से उस app के लिए हैं**। यह एक malicious application को किसी अन्य app की फाइलों का read या write access प्राप्त करने से रोकता है। -**स्पष्ट-टेक्स्ट में स्टोर की गई संवेदनशील डेटा** +**स्पष्ट-पाठ (clear-text) में संग्रहीत संवेदनशील डेटा** -- **Shared preferences**: Android प्रत्येक एप्लिकेशन को `/data/data//shared_prefs/` पथ में xml फ़ाइलें आसानी से सहेजने की अनुमति देता है और कभी-कभी उस फ़ोल्डर में स्पष्ट-टेक्स्ट में संवेदनशील जानकारी मिल सकती है। -- **Databases**: Android प्रत्येक एप्लिकेशन को `/data/data//databases/` पथ में sqlite डेटाबेस को आसानी से सहेजने की अनुमति देता है और कभी-कभी उस फ़ोल्डर में स्पष्ट-टेक्स्ट में संवेदनशील जानकारी मिल सकती है। +- **Shared preferences**: Android प्रत्येक application को आसानी से xml फाइलें `/data/data//shared_prefs/` path में save करने की अनुमति देता है और कभी-कभी उस फ़ोल्डर में स्पष्ट-पाठ में संवेदनशील जानकारी मिल सकती है। +- **Databases**: Android प्रत्येक application को आसानी से sqlite databases `/data/data//databases/` path में save करने की अनुमति देता है और कभी-कभी उस फ़ोल्डर में स्पष्ट-पाठ में संवेदनशील जानकारी मिल सकती है। -### टूटी हुई TLS +### Broken TLS -**सभी प्रमाणपत्र स्वीकार करें** +**Accept All Certificates** -किसी कारण से कभी-कभी डेवलपर्स सभी प्रमाणपत्रों को स्वीकार करते हैं, भले ही उदाहरण के लिए होस्टनाम कोड की निम्नलिखित पंक्तियों के साथ मेल न खाता हो: +कई बार developers किसी कारण से सभी certificates स्वीकार कर लेते हैं भले ही उदाहरण के लिए hostname मेल न खाता हो, ऐसी लाइनों के साथ कोड में जैसे कि निम्नलिखित: ```java SSLSocketFactory sf = new cc(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); @@ -161,25 +161,26 @@ A good way to test this is to try to capture the traffic using some proxy like B ### Broken Cryptography -**Poor Key Management Processes** +**खराब कुंजी प्रबंधन प्रक्रियाएँ** -कुछ डेवलपर्स संवेदनशील डेटा को स्थानीय स्टोरेज में सहेजते हैं और इसे कोड में हार्डकोडेड/पूर्वानुमानित कुंजी के साथ एन्क्रिप्ट करते हैं। ऐसा नहीं किया जाना चाहिए क्योंकि कुछ रिवर्सिंग हमलावरों को गोपनीय जानकारी निकालने की अनुमति दे सकती है। +कुछ डेवलपर्स संवेदनशील डेटा को local storage में सेव करते हैं और उसे कोड में hardcoded/predictable key से encrypt कर देते हैं। ऐसा नहीं होना चाहिए क्योंकि कुछ reversing से attackers गोपनीय जानकारी निकाल सकते हैं। -**Use of Insecure and/or Deprecated Algorithms** +**असुरक्षित और/या Deprecated Algorithms का उपयोग** -डेवलपर्स को **deprecated algorithms** का उपयोग करके प्राधिकरण **checks**, **store** या **send** डेटा नहीं करना चाहिए। इनमें से कुछ एल्गोरिदम हैं: RC4, MD4, MD5, SHA1... यदि **hashes** का उपयोग पासवर्ड को स्टोर करने के लिए किया जाता है, तो उदाहरण के लिए, salt के साथ brute-force **resistant** hashes का उपयोग किया जाना चाहिए। +Developers को **deprecated algorithms** का उपयोग करके authorisation **checks**, डेटा को **store** या **send** नहीं करना चाहिए। इनमें से कुछ algorithms हैं: RC4, MD4, MD5, SHA1... यदि पासवर्ड स्टोर करने के लिए **hashes** का उपयोग किया जाता है, तो salt के साथ brute-force **resistant** hashes का उपयोग करना चाहिए। ### Other checks -- यह अनुशंसा की जाती है कि **APK को obfuscate करें** ताकि हमलावरों के लिए रिवर्स इंजीनियरिंग का काम कठिन हो सके। -- यदि ऐप संवेदनशील है (जैसे बैंक ऐप), तो इसे **देखना चाहिए कि मोबाइल रूटेड है या नहीं** और इसके अनुसार कार्य करना चाहिए। -- यदि ऐप संवेदनशील है (जैसे बैंक ऐप), तो इसे यह जांचना चाहिए कि क्या **emulator** का उपयोग किया जा रहा है। -- यदि ऐप संवेदनशील है (जैसे बैंक ऐप), तो इसे **execute करने से पहले अपनी अखंडता की जांच करनी चाहिए** कि क्या इसे संशोधित किया गया है। -- [**APKiD**](https://github.com/rednaga/APKiD) का उपयोग करें यह जांचने के लिए कि APK बनाने के लिए कौन सा कंपाइलर/पैकर/obfuscator का उपयोग किया गया था। +- यह सुझाया जाता है कि **APK को obfuscate किया जाए** ताकि attackers के लिए reverse engineer का काम कठिन हो। +- यदि ऐप संवेदनशील है (जैसे bank apps), तो उसे अपना **own checks यह देखने के लिए कि मोबाइल rooted है या नहीं** करना चाहिए और उसके अनुसार कार्य करना चाहिए। +- यदि ऐप संवेदनशील है (जैसे bank apps), तो उसे जांचना चाहिए कि क्या **emulator** उपयोग हो रहा है। +- यदि ऐप संवेदनशील है (जैसे bank apps), तो उसे **executing से पहले अपनी integrity जांचनी चाहिए** यह देखने के लिए कि क्या इसे modify किया गया है। +- [**APKiD**](https://github.com/rednaga/APKiD) का उपयोग करें यह जांचने के लिए कि किस compiler/packer/obfuscator का उपयोग करके APK बनाया गया था ### React Native Application -Read the following page to learn how to easily access javascript code of React applications: +React applications के javascript code तक आसानी से पहुँचने के लिए निम्नलिखित पृष्ठ पढ़ें: + {{#ref}} react-native-application.md @@ -187,7 +188,8 @@ react-native-application.md ### Xamarin Applications -Read the following page to learn how to easily access C# code of a xamarin applications: +C# code तक आसानी से पहुँचने के लिए निम्नलिखित पृष्ठ पढ़ें: + {{#ref}} ../xamarin-apps.md @@ -195,20 +197,21 @@ Read the following page to learn how to easily access C# code of a xamarin appli ### Superpacked Applications -According to this [**blog post**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked is a Meta algorithm that compress the content of an application into a single file. The blog talks about the possibility of creating an app that decompress these kind of apps... and a faster way which involves to **execute the application and gather the decompressed files from the filesystem.** +According to this [**blog post**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked is a Meta algorithm that compress the content of an application into a single file. ब्लॉग में ऐसी ऐप्स को decompress करने के लिए एक ऐप बनाने की संभावना के बारे में बताया गया है... और एक तेज़ तरीका जो **application को execute करके और filesystem से decompressed files इकट्ठा करने** में शामिल है। ### Automated Static Code Analysis -The tool [**mariana-trench**](https://github.com/facebook/mariana-trench) is capable of finding **vulnerabilities** by **scanning** the **code** of the application. This tool contains a series of **known sources** (that indicates to the tool the **places** where the **input** is **controlled by the user**), **sinks** (which indicates to the tool **dangerous** **places** where malicious user input could cause damages) and **rules**. These rules indicates the **combination** of **sources-sinks** that indicates a vulnerability. +The tool [**mariana-trench**](https://github.com/facebook/mariana-trench) is capable of finding **vulnerabilities** by **scanning** the **code** of the application. यह टूल एक श्रृंखला के **known sources** (जो टूल को बताते हैं कि वे **places** कहाँ हैं जहाँ **input** **user द्वारा नियंत्रित** होता है), **sinks** (जो टूल को यह सूचित करते हैं कि कौन से **dangerous** **places** हैं जहाँ malicious user input नुकसान पहुंचा सकता है) और **rules** रखता है। ये rules उन **sources-sinks** के **combination** को दर्शाते हैं जो एक vulnerability संकेत करती है। -With this knowledge, **mariana-trench will review the code and find possible vulnerabilities on it**. +इन जानकारियों के साथ, **mariana-trench कोड की समीक्षा करेगा और उसमें संभावित vulnerabilities खोजेगा।** ### Secrets leaked -An application may contain secrets (API keys, passwords, hidden urls, subdomains...) inside of it that you might be able to discover. You could us a tool such as [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) +An application may contain secrets (API keys, passwords, hidden urls, subdomains...) inside of it that you might be able to discover. आप [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) जैसे टूल का उपयोग कर सकते हैं ### Bypass Biometric Authentication + {{#ref}} bypass-biometric-authentication-android.md {{#endref}} @@ -222,6 +225,7 @@ bypass-biometric-authentication-android.md ### **Other tricks** + {{#ref}} content-protocol.md {{#endref}} @@ -232,44 +236,45 @@ content-protocol.md ## Dynamic Analysis -> First of all, you need an environment where you can install the application and all the environment (Burp CA cert, Drozer and Frida mainly). Therefore, a rooted device (emulated or not) is extremely recommended. +> सबसे पहले, आपको ऐसा environment चाहिए जहाँ आप application और बाकी environment (मुख्य रूप से Burp CA cert, Drozer और Frida) install कर सकें। इसलिए, एक rooted device (emulated या नहीं) अत्यधिक अनुशंसित है। ### Online Dynamic analysis -You can create a **free account** in: [https://appetize.io/](https://appetize.io). This platform allows you to **upload** and **execute** APKs, so it is useful to see how an apk is behaving. +आप [https://appetize.io/](https://appetize.io) पर एक **free account** बना सकते हैं। यह प्लेटफ़ॉर्म आपको APKs **upload** और **execute** करने की अनुमति देता है, इसलिए यह देखने के लिए उपयोगी है कि एक apk कैसे व्यवहार कर रहा है। -You can even **see the logs of your application** in the web and connect through **adb**. +आप web में अपने application के **logs देख सकते हैं** और **adb** के माध्यम से connect भी कर सकते हैं। ![](<../../images/image (831).png>) -Thanks to the ADB connection you can use **Drozer** and **Frida** inside the emulators. +ADB connection के कारण आप emulators के अंदर **Drozer** और **Frida** का उपयोग कर सकते हैं। ### Local Dynamic Analysis #### Using an emulator -- [**Android Studio**](https://developer.android.com/studio) (You can create **x86** and **arm** devices, and according to [**this** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**latest x86** versions **support ARM libraries** without needing an slow arm emulator). -- Learn to set it up in this page: +- [**Android Studio**](https://developer.android.com/studio) (आप **x86** और **arm** devices बना सकते हैं, और [**this** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**के अनुसार latest x86 versions ARM libraries को support करते हैं बिना धीमे arm emulator की ज़रूरत के।) +- इसे सेटअप करना सीखें इस पृष्ठ पर: + {{#ref}} avd-android-virtual-device.md {{#endref}} -- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Free version:** Personal Edition, you need to create an account. _It's recommend to **download** the version **WITH**_ _**VirtualBox** to avoid potential errors._) -- [**Nox**](https://es.bignox.com) (Free, but it doesn't support Frida or Drozer). +- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Free version:** Personal Edition, आपको account बनाना होगा. _यह सुझाव दिया जाता है कि potential errors से बचने के लिए **WITH** _**VirtualBox** वाला version **download** करें._) +- [**Nox**](https://es.bignox.com) (Free, लेकिन यह Frida या Drozer को support नहीं करता). > [!TIP] -> When creating a new emulator on any platform remember that the bigger the screen is, the slower the emulator will run. So select small screens if possible. +> किसी भी platform पर नया emulator बनाते समय याद रखें कि स्क्रीन जितनी बड़ी होगी, emulator उतना ही धीमा चलेगा। इसलिए यदि संभव हो तो छोटे स्क्रीन चुनें। -To **install google services** (like AppStore) in Genymotion you need to click on the red marked button of the following image: +Genymotion में **google services** (जैसे AppStore) install करने के लिए आपको निम्न चित्र में लाल चिह्नित बटन पर क्लिक करना होगा: ![](<../../images/image (277).png>) -Also, notice that in the **configuration of the Android VM in Genymotion** you can select **Bridge Network mode** (this will be useful if you will be connecting to the Android VM from a different VM with the tools). +साथ ही ध्यान दें कि Genymotion में **Android VM की configuration** में आप **Bridge Network mode** चुन सकते हैं (यह उपयोगी होगा यदि आप tools के साथ अलग VM से Android VM से connect कर रहे हों)। #### Use a physical device -You need to activate the **debugging** options and it will be cool if you can **root** it: +आपको **debugging** विकल्प activate करने होंगे और अगर आप इसे **root** कर सकते हैं तो अच्छा होगा: 1. **Settings**. 2. (FromAndroid 8.0) Select **System**. @@ -277,193 +282,244 @@ You need to activate the **debugging** options and it will be cool if you can ** 4. Press **Build number** 7 times. 5. Go back and you will find the **Developer options**. -> Once you have installed the application, the first thing you should do is to try it and investigate what does it do, how does it work and get comfortable with it.\ -> I will suggest to **perform this initial dynamic analysis using MobSF dynamic analysis + pidcat**, so we will be able to **learn how the application works** while MobSF **captures** a lot of **interesting** **data** you can review later on. +> एक बार जब आपने application install कर लिया है, तो सबसे पहले आपको इसे आज़माकर देखना चाहिए और जाँच करनी चाहिए कि यह क्या करता है, कैसे काम करता है और इसके साथ सहज होना चाहिए.\ +> मैं सुझाव दूंगा कि इस प्रारंभिक डायनेमिक विश्लेषण को MobSF dynamic analysis + pidcat का उपयोग करके करें, ताकि हम यह सीख सकें कि application कैसे काम करता है जबकि MobSF कई सारी **interesting** **data** capture करता है जिन्हें आप बाद में review कर सकते हैं। ### Unintended Data Leakage **Logging** -Developers should be cautious of exposing **debugging information** publicly, as it can lead to sensitive data leaks. The tools [**pidcat**](https://github.com/JakeWharton/pidcat) and `adb logcat` are recommended for monitoring application logs to identify and protect sensitive information. **Pidcat** is favored for its ease of use and readability. +डेवलपर्स को सार्वजनिक रूप से **debugging information** उजागर करने में सावधानी बरतनी चाहिए, क्योंकि इससे sensitive data leaks हो सकते हैं। application logs की निगरानी के लिए [**pidcat**](https://github.com/JakeWharton/pidcat) और `adb logcat` tools की सिफारिश की जाती है ताकि संवेदनशील जानकारी की पहचान और सुरक्षा की जा सके। **Pidcat** इसके उपयोग में आसानी और पठनीयता के कारण पसंद किया जाता है। > [!WARNING] -> Note that from **later newer than Android 4.0**, **applications are only able to access their own logs**. So applications cannot access other apps logs.\ -> Anyway, it's still recommended to **not log sensitive information**. +> यह ध्यान दें कि **Android 4.0 से नए वर्ज़न में**, **applications केवल अपने ही logs तक पहुँच सकती हैं**। इसलिए applications अन्य apps के logs तक पहुँच नहीं सकतीं।\ +> फिर भी, यह सलाह दी जाती है कि **संवेदनशील जानकारी को log न करें**। **Copy/Paste Buffer Caching** -Android's **clipboard-based** framework enables copy-paste functionality in apps, yet poses a risk as **other applications** can **access** the clipboard, potentially exposing sensitive data. It's crucial to **disable copy/paste** functions for sensitive sections of an application, like credit card details, to prevent data leaks. +Android का **clipboard-based** framework apps में copy-paste functionality सक्षम करता है, पर इससे जोखिम होता है क्योंकि **अन्य applications** clipboard तक पहुँच सकती हैं, जिससे संवेदनशील डेटा उजागर हो सकता है। इसलिए credit card details जैसे संवेदनशील हिस्सों के लिए copy/paste functions को disable करना महत्वपूर्ण है ताकि data leaks से बचा जा सके। **Crash Logs** -If an application **crashes** and **saves logs**, these logs can assist attackers, particularly when the application cannot be reverse-engineered. To mitigate this risk, avoid logging on crashes, and if logs must be transmitted over the network, ensure they are sent via an SSL channel for security. +यदि कोई application **crashes** और **logs save** करता है, तो ये logs attackers की मदद कर सकते हैं, विशेषकर जब application reverse-engineer नहीं किया जा सकता। इस जोखिम को कम करने के लिए, crashes पर logging से बचें, और यदि logs को network पर भेजना आवश्यक है, तो सुनिश्चित करें कि वे सुरक्षा के लिए SSL चैनल के माध्यम से भेजे जाएं। -As pentester, **try to take a look to these logs**. +As pentester, **इन logs को देखने की कोशिश करें**। **Analytics Data Sent To 3rd Parties** -Applications often integrate services like Google Adsense, which can inadvertently **leak sensitive data** due to improper implementation by developers. To identify potential data leaks, it's advisable to **intercept the application's traffic** and check for any sensitive information being sent to third-party services. +Applications अक्सर Google Adsense जैसे services को integrate करती हैं, जो developers की गलत implementation के कारण अनजाने में **sensitive data leak** कर सकती हैं। संभावित data leaks की पहचान के लिए, यह सलाह दी जाती है कि आप **application के traffic को intercept करें** और जांचें कि किसी भी संवेदनशील जानकारी को third-party services को भेजा तो नहीं जा रहा। ### SQLite DBs -Most of the applications will use **internal SQLite databases** to save information. During the pentest take a **look** to the **databases** created, the names of **tables** and **columns** and all the **data** saved because you could find **sensitive information** (which would be a vulnerability).\ -Databases should be located in `/data/data/the.package.name/databases` like `/data/data/com.mwr.example.sieve/databases` +ज़्यादातर applications जानकारी सहेजने के लिए **internal SQLite databases** का उपयोग करते हैं। pentest के दौरान बनाए गए **databases**, उनके **tables** और **columns** के नाम और सहेजे गए सभी **data** को देखें क्योंकि आप वहाँ **sensitive information** पा सकते हैं (जो एक vulnerability होगी).\ +Databases आमतौर पर `/data/data/the.package.name/databases` में होते हैं जैसे `/data/data/com.mwr.example.sieve/databases` -If the database is saving confidential information and is **encrypted b**ut you can **find** the **password** inside the application it's still a **vulnerability**. +यदि database confidential जानकारी सहेज रहा है और **encrypted** है पर आप application के अंदर password ढूँढ सकते हैं तो यह अभी भी एक **vulnerability** है। -Enumerate the tables using `.tables` and enumerate the columns of the tables doing `.schema ` +.tables का उपयोग करके tables को enumerate करें और `.schema ` करके tables के columns को enumerate करें। ### Drozer (Exploit Activities, Content Providers and Services) -From [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** allows you to **assume the role of an Android app** and interact with other apps. It can do **anything that an installed application can do**, such as make use of Android’s Inter-Process Communication (IPC) mechanism and interact with the underlying operating system. .\ -Drozer is s useful tool to **exploit exported activities, exported services and Content Providers** as you will learn in the following sections. +From [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** आपको **एक Android app की भूमिका अपनाने** और अन्य apps के साथ interact करने की अनुमति देता है। यह **वह सब कुछ कर सकता है जो एक installed application कर सकता है**, जैसे Android की Inter-Process Communication (IPC) mechanism का उपयोग करना और underlying operating system के साथ interact करना.\ +Drozer एक उपयोगी tool है **exported activities, exported services और Content Providers को exploit करने के लिए** जैसा कि आप निम्नलिखित sections में सीखेंगे। ### Exploiting exported Activities [**Read this if you want to refresh what is an Android Activity.**](android-applications-basics.md#launcher-activity-and-other-activities)\ -Also remember that the code of an activity starts in the **`onCreate`** method. +साथ ही याद रखें कि activity का code **`onCreate`** method में शुरू होता है। **Authorisation bypass** -When an Activity is exported you can invoke its screen from an external app. Therefore, if an activity with **sensitive information** is **exported** you could **bypass** the **authentication** mechanisms **to access it.** +जब कोई Activity exported होती है तो आप external app से उसका स्क्रीन invoke कर सकते हैं। इसलिए, यदि कोई activity जिसमें **sensitive information** है **exported** है तो आप उसे access करने के लिए authentication mechanisms को **bypass** कर सकते हैं। [**Learn how to exploit exported activities with Drozer.**](drozer-tutorial/index.html#activities) -You can also start an exported activity from adb: +आप adb से भी एक exported activity start कर सकते हैं: - PackageName is com.example.demo - Exported ActivityName is com.example.test.MainActivity ```bash adb shell am start -n com.example.demo/com.example.test.MainActivity ``` -**NOTE**: MobSF _**singleTask/singleInstance**_ के रूप में `android:launchMode` का उपयोग करने को दुर्भावनापूर्ण के रूप में पहचानता है, लेकिन [इस](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750) के कारण, यह स्पष्ट रूप से केवल पुराने संस्करणों (API संस्करण < 21) पर खतरनाक है। +**NOTE**: MobSF किसी activity में `android:launchMode` के रूप में _**singleTask/singleInstance**_ के उपयोग को malicious के रूप में पहचानता है, लेकिन [this](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750) के कारण, जाहिरा तौर पर यह केवल पुराने संस्करणों (API versions < 21) में ही खतरनाक है। > [!TIP] -> ध्यान दें कि एक प्राधिकरण बायपास हमेशा एक कमजोर बिंदु नहीं होता है, यह इस पर निर्भर करेगा कि बायपास कैसे काम करता है और कौन सी जानकारी उजागर होती है। +> ध्यान दें कि एक authorisation bypass हमेशा एक vulnerability नहीं होती — यह इस पर निर्भर करेगा कि bypass कैसे काम करता है और कौन-सी जानकारी प्रकट होती है। -**संवेदनशील जानकारी का रिसाव** +**Sensitive information leakage** -**गतिविधियाँ परिणाम भी लौटा सकती हैं**। यदि आप एक निर्यातित और अप्रोटेक्टेड गतिविधि को खोजने में सफल होते हैं जो **`setResult`** विधि को कॉल करती है और **संवेदनशील जानकारी** लौटाती है, तो यह संवेदनशील जानकारी का रिसाव है। +Activities भी results वापस कर सकती हैं। अगर आप कोई exported और unprotected activity ढूंढ लेते हैं जो **`setResult`** method कॉल कर रही है और **returning sensitive information** कर रही है, तो यह एक sensitive information leakage है। #### Tapjacking -यदि tapjacking को रोका नहीं गया, तो आप निर्यातित गतिविधि का दुरुपयोग कर सकते हैं ताकि **उपयोगकर्ता अप्रत्याशित क्रियाएँ** कर सके। Tapjacking के बारे में अधिक जानकारी के लिए [**यहाँ लिंक का पालन करें**](#tapjacking)। +अगर tapjacking रोका नहीं गया है, तो आप exported activity का दुरुपयोग करके **user को अनपेक्षित कार्य करवाने** के लिए मजबूर कर सकते हैं। Tapjacking के बारे में अधिक जानकारी के लिए [**what is Tapjacking follow the link**](#tapjacking) देखें। -### सामग्री प्रदाताओं का शोषण - संवेदनशील जानकारी तक पहुँच और हेरफेर +### Exploiting Content Providers - Accessing and manipulating sensitive information -[**यदि आप सामग्री प्रदाता क्या है, इसे ताज़ा करना चाहते हैं तो इसे पढ़ें।**](android-applications-basics.md#content-provider)\ -सामग्री प्रदाता मूल रूप से **डेटा साझा करने** के लिए उपयोग किए जाते हैं। यदि किसी ऐप में उपलब्ध सामग्री प्रदाता हैं, तो आप उनसे **संवेदनशील** डेटा **निकालने** में सक्षम हो सकते हैं। यह भी संभावित **SQL इंजेक्शन** और **पथ ट्रैवर्सल** का परीक्षण करने के लिए दिलचस्प है क्योंकि वे कमजोर हो सकते हैं। +[**Read this if you want to refresh what is a Content Provider.**](android-applications-basics.md#content-provider)\ +Content providers मूलतः **data share** करने के लिए उपयोग किए जाते हैं। अगर किसी app के पास उपलब्ध content providers हैं तो आप उनसे **sensitive** डेटा **extract** कर पाने में सक्षम हो सकते हैं। यह भी ज़रूरी है कि संभावित **SQL injections** और **Path Traversals** का टेस्ट किया जाए क्योंकि वे vulnerable हो सकते हैं। -[**Drozer के साथ सामग्री प्रदाताओं का शोषण करना सीखें।**](drozer-tutorial/index.html#content-providers) +[**Learn how to exploit Content Providers with Drozer.**](drozer-tutorial/index.html#content-providers) -### **सेवाओं का शोषण** +### **Exploiting Services** -[**यदि आप सेवा क्या है, इसे ताज़ा करना चाहते हैं तो इसे पढ़ें।**](android-applications-basics.md#services)\ -याद रखें कि एक सेवा की क्रियाएँ `onStartCommand` विधि में शुरू होती हैं। +[**Read this if you want to refresh what is a Service.**](android-applications-basics.md#services)\ +याद रखें कि Service के actions method `onStartCommand` में शुरू होते हैं। -एक सेवा मूल रूप से कुछ ऐसा है जो **डेटा प्राप्त कर सकता है**, **प्रसंस्कृत** कर सकता है और **प्रतिक्रिया** (या नहीं) लौटा सकता है। फिर, यदि कोई एप्लिकेशन कुछ सेवाएँ निर्यात कर रहा है, तो आपको **कोड** की **जांच** करनी चाहिए ताकि यह समझ सकें कि यह क्या कर रहा है और **गोपनीय जानकारी निकालने**, प्रमाणीकरण उपायों को बायपास करने के लिए इसे **गतिशील रूप से** **परीक्षण** करें...\ -[**Drozer के साथ सेवाओं का शोषण करना सीखें।**](drozer-tutorial/index.html#services) +Service मूलतः कुछ ऐसा होता है जो **डेटा प्राप्त कर सकता है**, उसे **process** करता है और (या नहीं) एक response **returns** करता है। इसलिए, यदि कोई application कुछ services export कर रहा है तो आपको उसका **code** चेक कर के समझना चाहिए कि यह क्या कर रहा है और उसे **dynamically** टेस्ट करके confidential जानकारी निकालने, authentication measures को bypass करने आदि का प्रयास करना चाहिए।\ +[**Learn how to exploit Services with Drozer.**](drozer-tutorial/index.html#services) -### **ब्रॉडकास्ट रिसीवर्स का शोषण** +### **Exploiting Broadcast Receivers** -[**यदि आप ब्रॉडकास्ट रिसीवर क्या है, इसे ताज़ा करना चाहते हैं तो इसे पढ़ें।**](android-applications-basics.md#broadcast-receivers)\ -याद रखें कि एक ब्रॉडकास्ट रिसीवर की क्रियाएँ `onReceive` विधि में शुरू होती हैं। +[**Read this if you want to refresh what is a Broadcast Receiver.**](android-applications-basics.md#broadcast-receivers)\ +याद रखें कि Broadcast Receiver के actions method `onReceive` में शुरू होते हैं। -एक ब्रॉडकास्ट रिसीवर एक प्रकार के संदेश की प्रतीक्षा करेगा। रिसीवर जिस तरह से संदेश को संभालता है, उसके आधार पर यह कमजोर हो सकता है।\ -[**Drozer के साथ ब्रॉडकास्ट रिसीवर्स का शोषण करना सीखें।**](#exploiting-broadcast-receivers) +एक broadcast receiver किसी प्रकार के message की प्रतीक्षा करेगा। यह इस पर निर्भर करता है कि receiver संदेश को कैसे handle करता है — यह vulnerable हो सकता है।\ +[**Learn how to exploit Broadcast Receivers with Drozer.**](#exploiting-broadcast-receivers) -### **स्कीमों / डीप लिंक का शोषण** +### **Exploiting Schemes / Deep links** -आप मैन्युअल रूप से गहरे लिंक की खोज कर सकते हैं, MobSF जैसे उपकरणों या [इस स्क्रिप्ट](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py) का उपयोग करके।\ -आप **adb** या **ब्राउज़र** का उपयोग करके एक घोषित **स्कीम** को **खोल** सकते हैं: +आप deep links को मैन्युअली खोज सकते हैं, MobSF जैसे tools या scripts जैसे [this one](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py) का उपयोग करके।\ +आप घोषित किए गए **scheme** को **adb** या किसी **browser** का उपयोग करके **open** कर सकते हैं: ```bash adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] ``` -_ध्यान दें कि आप **पैकेज नाम को छोड़ सकते हैं** और मोबाइल स्वचालित रूप से उस ऐप को कॉल करेगा जो उस लिंक को खोलना चाहिए._ +_ध्यान दें कि आप **omit the package name** छोड़ सकते हैं और मोबाइल स्वचालित रूप से उस app को कॉल करेगा जो उस link को खोलना चाहिए._ ```html Click me with alternative ``` -**कोड निष्पादित किया गया** +**Code executed** -**ऐप में निष्पादित होने वाले कोड** को खोजने के लिए, उस गतिविधि पर जाएं जिसे डीप लिंक द्वारा कॉल किया गया है और फ़ंक्शन **`onNewIntent`** को खोजें। +In order to find the **code that will be executed in the App**, go to the activity called by the deeplink and search the function **`onNewIntent`**. ![](<../../images/image (436) (1) (1) (1).png>) -**संवेदनशील जानकारी** +**Sensitive info** -हर बार जब आप एक डीप लिंक पाते हैं, तो जांचें कि **यह URL पैरामीटर के माध्यम से संवेदनशील डेटा (जैसे पासवर्ड) प्राप्त नहीं कर रहा है**, क्योंकि कोई अन्य एप्लिकेशन **डीप लिंक का अनुकरण कर सकता है और उस डेटा को चुरा सकता है!** +हर बार जब आप किसी deep link को पाते हैं तो जाँच करें कि क्या यह **URL parameters के माध्यम से संवेदनशील डेटा (जैसे passwords) प्राप्त नहीं कर रहा है**, क्योंकि कोई भी अन्य application उस deep link का impersonate कर सकता है और वह डेटा चरीद सकता/चुरा सकता है! -**पैरामीटर पथ में** +**Parameters in path** -आपको **यह भी जांचना चाहिए कि क्या कोई डीप लिंक URL के पथ के अंदर एक पैरामीटर का उपयोग कर रहा है** जैसे: `https://api.example.com/v1/users/{username}` , इस मामले में आप एक पथ यात्रा को मजबूर कर सकते हैं जैसे: `example://app/users?username=../../unwanted-endpoint%3fparam=value` .\ -ध्यान दें कि यदि आप एप्लिकेशन के अंदर सही एंडपॉइंट्स पाते हैं, तो आप **ओपन रीडायरेक्ट** (यदि पथ का एक भाग डोमेन नाम के रूप में उपयोग किया जाता है), **खाता अधिग्रहण** (यदि आप CSRF टोकन के बिना उपयोगकर्ता विवरण को संशोधित कर सकते हैं और कमजोर एंडपॉइंट ने सही विधि का उपयोग किया) और किसी अन्य कमजोरियों का कारण बन सकते हैं। इसके बारे में अधिक [जानकारी यहाँ](http://dphoeniixx.com/2020/12/13-2/) है। +आपको यह भी ज़रूर जाँचना चाहिए कि क्या कोई deep link URL के path के अंदर किसी parameter का उपयोग कर रहा है जैसे: `https://api.example.com/v1/users/{username}` , ऐसे मामलों में आप path traversal को फोर्स कर सकते हैं जैसे: `example://app/users?username=../../unwanted-endpoint%3fparam=value` .\ +यदि आप application के अंदर सही endpoints ढूँढ लेते हैं तो आप संभावित रूप से **Open Redirect** (यदि path का कोई हिस्सा domain name के रूप में उपयोग हो रहा हो), **account takeover** (यदि आप बिना CSRF token के users के विवरण बदल सकते हैं और vuln endpoint ने सही method का उपयोग किया हो) और अन्य किसी भी vuln को ट्रिगर कर सकते हैं। More [info about this here](http://dphoeniixx.com/2020/12/13-2/). -**अधिक उदाहरण** +**More examples** -एक [दिलचस्प बग बाउंटी रिपोर्ट](https://hackerone.com/reports/855618) लिंक के बारे में (_/.well-known/assetlinks.json_)। +An [interesting bug bounty report](https://hackerone.com/reports/855618) about links (_/.well-known/assetlinks.json_). -### ट्रांसपोर्ट लेयर निरीक्षण और सत्यापन विफलताएँ +### Transport Layer Inspection and Verification Failures -- **प्रमाणपत्रों की हमेशा सही तरीके से जांच नहीं की जाती** Android एप्लिकेशनों द्वारा। इन एप्लिकेशनों के लिए चेतावनियों की अनदेखी करना और स्व-हस्ताक्षरित प्रमाणपत्रों को स्वीकार करना या कुछ मामलों में HTTP कनेक्शन का उपयोग करना सामान्य है। -- **SSL/TLS हैंडशेक के दौरान बातचीत कभी-कभी कमजोर होती है**, असुरक्षित सिफर सूट का उपयोग करते हुए। यह कमजोरी कनेक्शन को मैन-इन-द-मिडल (MITM) हमलों के प्रति संवेदनशील बनाती है, जिससे हमलावर डेटा को डिक्रिप्ट कर सकते हैं। -- **निजी जानकारी का लीक होना** एक जोखिम है जब एप्लिकेशन सुरक्षित चैनलों का उपयोग करके प्रमाणीकरण करते हैं लेकिन फिर अन्य लेनदेन के लिए असुरक्षित चैनलों के माध्यम से संचार करते हैं। यह दृष्टिकोण संवेदनशील डेटा, जैसे सत्र कुकीज़ या उपयोगकर्ता विवरण, को दुर्भावनापूर्ण संस्थाओं द्वारा इंटरसेप्शन से बचाने में विफल रहता है। +- **Certificates are not always inspected properly** by Android applications. यह आम है कि ये applications warnings को अनदेखा कर self-signed certificates स्वीकार कर लें या कुछ मामलों में HTTP connections पर revert कर दें। +- **Negotiations during the SSL/TLS handshake are sometimes weak**, insecure cipher suites का उपयोग होता है। यह vulnerability connection को man-in-the-middle (MITM) attacks के लिए संवेदनशील बनाती है, जिससे attackers डेटा को decrypt कर सकते हैं। +- **Leakage of private information** is a risk when applications authenticate using secure channels but then communicate over non-secure channels for other transactions. यह तरीका संवेदनशील डेटा, जैसे session cookies या user details, को malicious entities द्वारा interception से सुरक्षित नहीं रखता। -#### प्रमाणपत्र सत्यापन +#### Certificate Verification -हम **प्रमाणपत्र सत्यापन** पर ध्यान केंद्रित करेंगे। सुरक्षा बढ़ाने के लिए सर्वर के प्रमाणपत्र की अखंडता की जांच की जानी चाहिए। यह महत्वपूर्ण है क्योंकि असुरक्षित TLS कॉन्फ़िगरेशन और असुरक्षित चैनलों के माध्यम से संवेदनशील डेटा का संचरण महत्वपूर्ण जोखिम पैदा कर सकता है। सर्वर प्रमाणपत्रों को सत्यापित करने और कमजोरियों को संबोधित करने के लिए विस्तृत चरणों के लिए, [**यह संसाधन**](https://manifestsecurity.com/android-application-security-part-10/) व्यापक मार्गदर्शन प्रदान करता है। +हम focus करेंगे **certificate verification** पर। सर्वर के certificate की integrity verify करना सुरक्षा बढ़ाने के लिए आवश्यक है। यह महत्वपूर्ण है क्योंकि insecure TLS configurations और unencrypted चैनलों पर संवेदनशील डेटा भेजना गंभीर जोखिम पैदा कर सकता है। सर्वर certificates verify करने और vulnerabilities को address करने के विस्तृत steps के लिए, [**this resource**](https://manifestsecurity.com/android-application-security-part-10/) विस्तृत मार्गदर्शन प्रदान करता है। -#### SSL पिनिंग +#### SSL Pinning -SSL पिनिंग एक सुरक्षा उपाय है जहां एप्लिकेशन सर्वर के प्रमाणपत्र को एप्लिकेशन के भीतर संग्रहीत ज्ञात प्रति के खिलाफ सत्यापित करता है। यह विधि MITM हमलों को रोकने के लिए आवश्यक है। संवेदनशील जानकारी को संभालने वाले एप्लिकेशनों के लिए SSL पिनिंग को लागू करना अत्यधिक अनुशंसित है। +SSL Pinning एक security measure है जहाँ application सर्वर के certificate को application में संग्रहीत ज्ञात copy के साथ verify करता है। यह method MITM attacks रोकने के लिए आवश्यक है। जो applications संवेदनशील जानकारी handle करते हैं उनके लिए SSL Pinning लागू करना अत्यधिक अनुशंसित है। -#### ट्रैफ़िक निरीक्षण +#### Traffic Inspection -HTTP ट्रैफ़िक का निरीक्षण करने के लिए, **प्रॉक्सी टूल के प्रमाणपत्र को स्थापित करना आवश्यक है** (जैसे, Burp)। इस प्रमाणपत्र को स्थापित किए बिना, एन्क्रिप्टेड ट्रैफ़िक प्रॉक्सी के माध्यम से दिखाई नहीं दे सकता है। कस्टम CA प्रमाणपत्र स्थापित करने के लिए एक गाइड के लिए, [**यहाँ क्लिक करें**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)। +HTTP traffic inspect करने के लिए, proxy tool का certificate (उदाहरण के लिए Burp) **install** करना ज़रूरी है। बिना इस certificate को install किए, encrypted traffic proxy के माध्यम से दिखाई नहीं दे सकती। custom CA certificate install करने के guide के लिए, [**click here**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)। -**API स्तर 24 और उससे ऊपर** को लक्षित करने वाले एप्लिकेशनों को प्रॉक्सी के CA प्रमाणपत्र को स्वीकार करने के लिए नेटवर्क सुरक्षा कॉन्फ़िग को संशोधित करने की आवश्यकता होती है। एन्क्रिप्टेड ट्रैफ़िक का निरीक्षण करने के लिए यह कदम महत्वपूर्ण है। नेटवर्क सुरक्षा कॉन्फ़िग को संशोधित करने के लिए निर्देशों के लिए, [**इस ट्यूटोरियल**](make-apk-accept-ca-certificate.md) को देखें। +Applications जो **API Level 24 and above** target करते हैं उन्हें proxy के CA certificate को accept करने के लिए Network Security Config में परिवर्तन करने की आवश्यकता होती है। यह step encrypted traffic inspect करने के लिए critical है। Network Security Config modify करने के instructions के लिए, [**refer to this tutorial**](make-apk-accept-ca-certificate.md)। -यदि **Flutter** का उपयोग किया जा रहा है, तो आपको [**इस पृष्ठ**](flutter.md) में दिए गए निर्देशों का पालन करने की आवश्यकता है। इसका कारण यह है कि, केवल स्टोर में प्रमाणपत्र जोड़ने से काम नहीं चलेगा क्योंकि Flutter की अपनी मान्य CAs की सूची है। +यदि **Flutter** उपयोग में है तो आपको [**this page**](flutter.md) में दिए निर्देशों का पालन करना होगा। ऐसा इसलिए है क्योंकि केवल certificate को store में जोड़ना काम नहीं करेगा क्योंकि Flutter की अपनी valid CAs की सूची होती है। -#### SSL पिनिंग को बायपास करना +#### Static detection of SSL/TLS pinning -जब SSL पिनिंग लागू होती है, तो HTTPS ट्रैफ़िक का निरीक्षण करने के लिए इसे बायपास करना आवश्यक हो जाता है। इस उद्देश्य के लिए विभिन्न विधियाँ उपलब्ध हैं: +runtime bypasses करने के प्रयास से पहले, जल्दी से map करें कि APK में pinning कहाँ enforce किया गया है। Static discovery आपको hooks/patches की योजना बनाने और सही code paths पर ध्यान केंद्रित करने में मदद करता है। -- स्वचालित रूप से **apk को संशोधित करें** ताकि **SSL पिनिंग को बायपास** किया जा सके [**apk-mitm**](https://github.com/shroudedcode/apk-mitm) के साथ। इस विकल्प का सबसे बड़ा लाभ यह है कि आपको SSL पिनिंग को बायपास करने के लिए रूट की आवश्यकता नहीं होगी, लेकिन आपको एप्लिकेशन को हटाना और नए को फिर से स्थापित करना होगा, और यह हमेशा काम नहीं करेगा। -- आप इस सुरक्षा को बायपास करने के लिए **Frida** का उपयोग कर सकते हैं (नीचे चर्चा की गई)। यहाँ Burp+Frida+Genymotion का उपयोग करने के लिए एक गाइड है: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/) -- आप **objection** का उपयोग करके **स्वचालित रूप से SSL पिनिंग को बायपास** करने की कोशिश कर सकते हैं:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` -- आप **MobSF डायनामिक एनालिसिस** का उपयोग करके **स्वचालित रूप से SSL पिनिंग को बायपास** करने की कोशिश कर सकते हैं (नीचे समझाया गया) -- यदि आप अभी भी सोचते हैं कि कुछ ट्रैफ़िक है जिसे आप कैप्चर नहीं कर रहे हैं, तो आप **iptables का उपयोग करके ट्रैफ़िक को burp पर अग्रेषित करने** की कोशिश कर सकते हैं। इस ब्लॉग को पढ़ें: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) +Tool: SSLPinDetect +- Open-source static-analysis utility जो APK को Smali (via apktool) में decompile करके SSL/TLS pinning implementations के curated regex patterns के लिए scan करता है। +- हर match के लिए exact file path, line number, और एक code snippet report करता है। +- सामान्य frameworks और custom code paths को कवर करता है: OkHttp CertificatePinner, custom javax.net.ssl.X509TrustManager.checkServerTrusted, SSLContext.init with custom TrustManagers/KeyManagers, और Network Security Config XML pins। -#### सामान्य वेब कमजोरियों की खोज +Install +- Prereqs: Python >= 3.8, Java on PATH, apktool +```bash +git clone https://github.com/aancw/SSLPinDetect +cd SSLPinDetect +pip install -r requirements.txt +``` +उपयोग +```bash +# Basic +python sslpindetect.py -f app.apk -a apktool.jar -यह भी महत्वपूर्ण है कि आप एप्लिकेशन के भीतर सामान्य वेब कमजोरियों की खोज करें। इन कमजोरियों की पहचान और शमन के बारे में विस्तृत जानकारी इस सारांश के दायरे से परे है लेकिन इसे अन्यत्र व्यापक रूप से कवर किया गया है। +# Verbose (timings + per-match path:line + snippet) +python sslpindetect.py -a apktool_2.11.0.jar -f sample/app-release.apk -v +``` +उदाहरण पैटर्न नियम (JSON) +proprietary/custom pinning शैलियों का पता लगाने के लिए signatures का उपयोग करें या उन्हें बढ़ाएँ। आप अपना JSON लोड कर सकते हैं और बड़े पैमाने पर स्कैन कर सकते हैं। +```json +{ +"OkHttp Certificate Pinning": [ +"Lcom/squareup/okhttp/CertificatePinner;", +"Lokhttp3/CertificatePinner;", +"setCertificatePinner" +], +"TrustManager Override": [ +"Ljavax/net/ssl/X509TrustManager;", +"checkServerTrusted" +] +} +``` +Notes and tips +- बड़े ऐप्स पर तेज़ स्कैनिंग via multi-threading और memory-mapped I/O; pre-compiled regex overhead/false positives घटाता है। +- Pattern collection: https://github.com/aancw/smali-sslpin-patterns +- अगले triage के लिए सामान्य detection targets: +- OkHttp: CertificatePinner usage, setCertificatePinner, okhttp3/okhttp package references +- Custom TrustManagers: javax.net.ssl.X509TrustManager, checkServerTrusted overrides +- Custom SSL contexts: SSLContext.getInstance + SSLContext.init with custom managers +- Declarative pins in res/xml network security config और manifest references +- matched locations का उपयोग Frida hooks, static patches, या config reviews की योजना बनाने के लिए करें इससे पहले कि आप dynamic testing करें। + + + +#### SSL Pinning को बायपास करना + +जब SSL Pinning लागू किया जाता है, तो HTTPS ट्रैफिक की जांच के लिए इसे बायपास करना आवश्यक हो जाता है। इसके लिए विभिन्न तरीके उपलब्ध हैं: + +- Automatically **modify** the **apk** to **bypass** SSLPinning with [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). इसका सबसे बड़ा फायदा यह है कि आपको SSL Pinning बायपास करने के लिए root की जरूरत नहीं पड़ेगी, लेकिन आपको एप्लिकेशन को डिलीट करके नया इंस्टॉल करना होगा, और यह हमेशा काम नहीं करेगा। +- आप इसे बायपास करने के लिए **Frida** का उपयोग कर सकते हैं (नीचे चर्चा की गई है)। यहाँ Burp+Frida+Genymotion को उपयोग करने का गाइड है: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/) +- आप [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` का उपयोग करके SSL Pinning को स्वचालित रूप से बायपास करने की कोशिश भी कर सकते हैं। +- आप **MobSF dynamic analysis** का उपयोग करके भी SSL Pinning को स्वचालित रूप से बायपास करने की कोशिश कर सकते हैं (नीचे समझाया गया है)। +- यदि आपको अभी भी लगता है कि कुछ ट्रैफिक कैप्चर नहीं हो रहा है तो आप ट्रैफिक को burp पर फॉरवर्ड करने के लिए iptables का उपयोग कर सकते हैं। यह ब्लॉग पढ़ें: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) + +#### एप्लिकेशन में सामान्य वेब कमजोरियों की तलाश + +ऐप्लिकेशन के भीतर सामान्य वेब vulnerabilities की तलाश करना भी महत्वपूर्ण है। इन कमजोरियों की पहचान और उन्हें मिटाने के विस्तृत तरीके इस सारांश के दायरे से बाहर हैं लेकिन बहुत व्यापक रूप से अन्य जगहों पर कवर किए गए हैं। ### Frida -[Frida](https://www.frida.re) डेवलपर्स, रिवर्स-इंजीनियर्स और सुरक्षा शोधकर्ताओं के लिए एक डायनामिक इंस्ट्रुमेंटेशन टूलकिट है।\ -**आप चल रहे एप्लिकेशन तक पहुँच सकते हैं और रन टाइम पर विधियों को हुक कर सकते हैं ताकि व्यवहार को बदल सकें, मान बदल सकें, मान निकाल सकें, विभिन्न कोड चला सकें...**\ -यदि आप Android एप्लिकेशनों का परीक्षण करना चाहते हैं, तो आपको Frida का उपयोग करना सीखना होगा। +[Frida](https://www.frida.re) developers, reverse-engineers, और security researchers के लिए एक dynamic instrumentation toolkit है.\ +**आप चल रही application तक पहुँच कर run time पर methods को hook कर सकते हैं ताकि व्यवहार बदलें, मान बदलें, मान निकालें, अलग code चलाएँ...**\ +यदि आप Android applications की pentesting करना चाहते हैं तो आपको Frida का उपयोग करना आना चाहिए। -- Frida का उपयोग कैसे करें: [**Frida ट्यूटोरियल**](frida-tutorial/index.html) -- Frida के साथ क्रियाओं के लिए कुछ "GUI": [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) -- Ojection Frida के उपयोग को स्वचालित करने के लिए शानदार है: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) -- आप यहाँ कुछ शानदार Frida स्क्रिप्ट्स पा सकते हैं: [**https://codeshare.frida.re/**](https://codeshare.frida.re) -- एंटी-डिबगिंग / एंटी-Frida तंत्रों को बायपास करने के लिए Frida को लोड करते समय [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) में संकेतित तरीके से प्रयास करें (उपकरण [linjector](https://github.com/erfur/linjector-rs)) +- Frida का उपयोग कैसे करें जानें: [**Frida tutorial**](frida-tutorial/index.html) +- Frida के साथ actions के लिए कुछ "GUI": [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) +- Ojection Frida के उपयोग को automate करने के लिए अच्छा है: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) +- कुछ Awesome Frida scripts यहाँ मिलेंगी: [**https://codeshare.frida.re/**](https://codeshare.frida.re) +- anti-debugging / anti-frida mechanisms को bypass करने की कोशिश करें, Frida को ऐसे load करके जैसा यहाँ बताया गया है: [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (tool [linjector](https://github.com/erfur/linjector-rs)) -#### एंटी-इंस्ट्रुमेंटेशन और SSL पिनिंग बायपास कार्यप्रवाह +#### Anti-instrumentation & SSL pinning bypass workflow {{#ref}} android-anti-instrumentation-and-ssl-pinning-bypass.md {{#endref}} -### **डंप मेमोरी - Fridump** +### **Dump Memory - Fridump** -जांचें कि क्या एप्लिकेशन संवेदनशील जानकारी को मेमोरी में संग्रहीत कर रहा है जिसे इसे संग्रहीत नहीं करना चाहिए जैसे पासवर्ड या म्नेमोनिक्स। +जाँचे कि क्या application मेमोरी में संवेदनशील जानकारी स्टोर कर रहा है जो इसे नहीं रखना चाहिए, जैसे पासवर्ड या mnemonics। -[**Fridump3**](https://github.com/rootbsd/fridump3) का उपयोग करके आप ऐप की मेमोरी को डंप कर सकते हैं: +Using [**Fridump3**](https://github.com/rootbsd/fridump3) आप ऐप की मेमोरी को dump कर सकते हैं: ```bash # With PID python3 fridump3.py -u @@ -472,63 +528,63 @@ python3 fridump3.py -u frida-ps -Uai python3 fridump3.py -u "" ``` -यह ./dump फ़ोल्डर में मेमोरी को डंप करेगा, और वहाँ आप कुछ इस तरह grep कर सकते हैं: +यह ./dump फ़ोल्डर में memory को dump करेगा, और वहां आप कुछ इस तरह grep कर सकते हैं: ```bash strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$" ``` ### **Keystore में संवेदनशील डेटा** -Android में Keystore संवेदनशील डेटा संग्रहीत करने के लिए सबसे अच्छा स्थान है, हालाँकि, पर्याप्त विशेषाधिकारों के साथ इसे **एक्सेस करना संभव है**। चूंकि एप्लिकेशन यहाँ **स्पष्ट पाठ में संवेदनशील डेटा** संग्रहीत करने की प्रवृत्ति रखते हैं, इसलिए पेंटेस्ट को इसे रूट उपयोगकर्ता के रूप में जांचना चाहिए या किसी के पास डिवाइस तक भौतिक पहुंच हो सकती है जो इस डेटा को चुरा सकता है। +Android में Keystore संवेदनशील डेटा स्टोर करने के लिए सबसे अच्छा स्थान है, लेकिन पर्याप्त privileges होने पर इसे फिर भी **इसे access करना संभव** है। चूँकि एप्लिकेशन यहाँ अक्सर **sensitive data in clear text** स्टोर करते हैं, इसलिए pentests को इसे root user के रूप में चेक करना चाहिए — किसी के पास device का physical access होने पर वह यह डेटा चुरा सकता है। -यहां तक कि यदि एक ऐप ने keystore में डेटा संग्रहीत किया है, तो डेटा को एन्क्रिप्ट किया जाना चाहिए। +भले ही कोई app keystore में डेटा स्टोर करे, डेटा को encrypted होना चाहिए। -Keystore के अंदर डेटा तक पहुँचने के लिए आप इस Frida स्क्रिप्ट का उपयोग कर सकते हैं: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js) +keystore के अंदर के डेटा को access करने के लिए आप इस Frida script का उपयोग कर सकते हैं: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js) ```bash frida -U -f com.example.app -l frida-scripts/tracer-cipher.js ``` ### **Fingerprint/Biometrics Bypass** -नीचे दिए गए Frida स्क्रिप्ट का उपयोग करके **फिंगरप्रिंट प्रमाणीकरण** को **बायपास** करना संभव हो सकता है जो Android अनुप्रयोगों द्वारा कुछ संवेदनशील क्षेत्रों की सुरक्षा के लिए किया जा रहा है: +निम्नलिखित Frida script का उपयोग करके संभवतः उन Android applications में लागू किए गए **bypass fingerprint authentication** को दरकिनार किया जा सकता है, जो **कुछ संवेदनशील क्षेत्रों की सुरक्षा** के लिए किया जाता है: ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` -### **पृष्ठभूमि छवियाँ** +### **Background Images** -जब आप एक एप्लिकेशन को पृष्ठभूमि में डालते हैं, तो Android **एप्लिकेशन का एक स्नैपशॉट** स्टोर करता है ताकि जब इसे अग्रभूमि में पुनर्प्राप्त किया जाए, तो यह एप्लिकेशन से पहले छवि लोड करना शुरू कर दे, जिससे ऐसा लगता है कि एप्लिकेशन तेजी से लोड हुआ है। +जब आप किसी ऐप को background में भेजते हैं, तो Android एक **snapshot of the application** स्टोर करता है — ताकि जब उसे foreground में वापस लाया जाए तो यह ऐप से पहले उस image को लोड करना शुरू कर दे और ऐसा लगे कि ऐप तेज़ी से लोड हुआ। -हालांकि, यदि इस स्नैपशॉट में **संवेदनशील जानकारी** होती है, तो स्नैपशॉट तक पहुँच रखने वाला कोई भी व्यक्ति उस जानकारी को **चुरा सकता है** (ध्यान दें कि इसे एक्सेस करने के लिए आपको रूट की आवश्यकता है)। +हालाँकि, अगर यह snapshot में **संवेदनशील जानकारी** मौजूद हो, तो snapshot तक पहुँच रखने वाला कोई भी व्यक्ति **उस जानकारी को चुरा सकता है** (ध्यान दें कि इसे एक्सेस करने के लिए root की आवश्यकता होती है)। -स्नैपशॉट आमतौर पर यहाँ स्टोर होते हैं: **`/data/system_ce/0/snapshots`** +Snapshots सामान्यतः इस स्थान पर स्टोर रहते हैं: **`/data/system_ce/0/snapshots`** -Android एक तरीका प्रदान करता है **FLAG_SECURE** लेआउट पैरामीटर सेट करके स्क्रीनशॉट कैप्चर को **रोकने** के लिए। इस फ्लैग का उपयोग करके, विंडो की सामग्री को सुरक्षित माना जाता है, जिससे यह स्क्रीनशॉट में दिखाई नहीं देती या असुरक्षित डिस्प्ले पर नहीं देखी जा सकती। +Android एक तरीका प्रदान करता है जिससे आप लेआउट पैरामीटर में **FLAG_SECURE सेट करके screenshot capture को रोक सकते हैं**। इस flag का उपयोग करने पर, window की सामग्री को secure माना जाता है, जिससे वह screenshots में दिखाई नहीं देती और non-secure डिस्प्ले पर नहीं देखी जा सकती। ```bash 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) +यह टूल dynamic analysis के दौरान विभिन्न टूल्स को मैनेज करने में मदद कर सकता है: [https://github.com/NotSoSecure/android_application_analyzer](https://github.com/NotSoSecure/android_application_analyzer) ### Intent Injection -डेवलपर्स अक्सर प्रॉक्सी घटक जैसे गतिविधियाँ, सेवाएँ, और प्रसारण रिसीवर बनाते हैं जो इन Intents को संभालते हैं और उन्हें `startActivity(...)` या `sendBroadcast(...)` जैसे तरीकों में पास करते हैं, जो जोखिम भरा हो सकता है। +डेवलपर्स अक्सर proxy components जैसे activities, services, और broadcast receivers बनाते हैं जो इन Intents को हैंडल करते हैं और उन्हें `startActivity(...)` या `sendBroadcast(...)` जैसे methods को पास कर देते हैं, जो रिस्की हो सकता है। -खतरा इस बात में है कि हमलावरों को गैर-निर्यातित ऐप घटकों को ट्रिगर करने या संवेदनशील सामग्री प्रदाताओं तक पहुँचने की अनुमति दी जा रही है, इन Intents को गलत दिशा में भेजकर। एक उल्लेखनीय उदाहरण `WebView` घटक है जो URLs को `Intent` वस्तुओं में `Intent.parseUri(...)` के माध्यम से परिवर्तित करता है और फिर उन्हें निष्पादित करता है, जो संभावित रूप से दुर्भावनापूर्ण Intent इंजेक्शन की ओर ले जा सकता है। +खतरा इस बात में है कि attackers इन Intents को मिसडायरेक्ट करके non-exported app components या sensitive content providers को ट्रिगर कर सकते हैं। एक उल्लेखनीय उदाहरण है `WebView` component जो URLs को `Intent` objects में `Intent.parseUri(...)` के जरिए कन्वर्ट करता है और फिर उन्हें execute करता है, जिससे malicious Intent injections हो सकते हैं। ### Essential Takeaways -- **Intent Injection** वेब के Open Redirect समस्या के समान है। -- शोषण में `Intent` वस्तुओं को अतिरिक्त के रूप में पास करना शामिल है, जिन्हें असुरक्षित संचालन निष्पादित करने के लिए पुनर्निर्देशित किया जा सकता है। -- यह गैर-निर्यातित घटकों और सामग्री प्रदाताओं को हमलावरों के लिए उजागर कर सकता है। -- `WebView` का URL से `Intent` में रूपांतरण अनपेक्षित क्रियाओं को सुविधाजनक बना सकता है। +- **Intent Injection** web के Open Redirect issue जैसा है। +- Exploits में `Intent` objects को extras के रूप में पास करना शामिल होता है, जिन्हें redirect करके unsafe operations execute कराए जा सकते हैं। +- यह non-exported components और content providers को attackers के लिए उजागर कर सकता है। +- `WebView` की URL से `Intent` conversion अनचाहे actions को सक्षम कर सकती है। ### Android Client Side Injections and others -संभवतः आप वेब से इस प्रकार की कमजोरियों के बारे में जानते हैं। आपको Android एप्लिकेशन में इन कमजोरियों के प्रति विशेष रूप से सतर्क रहना चाहिए: +शायद आप इस प्रकार की vulnerabilities के बारे में वेब से परिचित होंगे। Android application में इन vulnerabilities के साथ विशेष सतर्कता बरतनी चाहिए: -- **SQL Injection:** गतिशील प्रश्नों या सामग्री-प्रदाताओं के साथ काम करते समय सुनिश्चित करें कि आप पैरामीटरयुक्त प्रश्नों का उपयोग कर रहे हैं। -- **JavaScript Injection (XSS):** सुनिश्चित करें कि किसी भी WebViews के लिए JavaScript और प्लगइन समर्थन बंद है (डिफ़ॉल्ट रूप से बंद)। [More info here](webview-attacks.md#javascript-enabled). -- **Local File Inclusion:** WebViews को फ़ाइल प्रणाली तक पहुँच बंद होनी चाहिए (डिफ़ॉल्ट रूप से सक्षम) - `(webview.getSettings().setAllowFileAccess(false);)`। [More info here](webview-attacks.md#javascript-enabled). -- **Eternal cookies**: कई मामलों में जब Android एप्लिकेशन सत्र समाप्त करता है, तो कुकी को रद्द नहीं किया जाता है या इसे डिस्क पर भी सहेजा जा सकता है। +- **SQL Injection:** जब dynamic queries या Content-Providers के साथ काम कर रहे हों तो सुनिश्चित करें कि आप parameterized queries का उपयोग कर रहे हैं। +- **JavaScript Injection (XSS):** Verify करें कि किसी भी WebViews के लिए JavaScript और Plugin support disabled हो (disabled by default)। [More info here](webview-attacks.md#javascript-enabled). +- **Local File Inclusion:** WebViews को file system तक access बंद होना चाहिए (enabled by default) - `(webview.getSettings().setAllowFileAccess(false);)`. [More info here](webview-attacks.md#javascript-enabled). +- **Eternal cookies**: कई मामलों में जब android application session समाप्त करता है तो cookie revoke नहीं होती या वह disk पर भी saved हो सकती है - [**Secure Flag** in cookies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags) --- @@ -541,51 +597,51 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); ![](<../../images/image (866).png>) -**ऐप्लिकेशन का कमजोरियों का आकलन** एक अच्छे वेब-आधारित फ्रंटेंड का उपयोग करके। आप गतिशील विश्लेषण भी कर सकते हैं (लेकिन आपको वातावरण तैयार करने की आवश्यकता है)। +**Vulnerability assessment of the application** एक अच्छे वेब-आधारित frontend का उपयोग करके करता है। आप dynamic analysis भी चला सकते हैं (लेकिन इसके लिए environment तैयार करना होगा)। ```bash docker pull opensecurity/mobile-security-framework-mobsf docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest ``` -ध्यान दें कि MobSF **Android**(apk)**, IOS**(ipa) **और Windows**(apx) अनुप्रयोगों का विश्लेषण कर सकता है (_Windows अनुप्रयोगों का विश्लेषण Windows होस्ट में स्थापित MobSF से किया जाना चाहिए_)।\ -इसके अलावा, यदि आप एक **ZIP** फ़ाइल बनाते हैं जिसमें एक **Android** या **IOS** ऐप का स्रोत कोड होता है (अनुप्रयोग के रूट फ़ोल्डर पर जाएं, सब कुछ चुनें और एक ZIP फ़ाइल बनाएं), तो यह इसका विश्लेषण भी कर सकेगा। +Notice that MobSF can analyse **Android**(apk)**, IOS**(ipa) **and Windows**(apx) applications (_Windows applications must be analyzed from a MobSF installed in a Windows host_).\ +Also, if you create a **ZIP** file with the source code if an **Android** or an **IOS** app (go to the root folder of the application, select everything and create a ZIPfile), it will be able to analyse it also. -MobSF आपको **diff/Compare** विश्लेषण करने और **VirusTotal** को एकीकृत करने की अनुमति भी देता है (आपको _MobSF/settings.py_ में अपनी API कुंजी सेट करनी होगी और इसे सक्षम करना होगा: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`)। आप `VT_UPLOAD` को `False` पर भी सेट कर सकते हैं, तब **hash** फ़ाइल के बजाय **upload** किया जाएगा। +MobSF also allows you to **diff/Compare** analysis and to integrate **VirusTotal** (you will need to set your API key in _MobSF/settings.py_ and enable it: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). You can also set `VT_UPLOAD` to `False`, then the **hash** will be **upload** instead of the file. -### MobSF के साथ सहायक गतिशील विश्लेषण +### Assisted Dynamic analysis with MobSF -**MobSF** **Android** में **गतिशील विश्लेषण** के लिए भी बहुत सहायक हो सकता है, लेकिन इस मामले में आपको अपने होस्ट में MobSF और **genymotion** स्थापित करना होगा (एक VM या Docker काम नहीं करेगा)। _नोट: आपको **पहले genymotion में एक VM शुरू करना होगा** और **फिर MobSF।**_\ -**MobSF गतिशील विश्लेषक** कर सकता है: +**MobSF** Android में **dynamic analysis** के लिए भी बहुत मददगार हो सकता है, पर इस मामले में आपको अपने host पर MobSF और **genymotion** दोनों इंस्टॉल करने होंगे (एक VM या Docker काम नहीं करेगा)। _Note: You need to **start first a VM in genymotion** and **then MobSF.**_\ +**MobSF dynamic analyser** निम्न कर सकता है: -- **अनुप्रयोग डेटा डंप करें** (URLs, लॉग, क्लिपबोर्ड, आपके द्वारा बनाए गए स्क्रीनशॉट, "**Exported Activity Tester**" द्वारा बनाए गए स्क्रीनशॉट, ईमेल, SQLite डेटाबेस, XML फ़ाइलें, और अन्य बनाई गई फ़ाइलें)। इनमें से सभी स्वचालित रूप से किया जाता है सिवाय स्क्रीनशॉट के, आपको तब दबाना होगा जब आप एक स्क्रीनशॉट चाहते हैं या आपको सभी निर्यातित गतिविधियों के स्क्रीनशॉट प्राप्त करने के लिए "**Exported Activity Tester**" पर दबाना होगा। -- **HTTPS ट्रैफ़िक कैप्चर करें** -- **Frida** का उपयोग करके **runtime** **जानकारी** प्राप्त करें +- **Dump application data** (URLs, logs, clipboard, screenshots made by you, screenshots made by "**Exported Activity Tester**", emails, SQLite databases, XML files, and other created files). ये सब अपने आप किया जाता है सिवाय screenshots के — जब आप screenshot लेना चाहें तो आपको उसे क्लिक करना होगा या सभी exported activities के screenshots प्राप्त करने के लिए आपको "**Exported Activity Tester**" दबाना होगा। +- Capture **HTTPS traffic** +- Use **Frida** to obtain **runtime** **information** -Android **संस्करण > 5** से, यह **स्वचालित रूप से Frida शुरू करेगा** और **ट्रैफ़िक कैप्चर** करने के लिए वैश्विक **proxy** सेटिंग्स सेट करेगा। यह केवल परीक्षण किए गए अनुप्रयोग से ट्रैफ़िक कैप्चर करेगा। +From android **versions > 5**, it will **automatically start Frida** and will set global **proxy** settings to **capture** traffic. It will only capture traffic from the tested application. **Frida** -डिफ़ॉल्ट रूप से, यह **SSL पिनिंग**, **root detection** और **debugger detection** को **बायपास** करने और **दिलचस्प APIs** की निगरानी करने के लिए कुछ Frida स्क्रिप्ट का भी उपयोग करेगा।\ -MobSF **निर्यातित गतिविधियों** को **invoke** कर सकता है, उनके **स्क्रीनशॉट** ले सकता है और उन्हें रिपोर्ट के लिए **सहेज** सकता है। +By default, it will also use some Frida Scripts to **bypass SSL pinning**, **root detection** and **debugger detection** and to **monitor interesting APIs**.\ +MobSF can also **invoke exported activities**, grab **screenshots** of them and **save** them for the report. -गतिशील परीक्षण **शुरू** करने के लिए हरे बटन पर दबाएं: "**Start Instrumentation**"। **Frida Live Logs** पर दबाएं ताकि आप Frida स्क्रिप्ट द्वारा उत्पन्न लॉग देख सकें और "**Live API Monitor**" पर दबाएं ताकि आप सभी हुक किए गए तरीकों, पास किए गए तर्कों और लौटाए गए मानों के आवाहनों को देख सकें (यह "Start Instrumentation" दबाने के बाद दिखाई देगा)।\ -MobSF आपको अपनी **Frida स्क्रिप्ट** लोड करने की भी अनुमति देता है (अपने शुक्रवार स्क्रिप्ट के परिणामों को MobSF में भेजने के लिए `send()` फ़ंक्शन का उपयोग करें)। इसमें **कई पूर्व-लिखित स्क्रिप्ट** भी हैं जिन्हें आप लोड कर सकते हैं (आप `MobSF/DynamicAnalyzer/tools/frida_scripts/others/` में और अधिक जोड़ सकते हैं), बस **उन्हें चुनें**, "**Load**" पर दबाएं और "**Start Instrumentation**" पर दबाएं (आप उस स्क्रिप्ट के लॉग "**Frida Live Logs**" के अंदर देख सकेंगे)। +To **start** the dynamic testing press the green bottom: "**Start Instrumentation**". Press the "**Frida Live Logs**" to see the logs generated by the Frida scripts and "**Live API Monitor**" to see all the invocation to hooked methods, arguments passed and returned values (this will appear after pressing "Start Instrumentation").\ +MobSF also allows you to load your own **Frida scripts** (to send the results of your Friday scripts to MobSF use the function `send()`). It also has **several pre-written scripts** you can load (you can add more in `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), just **select them**, press "**Load**" and press "**Start Instrumentation**" (you will be able to see the logs of that scripts inside "**Frida Live Logs**"). ![](<../../images/image (419).png>) -इसके अलावा, आपके पास कुछ सहायक Frida कार्यक्षमताएँ हैं: +Moreover, you have some Auxiliary Frida functionalities: -- **लोड की गई कक्षाओं की गणना करें**: यह सभी लोड की गई कक्षाओं को प्रिंट करेगा -- **स्ट्रिंग कैप्चर करें**: यह अनुप्रयोग का उपयोग करते समय सभी कैप्चर की गई स्ट्रिंग्स को प्रिंट करेगा (बहुत शोर) -- **स्ट्रिंग तुलना कैप्चर करें**: यह बहुत उपयोगी हो सकता है। यह **2 स्ट्रिंग्स को दिखाएगा जो तुलना की जा रही हैं** और यदि परिणाम सत्य या असत्य था। -- **कक्षा विधियों की गणना करें**: कक्षा का नाम डालें (जैसे "java.io.File") और यह कक्षा की सभी विधियों को प्रिंट करेगा। -- **कक्षा पैटर्न खोजें**: पैटर्न द्वारा कक्षाओं की खोज करें -- **कक्षा विधियों को ट्रेस करें**: **पूरी कक्षा को ट्रेस करें** (कक्षा की सभी विधियों के इनपुट और आउटपुट देखें)। याद रखें कि डिफ़ॉल्ट रूप से MobSF कई दिलचस्प Android API विधियों को ट्रेस करता है। +- **Enumerate Loaded Classes**: यह सभी loaded classes को प्रिंट करेगा +- **Capture Strings**: यह application उपयोग करते समय मिलने वाली सभी capture strings को प्रिंट करेगा (काफी noisy) +- **Capture String Comparisons**: बहुत उपयोगी हो सकता है। यह **show the 2 strings being compared** करेगा और बताएगा कि result True था या False। +- **Enumerate Class Methods**: क्लास का नाम डालें (जैसे "java.io.File") और यह उस क्लास के सभी methods को प्रिंट करेगा। +- **Search Class Pattern**: pattern से classes खोजें +- **Trace Class Methods**: **Trace** a **whole class** (see inputs and outputs of all methods of th class). याद रखें कि default में MobSF कई दिलचस्प Android Api methods को trace करता है। -एक बार जब आप सहायक मॉड्यूल का चयन कर लेते हैं जिसे आप उपयोग करना चाहते हैं, तो आपको "**Start Intrumentation**" पर दबाना होगा और आप सभी आउटपुट "**Frida Live Logs**" में देखेंगे। +Once you have selected the auxiliary module you want to use you need to press "**Start Intrumentation**" and you will see all the outputs in "**Frida Live Logs**". **Shell** -Mobsf आपको गतिशील विश्लेषण पृष्ठ के नीचे कुछ **adb** कमांड, **MobSF कमांड**, और सामान्य **shell** **commands** के साथ एक शेल भी लाता है। कुछ दिलचस्प कमांड: +Mobsf dynamic analysis पेज के नीचे कुछ **adb** commands, **MobSF commands**, और सामान्य **shell** **commands** के साथ एक shell भी देता है। कुछ रोचक commands: ```bash help shell ls @@ -594,15 +650,15 @@ exported_activities services receivers ``` -**HTTP tools** +**HTTP उपकरण** -जब 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))। +जब HTTP ट्रैफ़िक कैप्चर होता है, आप कैप्चर किए गए ट्रैफ़िक का एक बदसूरत व्यू "**HTTP(S) Traffic**" बटन में देख सकते हैं या एक बेहतर व्यू "**Start HTTPTools**" हरे बटन में। दूसरे विकल्प से, आप **कैप्चर किए हुए अनुरोध** को **proxies** जैसे Burp या Owasp ZAP को **भेज** सकते हैं.\ +ऐसा करने के लिए, _power on Burp -->_ _turn off Intercept --> in MobSB HTTPTools select the request_ --> press "**Send to Fuzzer**" --> _select the proxy address_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)). -एक बार जब आप MobSF के साथ डायनामिक विश्लेषण समाप्त कर लेते हैं, तो आप "**Start Web API Fuzzer**" पर दबा सकते हैं ताकि **http requests** को **fuzz** किया जा सके और कमजोरियों की तलाश की जा सके। +MobSF के साथ dynamic analysis पूरा करने के बाद आप "**Start Web API Fuzzer**" दबाकर **fuzz http requests** कर सकते हैं और कमजोरियों की तलाश कर सकते हैं। > [!TIP] -> MobSF के साथ डायनामिक विश्लेषण करने के बाद, प्रॉक्सी सेटिंग्स गलत हो सकती हैं और आप उन्हें GUI से ठीक नहीं कर पाएंगे। आप निम्नलिखित करके प्रॉक्सी सेटिंग्स को ठीक कर सकते हैं: +> After performing a dynamic analysis with MobSF the proxy settings me be misconfigured and you won't be able to fix them from the GUI. You can fix the proxy settings by doing: > > ``` > adb shell settings put global http_proxy :0 @@ -610,18 +666,18 @@ receivers ### Assisted Dynamic Analysis with Inspeckage -आप [**Inspeckage**](https://github.com/ac-pm/Inspeckage) से टूल प्राप्त कर सकते हैं।\ -यह टूल कुछ **Hooks** का उपयोग करेगा ताकि आपको पता चल सके **क्या हो रहा है एप्लिकेशन में** जब आप **dynamic analysis** करते हैं। +You can get the tool from [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\ +This tool with use some **Hooks** to let you know **what is happening in the application** while you perform a **dynamic analysis**. ### [Yaazhini](https://www.vegabird.com/yaazhini/) -यह एक **शानदार टूल है जो GUI के साथ स्थिर विश्लेषण करने के लिए है** +यह GUI के साथ static analysis करने के लिए एक शानदार tool है ![](<../../images/image (741).png>) ### [Qark](https://github.com/linkedin/qark) -यह टूल कई **सुरक्षा संबंधित Android एप्लिकेशन कमजोरियों** की तलाश करने के लिए डिज़ाइन किया गया है, चाहे वह **source code** में हो या **packaged APKs** में। यह टूल एक "Proof-of-Concept" डिप्लॉय करने योग्य APK और **ADB commands** बनाने में भी **सक्षम है**, ताकि कुछ पाए गए कमजोरियों (Exposed activities, intents, tapjacking...) का शोषण किया जा सके। Drozer की तरह, परीक्षण डिवाइस को रूट करने की आवश्यकता नहीं है। +यह tool कई **security related Android application vulnerabilities** की खोज के लिए बनाया गया है, चाहे वो **source code** में हों या **packaged APKs** में। यह tool **capable of creating a "Proof-of-Concept" deployable APK** और **ADB commands** भी बनाने में सक्षम है, ताकि पाए गए कुछ vulnerabilities (Exposed activities, intents, tapjacking...) का exploit किया जा सके। Drozer की तरह, टेस्ट डिवाइस को root करने की आवश्यकता नहीं है। ```bash pip3 install --user qark # --user is only needed if not using a virtualenv qark --apk path/to/my.apk @@ -630,22 +686,22 @@ qark --java path/to/specific/java/file.java ``` ### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git) -- सभी निकाले गए फ़ाइलों को आसान संदर्भ के लिए प्रदर्शित करता है -- APK फ़ाइलों को स्वचालित रूप से Java और Smali प्रारूप में डिकंपाइल करता है -- सामान्य कमजोरियों और व्यवहार के लिए AndroidManifest.xml का विश्लेषण करें -- सामान्य कमजोरियों और व्यवहार के लिए स्थैतिक स्रोत कोड विश्लेषण +- संदर्भ के लिए सभी निकाली गई फ़ाइलें दिखाता है +- APK फ़ाइलों को स्वचालित रूप से Java और Smali फ़ॉर्मेट में decompile करता है +- सामान्य vulnerabilities और व्यवहार के लिए AndroidManifest.xml का विश्लेषण करता है +- सामान्य vulnerabilities और व्यवहार के लिए Static source code analysis करता है - डिवाइस जानकारी -- और अधिक +- और भी ```bash reverse-apk relative/path/to/APP.apk ``` ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) -SUPER एक कमांड-लाइन एप्लिकेशन है जिसे Windows, MacOS X और Linux में उपयोग किया जा सकता है, जो _.apk_ फ़ाइलों का विश्लेषण करता है ताकि कमजोरियों की खोज की जा सके। यह APKs को डिकंप्रेस करके और उन कमजोरियों का पता लगाने के लिए नियमों की एक श्रृंखला लागू करके ऐसा करता है। +SUPER एक command-line application है जिसे Windows, MacOS X और Linux पर इस्तेमाल किया जा सकता है, जो कमजोरियों की तलाश में _.apk_ फ़ाइलों का विश्लेषण करता है। यह APKs को decompress करके और उन कमजोरियों का पता लगाने के लिए नियमों की एक श्रृंखला लागू करके यह काम करता है। -सभी नियम एक `rules.json` फ़ाइल में केंद्रित होते हैं, और प्रत्येक कंपनी या परीक्षक अपने आवश्यक विश्लेषण के लिए अपने नियम बना सकते हैं। +सभी नियम `rules.json` फ़ाइल में केंद्रीकृत हैं, और प्रत्येक कंपनी या tester अपनी ज़रूरत के अनुसार अपने नियम बना सकती/बना सकता है। -नवीनतम बाइनरी [डाउनलोड पृष्ठ](https://superanalyzer.rocks/download.html) से डाउनलोड करें। +नवीनतम binaries को [download page](https://superanalyzer.rocks/download.html) से डाउनलोड करें ``` super-analyzer {apk_file} ``` @@ -653,17 +709,17 @@ super-analyzer {apk_file} ![](<../../images/image (297).png>) -StaCoAn एक **क्रॉसप्लेटफ़ॉर्म** उपकरण है जो डेवलपर्स, बग बाउंटी शिकारियों और नैतिक हैकरों को मोबाइल अनुप्रयोगों पर [स्टैटिक कोड विश्लेषण](https://en.wikipedia.org/wiki/Static_program_analysis) करने में मदद करता है। +StaCoAn एक **क्रॉसप्लेटफ़ॉर्म** टूल है जो मोबाइल एप्लिकेशनों पर [static code analysis](https://en.wikipedia.org/wiki/Static_program_analysis) करने वाले डेवलपर्स, bugbounty hunters और ethical hackers की मदद करता है। -इसका विचार यह है कि आप अपने मोबाइल अनुप्रयोग फ़ाइल (एक .apk या .ipa फ़ाइल) को StaCoAn अनुप्रयोग पर खींचते और छोड़ते हैं और यह आपके लिए एक दृश्य और पोर्टेबल रिपोर्ट उत्पन्न करेगा। आप सेटिंग्स और वर्डलिस्ट को समायोजित कर सकते हैं ताकि एक अनुकूलित अनुभव प्राप्त कर सकें। +आइडिया यह है कि आप अपनी मोबाइल एप्लिकेशन फ़ाइल (.apk या .ipa फ़ाइल) को StaCoAn एप्लिकेशन पर ड्रैग और ड्रॉप करें और यह आपके लिए एक विज़ुअल और पोर्टेबल रिपोर्ट जेनरेट करेगा। आप सेटिंग्स और wordlists को समायोजित करके एक कस्टमाइज़्ड अनुभव प्राप्त कर सकते हैं। -डाउनलोड[ नवीनतम रिलीज़](https://github.com/vincentcox/StaCoAn/releases): +डाउनलोड[ latest release](https://github.com/vincentcox/StaCoAn/releases): ``` ./stacoan ``` ### [AndroBugs](https://github.com/AndroBugs/AndroBugs_Framework) -AndroBugs Framework एक Android कमजोरियों का विश्लेषण प्रणाली है जो डेवलपर्स या हैकर्स को Android अनुप्रयोगों में संभावित सुरक्षा कमजोरियों को खोजने में मदद करती है।\ +AndroBugs Framework एक Android vulnerability analysis system है जो डेवलपर्स या hackers को Android applications में संभावित security vulnerabilities खोजने में मदद करता है।\ [Windows releases](https://github.com/AndroBugs/AndroBugs_Framework/releases) ``` python androbugs.py -f [APK file] @@ -671,11 +727,11 @@ androbugs.exe -f [APK file] ``` ### [Androwarn](https://github.com/maaaaz/androwarn) -**Androwarn** एक उपकरण है जिसका मुख्य उद्देश्य Android एप्लिकेशन द्वारा विकसित संभावित दुर्भावनापूर्ण व्यवहारों का पता लगाना और उपयोगकर्ता को चेतावनी देना है। +**Androwarn** एक उपकरण है जिसका मुख्य उद्देश्य Android application द्वारा विकसित संभावित हानिकारक व्यवहारों का पता लगाना और उपयोगकर्ता को चेतावनी देना है। -पता लगाने की प्रक्रिया एप्लिकेशन के Dalvik बाइटकोड का **स्थैतिक विश्लेषण** करके की जाती है, जिसे **Smali** के रूप में दर्शाया गया है, [`androguard`](https://github.com/androguard/androguard) पुस्तकालय के साथ। +यह पता application's Dalvik bytecode के **static analysis** के माध्यम से लगाया जाता है, जिसे **Smali** के रूप में प्रतिनिधित्व किया गया है, और इसके लिए [`androguard`](https://github.com/androguard/androguard) लाइब्रेरी का उपयोग किया जाता है। -यह उपकरण **"खराब" एप्लिकेशनों के सामान्य व्यवहार** की तलाश करता है जैसे: टेलीफोनी पहचानकर्ताओं का एक्सफिल्ट्रेशन, ऑडियो/वीडियो प्रवाह का इंटरसेप्शन, PIM डेटा में संशोधन, मनमाना कोड निष्पादन... +यह टूल **common behavior of "bad" applications** जैसी चीज़ों को ढूँढता है: Telephony identifiers exfiltration, Audio/video flow interception, PIM data modification, Arbitrary code execution... ``` python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ``` @@ -683,60 +739,60 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ![](<../../images/image (595).png>) -**MARA** एक **M**obile **A**pplication **R**everse engineering और **A**nalysis Framework है। यह एक उपकरण है जो सामान्यतः उपयोग किए जाने वाले मोबाइल एप्लिकेशन रिवर्स इंजीनियरिंग और विश्लेषण उपकरणों को एक साथ लाता है, ताकि OWASP मोबाइल सुरक्षा खतरों के खिलाफ मोबाइल एप्लिकेशनों का परीक्षण करने में सहायता मिल सके। इसका उद्देश्य इस कार्य को मोबाइल एप्लिकेशन डेवलपर्स और सुरक्षा पेशेवरों के लिए आसान और मित्रवत बनाना है। +**MARA** is a **M**obile **A**pplication **R**everse engineering and **A**nalysis Framework. यह एक ऐसा टूल है जो सामान्यतः उपयोग होने वाले mobile application reverse engineering और analysis tools को एकत्र करता है, ताकि OWASP mobile security threats के खिलाफ mobile applications के परीक्षण में मदद मिल सके। इसका उद्देश्य mobile application developers और security professionals के लिए यह कार्य आसान और अधिक अनुकूल बनाना है। -यह सक्षम है: +It is able to: - विभिन्न उपकरणों का उपयोग करके 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) का उपयोग करके APKs का विश्लेषण करना -- regexps का उपयोग करके APK से निजी जानकारी निकालना। -- Manifest का विश्लेषण करना। -- [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) और [whatweb](https://github.com/urbanadventurer/WhatWeb) का उपयोग करके पाए गए डोमेन का विश्लेषण करना -- [apk-deguard.com](http://www.apk-deguard.com) के माध्यम से APK को डिओबफस्केट करना +- APKs का विश्लेषण करने के लिए उपयोग करें: [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) +- regexps का उपयोग करके APK से निजी जानकारी निकालना +- Manifest का विश्लेषण करना +- पाए गए domains का विश्लेषण करने के लिए उपयोग करें: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) and [whatweb](https://github.com/urbanadventurer/WhatWeb) +- APK को [apk-deguard.com](http://www.apk-deguard.com) के माध्यम से Deobfuscate करना ### Koodous -मैलवेयर का पता लगाने के लिए उपयोगी: [https://koodous.com/](https://koodous.com) +मैलवेयर का पता लगाने के लिए उपयोगी: [https://koodous.com/](https://koodous.com/) ## Obfuscating/Deobfuscating code -ध्यान दें कि जिस सेवा और कॉन्फ़िगरेशन का आप कोड को ओबफस्केट करने के लिए उपयोग करते हैं, उसके आधार पर। रहस्य ओबफस्केटेड हो सकते हैं या नहीं। +ध्यान दें कि आप जिस service और configuration का उपयोग करके code को obfuscate करते हैं, उसके अनुसार secrets obfuscated हो सकते हैं या नहीं भी हो सकते हैं। ### [ProGuard]() -[Wikipedia](): **ProGuard** एक ओपन-सोर्स कमांड-लाइन उपकरण है जो Java कोड को संकुचित, अनुकूलित और ओबफस्केट करता है। यह बाइटकोड को अनुकूलित करने के साथ-साथ अप्रयुक्त निर्देशों का पता लगाने और उन्हें हटाने में सक्षम है। ProGuard मुफ्त सॉफ़्टवेयर है और इसे GNU जनरल पब्लिक लाइसेंस, संस्करण 2 के तहत वितरित किया जाता है। +From [Wikipedia](): **ProGuard** एक open source command-line tool है जो Java code को shrink, optimize और obfuscate करता है। यह bytecode को optimize करने के साथ-साथ unused instructions का पता लगा कर उन्हें हटा भी सकता है। ProGuard free software है और GNU General Public License, version 2 के तहत वितरित होता है। -ProGuard Android SDK का एक हिस्सा है और रिलीज़ मोड में एप्लिकेशन बनाने पर चलता है। +ProGuard Android SDK का हिस्सा के रूप में वितरित होता है और application को release mode में build करते समय चलता है। ### [DexGuard](https://www.guardsquare.com/dexguard) -APK को डिओबफस्केट करने के लिए चरण-दर-चरण गाइड [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) में खोजें +Deobfuscate करने के लिए step-by-step guide देखें: [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) -(उस गाइड से) आखिरी बार जब हमने जांचा, Dexguard का संचालन मोड था: +(उस गाइड से) Last time we checked, the Dexguard mode of operation was: -- एक संसाधन को InputStream के रूप में लोड करें; -- इसे FilterInputStream से विरासत में मिली एक कक्षा को डिक्रिप्ट करने के लिए परिणाम दें; -- एक रिवर्सर से कुछ मिनटों का समय बर्बाद करने के लिए कुछ बेकार ओबफस्केशन करें; -- डिक्रिप्टेड परिणाम को ZipInputStream में दें ताकि एक DEX फ़ाइल प्राप्त हो सके; -- अंततः `loadDex` विधि का उपयोग करके परिणामस्वरूप DEX को एक Resource के रूप में लोड करें। +- एक resource को InputStream के रूप में load करना; +- परिणाम को FilterInputStream से विरासत में ली गई एक class को feed करना ताकि इसे decrypt किया जा सके; +- reverser का थोड़ा समय बर्बाद करने के लिए कुछ बेकार obfuscation करना; +- decrypted परिणाम को ZipInputStream को feed करना ताकि एक DEX file मिले; +- अंत में प्राप्त DEX को Resource के रूप में `loadDex` method का उपयोग करके लोड करना। ### [DeGuard](http://apk-deguard.com) -**DeGuard Android ओबफस्केशन उपकरणों द्वारा किए गए ओबफस्केशन की प्रक्रिया को उलटता है। यह कोड निरीक्षण और पुस्तकालयों की भविष्यवाणी सहित कई सुरक्षा विश्लेषणों को सक्षम बनाता है।** +**DeGuard reverses the process of obfuscation performed by Android obfuscation tools. This enables numerous security analyses, including code inspection and predicting libraries.** -आप उनके प्लेटफॉर्म पर एक ओबफस्केटेड APK अपलोड कर सकते हैं। +आप obfuscated APK को उनके platform पर upload कर सकते हैं। ### [Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app -यह एक LLM उपकरण है जो Android ऐप्स में किसी भी संभावित सुरक्षा कमजोरियों को खोजने और Android ऐप कोड को डिओबफस्केट करने के लिए है। Google के Gemini सार्वजनिक API का उपयोग करता है। +यह एक LLM tool है जो android apps में संभावित security vulnerabilities खोजने और android app code को deobfuscate करने के लिए है। Google के Gemini public API का उपयोग करता है। ### [Simplify](https://github.com/CalebFenton/simplify) -यह एक **generic android deobfuscator** है। Simplify **virtually executes an app** ताकि इसके व्यवहार को समझा जा सके और फिर **कोड को अनुकूलित करने की कोशिश करता है** ताकि यह समान रूप से व्यवहार करे लेकिन मानव के लिए समझना आसान हो। प्रत्येक अनुकूलन प्रकार सरल और सामान्य है, इसलिए यह मायने नहीं रखता कि ओबफस्केशन का विशिष्ट प्रकार क्या है। +It is a **generic android deobfuscator.** Simplify एक app को **virtually execute** करता है ताकि उसके व्यवहार को समझा जा सके और फिर **tries to optimize the code** ताकि वह identical व्यवहार करे लेकिन मानव के लिए समझना आसान हो। प्रत्येक optimization type simple और generic है, इसलिए यह मायने नहीं रखता कि किस specific प्रकार का obfuscation उपयोग किया गया है। ### [APKiD](https://github.com/rednaga/APKiD) -APKiD आपको **यह जानकारी देता है कि एक APK कैसे बनाया गया था**। यह कई **कंपाइलर्स**, **पैकर**, **ओबफस्केटर्स**, और अन्य अजीब चीजों की पहचान करता है। यह Android के लिए [_PEiD_](https://www.aldeid.com/wiki/PEiD) है। +APKiD आपको यह जानकारी देता है कि **how an APK was made**. यह कई **compilers**, **packers**, **obfuscators**, और अन्य अजीब चीज़ों की पहचान करता है। यह Android के लिए [_PEiD_](https://www.aldeid.com/wiki/PEiD) है। ### Manual @@ -746,16 +802,19 @@ APKiD आपको **यह जानकारी देता है कि ए ### [Androl4b](https://github.com/sh4hin/Androl4b) -AndroL4b एक Android सुरक्षा वर्चुअल मशीन है जो ubuntu-mate पर आधारित है जिसमें रिवर्स इंजीनियरिंग और मैलवेयर विश्लेषण के लिए विभिन्न सुरक्षा विशेषज्ञों और शोधकर्ताओं से नवीनतम ढांचे, ट्यूटोरियल और प्रयोगशालाओं का संग्रह शामिल है। +AndroL4b एक Android security virtual machine है जो ubuntu-mate पर आधारित है और इसमें विभिन्न security geeks और researchers द्वारा reverse engineering और malware analysis के लिए नवीनतम framework, tutorials और labs का संग्रह शामिल है। ## References - [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/) -- [https://appsecwiki.com/#/](https://appsecwiki.com/#/) यह संसाधनों की एक शानदार सूची है -- [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Android त्वरित पाठ्यक्रम +- [https://appsecwiki.com/#/](https://appsecwiki.com/#/) यह resources की एक बेहतरीन सूची है +- [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Android quick course - [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/) - [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh) - [https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg&feature=youtu.be&ab_channel=B3nacSec) +- [SSLPinDetect: Advanced SSL Pinning Detection for Android Security Analysis](https://petruknisme.medium.com/sslpindetect-advanced-ssl-pinning-detection-for-android-security-analysis-1390e9eca097) +- [SSLPinDetect GitHub](https://github.com/aancw/SSLPinDetect) +- [smali-sslpin-patterns](https://github.com/aancw/smali-sslpin-patterns) ## Yet to try