Translated ['src/mobile-pentesting/android-app-pentesting/android-task-h

This commit is contained in:
Translator 2025-07-30 08:13:11 +00:00
parent 90e944990c
commit 67af46bd70

View File

@ -4,7 +4,7 @@
## Task, Back Stack and Foreground Activities
Android में, एक **task** मूल रूप से गतिविधियों का एक सेट है जिससे उपयोगकर्ता एक विशिष्ट कार्य पूरा करने के लिए इंटरैक्ट करते हैं, जो एक **back stack** के भीतर व्यवस्थित होता है। यह स्टैक गतिविधियों को इस आधार पर क्रमबद्ध करता है कि वे कब खोली गई थीं, सबसे हाल की गतिविधि को शीर्ष पर **foreground activity** के रूप में प्रदर्शित करता है। किसी भी समय, केवल यह गतिविधि स्क्रीन पर दिखाई देती है, जिससे यह **foreground task** का हिस्सा बन जाती है।
Android में, एक **task** मूल रूप से गतिविधियों का एक सेट है जिससे उपयोगकर्ता एक विशिष्ट कार्य पूरा करने के लिए इंटरैक्ट करते हैं, जो एक **back stack** के भीतर व्यवस्थित होता है। यह स्टैक गतिविधियों को इस आधार पर क्रमबद्ध करता है कि वे कब खोली गई थीं, सबसे हाल की गतिविधि को शीर्ष पर **foreground activity** के रूप में प्रदर्शित करता है। किसी भी समय, केवल यह गतिविधि स्क्रीन पर दिखाई देती है, जिससे यह **foreground task** का हिस्सा बन जाती है।
गतिविधि संक्रमणों का त्वरित विश्लेषण यहाँ है:
@ -68,28 +68,67 @@ android:taskAffinity="com.caller.id.phone.number.block" >
</activity>
```
3. जैसे ही उपयोगकर्ता दुर्भावनापूर्ण ऐप को **एक बार** स्थापित और खोलता है, एक कार्य जिसका affinity पीड़ित पैकेज के बराबर है (लेकिन बैकग्राउंड में बैठा है) मौजूद होता है।
4. जब असली Caller ID एप्लिकेशन लॉन्च होता है, तो Android उस कार्य का पुनः उपयोग करता है और `HackActivity` को foreground में लाता है → फ़िशिंग विंडो/अनुमति का दुरुपयोग।
4. जब असली Caller ID एप्लिकेशन लॉन्च किया जाता है, तो Android उस कार्य का पुनः उपयोग करता है और `HackActivity` को foreground में लाता है → फ़िशिंग विंडो/अनुमति दुरुपयोग।
> NOTE: **Android 11 (API 30)** से शुरू होकर, सिस्टम डिफ़ॉल्ट रूप से एक ही UID का हिस्सा नहीं होने वाले दो पैकेजों को एक ही कार्य में नहीं रखता, इस विशेष रूप को कम करता है। पुराने संस्करणों में भेद्यता बनी रहती है।
---
### StrandHogg 2.0 (CVE-2020-0096) Reflection-based task hijack
Google के मई-2020 सुरक्षा बुलेटिन ने एक अधिक उन्नत रूप को ठीक किया जिसे **StrandHogg 2.0** कहा जाता है। यह शोषण **`taskAffinity` पर निर्भर नहीं करता**; इसके बजाय यह *reflection* का उपयोग करके हमलावर की गतिविधि को *हर* चल रहे कार्य के शीर्ष पर गतिशील रूप से डालता है, Android 11 द्वारा पेश की गई "shared-UID" प्रतिबंध को पूरी तरह से बायपास करता है।
मुख्य बिंदु:
* एक शून्य-अनुमति दुर्भावनापूर्ण ऐप, एक बार खोले जाने पर, चल रहे कार्यों के माध्यम से पुनरावृत्ति कर सकता है और **re-parent** करने के लिए छिपी हुई APIs को कॉल कर सकता है।
* चूंकि गतिविधि रन-टाइम के बाद डाली जाती है, न तो `launchMode` और न ही स्थैतिक मैनिफेस्ट विश्लेषण हमले का पूर्वानुमान कर सकता है।
* **Android 8.0/8.1/9** (मई 2020 SPL) में एक चेक को बैक-पोर्ट करके पैच किया गया। **Android 10 और बाद के संस्करण प्रभावित नहीं हैं।**
प्री-पैच किए गए उपकरणों पर पहचान `adb shell dumpsys activity activities` के साथ की जा सकती है और संदिग्ध गतिविधियों की निगरानी की जा सकती है जिनका पैकेज नाम कार्य की *affinity* से भिन्न होता है।
विरासत उपकरणों के लिए शमन क्लासिक Task Hijacking के समान है **प्लस** रन-टाइम सत्यापन (जैसे [`ActivityManager#getRunningTasks`](https://developer.android.com/reference/android/app/ActivityManager#getRunningTasks(int)) को कॉल करना और अपने पैकेज नाम को मान्य करना)।
---
## Detection & Exploitation checklist
1. लक्ष्य APK से `AndroidManifest.xml` खींचें और जांचें कि प्रत्येक `<activity>` (या वैश्विक `<application>` तत्व) में `android:taskAffinity=""` (खाली) **या** एक अनुकूलित मान है।
2. यदि नहीं, तो एक दुर्भावनापूर्ण ऐप बनाएं:
- `android:taskAffinity` = पीड़ित पैकेज नाम।
- उपयोगकर्ता को इसे एक बार खोलने के लिए एक `MAIN/LAUNCHER` इरादा प्रदान करें।
- वैकल्पिक रूप से तुरंत छिपाने के लिए `moveTaskToBack(true)` कॉल करें।
3. पीड़ित को उनके वैध एप्लिकेशन को खोलने दें → हाइजैक।
1. **Static review** लक्ष्य APK से `AndroidManifest.xml` खींचें और जांचें कि प्रत्येक `<activity>` (या वैश्विक `<application>` तत्व) में `android:taskAffinity=""` (खाली) **या** एक अनुकूलित मान है। उपकरण जैसे:
```bash
# Using apkanalyzer (Android SDK)
apkanalyzer manifest print app.apk | grep -i taskaffinity
# Using AXMLPrinter2
java -jar AXMLPrinter2.jar AndroidManifest.xml | grep taskAffinity
```
2. **Dynamic review** डिवाइस पर लक्ष्य ऐप खोलें और कार्यों की सूची बनाएं:
```bash
adb shell dumpsys activity activities | grep -A3 "TASK" | grep -E "Root|affinity"
```
एक कार्य जिसका रूट affinity पीड़ित पैकेज के बराबर है लेकिन जिसका शीर्ष गतिविधि *विभिन्न* पैकेज से संबंधित है, एक लाल झंडा है।
3. ऊपर वर्णित अनुसार एक दुर्भावनापूर्ण ऐप तैयार करें, या **[Drozer](https://github.com/WithSecureLabs/drozer)** का उपयोग करें:
```bash
drozer console connect
run app.activity.start --component com.victim/.MainActivity --action android.intent.action.MAIN
run app.activity.info com.victim
```
---
## Mitigation
डेवलपर्स को चाहिए:
* `<application>` स्तर पर स्पष्ट रूप से `android:taskAffinity=""` सेट करें (सिफारिश की गई) **या** प्रत्येक गतिविधि को एक अद्वितीय, निजी affinity दें।
* `<application>` स्तर पर स्पष्ट रूप से `android:taskAffinity=""` सेट करें (अनुशंसित) **या** प्रत्येक गतिविधि को एक अद्वितीय, निजी affinity दें।
* अत्यधिक संवेदनशील स्क्रीन के लिए, उपरोक्त को `android:launchMode="singleInstance"` या आधुनिक [`setLaunchMode`](https://developer.android.com/reference/android/content/pm/ActivityInfo#launchMode) सुरक्षा के साथ मिलाएं।
* ऐप के `targetSdkVersion` को अपग्रेड करें और **Android 11** व्यवहार परिवर्तन लागू करें जहां कार्य डिफ़ॉल्ट रूप से पैकेजों के बीच साझा नहीं होते हैं।
* ऐप के `targetSdkVersion` को अपडेट करें और **Android 11** व्यवहार परिवर्तन लागू करें जहाँ कार्य डिफ़ॉल्ट रूप से पैकेजों के बीच साझा नहीं होते हैं।
* **Android 12 (API 31) या उच्चतर** को लक्षित करें ताकि अनिवार्य `android:exported` विशेषता डेवलपर्स को हर बाहरी-प्रवेश योग्य घटक का ऑडिट करने के लिए मजबूर करे।
* रन-टाइम आत्म-रक्षा पर विचार करें: समय-समय पर `ActivityTaskManager` को क्वेरी करें ताकि यह सुनिश्चित हो सके कि आपकी शीर्ष गतिविधि का पैकेज आपके अपने से मेल खाता है।
---
## Related UI-Hijacking techniques
Task hijacking अक्सर **tapjacking** (ओवरले-आधारित UI धोखाधड़ी) के साथ मिलाया जाता है या इसे प्रतिस्थापित किया जाता है। 2025 **TapTrap** अनुसंधान ने दिखाया कि पूरी तरह से पारदर्शी *एनिमेशन-चालित* गतिविधियाँ Android 1214 में पेश की गई ओवरले-टच प्रतिबंधों को बायपास कर सकती हैं और फिर भी उपयोगकर्ताओं को खतरनाक अनुमतियाँ देने के लिए धोखा दे सकती हैं। जबकि TapTrap सख्ती से *task* हाइजैकिंग नहीं है, अंतिम लक्ष्य (फ़िशिंग क्लिक) समान है - इसलिए आधुनिक आकलनों को दोनों हमले की सतहों की जांच करनी चाहिए।
---
@ -99,5 +138,7 @@ android:taskAffinity="com.caller.id.phone.number.block" >
- [https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html](https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html)
- [Android Manifest Misconfiguration Leading to Task Hijacking in Caller ID app](https://github.com/KMov-g/androidapps/blob/main/caller.id.phone.number.block.md)
- [https://medium.com/mobile-app-development-publication/the-risk-of-android-strandhogg-security-issue-and-how-it-can-be-mitigated-80d2ddb4af06](https://medium.com/mobile-app-development-publication/the-risk-of-android-strandhogg-security-issue-and-how-it-can-be-mitigated-80d2ddb4af06)
- [Promon StrandHogg 2.0 (CVE-2020-0096) technical write-up](https://promon.io/resources/downloads/strandhogg-2-0-new-serious-android-vulnerability)
- [USENIX 2025 TapTrap: Animation-Driven Tapjacking on Android](https://www.usenix.org/conference/usenixsecurity25/presentation/beer)
{{#include ../../banners/hacktricks-training.md}}