
नैतिक हैकिंग के लिए Android deeplink, Intent और WebView bridge मूल्यांकन सहायक
Android डीपलिंक, Intent और WebView ब्रिज आकलन सहायक
apk-interceptor एक पोर्टेबल Android परीक्षण APK है जो अधिकृत एप्लिकेशन सुरक्षा आकलन के लिए है। यह सुरक्षा इंजीनियरों को यह सत्यापित करने में मदद करता है कि कोई Android ऐप बाहरी प्रवेश बिंदुओं जैसे कस्टम URI स्कीम, डीपलिंक, एक्सपोर्टेड Activity और WebView JavaScript ब्रिज को कैसे संभालता है।
यह उपकरण जानबूझकर सीमित है:
android.permission.INTERNET घोषित नहीं करताcontent:// पेलोड फ़ाइल प्रदान करता हैAndroid एप्लिकेशन सुरक्षा आकलन के दौरान, स्थैतिक विश्लेषण के कई निष्कर्षों की पुष्टि से पहले अभी भी एक छोटे ऑन-डिवाइस प्रूफ ऑफ कॉन्सेप्ट की आवश्यकता होती है: कस्टम URI स्कीम पंजीकृत करना, स्पष्ट Intent भेजना, स्थानीय content:// पेलोड प्रदान करना, या यह जाँचना कि क्या JavaScript WebView ब्रिज तक पहुँच सकता है।
हर मामले के लिए एक नया अस्थायी परीक्षण ऐप बनाना दोहराव वाला और त्रुटि-प्रवण है। मैनिफेस्ट प्रविष्टियों, अथॉरिटी, URI अनुदान, पैकेज नाम या Intent निर्माण में छोटे अंतर सत्यापन को धीमा कर सकते हैं और परिणामों को पुनरुत्पादित करना कठिन बना सकते हैं।
apk-interceptor को उस पुष्टिकरण चरण को दोहराने योग्य बनाने के लिए बनाया गया था। हर आकलन के लिए नया PoC APK लिखने के बजाय, आप इस उपकरण को आवश्यक अधिकृत स्कीम या एप्लिकेशन ID के साथ बनाते हैं, डिवाइस पर परीक्षण चलाते हैं, और कार्यप्रवाह को डिज़ाइन द्वारा सीमित रखते हैं: कोई INTERNET अनुमति नहीं, कोई बाहरी डेटा ट्रांसमिशन नहीं, कोई शेल निष्पादन नहीं और कोई root निर्भरता नहीं।
apk-interceptor इन आकलन कार्यों के लिए उपयोगी है:
| परिदृश्य | मॉड्यूल | यह क्या सत्यापित करने में मदद करता है |
|---|---|---|
| कस्टम URI स्कीम हाइजैकिंग | Interceptor | क्या कोई अन्य ऐप समान कस्टम स्कीम पंजीकृत कर सकता है और लिंक प्राप्त कर सकता है |
| डीपलिंक पैरामीटर हैंडलिंग | Sender | क्या मूल्यांकित ऐप असुरक्षित query/path पैरामीटर स्वीकार करता है |
| एक्सपोर्टेड Activity एक्सपोज़र | Sender | क्या कोई एक्सपोर्टेड Activity सीधे किसी अन्य ऐप द्वारा लॉन्च की जा सकती है |
content:// के माध्यम से WebView ब्रिज एक्सपोज़र | Payload + Sender | क्या कोई स्थानीय HTML पेलोड WebView JavaScript ब्रिज तक पहुँच सकता है |
| स्थानीय पेलोड सिंटैक्स जाँच | Payload | क्या आपका HTML/JS पेलोड सेल्फ-टेस्ट WebView में चलता है |
विस्तृत भेद्यता वॉकथ्रू:
content:// के माध्यम से WebView JavaScript ब्रिज एक्सपोज़रऐप भेजे गए Intents, प्राप्त डीपलिंक, ब्रिज कॉलबैक, JavaScript परिणाम और त्रुटियों के लिए एक इन-मेमोरी आकलन लॉग रखता है। ऐप प्रोसेस बंद होने पर लॉग गायब हो जाते हैं। चूँकि लॉग संग्रहीत नहीं होते, काम करते समय स्क्रीनशॉट या स्क्रीन रिकॉर्डिंग के साथ साक्ष्य कैप्चर करें।
apk-interceptor एक पुष्टिकरण उपकरण है, न कि खोज या शोषण ढांचा। यह मानता है कि आप पहले से जानते हैं कि स्थैतिक विश्लेषण से क्या परीक्षण करना है (स्कीम, Activity क्लास, ब्रिज नाम), और आपको पहुँच क्षमता सत्यापित करने और साक्ष्य कैप्चर करने का एक सुरक्षित, ऑन-डिवाइस तरीका देता है। इसे आकलन डिवाइस पर स्थापित करने और यहाँ तक कि क्लाइंट के साथ साझा करने के लिए बनाया गया है, इसलिए इसमें कोई INTERNET अनुमति, शेल निष्पादन, डेटा एक्सफिल्ट्रेशन या root आवश्यकता नहीं है।
सामान्य Android टूलिंग के साथ यह कहाँ स्थित है:
| उपकरण | भूमिका | apk-interceptor कैसे भिन्न है |
|---|---|---|
| jadx / MobSF / QARK / Semgrep | कमजोर प्रवेश बिंदु खोजें (स्थैतिक) | apk-interceptor स्कैन या डीकंपाइल नहीं करता; यह उस निष्कर्ष की पुष्टि करता है जो आपके पास पहले से है |
deep-C / NSdeepLink / adb am start | डीपलिंक की गणना करें और भेजें | apk-interceptor भेज भी सकता है, लेकिन इसका विभेदक एक हाइजैक की गई स्कीम को प्राप्त करना और सटीक URI और पैरामीटर दिखाना है |
| drozer | सामान्य ऑन-डिवाइस आक्रमण ढांचा (एजेंट + अक्सर root) | apk-interceptor एक हल्का APK है जिसमें जानबूझकर सुरक्षा गार्डरेल, संकीर्ण दायरा और आसान क्लाइंट-सुरक्षित वितरण है |
| Metasploit / Frida | हथियार बनाना या हुक करना (जैसे addJavascriptInterface RCE) | apk-interceptor केवल एक हानिरहित पेलोड के साथ ब्रिज पहुँच क्षमता की जाँच करता है; यह कभी एक्सफिल्ट्रेट नहीं करता या शेल कमांड निष्पादित नहीं करता |
दो क्षेत्र जहाँ apk-interceptor का विकल्पों पर सबसे स्पष्ट लाभ है:
adb/स्थैतिक विश्लेषण नहीं दिखा सकता।content:// → WebView ब्रिज सत्यापन: एक गैर-एक्सपोर्टेड, एकल-फ़ाइल प्रदाता जिसका पेलोड केवल अस्थायी Intent रीड अनुदान के माध्यम से वितरित किया जाता है, साथ ही पेलोड सिंटैक्स को पहले मान्य करने के लिए एक स्थानीय सेल्फ-टेस्ट WebView।apk-interceptor भेजने और इंटरसेप्ट करने को अलग तरह से व्यवहार करता है, और उपयोग से पहले यह सबसे महत्वपूर्ण बात है:
| क्रिया | मॉड्यूल | क्या बिल्ड समय पर कस्टम स्कीम आवश्यक है? |
|---|---|---|
| किसी अन्य ऐप को Intent या डीपलिंक भेजें | Sender | नहीं, रनटाइम पर कोई भी URI, पैकेज या Activity टाइप करें |
| किसी कस्टम स्कीम के लिए डीपलिंक इंटरसेप्ट (प्राप्त) करें | Interceptor | हाँ, स्कीम बिल्ड समय पर APK में निर्धारित की जाती है |
मूल्यांकित ऐप को एक क्राफ्टेड डीपलिंक भेजने के लिए, आपको पुनर्निर्माण करने की आवश्यकता नहीं है: Sender टैब के Implicit Deeplink मोड का उपयोग करें और कोई भी URI टाइप करें।
एक डीपलिंक इंटरसेप्ट करने के लिए, यानी Android को एक कस्टम स्कीम को apk-interceptor की ओर रूट करने देना ताकि आप संभावित स्कीम-हाइजैक देख सकें, आपको APK को उस स्कीम के साथ --scheme के माध्यम से बनाना होगा। स्कीम जानबूझकर बिल्ड समय पर निर्धारित की जाती है (एक डिज़ाइन गार्डरेल); apk-interceptor रनटाइम पर मनमानी स्कीम कभी पंजीकृत नहीं करता। यदि आप जिस स्कीम का आकलन कर रहे हैं उसे बदलते हैं, तो पुनर्निर्माण करें और पुनः स्थापित करें।
adbAPK को उस कस्टम URI स्कीम के साथ बनाएं जिसका आकलन करने के लिए आप अधिकृत हैं:
./build-interceptor.sh --scheme <authorized_custom_scheme>
adb install ./out/apk-interceptor-<authorized_custom_scheme>-debug.apk
वैकल्पिक बिल्ड फ़्लैग:
./build-interceptor.sh \
--scheme <authorized_custom_scheme> \
--app-id <custom.application.id> \
--output ./out
--app-id बिल्ड समय पर स्थापित एप्लिकेशन ID (डिवाइस पर पैकेज पहचान और content://<applicationId>.payload अथॉरिटी) सेट करता है। डिफ़ॉल्ट com.sterrasec.apkinterceptor है। जब आपको विभिन्न आकलनों के लिए कई अलग-अलग इंस्टॉल करने योग्य बिल्ड की आवश्यकता हो, तो इसे --app-id से ओवरराइड करें। Windows समकक्ष build-interceptor.bat है।
डिफ़ॉल्ट स्कीम intercept-poc-example एक हानिरहित प्लेसहोल्डर है। बिल्ड स्क्रिप्ट उस डिफ़ॉल्ट स्कीम के साथ आकलन APK बनाने से इनकार करती है।
प्रत्येक ऐप संस्करण के पहले लॉन्च पर, apk-interceptor एक अधिकृत-उपयोग संवाद दिखाता है। I understand पर टैप करने के बाद, वही संस्करण संवाद दोबारा नहीं दिखाता। Sender टैब अभी भी एक स्थायी चेतावनी दिखाता है क्योंकि यह अन्य ऐप्स को Intent भेज सकता है।
